diff options
919 files changed, 18242 insertions, 11420 deletions
diff --git a/Android.bp b/Android.bp index acf86a0cfa2d..d75239afab45 100644 --- a/Android.bp +++ b/Android.bp @@ -225,6 +225,7 @@ java_library { "apex_aidl_interface-java", "framework-protos", "updatable-driver-protos", + "ota_metadata_proto_java", "android.hidl.base-V1.0-java", "android.hardware.cas-V1.0-java", "android.hardware.cas-V1.1-java", @@ -326,6 +327,7 @@ java_defaults { "tv_tuner_resource_manager_aidl_interface-java", "soundtrigger_middleware-aidl-java", "modules-utils-os", + "framework-permission-aidl-java", ], } @@ -482,7 +484,7 @@ metalava_framework_docs_args = "--manifest $(location core/res/AndroidManifest.x "--api-lint-ignore-prefix org. " filegroup { - name: "framework-non-updatable-stub-sources", + name: "android-non-updatable-stub-sources", srcs: [ ":framework-mime-sources", // mimemap builds separately but has no separate droidstubs. ":framework-non-updatable-sources", @@ -494,6 +496,63 @@ filegroup { visibility: ["//visibility:private"], } +// These defaults are used for both the jar stubs and the doc stubs. +stubs_defaults { + name: "android-non-updatable-stubs-defaults", + srcs: [":android-non-updatable-stub-sources"], + sdk_version: "none", + system_modules: "none", + java_version: "1.8", + arg_files: ["core/res/AndroidManifest.xml"], + // TODO(b/147699819): remove below aidl includes. + aidl: { + local_include_dirs: [ + "apex/media/aidl/stable", + "media/aidl", + // TODO: move to include-dirs for packages/modules/Connectivity when this moves out of + // frameworks/base + "packages/Connectivity/framework/aidl-export", + "telephony/java", + ], + include_dirs: ["frameworks/av/aidl"], + }, + // These are libs from framework-internal-utils that are required (i.e. being referenced) + // from framework-non-updatable-sources. Add more here when there's a need. + // DO NOT add the entire framework-internal-utils. It might cause unnecessary circular + // dependencies gets bigger. + libs: [ + "android.hardware.cas-V1.2-java", + "android.hardware.health-V1.0-java-constants", + "android.hardware.radio-V1.5-java", + "android.hardware.radio-V1.6-java", + "android.hardware.thermal-V1.0-java-constants", + "android.hardware.thermal-V2.0-java", + "android.hardware.tv.input-V1.0-java-constants", + "android.hardware.tv.tuner-V1.0-java-constants", + "android.hardware.tv.tuner-V1.1-java-constants", + "android.hardware.usb-V1.0-java-constants", + "android.hardware.usb-V1.1-java-constants", + "android.hardware.usb.gadget-V1.0-java", + "android.hardware.vibrator-V1.3-java", + "framework-protos", + "stable.core.platform.api.stubs", + // There are a few classes from modules used by the core that + // need to be resolved by metalava. We use a prebuilt stub of the + // full sdk to ensure we can resolve them. If a new class gets added, + // the prebuilts/sdk/current needs to be updated. + "sdk_system_current_android", + // NOTE: The below can be removed once the prebuilt stub contains IKE. + "sdk_system_current_android.net.ipsec.ike", + ], + high_mem: true, // Lots of sources => high memory use, see b/170701554 + installable: false, + annotations_enabled: true, + previous_api: ":android.api.public.latest", + merge_annotations_dirs: ["metalava-manual"], + defaults_visibility: ["//visibility:private"], + visibility: ["//frameworks/base/api"], +} + build = [ "StubLibraries.bp", "ApiDocs.bp", diff --git a/ApiDocs.bp b/ApiDocs.bp index c1dc00bd3b81..0f218b581bbd 100644 --- a/ApiDocs.bp +++ b/ApiDocs.bp @@ -56,9 +56,23 @@ framework_docs_only_libs = [ ] stubs_defaults { + name: "android-non-updatable-doc-stubs-defaults", + defaults: ["android-non-updatable-stubs-defaults"], + srcs: [ + // No longer part of the stubs, but are included in the docs. + "test-base/src/**/*.java", + "test-mock/src/**/*.java", + "test-runner/src/**/*.java", + ], + libs: framework_docs_only_libs, + create_doc_stubs: true, + write_sdk_values: true, +} + +stubs_defaults { name: "framework-doc-stubs-default", srcs: [ - ":framework-non-updatable-stub-sources", + ":android-non-updatable-stub-sources", // Module sources ":art.module.public.api{.public.stubs.source}", @@ -103,14 +117,25 @@ stubs_defaults { } droidstubs { + name: "android-non-updatable-doc-stubs", + defaults: ["android-non-updatable-doc-stubs-defaults"], + args: metalava_framework_docs_args, +} + +droidstubs { + name: "android-non-updatable-doc-stubs-system", + defaults: ["android-non-updatable-doc-stubs-defaults"], + args: metalava_framework_docs_args + + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS\\) ", +} + +droidstubs { name: "framework-doc-stubs", defaults: ["framework-doc-stubs-default"], arg_files: [ "core/res/AndroidManifest.xml", ], - args: metalava_framework_docs_args + - // Needed for hidden libcore annotations for now. - " --ignore-classes-on-classpath ", + args: metalava_framework_docs_args, write_sdk_values: true, } @@ -121,8 +146,6 @@ droidstubs { "core/res/AndroidManifest.xml", ], args: metalava_framework_docs_args + - // Needed for hidden libcore annotations for now. - " --ignore-classes-on-classpath " + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS\\) ", write_sdk_values: true, } diff --git a/StubLibraries.bp b/StubLibraries.bp index 720bfc0897da..7b8a68700b0a 100644 --- a/StubLibraries.bp +++ b/StubLibraries.bp @@ -42,62 +42,10 @@ packages_to_document = [ stubs_defaults { name: "metalava-non-updatable-api-stubs-default", - srcs: [":framework-non-updatable-stub-sources"], - sdk_version: "none", - system_modules: "none", - java_version: "1.8", - arg_files: ["core/res/AndroidManifest.xml"], - // TODO(b/147699819, b/169090544): remove below aidl includes. - aidl: { - local_include_dirs: [ - "apex/media/aidl/stable", - "media/aidl", - // TODO: move to include-dirs for packages/modules/Connectivity when this moves out of - // frameworks/base - "packages/Connectivity/framework/aidl-export", - "telephony/java", - ], - include_dirs: ["frameworks/av/aidl"], - }, - // These are libs from framework-internal-utils that are required (i.e. being referenced) - // from framework-non-updatable-sources. Add more here when there's a need. - // DO NOT add the entire framework-internal-utils. It might cause unnecessary circular - // dependencies gets bigger. - libs: [ - "android.hardware.cas-V1.2-java", - "android.hardware.health-V1.0-java-constants", - "android.hardware.radio-V1.5-java", - "android.hardware.radio-V1.6-java", - "android.hardware.thermal-V1.0-java-constants", - "android.hardware.thermal-V2.0-java", - "android.hardware.tv.input-V1.0-java-constants", - "android.hardware.tv.tuner-V1.0-java-constants", - "android.hardware.tv.tuner-V1.1-java-constants", - "android.hardware.usb-V1.0-java-constants", - "android.hardware.usb-V1.1-java-constants", - "android.hardware.usb.gadget-V1.0-java", - "android.hardware.vibrator-V1.3-java", - "framework-protos", - "stable.core.platform.api.stubs", - // There are a few classes from modules used by the core that - // need to be resolved by metalava. We use a prebuilt stub of the - // full sdk to ensure we can resolve them. If a new class gets added, - // the prebuilts/sdk/current needs to be updated. - "sdk_system_current_android", - // NOTE: The below can be removed once the prebuilt stub contains IKE. - "sdk_system_current_android.net.ipsec.ike", - ], - high_mem: true, // Lots of sources => high memory use, see b/170701554 - installable: false, - annotations_enabled: true, - previous_api: ":android.api.public.latest", - merge_annotations_dirs: [ - "metalava-manual", - ], + defaults: ["android-non-updatable-stubs-defaults"], api_levels_annotations_enabled: false, filter_packages: packages_to_document, defaults_visibility: ["//visibility:private"], - visibility: ["//frameworks/base/api"], } ///////////////////////////////////////////////////////////////////// diff --git a/apex/appsearch/framework/Android.bp b/apex/appsearch/framework/Android.bp index 5bf0b84b570d..f92f44bc853f 100644 --- a/apex/appsearch/framework/Android.bp +++ b/apex/appsearch/framework/Android.bp @@ -24,11 +24,29 @@ package { filegroup { name: "framework-appsearch-sources", srcs: [ + ":framework-appsearch-internal-sources", + ":framework-appsearch-external-sources", + ], + visibility: ["//frameworks/base"], +} + +filegroup { + name: "framework-appsearch-internal-sources", + srcs: [ "java/**/*.java", "java/**/*.aidl", ], + exclude_srcs: [":framework-appsearch-external-sources"], path: "java", - visibility: ["//frameworks/base"], +} + +filegroup { + name: "framework-appsearch-external-sources", + srcs: [ + "java/external/**/*.java", + "java/external/**/*.aidl", + ], + path: "java/external", } java_sdk_library { diff --git a/apex/appsearch/service/java/com/android/server/appsearch/VisibilityStore.java b/apex/appsearch/service/java/com/android/server/appsearch/VisibilityStore.java index a8d429b24c63..0f643c513888 100644 --- a/apex/appsearch/service/java/com/android/server/appsearch/VisibilityStore.java +++ b/apex/appsearch/service/java/com/android/server/appsearch/VisibilityStore.java @@ -37,6 +37,8 @@ import android.util.Log; import com.android.server.appsearch.external.localstorage.util.PrefixUtil; +import com.google.android.icing.proto.PersistType; + import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -373,6 +375,8 @@ public class VisibilityStore { mAppSearchImpl.putDocument( PACKAGE_NAME, DATABASE_NAME, visibilityDocument.build(), /*logger=*/ null); + // Now that the visibility document has been written. Persist the newly written data. + mAppSearchImpl.persistToDisk(PersistType.Code.LITE); // Update derived data structures. mNotPlatformSurfaceableMap.put(prefix, schemasNotPlatformSurfaceable); diff --git a/apex/jobscheduler/framework/java/android/app/AlarmManager.java b/apex/jobscheduler/framework/java/android/app/AlarmManager.java index 01f31e43989e..b096537821ca 100644 --- a/apex/jobscheduler/framework/java/android/app/AlarmManager.java +++ b/apex/jobscheduler/framework/java/android/app/AlarmManager.java @@ -22,6 +22,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SdkConstant; +import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; @@ -138,6 +139,36 @@ public class AlarmManager { public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED"; + /** + * Broadcast Action: An app is granted the + * {@link android.Manifest.permission#SCHEDULE_EXACT_ALARM} permission. + * + * <p>When the user revokes the {@link android.Manifest.permission#SCHEDULE_EXACT_ALARM} + * permission, all alarms scheduled with + * {@link #setExact}, {@link #setExactAndAllowWhileIdle} and + * {@link #setAlarmClock(AlarmClockInfo, PendingIntent)} will be deleted. + * + * <p>When the user grants the {@link android.Manifest.permission#SCHEDULE_EXACT_ALARM}, + * this broadcast will be sent. Applications can reschedule all the necessary alarms when + * receiving it. + * + * <p><em>Note:</em> + * Applications are still required to check {@link #canScheduleExactAlarms()} + * before using the above APIs after receiving this broadcast, + * because it's possible that the permission is already revoked again by the time + * applications receive this broadcast. + * + * <p>This broadcast will be sent to both runtime receivers and manifest receivers. + * + * <p>This broadcast is sent as a foreground broadcast. + * See {@link android.content.Intent#FLAG_RECEIVER_FOREGROUND}. + * + * <p>When an application receives this broadcast, it's allowed to start a foreground service. + */ + @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED = + "android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED"; + /** @hide */ @UnsupportedAppUsage public static final long WINDOW_EXACT = 0; diff --git a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java index 52442a66cf1d..b3c33b6615f4 100644 --- a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java +++ b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java @@ -1703,7 +1703,7 @@ public class JobInfo implements Parcelable { throw new IllegalArgumentException("An expedited job cannot be periodic"); } if ((constraintFlags & ~CONSTRAINT_FLAG_STORAGE_NOT_LOW) != 0 - || (flags & ~FLAG_EXPEDITED) != 0) { + || (flags & ~(FLAG_EXPEDITED | FLAG_EXEMPT_FROM_APP_STANDBY)) != 0) { throw new IllegalArgumentException( "An expedited job can only have network and storage-not-low constraints"); } diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java index f96fc835b064..9dd1296d681c 100644 --- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java +++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java @@ -236,7 +236,27 @@ public class PowerExemptionManager { * @hide */ public static final int REASON_BLUETOOTH_BROADCAST = 203; - + /** + * Broadcast {@link android.content.Intent#ACTION_TIMEZONE_CHANGED} + * @hide + */ + public static final int REASON_TIMEZONE_CHANGED = 204; + /** + * Broadcast {@link android.content.Intent#ACTION_TIME_CHANGED} + * @hide + */ + public static final int REASON_TIME_CHANGED = 205; + /** + * Broadcast {@link android.content.Intent#ACTION_LOCALE_CHANGED} + * @hide + */ + public static final int REASON_LOCALE_CHANGED = 206; + /** + * Broadcast + * {@link android.app.AlarmManager#ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED} + * @hide + */ + public static final int REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED = 207; /* Reason code range 300-399 are reserved for other internal reasons */ /** * Device idle system allow list, including EXCEPT-IDLE @@ -369,6 +389,10 @@ public class PowerExemptionManager { REASON_PRE_BOOT_COMPLETED, REASON_LOCKED_BOOT_COMPLETED, REASON_BLUETOOTH_BROADCAST, + REASON_TIMEZONE_CHANGED, + REASON_TIME_CHANGED, + REASON_LOCALE_CHANGED, + REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED, REASON_SYSTEM_ALLOW_LISTED, REASON_ALARM_MANAGER_ALARM_CLOCK, REASON_ALARM_MANAGER_WHILE_IDLE, @@ -641,6 +665,14 @@ public class PowerExemptionManager { return "LOCKED_BOOT_COMPLETED"; case REASON_BLUETOOTH_BROADCAST: return "BLUETOOTH_BROADCAST"; + case REASON_TIMEZONE_CHANGED: + return "TIMEZONE_CHANGED"; + case REASON_TIME_CHANGED: + return "TIME_CHANGED"; + case REASON_LOCALE_CHANGED: + return "LOCALE_CHANGED"; + case REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED: + return "REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED"; case REASON_SYSTEM_ALLOW_LISTED: return "SYSTEM_ALLOW_LISTED"; case REASON_ALARM_MANAGER_ALARM_CLOCK: diff --git a/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java b/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java index b0b9abccd229..3c89016ec605 100644 --- a/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java +++ b/apex/jobscheduler/framework/java/com/android/server/AppStateTracker.java @@ -25,19 +25,29 @@ public interface AppStateTracker { String TAG = "AppStateTracker"; /** - * Register a {@link ServiceStateListener} to listen for forced-app-standby changes that should - * affect services. + * Register a {@link ForcedAppStandbyListener} to listen for forced-app-standby changes that + * should affect services etc. */ - void addServiceStateListener(@NonNull ServiceStateListener listener); + void addForcedAppStandbyListener(@NonNull ForcedAppStandbyListener listener); /** - * A listener to listen to forced-app-standby changes that should affect services. + * @return {code true} if the given UID/package has been in forced app standby mode. */ - interface ServiceStateListener { + boolean isAppInForcedAppStandby(int uid, @NonNull String packageName); + + /** + * A listener to listen to forced-app-standby changes that should affect services etc. + */ + interface ForcedAppStandbyListener { + /** + * Called when an app goes in/out of forced app standby. + */ + void updateForceAppStandbyForUidPackage(int uid, String packageName, boolean standby); + /** - * Called when an app goes into forced app standby and its foreground - * services need to be removed from that state. + * Called when all apps' forced-app-standby states need to be re-evaluated, due to + * enable/disable certain feature flags. */ - void stopForegroundServicesForUidPackage(int uid, String packageName); + void updateForcedAppStandbyForAllApps(); } } diff --git a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java index c332a598c30b..1deb3656dabe 100644 --- a/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java +++ b/apex/jobscheduler/service/java/com/android/server/AppStateTrackerImpl.java @@ -60,8 +60,10 @@ import com.android.server.usage.AppStandbyInternal.AppIdleStateChangeListener; import java.io.PrintWriter; import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Set; /** * Class to keep track of the information related to "force app standby", which includes: @@ -160,16 +162,46 @@ public class AppStateTrackerImpl implements AppStateTracker { @GuardedBy("mLock") boolean mForcedAppStandbyEnabled; + /** + * A lock-free set of (uid, packageName) pairs in forced app standby mode. + * + * <p> + * It's bascially shadowing the {@link #mRunAnyRestrictedPackages} together with + * the {@link #mForcedAppStandbyEnabled} and the {@link #mForceAllAppsStandby} - mutations on + * them would result in copy-on-write. + * + * Note: when {@link #mForcedAppStandbyEnabled} is {@code false}, it'll be set to an empty set. + * when {@link #mForceAllAppsStandby} is {@code true}, it'll be set to null; + * </p> + */ + volatile Set<Pair<Integer, String>> mForcedAppStandbyUidPackages = Collections.emptySet(); + @Override - public void addServiceStateListener(@NonNull ServiceStateListener listener) { + public void addForcedAppStandbyListener(@NonNull ForcedAppStandbyListener listener) { addListener(new Listener() { @Override - public void stopForegroundServicesForUidPackage(int uid, String packageName) { - listener.stopForegroundServicesForUidPackage(uid, packageName); + public void updateForceAppStandbyForUidPackage(int uid, String packageName, + boolean standby) { + listener.updateForceAppStandbyForUidPackage(uid, packageName, standby); + } + + @Override + public void updateForcedAppStandbyForAllApps() { + listener.updateForcedAppStandbyForAllApps(); } }); } + @Override + public boolean isAppInForcedAppStandby(int uid, @NonNull String packageName) { + final Set<Pair<Integer, String>> fasUidPkgs = mForcedAppStandbyUidPackages; + if (fasUidPkgs == null) { + // Meaning the mForceAllAppsStandby is true. + return true; + } + return fasUidPkgs.contains(Pair.create(uid, packageName)); + } + interface Stats { int UID_FG_STATE_CHANGED = 0; int UID_ACTIVE_STATE_CHANGED = 1; @@ -233,6 +265,7 @@ public class AppStateTrackerImpl implements AppStateTracker { return; } mForcedAppStandbyEnabled = enabled; + updateForcedAppStandbyUidPackagesLocked(); if (DEBUG) { Slog.d(TAG, "Forced app standby feature flag changed: " + mForcedAppStandbyEnabled); @@ -277,7 +310,11 @@ public class AppStateTrackerImpl implements AppStateTracker { if (!sender.isRunAnyInBackgroundAppOpsAllowed(uid, packageName)) { Slog.v(TAG, "Package " + packageName + "/" + uid + " toggled into fg service restriction"); - stopForegroundServicesForUidPackage(uid, packageName); + updateForceAppStandbyForUidPackage(uid, packageName, true); + } else { + Slog.v(TAG, "Package " + packageName + "/" + uid + + " toggled out of fg service restriction"); + updateForceAppStandbyForUidPackage(uid, packageName, false); } } @@ -342,6 +379,7 @@ public class AppStateTrackerImpl implements AppStateTracker { private void onForceAllAppsStandbyChanged(AppStateTrackerImpl sender) { updateAllJobs(); updateAllAlarms(); + updateForcedAppStandbyForAllApps(); } /** @@ -366,10 +404,17 @@ public class AppStateTrackerImpl implements AppStateTracker { } /** - * Called when an app goes into forced app standby and its foreground - * services need to be removed from that state. + * Called when an app goes in/out of forced app standby. */ - public void stopForegroundServicesForUidPackage(int uid, String packageName) { + public void updateForceAppStandbyForUidPackage(int uid, String packageName, + boolean standby) { + } + + /** + * Called when all apps' forced-app-standby states need to be re-evaluated due to changes of + * feature flags such as {@link #mForcedAppStandbyEnabled} or {@link #mForceAllAppsStandby}. + */ + public void updateForcedAppStandbyForAllApps() { } /** @@ -438,9 +483,12 @@ public class AppStateTrackerImpl implements AppStateTracker { final int uid = intent.getIntExtra(Intent.EXTRA_UID, -1); // No need to notify for state change as all the alarms and jobs should be // removed too. - mExemptedBucketPackages.remove(userId, pkgName); - mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName)); - mActiveUids.delete(uid); + synchronized (mLock) { + mExemptedBucketPackages.remove(userId, pkgName); + mRunAnyRestrictedPackages.remove(Pair.create(uid, pkgName)); + updateForcedAppStandbyUidPackagesLocked(); + mActiveUids.delete(uid); + } } break; } @@ -580,6 +628,29 @@ public class AppStateTrackerImpl implements AppStateTracker { } } } + updateForcedAppStandbyUidPackagesLocked(); + } + + /** + * Update the {@link #mForcedAppStandbyUidPackages} upon mutations on + * {@link #mRunAnyRestrictedPackages}, {@link #mForcedAppStandbyEnabled} or + * {@link #mForceAllAppsStandby}. + */ + @GuardedBy("mLock") + private void updateForcedAppStandbyUidPackagesLocked() { + if (!mForcedAppStandbyEnabled) { + mForcedAppStandbyUidPackages = Collections.emptySet(); + return; + } + if (mForceAllAppsStandby) { + mForcedAppStandbyUidPackages = null; + return; + } + Set<Pair<Integer, String>> fasUidPkgs = new ArraySet<>(); + for (int i = 0, size = mRunAnyRestrictedPackages.size(); i < size; i++) { + fasUidPkgs.add(mRunAnyRestrictedPackages.valueAt(i)); + } + mForcedAppStandbyUidPackages = Collections.unmodifiableSet(fasUidPkgs); } private void updateForceAllAppStandbyState() { @@ -601,6 +672,7 @@ public class AppStateTrackerImpl implements AppStateTracker { return; } mForceAllAppsStandby = enable; + updateForcedAppStandbyUidPackagesLocked(); mHandler.notifyForceAllAppsStandbyChanged(); } @@ -645,6 +717,7 @@ public class AppStateTrackerImpl implements AppStateTracker { } else { mRunAnyRestrictedPackages.removeAt(index); } + updateForcedAppStandbyUidPackagesLocked(); return true; } @@ -896,6 +969,7 @@ public class AppStateTrackerImpl implements AppStateTracker { if (unblockAlarms) { l.unblockAllUnrestrictedAlarms(); } + l.updateForcedAppStandbyForAllApps(); } mStatLogger.logDurationStat( Stats.FORCE_APP_STANDBY_FEATURE_FLAG_CHANGED, start); @@ -966,6 +1040,7 @@ public class AppStateTrackerImpl implements AppStateTracker { mRunAnyRestrictedPackages.removeAt(i); } } + updateForcedAppStandbyUidPackagesLocked(); cleanUpArrayForUser(mActiveUids, removedUserId); mExemptedBucketPackages.remove(removedUserId); } diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java index 0e362759ef4c..0eb260986472 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java @@ -30,6 +30,8 @@ import static android.app.AlarmManager.INTERVAL_HOUR; import static android.app.AlarmManager.RTC; import static android.app.AlarmManager.RTC_WAKEUP; import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY; +import static android.os.PowerExemptionManager.REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED; +import static android.os.PowerExemptionManager.TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED; import static android.os.PowerWhitelistManager.REASON_ALARM_MANAGER_WHILE_IDLE; import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED; import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_NOT_ALLOWED; @@ -81,6 +83,7 @@ import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.ParcelableException; +import android.os.PowerExemptionManager; import android.os.PowerManager; import android.os.Process; import android.os.RemoteException; @@ -118,6 +121,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IAppOpsCallback; import com.android.internal.app.IAppOpsService; +import com.android.internal.os.BinderDeathDispatcher; import com.android.internal.util.DumpUtils; import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.LocalLog; @@ -151,10 +155,10 @@ import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Locale; -import java.util.Random; import java.util.Set; import java.util.TimeZone; import java.util.TreeSet; +import java.util.concurrent.ThreadLocalRandom; import java.util.function.Predicate; /** @@ -202,6 +206,8 @@ public class AlarmManagerService extends SystemService { .addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND); + private static final BinderDeathDispatcher<IAlarmListener> sListenerDeathDispatcher = + new BinderDeathDispatcher<>(); final LocalLog mLog = new LocalLog(TAG); AppOpsManager mAppOps; @@ -251,7 +257,6 @@ public class AlarmManagerService extends SystemService { Intent mTimeTickIntent; IAlarmListener mTimeTickTrigger; PendingIntent mDateChangeSender; - Random mRandom; boolean mInteractive = true; long mNonInteractiveStartTime; long mNonInteractiveTime; @@ -293,6 +298,7 @@ public class AlarmManagerService extends SystemService { BroadcastOptions mOptsWithFgs = BroadcastOptions.makeBasic(); BroadcastOptions mOptsWithoutFgs = BroadcastOptions.makeBasic(); + BroadcastOptions mOptsTimeBroadcast = BroadcastOptions.makeBasic(); // TODO(b/172085676): Move inside alarm store. private final SparseArray<AlarmManager.AlarmClockInfo> mNextAlarmClockForUser = @@ -516,6 +522,10 @@ public class AlarmManagerService extends SystemService { static final String KEY_PRIORITY_ALARM_DELAY = "priority_alarm_delay"; @VisibleForTesting static final String KEY_EXACT_ALARM_DENY_LIST = "exact_alarm_deny_list"; + @VisibleForTesting + static final String KEY_MIN_DEVICE_IDLE_FUZZ = "min_device_idle_fuzz"; + @VisibleForTesting + static final String KEY_MAX_DEVICE_IDLE_FUZZ = "max_device_idle_fuzz"; private static final long DEFAULT_MIN_FUTURITY = 5 * 1000; private static final long DEFAULT_MIN_INTERVAL = 60 * 1000; @@ -556,6 +566,9 @@ public class AlarmManagerService extends SystemService { private static final long DEFAULT_PRIORITY_ALARM_DELAY = 9 * 60_000; + private static final long DEFAULT_MIN_DEVICE_IDLE_FUZZ = 2 * 60_000; + private static final long DEFAULT_MAX_DEVICE_IDLE_FUZZ = 15 * 60_000; + // Minimum futurity of a new alarm public long MIN_FUTURITY = DEFAULT_MIN_FUTURITY; @@ -618,10 +631,23 @@ public class AlarmManagerService extends SystemService { public long PRIORITY_ALARM_DELAY = DEFAULT_PRIORITY_ALARM_DELAY; /** - * Set of apps that won't get SCHEDULE_EXACT_ALARM when the app-op mode for - * OP_SCHEDULE_EXACT_ALARM is MODE_DEFAULT. + * Read-only set of apps that won't get SCHEDULE_EXACT_ALARM when the app-op mode for + * OP_SCHEDULE_EXACT_ALARM is MODE_DEFAULT. Since this is read-only and volatile, this can + * be accessed without synchronizing on {@link #mLock}. + */ + public volatile Set<String> EXACT_ALARM_DENY_LIST = Collections.emptySet(); + + /** + * Minimum time interval that an IDLE_UNTIL will be pulled earlier to a subsequent + * WAKE_FROM_IDLE alarm. */ - public Set<String> EXACT_ALARM_DENY_LIST = Collections.emptySet(); + public long MIN_DEVICE_IDLE_FUZZ = DEFAULT_MIN_DEVICE_IDLE_FUZZ; + + /** + * Maximum time interval that an IDLE_UNTIL will be pulled earlier to a subsequent + * WAKE_FROM_IDLE alarm. + */ + public long MAX_DEVICE_IDLE_FUZZ = DEFAULT_MAX_DEVICE_IDLE_FUZZ; private long mLastAllowWhileIdleWhitelistDuration = -1; private int mVersion = 0; @@ -660,6 +686,7 @@ public class AlarmManagerService extends SystemService { @Override public void onPropertiesChanged(@NonNull DeviceConfig.Properties properties) { boolean standbyQuotaUpdated = false; + boolean deviceIdleFuzzBoundariesUpdated = false; synchronized (mLock) { mVersion++; for (String name : properties.getKeyset()) { @@ -787,6 +814,13 @@ public class AlarmManagerService extends SystemService { updateExactAlarmDenyList(values); } break; + case KEY_MIN_DEVICE_IDLE_FUZZ: + case KEY_MAX_DEVICE_IDLE_FUZZ: + if (!deviceIdleFuzzBoundariesUpdated) { + updateDeviceIdleFuzzBoundaries(); + deviceIdleFuzzBoundariesUpdated = true; + } + break; default: if (name.startsWith(KEY_PREFIX_STANDBY_QUOTA) && !standbyQuotaUpdated) { // The quotas need to be updated in order, so we can't just rely @@ -824,6 +858,24 @@ public class AlarmManagerService extends SystemService { mAlarmStore.setAlarmClockRemovalListener(mAlarmClockUpdater); } + private void updateDeviceIdleFuzzBoundaries() { + final DeviceConfig.Properties properties = DeviceConfig.getProperties( + DeviceConfig.NAMESPACE_ALARM_MANAGER, + KEY_MIN_DEVICE_IDLE_FUZZ, KEY_MAX_DEVICE_IDLE_FUZZ); + + MIN_DEVICE_IDLE_FUZZ = properties.getLong(KEY_MIN_DEVICE_IDLE_FUZZ, + DEFAULT_MIN_DEVICE_IDLE_FUZZ); + MAX_DEVICE_IDLE_FUZZ = properties.getLong(KEY_MAX_DEVICE_IDLE_FUZZ, + DEFAULT_MAX_DEVICE_IDLE_FUZZ); + + if (MAX_DEVICE_IDLE_FUZZ < MIN_DEVICE_IDLE_FUZZ) { + Slog.w(TAG, "max_device_idle_fuzz cannot be smaller than" + + " min_device_idle_fuzz! Increasing to " + + MIN_DEVICE_IDLE_FUZZ); + MAX_DEVICE_IDLE_FUZZ = MIN_DEVICE_IDLE_FUZZ; + } + } + private void updateStandbyQuotasLocked() { // The bucket quotas need to be read as an atomic unit but the properties passed to // onPropertiesChanged may only have one key populated at a time. @@ -1084,7 +1136,7 @@ public class AlarmManagerService extends SystemService { this(context, new Injector(context)); } - private static boolean isRtc(int type) { + static boolean isRtc(int type) { return (type == RTC || type == RTC_WAKEUP); } @@ -1133,12 +1185,8 @@ public class AlarmManagerService extends SystemService { if (mNextWakeFromIdle != null && isRtc(mNextWakeFromIdle.type)) { // The next wake from idle got updated due to the rtc time change, so we need // to update the time we have to come out of idle too. - final boolean idleUntilUpdated = mAlarmStore.updateAlarmDeliveries(a -> { - if (a != mPendingIdleUntil) { - return false; - } - return adjustIdleUntilTime(a); - }); + final boolean idleUntilUpdated = mAlarmStore.updateAlarmDeliveries( + a -> (a == mPendingIdleUntil) && adjustIdleUntilTime(a)); if (idleUntilUpdated) { mAlarmStore.updateAlarmDeliveries( alarm -> adjustDeliveryTimeBasedOnDeviceIdle(alarm)); @@ -1657,6 +1705,11 @@ public class AlarmManagerService extends SystemService { if (!hasScheduleExactAlarmInternal(packageName, uid)) { mHandler.obtainMessage(AlarmHandler.REMOVE_EXACT_ALARMS, uid, 0, packageName).sendToTarget(); + } else { + // TODO(b/187206399) Make sure this won't be sent, if the app + // already had the appop previously. + sendScheduleExactAlarmPermissionStateChangedBroadcast( + packageName, UserHandle.getUserId(uid)); } } }); @@ -1745,7 +1798,12 @@ public class AlarmManagerService extends SystemService { | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT | Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS); intent.putExtra(Intent.EXTRA_TIMEZONE, zone.getID()); - getContext().sendBroadcastAsUser(intent, UserHandle.ALL); + mOptsTimeBroadcast.setTemporaryAppAllowlist( + mActivityManagerInternal.getBootTimeTempAllowListDuration(), + TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + PowerExemptionManager.REASON_TIMEZONE_CHANGED, ""); + getContext().sendBroadcastAsUser(intent, UserHandle.ALL, + null /* receiverPermission */, mOptsTimeBroadcast.toBundle()); } } @@ -1768,9 +1826,8 @@ public class AlarmManagerService extends SystemService { } if (directReceiver != null) { - try { - directReceiver.asBinder().linkToDeath(mListenerDeathRecipient, 0); - } catch (RemoteException e) { + if (sListenerDeathDispatcher.linkToDeath(directReceiver, mListenerDeathRecipient) + <= 0) { Slog.w(TAG, "Dropping unreachable alarm listener " + listenerTag); return; } @@ -1911,23 +1968,30 @@ public class AlarmManagerService extends SystemService { if ((alarm.flags & AlarmManager.FLAG_IDLE_UNTIL) == 0) { return false; } - restoreRequestedTime(alarm); - long triggerBeforeFuzz = alarm.getRequestedElapsed(); - if (mNextWakeFromIdle != null && triggerBeforeFuzz > mNextWakeFromIdle.getWhenElapsed()) { - triggerBeforeFuzz = mNextWakeFromIdle.getWhenElapsed(); + final boolean changedBeforeFuzz = restoreRequestedTime(alarm); + if (mNextWakeFromIdle == null) { + // No need to change anything in the absence of a wake-from-idle request. + return changedBeforeFuzz; } - // Add fuzz to make the alarm go off some time before the actual desired time. - final int fuzz = fuzzForDuration(alarm.getWhenElapsed() - mInjector.getElapsedRealtime()); - final int delta; - if (fuzz > 0) { - if (mRandom == null) { - mRandom = new Random(); - } - delta = mRandom.nextInt(fuzz); + final long upcomingWakeFromIdle = mNextWakeFromIdle.getWhenElapsed(); + // Add fuzz to make the alarm go off some time before the next upcoming wake-from-idle, as + // these alarms are usually wall-clock aligned. + if (alarm.getWhenElapsed() < (upcomingWakeFromIdle - mConstants.MIN_DEVICE_IDLE_FUZZ)) { + // No need to fuzz as this is already earlier than the coming wake-from-idle. + return changedBeforeFuzz; + } + final long nowElapsed = mInjector.getElapsedRealtime(); + final long futurity = upcomingWakeFromIdle - nowElapsed; + + if (futurity <= mConstants.MIN_DEVICE_IDLE_FUZZ) { + // No point in fuzzing as the minimum fuzz will take the time in the past. + alarm.setPolicyElapsed(REQUESTER_POLICY_INDEX, nowElapsed); } else { - delta = 0; + final ThreadLocalRandom random = ThreadLocalRandom.current(); + final long upperBoundExcl = Math.min(mConstants.MAX_DEVICE_IDLE_FUZZ, futurity) + 1; + final long fuzz = random.nextLong(mConstants.MIN_DEVICE_IDLE_FUZZ, upperBoundExcl); + alarm.setPolicyElapsed(REQUESTER_POLICY_INDEX, upcomingWakeFromIdle - fuzz); } - alarm.setPolicyElapsed(REQUESTER_POLICY_INDEX, triggerBeforeFuzz - delta); return true; } @@ -2130,12 +2194,8 @@ public class AlarmManagerService extends SystemService { // If this wake from idle is earlier than whatever was previously scheduled, // and we are currently idling, then the idle-until time needs to be updated. if (mPendingIdleUntil != null) { - final boolean updated = mAlarmStore.updateAlarmDeliveries(alarm -> { - if (alarm != mPendingIdleUntil) { - return false; - } - return adjustIdleUntilTime(alarm); - }); + final boolean updated = mAlarmStore.updateAlarmDeliveries( + alarm -> (alarm == mPendingIdleUntil) && adjustIdleUntilTime(alarm)); if (updated) { // idle-until got updated, so also update all alarms not allowed while idle. mAlarmStore.updateAlarmDeliveries( @@ -2780,6 +2840,12 @@ public class AlarmManagerService extends SystemService { pw.println(); } + pw.println("Listener death dispatcher state:"); + pw.increaseIndent(); + sListenerDeathDispatcher.dump(pw); + pw.println(); + pw.decreaseIndent(); + if (mLog.dump(pw, "Recent problems:")) { pw.println(); } @@ -3675,20 +3741,6 @@ public class AlarmManagerService extends SystemService { } } - int fuzzForDuration(long duration) { - if (duration < 15 * 60 * 1000) { - // If the duration until the time is less than 15 minutes, the maximum fuzz - // is the duration. - return (int) duration; - } else if (duration < 90 * 60 * 1000) { - // If duration is less than 1 1/2 hours, the maximum fuzz is 15 minutes, - return 15 * 60 * 1000; - } else { - // Otherwise, we will fuzz by at most half an hour. - return 30 * 60 * 1000; - } - } - boolean checkAllowNonWakeupDelayLocked(long nowELAPSED) { if (mInteractive) { return false; @@ -3899,8 +3951,12 @@ public class AlarmManagerService extends SystemService { | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND | Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS); - getContext().sendBroadcastAsUser(intent, UserHandle.ALL); - + mOptsTimeBroadcast.setTemporaryAppAllowlist( + mActivityManagerInternal.getBootTimeTempAllowListDuration(), + TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + PowerExemptionManager.REASON_TIME_CHANGED, ""); + getContext().sendBroadcastAsUser(intent, UserHandle.ALL, + null /* receiverPermission */, mOptsTimeBroadcast.toBundle()); // The world has changed on us, so we need to re-evaluate alarms // regardless of whether the kernel has told us one went off. result |= IS_WAKEUP_MASK; @@ -4698,8 +4754,10 @@ public class AlarmManagerService extends SystemService { if (a.creatorUid != alarm.creatorUid || !isAllowedWhileIdleRestricted(a)) { return false; } - return (doze && adjustDeliveryTimeBasedOnDeviceIdle(a)) - || (batterySaver && adjustDeliveryTimeBasedOnBatterySaver(a)); + final boolean dozeAdjusted = doze && adjustDeliveryTimeBasedOnDeviceIdle(a); + final boolean batterySaverAdjusted = + batterySaver && adjustDeliveryTimeBasedOnBatterySaver(a); + return dozeAdjusted || batterySaverAdjusted; }); } else if ((alarm.flags & FLAG_PRIORITIZE) != 0) { mLastPriorityAlarmDispatch.put(alarm.creatorUid, nowELAPSED); @@ -4708,8 +4766,10 @@ public class AlarmManagerService extends SystemService { || (alarm.flags & FLAG_PRIORITIZE) == 0) { return false; } - return (doze && adjustDeliveryTimeBasedOnDeviceIdle(a)) - || (batterySaver && adjustDeliveryTimeBasedOnBatterySaver(a)); + final boolean dozeAdjusted = doze && adjustDeliveryTimeBasedOnDeviceIdle(a); + final boolean batterySaverAdjusted = + batterySaver && adjustDeliveryTimeBasedOnBatterySaver(a); + return dozeAdjusted || batterySaverAdjusted; }); } if (RECORD_DEVICE_IDLE_ALARMS) { @@ -4762,6 +4822,30 @@ public class AlarmManagerService extends SystemService { } } + /** + * Send {@link AlarmManager#ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED} to + * the app that is just granted the permission. + */ + private void sendScheduleExactAlarmPermissionStateChangedBroadcast( + String packageName, int userId) { + final Intent i = new Intent( + AlarmManager.ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED); + i.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING + | Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT + | Intent.FLAG_RECEIVER_FOREGROUND); + i.setPackage(packageName); + + // We need to allow the app to start a foreground service. + // This broadcast is very rare, so we do not cache the BroadcastOptions. + final BroadcastOptions opts = BroadcastOptions.makeBasic(); + opts.setTemporaryAppAllowlist( + mActivityManagerInternal.getBootTimeTempAllowListDuration(), + TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED, ""); + getContext().sendBroadcastAsUser(i, UserHandle.of(userId), /*permission*/ null, + opts.toBundle()); + } + private void decrementAlarmCount(int uid, int decrement) { int oldCount = 0; final int uidIndex = mAlarmsPerUid.indexOfKey(uid); diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/LazyAlarmStore.java b/apex/jobscheduler/service/java/com/android/server/alarm/LazyAlarmStore.java index 2e12e2f34ea0..0073335a1332 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/LazyAlarmStore.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/LazyAlarmStore.java @@ -40,6 +40,7 @@ import java.util.function.Predicate; public class LazyAlarmStore implements AlarmStore { @VisibleForTesting static final String TAG = LazyAlarmStore.class.getSimpleName(); + private static final long ALARM_DEADLINE_SLOP = 500; private final ArrayList<Alarm> mAlarms = new ArrayList<>(); private Runnable mOnAlarmClockRemoved; @@ -75,7 +76,7 @@ public class LazyAlarmStore implements AlarmStore { return; } mAlarms.addAll(alarms); - Collections.sort(alarms, sDecreasingTimeOrder); + Collections.sort(mAlarms, sDecreasingTimeOrder); } @Override @@ -163,25 +164,47 @@ public class LazyAlarmStore implements AlarmStore { @Override public ArrayList<Alarm> removePendingAlarms(long nowElapsed) { final ArrayList<Alarm> pending = new ArrayList<>(); - final ArrayList<Alarm> standAlones = new ArrayList<>(); + + // Only send wake-up alarms if this is the absolutely latest time we can evaluate + // for at least one wakeup alarm. This prevents sending other non-wakeup alarms when the + // screen is off but the CPU is awake for some reason. + boolean sendWakeups = false; + + // If any alarm with FLAG_STANDALONE is present, we cannot send any alarms without that flag + // in the present batch. + boolean standalonesOnly = false; for (int i = mAlarms.size() - 1; i >= 0; i--) { final Alarm alarm = mAlarms.get(i); if (alarm.getWhenElapsed() > nowElapsed) { break; } + mAlarms.remove(i); pending.add(alarm); + if (alarm.wakeup && alarm.getMaxWhenElapsed() <= nowElapsed + ALARM_DEADLINE_SLOP) { + // Using some slop as it is better to send the wakeup alarm now, rather than + // waking up again a short time later, just to send it. + sendWakeups = true; + } if ((alarm.flags & AlarmManager.FLAG_STANDALONE) != 0) { - standAlones.add(alarm); + standalonesOnly = true; } } - if (!standAlones.isEmpty()) { - // If there are deliverable standalone alarms, others must not go out yet. - mAlarms.removeAll(standAlones); - return standAlones; + final ArrayList<Alarm> toSend = new ArrayList<>(); + for (int i = pending.size() - 1; i >= 0; i--) { + final Alarm pendingAlarm = pending.get(i); + if (!sendWakeups && pendingAlarm.wakeup) { + continue; + } + if (standalonesOnly && (pendingAlarm.flags & AlarmManager.FLAG_STANDALONE) == 0) { + continue; + } + pending.remove(i); + toSend.add(pendingAlarm); } - mAlarms.removeAll(pending); - return pending; + // Perhaps some alarms could not be sent right now. Adding them back for later. + addAll(pending); + return toSend; } @Override diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java b/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java index 2dc131c0bda9..4e7311f10252 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java @@ -72,7 +72,8 @@ class MetricsHelper { alarmStore.getCount( a -> (a.getRequestedElapsed() > now + INDEFINITE_DELAY)), alarmStore.getCount(a -> (a.repeatInterval != 0)), - alarmStore.getCount(a -> (a.alarmClock != null)) + alarmStore.getCount(a -> (a.alarmClock != null)), + alarmStore.getCount(a -> AlarmManagerService.isRtc(a.type)) )); return StatsManager.PULL_SUCCESS; } @@ -101,7 +102,8 @@ class MetricsHelper { (a.flags & AlarmManager.FLAG_ALLOW_WHILE_IDLE) != 0, a.alarmClock != null, a.repeatInterval != 0, - reasonToStatsReason(a.mExactAllowReason)); + reasonToStatsReason(a.mExactAllowReason), + AlarmManagerService.isRtc(a.type)); } static void pushAlarmBatchDelivered(int numAlarms, int wakeups) { diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java index 9cd3a8fa6624..f7415962cc7e 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java @@ -554,7 +554,7 @@ public final class JobStore { out.attribute(null, "net-capabilities", Long.toString( BitUtils.packBits(network.getCapabilities()))); out.attribute(null, "net-unwanted-capabilities", Long.toString( - BitUtils.packBits(network.getUnwantedCapabilities()))); + BitUtils.packBits(network.getForbiddenCapabilities()))); out.attribute(null, "net-transport-types", Long.toString( BitUtils.packBits(network.getTransportTypes()))); @@ -977,22 +977,22 @@ public final class JobStore { String val; final String netCapabilities = parser.getAttributeValue(null, "net-capabilities"); - final String netUnwantedCapabilities = parser.getAttributeValue( + final String netforbiddenCapabilities = parser.getAttributeValue( null, "net-unwanted-capabilities"); final String netTransportTypes = parser.getAttributeValue(null, "net-transport-types"); if (netCapabilities != null && netTransportTypes != null) { final NetworkRequest.Builder builder = new NetworkRequest.Builder() .clearCapabilities(); - final long unwantedCapabilities = netUnwantedCapabilities != null - ? Long.parseLong(netUnwantedCapabilities) - : BitUtils.packBits(builder.build().getUnwantedCapabilities()); + final long forbiddenCapabilities = netforbiddenCapabilities != null + ? Long.parseLong(netforbiddenCapabilities) + : BitUtils.packBits(builder.build().getForbiddenCapabilities()); // We're okay throwing NFE here; caught by caller for (int capability : BitUtils.unpackBits(Long.parseLong(netCapabilities))) { builder.addCapability(capability); } - for (int unwantedCapability : BitUtils.unpackBits( - Long.parseLong(netUnwantedCapabilities))) { - builder.addUnwantedCapability(unwantedCapability); + for (int forbiddenCapability : BitUtils.unpackBits( + Long.parseLong(netforbiddenCapabilities))) { + builder.addForbiddenCapability(forbiddenCapability); } for (int transport : BitUtils.unpackBits(Long.parseLong(netTransportTypes))) { builder.addTransportType(transport); diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java index aace6457fc9d..80e9e2d6157f 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java @@ -621,6 +621,7 @@ public final class QuotaController extends StateController { } @Override + @GuardedBy("mLock") public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) { final long nowElapsed = sElapsedRealtimeClock.millis(); final int userId = jobStatus.getSourceUserId(); @@ -648,6 +649,7 @@ public final class QuotaController extends StateController { } @Override + @GuardedBy("mLock") public void prepareForExecutionLocked(JobStatus jobStatus) { if (DEBUG) { Slog.d(TAG, "Prepping for " + jobStatus.toShortString()); @@ -676,6 +678,7 @@ public final class QuotaController extends StateController { } @Override + @GuardedBy("mLock") public void unprepareFromExecutionLocked(JobStatus jobStatus) { Timer timer = mPkgTimers.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName()); if (timer != null) { @@ -691,6 +694,7 @@ public final class QuotaController extends StateController { } @Override + @GuardedBy("mLock") public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob, boolean forUpdate) { if (jobStatus.clearTrackingController(JobStatus.TRACKING_QUOTA)) { @@ -796,10 +800,12 @@ public final class QuotaController extends StateController { } /** Returns the maximum amount of time this job could run for. */ + @GuardedBy("mLock") public long getMaxJobExecutionTimeMsLocked(@NonNull final JobStatus jobStatus) { if (!jobStatus.shouldTreatAsExpeditedJob()) { - // If quota is currently "free", then the job can run for the full amount of time. - if (mChargeTracker.isCharging() + // If quota is currently "free", then the job can run for the full amount of time, + // regardless of bucket (hence using charging instead of isQuotaFreeLocked()). + if (mChargeTracker.isChargingLocked() || mTopAppCache.get(jobStatus.getSourceUid()) || isTopStartedJobLocked(jobStatus) || isUidInForeground(jobStatus.getSourceUid())) { @@ -810,7 +816,7 @@ public final class QuotaController extends StateController { } // Expedited job. - if (mChargeTracker.isCharging()) { + if (mChargeTracker.isChargingLocked()) { return mConstants.RUNTIME_FREE_QUOTA_MAX_LIMIT_MS; } if (mTopAppCache.get(jobStatus.getSourceUid()) || isTopStartedJobLocked(jobStatus)) { @@ -828,8 +834,9 @@ public final class QuotaController extends StateController { } /** @return true if the job is within expedited job quota. */ + @GuardedBy("mLock") public boolean isWithinEJQuotaLocked(@NonNull final JobStatus jobStatus) { - if (isQuotaFree(jobStatus.getEffectiveStandbyBucket())) { + if (isQuotaFreeLocked(jobStatus.getEffectiveStandbyBucket())) { return true; } // A job is within quota if one of the following is true: @@ -887,9 +894,10 @@ public final class QuotaController extends StateController { jobStatus.getSourceUserId(), jobStatus.getSourcePackageName(), standbyBucket); } - private boolean isQuotaFree(final int standbyBucket) { + @GuardedBy("mLock") + private boolean isQuotaFreeLocked(final int standbyBucket) { // Quota constraint is not enforced while charging. - if (mChargeTracker.isCharging()) { + if (mChargeTracker.isChargingLocked()) { // Restricted jobs require additional constraints when charging, so don't immediately // mark quota as free when charging. return standbyBucket != RESTRICTED_INDEX; @@ -898,11 +906,12 @@ public final class QuotaController extends StateController { } @VisibleForTesting + @GuardedBy("mLock") boolean isWithinQuotaLocked(final int userId, @NonNull final String packageName, final int standbyBucket) { if (standbyBucket == NEVER_INDEX) return false; - if (isQuotaFree(standbyBucket)) return true; + if (isQuotaFreeLocked(standbyBucket)) return true; ExecutionStats stats = getExecutionStatsLocked(userId, packageName, standbyBucket); return getRemainingExecutionTimeLocked(stats) > 0 @@ -1493,13 +1502,14 @@ public final class QuotaController extends StateController { /** Schedule a cleanup alarm if necessary and there isn't already one scheduled. */ @VisibleForTesting void maybeScheduleCleanupAlarmLocked() { - if (mNextCleanupTimeElapsed > sElapsedRealtimeClock.millis()) { + final long nowElapsed = sElapsedRealtimeClock.millis(); + if (mNextCleanupTimeElapsed > nowElapsed) { // There's already an alarm scheduled. Just stick with that one. There's no way we'll // end up scheduling an earlier alarm. if (DEBUG) { Slog.v(TAG, "Not scheduling cleanup since there's already one at " - + mNextCleanupTimeElapsed + " (in " + (mNextCleanupTimeElapsed - - sElapsedRealtimeClock.millis()) + "ms)"); + + mNextCleanupTimeElapsed + + " (in " + (mNextCleanupTimeElapsed - nowElapsed) + "ms)"); } return; } @@ -1521,7 +1531,7 @@ public final class QuotaController extends StateController { if (nextCleanupElapsed - mNextCleanupTimeElapsed <= 10 * MINUTE_IN_MILLIS) { // No need to clean up too often. Delay the alarm if the next cleanup would be too soon // after it. - nextCleanupElapsed += 10 * MINUTE_IN_MILLIS; + nextCleanupElapsed = mNextCleanupTimeElapsed + 10 * MINUTE_IN_MILLIS; } mNextCleanupTimeElapsed = nextCleanupElapsed; mAlarmManager.set(AlarmManager.ELAPSED_REALTIME, nextCleanupElapsed, ALARM_TAG_CLEANUP, @@ -1556,9 +1566,9 @@ public final class QuotaController extends StateController { private void handleNewChargingStateLocked() { mTimerChargingUpdateFunctor.setStatus(sElapsedRealtimeClock.millis(), - mChargeTracker.isCharging()); + mChargeTracker.isChargingLocked()); if (DEBUG) { - Slog.d(TAG, "handleNewChargingStateLocked: " + mChargeTracker.isCharging()); + Slog.d(TAG, "handleNewChargingStateLocked: " + mChargeTracker.isChargingLocked()); } // Deal with Timers first. mEJPkgTimers.forEach(mTimerChargingUpdateFunctor); @@ -1827,6 +1837,7 @@ public final class QuotaController extends StateController { * Track whether we're charging. This has a slightly different definition than that of * BatteryController. */ + @GuardedBy("mLock") private boolean mCharging; ChargingTracker() { @@ -1846,7 +1857,8 @@ public final class QuotaController extends StateController { mCharging = batteryManagerInternal.isPowered(BatteryManager.BATTERY_PLUGGED_ANY); } - public boolean isCharging() { + @GuardedBy("mLock") + public boolean isChargingLocked() { return mCharging; } @@ -2055,9 +2067,12 @@ public final class QuotaController extends StateController { } return; } - if (mRunningBgJobs.remove(jobStatus) - && !mChargeTracker.isCharging() && mRunningBgJobs.size() == 0) { - emitSessionLocked(sElapsedRealtimeClock.millis()); + final long nowElapsed = sElapsedRealtimeClock.millis(); + final int standbyBucket = JobSchedulerService.standbyBucketForPackage( + mPkg.packageName, mPkg.userId, nowElapsed); + if (mRunningBgJobs.remove(jobStatus) && mRunningBgJobs.size() == 0 + && !isQuotaFreeLocked(standbyBucket)) { + emitSessionLocked(nowElapsed); cancelCutoff(); } } @@ -2077,6 +2092,7 @@ public final class QuotaController extends StateController { cancelCutoff(); } + @GuardedBy("mLock") private void emitSessionLocked(long nowElapsed) { if (mBgJobCount <= 0) { // Nothing to emit. @@ -2121,6 +2137,7 @@ public final class QuotaController extends StateController { } } + @GuardedBy("mLock") private boolean shouldTrackLocked() { final long nowElapsed = sElapsedRealtimeClock.millis(); final int standbyBucket = JobSchedulerService.standbyBucketForPackage(mPkg.packageName, @@ -2132,7 +2149,7 @@ public final class QuotaController extends StateController { final long topAppGracePeriodEndElapsed = mTopAppGraceCache.get(mUid); final boolean hasTopAppExemption = !mRegularJobTimer && (mTopAppCache.get(mUid) || nowElapsed < topAppGracePeriodEndElapsed); - return (standbyBucket == RESTRICTED_INDEX || !mChargeTracker.isCharging()) + return !isQuotaFreeLocked(standbyBucket) && !mForegroundUids.get(mUid) && !hasTempAllowlistExemption && !hasTopAppExemption; } @@ -2198,7 +2215,7 @@ public final class QuotaController extends StateController { public void dump(IndentingPrintWriter pw, Predicate<JobStatus> predicate) { pw.print("Timer<"); - pw.print(mRegularJobTimer ? "REG" : " EJ"); + pw.print(mRegularJobTimer ? "REG" : "EJ"); pw.print(">{"); pw.print(mPkg); pw.print("} "); @@ -2462,30 +2479,60 @@ public final class QuotaController extends StateController { } } - private final class DeleteTimingSessionsFunctor implements Consumer<List<TimingSession>> { - private final Predicate<TimingSession> mTooOld = new Predicate<TimingSession>() { - public boolean test(TimingSession ts) { - return ts.endTimeElapsed <= sElapsedRealtimeClock.millis() - MAX_PERIOD_MS; - } - }; + private static final class TimingSessionTooOldPredicate implements Predicate<TimingSession> { + private long mNowElapsed; + + private void updateNow() { + mNowElapsed = sElapsedRealtimeClock.millis(); + } @Override - public void accept(List<TimingSession> sessions) { - if (sessions != null) { - // Remove everything older than MAX_PERIOD_MS time ago. - sessions.removeIf(mTooOld); - } + public boolean test(TimingSession ts) { + return ts.endTimeElapsed <= mNowElapsed - MAX_PERIOD_MS; } } - private final DeleteTimingSessionsFunctor mDeleteOldSessionsFunctor = - new DeleteTimingSessionsFunctor(); + private final TimingSessionTooOldPredicate mTimingSessionTooOld = + new TimingSessionTooOldPredicate(); + + private final Consumer<List<TimingSession>> mDeleteOldSessionsFunctor = sessions -> { + if (sessions != null) { + // Remove everything older than MAX_PERIOD_MS time ago. + sessions.removeIf(mTimingSessionTooOld); + } + }; @VisibleForTesting void deleteObsoleteSessionsLocked() { + mTimingSessionTooOld.updateNow(); + + // Regular sessions mTimingSessions.forEach(mDeleteOldSessionsFunctor); - // Don't delete EJ timing sessions here. They'll be removed in - // getRemainingEJExecutionTimeLocked(). + + // EJ sessions + for (int uIdx = 0; uIdx < mEJTimingSessions.numMaps(); ++uIdx) { + final int userId = mEJTimingSessions.keyAt(uIdx); + for (int pIdx = 0; pIdx < mEJTimingSessions.numElementsForKey(userId); ++pIdx) { + final String packageName = mEJTimingSessions.keyAt(uIdx, pIdx); + final ShrinkableDebits debits = getEJDebitsLocked(userId, packageName); + final List<TimingSession> sessions = mEJTimingSessions.get(userId, packageName); + if (sessions == null) { + continue; + } + + while (sessions.size() > 0) { + final TimingSession ts = sessions.get(0); + if (mTimingSessionTooOld.test(ts)) { + // Stale sessions may still be factored into tally. Remove them. + final long duration = ts.endTimeElapsed - ts.startTimeElapsed; + debits.transactLocked(-duration); + sessions.remove(0); + } else { + break; + } + } + } + } } private class QcHandler extends Handler { @@ -4054,7 +4101,7 @@ public final class QuotaController extends StateController { @Override public void dumpControllerStateLocked(final IndentingPrintWriter pw, final Predicate<JobStatus> predicate) { - pw.println("Is charging: " + mChargeTracker.isCharging()); + pw.println("Is charging: " + mChargeTracker.isChargingLocked()); pw.println("Current elapsed time: " + sElapsedRealtimeClock.millis()); pw.println(); @@ -4075,7 +4122,16 @@ public final class QuotaController extends StateController { pw.println("Special apps:"); pw.increaseIndent(); - pw.print("System installers", mSystemInstallers.toString()); + pw.print("System installers={"); + for (int si = 0; si < mSystemInstallers.size(); ++si) { + if (si > 0) { + pw.print(", "); + } + pw.print(mSystemInstallers.keyAt(si)); + pw.print("->"); + pw.print(mSystemInstallers.get(si)); + } + pw.println("}"); pw.decreaseIndent(); pw.println(); @@ -4222,7 +4278,8 @@ public final class QuotaController extends StateController { final long token = proto.start(fieldId); final long mToken = proto.start(StateControllerProto.QUOTA); - proto.write(StateControllerProto.QuotaController.IS_CHARGING, mChargeTracker.isCharging()); + proto.write(StateControllerProto.QuotaController.IS_CHARGING, + mChargeTracker.isChargingLocked()); proto.write(StateControllerProto.QuotaController.ELAPSED_REALTIME, sElapsedRealtimeClock.millis()); diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/idle/DeviceIdlenessTracker.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/idle/DeviceIdlenessTracker.java index 3c4961ab6825..140cca679e14 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/idle/DeviceIdlenessTracker.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/idle/DeviceIdlenessTracker.java @@ -56,7 +56,7 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id private boolean mDockIdle; private boolean mProjectionActive; private IdlenessListener mIdleListener; - private final UiModeManager.OnProjectionStateChangeListener mOnProjectionStateChangeListener = + private final UiModeManager.OnProjectionStateChangedListener mOnProjectionStateChangedListener = this::onProjectionStateChanged; private AlarmManager.OnAlarmListener mIdleAlarmListener = () -> { @@ -105,9 +105,9 @@ public final class DeviceIdlenessTracker extends BroadcastReceiver implements Id // TODO(b/172579710): Move the callbacks off the main executor and on to // JobSchedulerBackgroundThread.getExecutor() once synchronization is fixed in this class. - context.getSystemService(UiModeManager.class).addOnProjectionStateChangeListener( + context.getSystemService(UiModeManager.class).addOnProjectionStateChangedListener( UiModeManager.PROJECTION_TYPE_ALL, context.getMainExecutor(), - mOnProjectionStateChangeListener); + mOnProjectionStateChangedListener); } private void onProjectionStateChanged(@UiModeManager.ProjectionType int activeProjectionTypes, diff --git a/apex/media/framework/java/android/media/MediaTranscodeManager.java b/apex/media/framework/java/android/media/MediaTranscodeManager.java index d1106a2b79c3..5742d43f83b7 100644 --- a/apex/media/framework/java/android/media/MediaTranscodeManager.java +++ b/apex/media/framework/java/android/media/MediaTranscodeManager.java @@ -430,10 +430,6 @@ public final class MediaTranscodeManager { mUid = Os.getuid(); mPid = Os.getpid(); mIsLowRamDevice = mContext.getSystemService(ActivityManager.class).isLowRamDevice(); - IMediaTranscodingService service = getService(false /*retry*/); - if (service != null) { - mTranscodingClient = registerClient(service); - } } /** diff --git a/boot/Android.bp b/boot/Android.bp index ef2abc885fcf..3caede47d859 100644 --- a/boot/Android.bp +++ b/boot/Android.bp @@ -98,4 +98,12 @@ platform_bootclasspath { dest: "hiddenapi-unsupported.csv", }, ], + + required: [ + "platform-systemserverclasspath", + ], +} + +platform_systemserverclasspath { + name: "platform-systemserverclasspath", } diff --git a/boot/OWNERS b/boot/OWNERS index 0648888a9a1a..0e258d042c08 100644 --- a/boot/OWNERS +++ b/boot/OWNERS @@ -1,2 +1,6 @@ # soong-team@ as the platform_bootclasspath module is tightly coupled with Soong file:platform/build/soong:/OWNERS + +# art-team@ manages the boot image profiles for frameworks +per-file boot-* = calin@google.com, yawanng@google.com, ngeoffray@google.com +per-file preloaded-classes* = calin@google.com, yawanng@google.com, ngeoffray@google.com diff --git a/build/boot/boot-image-profile.txt b/build/boot/boot-image-profile.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/build/boot/boot-image-profile.txt diff --git a/build/boot/preloaded-classes b/build/boot/preloaded-classes new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/build/boot/preloaded-classes diff --git a/cmds/am/src/com/android/commands/am/Instrument.java b/cmds/am/src/com/android/commands/am/Instrument.java index 2be8264856f8..1e72ddf8ecfc 100644 --- a/cmds/am/src/com/android/commands/am/Instrument.java +++ b/cmds/am/src/com/android/commands/am/Instrument.java @@ -555,7 +555,7 @@ public class Instrument { // Start the process final Process process = new ProcessBuilder() - .command("logcat", "-d", "-v threadtime,uid", "-T", timestamp) + .command("logcat", "-d", "-v", "threadtime,uid", "-T", timestamp) .start(); // Nothing to write. Don't let the command accidentally block. diff --git a/core/api/current.txt b/core/api/current.txt index 989ca3427453..5f3eeb1ed191 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -1740,6 +1740,7 @@ package android { field @Deprecated public static final int secondary_text_light = 17170439; // 0x1060007 field @Deprecated public static final int secondary_text_light_nodisable = 17170440; // 0x1060008 field public static final int system_accent1_0; + field public static final int system_accent1_10; field public static final int system_accent1_100; field public static final int system_accent1_1000; field public static final int system_accent1_200; @@ -1752,6 +1753,7 @@ package android { field public static final int system_accent1_800; field public static final int system_accent1_900; field public static final int system_accent2_0; + field public static final int system_accent2_10; field public static final int system_accent2_100; field public static final int system_accent2_1000; field public static final int system_accent2_200; @@ -1764,6 +1766,7 @@ package android { field public static final int system_accent2_800; field public static final int system_accent2_900; field public static final int system_accent3_0; + field public static final int system_accent3_10; field public static final int system_accent3_100; field public static final int system_accent3_1000; field public static final int system_accent3_200; @@ -1776,6 +1779,7 @@ package android { field public static final int system_accent3_800; field public static final int system_accent3_900; field public static final int system_neutral1_0; + field public static final int system_neutral1_10; field public static final int system_neutral1_100; field public static final int system_neutral1_1000; field public static final int system_neutral1_200; @@ -1788,6 +1792,7 @@ package android { field public static final int system_neutral1_800; field public static final int system_neutral1_900; field public static final int system_neutral2_0; + field public static final int system_neutral2_10; field public static final int system_neutral2_100; field public static final int system_neutral2_1000; field public static final int system_neutral2_200; @@ -1816,7 +1821,6 @@ package android { field public static final int notification_large_icon_width = 17104901; // 0x1050005 field public static final int system_app_widget_background_radius; field public static final int system_app_widget_inner_radius; - field public static final int system_app_widget_internal_padding; field public static final int thumbnail_height = 17104897; // 0x1050001 field public static final int thumbnail_width = 17104898; // 0x1050002 } @@ -4400,6 +4404,7 @@ package android.app { method public void setWindow(int, long, long, android.app.PendingIntent); method public void setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler); field public static final String ACTION_NEXT_ALARM_CLOCK_CHANGED = "android.app.action.NEXT_ALARM_CLOCK_CHANGED"; + field public static final String ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED = "android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED"; field public static final int ELAPSED_REALTIME = 3; // 0x3 field public static final int ELAPSED_REALTIME_WAKEUP = 2; // 0x2 field public static final long INTERVAL_DAY = 86400000L; // 0x5265c00L @@ -32945,6 +32950,7 @@ package android.print { field public static final android.print.PrintAttributes.MediaSize JPN_HAGAKI; field public static final android.print.PrintAttributes.MediaSize JPN_KAHU; field public static final android.print.PrintAttributes.MediaSize JPN_KAKU2; + field @NonNull public static final android.print.PrintAttributes.MediaSize JPN_OE_PHOTO_L; field public static final android.print.PrintAttributes.MediaSize JPN_OUFUKU; field public static final android.print.PrintAttributes.MediaSize JPN_YOU4; field @NonNull public static final android.print.PrintAttributes.MediaSize NA_ARCH_A; @@ -32966,7 +32972,6 @@ package android.print { field public static final android.print.PrintAttributes.MediaSize NA_QUARTO; field @NonNull public static final android.print.PrintAttributes.MediaSize NA_SUPER_B; field public static final android.print.PrintAttributes.MediaSize NA_TABLOID; - field @NonNull public static final android.print.PrintAttributes.MediaSize OE_PHOTO_L; field public static final android.print.PrintAttributes.MediaSize OM_DAI_PA_KAI; field public static final android.print.PrintAttributes.MediaSize OM_JUURO_KU_KAI; field public static final android.print.PrintAttributes.MediaSize OM_PA_KAI; @@ -52960,6 +52965,7 @@ package android.view.translation { public interface UiTranslationStateCallback { method public void onFinished(); method public void onPaused(); + method public default void onResumed(@NonNull android.icu.util.ULocale, @NonNull android.icu.util.ULocale); method @Deprecated public void onStarted(@NonNull String, @NonNull String); method public default void onStarted(@NonNull android.icu.util.ULocale, @NonNull android.icu.util.ULocale); } diff --git a/core/api/removed.txt b/core/api/removed.txt index cdaa5f53eda0..8229019ab664 100644 --- a/core/api/removed.txt +++ b/core/api/removed.txt @@ -1,4 +1,12 @@ // Signature format: 2.0 +package android { + + public static final class R.dimen { + field public static final int __removed_system_app_widget_internal_padding; + } + +} + package android.app { public class Notification implements android.os.Parcelable { diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 990f43de5ec5..96a23b2a25ec 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -838,12 +838,12 @@ package android.app { } public class UiModeManager { - method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void addOnProjectionStateChangeListener(int, @NonNull java.util.concurrent.Executor, @NonNull android.app.UiModeManager.OnProjectionStateChangeListener); + method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void addOnProjectionStateChangedListener(int, @NonNull java.util.concurrent.Executor, @NonNull android.app.UiModeManager.OnProjectionStateChangedListener); method @RequiresPermission(android.Manifest.permission.ENTER_CAR_MODE_PRIORITIZED) public void enableCarMode(@IntRange(from=0) int, int); method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public int getActiveProjectionTypes(); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public java.util.Set<java.lang.String> getProjectingPackages(int); method @RequiresPermission(value=android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional=true) public boolean releaseProjection(int); - method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void removeOnProjectionStateChangeListener(@NonNull android.app.UiModeManager.OnProjectionStateChangeListener); + method @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) public void removeOnProjectionStateChangedListener(@NonNull android.app.UiModeManager.OnProjectionStateChangedListener); method @RequiresPermission(value=android.Manifest.permission.TOGGLE_AUTOMOTIVE_PROJECTION, conditional=true) public boolean requestProjection(int); field public static final String ACTION_ENTER_CAR_MODE_PRIORITIZED = "android.app.action.ENTER_CAR_MODE_PRIORITIZED"; field public static final String ACTION_EXIT_CAR_MODE_PRIORITIZED = "android.app.action.EXIT_CAR_MODE_PRIORITIZED"; @@ -855,7 +855,7 @@ package android.app { field public static final int PROJECTION_TYPE_NONE = 0; // 0x0 } - public static interface UiModeManager.OnProjectionStateChangeListener { + public static interface UiModeManager.OnProjectionStateChangedListener { method public void onProjectionStateChanged(int, @NonNull java.util.Set<java.lang.String>); } @@ -1242,10 +1242,11 @@ package android.app.backup { package android.app.compat { public final class CompatChanges { + method @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) public static void addPackageOverrides(@NonNull String, @NonNull java.util.Map<java.lang.Long,android.app.compat.PackageOverride>); method public static boolean isChangeEnabled(long); method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, @NonNull String, @NonNull android.os.UserHandle); method @RequiresPermission(allOf={"android.permission.READ_COMPAT_CHANGE_CONFIG", "android.permission.LOG_COMPAT_CHANGE"}) public static boolean isChangeEnabled(long, int); - method @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) public static void setPackageOverride(@NonNull String, @NonNull java.util.Map<java.lang.Long,android.app.compat.PackageOverride>); + method @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) public static void removePackageOverrides(@NonNull String, @NonNull java.util.Set<java.lang.Long>); } public final class PackageOverride { @@ -1527,6 +1528,9 @@ package android.app.search { method public boolean shouldHide(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.app.search.SearchTarget> CREATOR; + field public static final String LAYOUT_TYPE_ICON = "icon"; + field public static final String LAYOUT_TYPE_ICON_ROW = "icon_row"; + field public static final String LAYOUT_TYPE_SHORT_ICON_ROW = "short_icon_row"; field public static final int RESULT_TYPE_APPLICATION = 1; // 0x1 field public static final int RESULT_TYPE_SHORTCUT = 2; // 0x2 field public static final int RESULT_TYPE_SLICE = 4; // 0x4 @@ -1540,7 +1544,7 @@ package android.app.search { method @NonNull public android.app.search.SearchTarget.Builder setExtras(@NonNull android.os.Bundle); method @NonNull public android.app.search.SearchTarget.Builder setPackageName(@NonNull String); method @NonNull public android.app.search.SearchTarget.Builder setParentId(@NonNull String); - method @NonNull public android.app.search.SearchTarget.Builder setScore(float); + method @NonNull public android.app.search.SearchTarget.Builder setScore(@FloatRange(from=0.0f, to=1.0f) float); method @NonNull public android.app.search.SearchTarget.Builder setSearchAction(@Nullable android.app.search.SearchAction); method @NonNull public android.app.search.SearchTarget.Builder setShortcutInfo(@NonNull android.content.pm.ShortcutInfo); method @NonNull public android.app.search.SearchTarget.Builder setShouldHide(boolean); diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 1330234f6521..d366e35dd11a 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -219,6 +219,7 @@ package android.app { public class AppOpsManager { method @RequiresPermission("android.permission.MANAGE_APPOPS") public void addHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOps); method @RequiresPermission("android.permission.MANAGE_APPOPS") public void clearHistory(); + method public static void collectNotedOpSync(@NonNull android.app.SyncNotedAppOp); method @RequiresPermission("android.permission.MANAGE_APPOPS") public void getHistoricalOpsFromDiskRaw(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @Nullable java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>); method public static int getNumOps(); method public boolean isOperationActive(int, int, String); @@ -360,6 +361,10 @@ package android.app { method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void setExpansionDisabledForSimNetworkLock(boolean); } + public final class SyncNotedAppOp implements android.os.Parcelable { + ctor public SyncNotedAppOp(int, @IntRange(from=0L) int, @Nullable String, @NonNull String); + } + public class TaskInfo { method public boolean containsLaunchCookie(@NonNull android.os.IBinder); method @NonNull public android.content.res.Configuration getConfiguration(); @@ -429,7 +434,6 @@ package android.app { field public static final int ROTATION_UNDEFINED = -1; // 0xffffffff field public static final int WINDOWING_MODE_FREEFORM = 5; // 0x5 field public static final int WINDOWING_MODE_FULLSCREEN = 1; // 0x1 - field public static final int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY = 4; // 0x4 field public static final int WINDOWING_MODE_MULTI_WINDOW = 6; // 0x6 field public static final int WINDOWING_MODE_PINNED = 2; // 0x2 field public static final int WINDOWING_MODE_SPLIT_SCREEN_PRIMARY = 3; // 0x3 diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 007b0a8ab960..79fb86365b74 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -1027,7 +1027,8 @@ public class AccountManager { public boolean addAccountExplicitly(Account account, String password, Bundle userdata) { if (account == null) throw new IllegalArgumentException("account is null"); try { - return mService.addAccountExplicitly(account, password, userdata); + return mService.addAccountExplicitly( + account, password, userdata, mContext.getOpPackageName()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1064,7 +1065,7 @@ public class AccountManager { throw new IllegalArgumentException("account is null"); try { return mService.addAccountExplicitlyWithVisibility(account, password, extras, - visibility); + visibility, mContext.getOpPackageName()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/android/accounts/IAccountManager.aidl b/core/java/android/accounts/IAccountManager.aidl index ce68e082cf4f..377edc65281f 100644 --- a/core/java/android/accounts/IAccountManager.aidl +++ b/core/java/android/accounts/IAccountManager.aidl @@ -43,7 +43,7 @@ interface IAccountManager { in String[] features, String opPackageName); void getAccountsByFeatures(in IAccountManagerResponse response, String accountType, in String[] features, String opPackageName); - boolean addAccountExplicitly(in Account account, String password, in Bundle extras); + boolean addAccountExplicitly(in Account account, String password, in Bundle extras, in String opPackageName); void removeAccountAsUser(in IAccountManagerResponse response, in Account account, boolean expectActivityLaunch, int userId); boolean removeAccountExplicitly(in Account account); @@ -107,7 +107,7 @@ interface IAccountManager { /* Returns Map<String, Integer> from package name to visibility with all values stored for given account */ Map getPackagesAndVisibilityForAccount(in Account account); boolean addAccountExplicitlyWithVisibility(in Account account, String password, in Bundle extras, - in Map visibility); + in Map visibility, in String opPackageName); boolean setAccountVisibility(in Account a, in String packageName, int newVisibility); int getAccountVisibility(in Account a, in String packageName); /* Type may be null returns Map <Account, Integer>*/ diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index c21de62ed38e..80f1e6eab9df 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -1447,13 +1447,7 @@ public class ActivityOptions { } /** - * Sets the windowing mode the activity should launch into. If the input windowing mode is - * {@link android.app.WindowConfiguration#WINDOWING_MODE_SPLIT_SCREEN_SECONDARY} and the device - * isn't currently in split-screen windowing mode, then the activity will be launched in - * {@link android.app.WindowConfiguration#WINDOWING_MODE_FULLSCREEN} windowing mode. For clarity - * on this you can use - * {@link android.app.WindowConfiguration#WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY} - * + * Sets the windowing mode the activity should launch into. * @hide */ @TestApi diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 75a38c2380b9..010f4e4c9951 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -2783,14 +2783,24 @@ public class AppOpsManager { private static final ThreadLocal<Integer> sBinderThreadCallingUid = new ThreadLocal<>(); /** - * If a thread is currently executing a two-way binder transaction, this stores the op-codes of - * the app-ops that were noted during this transaction. + * Optimization: we need to propagate to IPCs whether the current thread is collecting + * app ops but using only the thread local above is too slow as it requires a map lookup + * on every IPC. We add this static var that is lockless and stores an OR-ed mask of the + * thread id's currently collecting ops, thus reducing the map lookup to a simple bit + * operation except the extremely unlikely case when threads with overlapping id bits + * execute op collecting ops. + */ + private static volatile long sThreadsListeningForOpNotedInBinderTransaction = 0L; + + /** + * If a thread is currently executing a two-way binder transaction, this stores the + * ops that were noted blaming any app (the caller, the caller of the caller, etc). * * @see #getNotedOpCollectionMode * @see #collectNotedOpSync */ - private static final ThreadLocal<ArrayMap<String, long[]>> sAppOpsNotedInThisBinderTransaction = - new ThreadLocal<>(); + private static final ThreadLocal<ArrayMap<String, ArrayMap<String, long[]>>> + sAppOpsNotedInThisBinderTransaction = new ThreadLocal<>(); /** Whether noting for an appop should be collected */ private static final @ShouldCollectNoteOp byte[] sAppOpsToNote = new byte[_NUM_OP]; @@ -6844,7 +6854,7 @@ public class AppOpsManager { writeLongSparseLongArrayToParcel(mAccessCount, parcel); writeLongSparseLongArrayToParcel(mRejectCount, parcel); writeLongSparseLongArrayToParcel(mAccessDuration, parcel); - writeDiscreteAccessArrayToParcel(mDiscreteAccesses, parcel); + writeDiscreteAccessArrayToParcel(mDiscreteAccesses, parcel, flags); } @Override @@ -8105,7 +8115,7 @@ public class AppOpsManager { SyncNotedAppOp syncOp = mService.noteOperation(op, uid, packageName, attributionTag, collectionMode == COLLECT_ASYNC, message, shouldCollectMessage); - if (syncOp.getOpMode()== MODE_ALLOWED) { + if (syncOp.getOpMode() == MODE_ALLOWED) { if (collectionMode == COLLECT_SELF) { collectNotedOpForSelf(syncOp); } else if (collectionMode == COLLECT_SYNC) { @@ -8872,70 +8882,11 @@ public class AppOpsManager { * @hide */ public static void startNotedAppOpsCollection(int callingUid) { + sThreadsListeningForOpNotedInBinderTransaction |= Thread.currentThread().getId(); sBinderThreadCallingUid.set(callingUid); } /** - * State of a temporarily paused noted app-ops collection. - * - * @see #pauseNotedAppOpsCollection() - * - * @hide - */ - public static class PausedNotedAppOpsCollection { - final int mUid; - final @Nullable ArrayMap<String, long[]> mCollectedNotedAppOps; - - PausedNotedAppOpsCollection(int uid, @Nullable ArrayMap<String, - long[]> collectedNotedAppOps) { - mUid = uid; - mCollectedNotedAppOps = collectedNotedAppOps; - } - } - - /** - * Temporarily suspend collection of noted app-ops when binder-thread calls into the other - * process. During such a call there might be call-backs coming back on the same thread which - * should not be accounted to the current collection. - * - * @return a state needed to resume the collection - * - * @hide - */ - public static @Nullable PausedNotedAppOpsCollection pauseNotedAppOpsCollection() { - Integer previousUid = sBinderThreadCallingUid.get(); - if (previousUid != null) { - ArrayMap<String, long[]> previousCollectedNotedAppOps = - sAppOpsNotedInThisBinderTransaction.get(); - - sBinderThreadCallingUid.remove(); - sAppOpsNotedInThisBinderTransaction.remove(); - - return new PausedNotedAppOpsCollection(previousUid, previousCollectedNotedAppOps); - } - - return null; - } - - /** - * Resume a collection paused via {@link #pauseNotedAppOpsCollection}. - * - * @param prevCollection The state of the previous collection - * - * @hide - */ - public static void resumeNotedAppOpsCollection( - @Nullable PausedNotedAppOpsCollection prevCollection) { - if (prevCollection != null) { - sBinderThreadCallingUid.set(prevCollection.mUid); - - if (prevCollection.mCollectedNotedAppOps != null) { - sAppOpsNotedInThisBinderTransaction.set(prevCollection.mCollectedNotedAppOps); - } - } - } - - /** * Finish collection of noted appops on this thread. * * <p>Called at the end of a two way binder transaction. @@ -8946,6 +8897,7 @@ public class AppOpsManager { */ public static void finishNotedAppOpsCollection() { sBinderThreadCallingUid.remove(); + sThreadsListeningForOpNotedInBinderTransaction &= ~Thread.currentThread().getId(); sAppOpsNotedInThisBinderTransaction.remove(); } @@ -8970,28 +8922,52 @@ public class AppOpsManager { * <p> Delivered to caller via {@link #prefixParcelWithAppOpsIfNeeded} * * @param syncOp the op and attribution tag to note for + * + * @hide + */ + @TestApi + public static void collectNotedOpSync(@NonNull SyncNotedAppOp syncOp) { + collectNotedOpSync(sOpStrToOp.get(syncOp.getOp()), syncOp.getAttributionTag(), + syncOp.getPackageName()); + } + + /** + * Collect a noted op when inside of a two-way binder call. + * + * <p> Delivered to caller via {@link #prefixParcelWithAppOpsIfNeeded} + * + * @param code the op code to note for + * @param attributionTag the attribution tag to note for + * @param packageName the package to note for */ - private void collectNotedOpSync(@NonNull SyncNotedAppOp syncOp) { + private static void collectNotedOpSync(int code, @Nullable String attributionTag, + @NonNull String packageName) { // If this is inside of a two-way binder call: // We are inside of a two-way binder call. Delivered to caller via // {@link #prefixParcelWithAppOpsIfNeeded} - int op = sOpStrToOp.get(syncOp.getOp()); - ArrayMap<String, long[]> appOpsNoted = sAppOpsNotedInThisBinderTransaction.get(); + ArrayMap<String, ArrayMap<String, long[]>> appOpsNoted = + sAppOpsNotedInThisBinderTransaction.get(); if (appOpsNoted == null) { appOpsNoted = new ArrayMap<>(1); sAppOpsNotedInThisBinderTransaction.set(appOpsNoted); } - long[] appOpsNotedForAttribution = appOpsNoted.get(syncOp.getAttributionTag()); + ArrayMap<String, long[]> packageAppOpsNotedForAttribution = appOpsNoted.get(packageName); + if (packageAppOpsNotedForAttribution == null) { + packageAppOpsNotedForAttribution = new ArrayMap<>(1); + appOpsNoted.put(packageName, packageAppOpsNotedForAttribution); + } + + long[] appOpsNotedForAttribution = packageAppOpsNotedForAttribution.get(attributionTag); if (appOpsNotedForAttribution == null) { appOpsNotedForAttribution = new long[2]; - appOpsNoted.put(syncOp.getAttributionTag(), appOpsNotedForAttribution); + packageAppOpsNotedForAttribution.put(attributionTag, appOpsNotedForAttribution); } - if (op < 64) { - appOpsNotedForAttribution[0] |= 1L << op; + if (code < 64) { + appOpsNotedForAttribution[0] |= 1L << code; } else { - appOpsNotedForAttribution[1] |= 1L << (op - 64); + appOpsNotedForAttribution[1] |= 1L << (code - 64); } } @@ -9045,9 +9021,7 @@ public class AppOpsManager { } } - Integer binderUid = sBinderThreadCallingUid.get(); - - if (binderUid != null && binderUid == uid) { + if (isListeningForOpNotedInBinderTransaction()) { return COLLECT_SYNC; } else { return COLLECT_ASYNC; @@ -9064,21 +9038,34 @@ public class AppOpsManager { * * @hide */ + // TODO (b/186872903) Refactor how sync noted ops are propagated. public static void prefixParcelWithAppOpsIfNeeded(@NonNull Parcel p) { - ArrayMap<String, long[]> notedAppOps = sAppOpsNotedInThisBinderTransaction.get(); + if (!isListeningForOpNotedInBinderTransaction()) { + return; + } + final ArrayMap<String, ArrayMap<String, long[]>> notedAppOps = + sAppOpsNotedInThisBinderTransaction.get(); if (notedAppOps == null) { return; } p.writeInt(Parcel.EX_HAS_NOTED_APPOPS_REPLY_HEADER); - int numAttributionWithNotesAppOps = notedAppOps.size(); - p.writeInt(numAttributionWithNotesAppOps); + final int packageCount = notedAppOps.size(); + p.writeInt(packageCount); - for (int i = 0; i < numAttributionWithNotesAppOps; i++) { + for (int i = 0; i < packageCount; i++) { p.writeString(notedAppOps.keyAt(i)); - p.writeLong(notedAppOps.valueAt(i)[0]); - p.writeLong(notedAppOps.valueAt(i)[1]); + + final ArrayMap<String, long[]> notedTagAppOps = notedAppOps.valueAt(i); + final int tagCount = notedTagAppOps.size(); + p.writeInt(tagCount); + + for (int j = 0; j < tagCount; j++) { + p.writeString(notedTagAppOps.keyAt(j)); + p.writeLong(notedTagAppOps.valueAt(j)[0]); + p.writeLong(notedTagAppOps.valueAt(j)[1]); + } } } @@ -9093,36 +9080,54 @@ public class AppOpsManager { * @hide */ public static void readAndLogNotedAppops(@NonNull Parcel p) { - int numAttributionsWithNotedAppOps = p.readInt(); + final int packageCount = p.readInt(); + if (packageCount <= 0) { + return; + } + + final String myPackageName = ActivityThread.currentPackageName(); + + synchronized (sLock) { + for (int i = 0; i < packageCount; i++) { + final String packageName = p.readString(); - for (int i = 0; i < numAttributionsWithNotedAppOps; i++) { - String attributionTag = p.readString(); - long[] rawNotedAppOps = new long[2]; - rawNotedAppOps[0] = p.readLong(); - rawNotedAppOps[1] = p.readLong(); + final int tagCount = p.readInt(); + for (int j = 0; j < tagCount; j++) { + final String attributionTag = p.readString(); + final long[] rawNotedAppOps = new long[2]; + rawNotedAppOps[0] = p.readLong(); + rawNotedAppOps[1] = p.readLong(); - if (rawNotedAppOps[0] != 0 || rawNotedAppOps[1] != 0) { - BitSet notedAppOps = BitSet.valueOf(rawNotedAppOps); + if (rawNotedAppOps[0] == 0 && rawNotedAppOps[1] == 0) { + continue; + } - synchronized (sLock) { + final BitSet notedAppOps = BitSet.valueOf(rawNotedAppOps); for (int code = notedAppOps.nextSetBit(0); code != -1; code = notedAppOps.nextSetBit(code + 1)) { - if (sOnOpNotedCallback != null) { - sOnOpNotedCallback.onNoted(new SyncNotedAppOp(code, attributionTag)); - } else { - String message = getFormattedStackTrace(); - sUnforwardedOps.add( - new AsyncNotedAppOp(code, Process.myUid(), attributionTag, - message, System.currentTimeMillis())); - if (sUnforwardedOps.size() > MAX_UNFORWARDED_OPS) { - sUnforwardedOps.remove(0); + if (Objects.equals(myPackageName, packageName)) { + if (sOnOpNotedCallback != null) { + sOnOpNotedCallback.onNoted(new SyncNotedAppOp(code, + attributionTag, packageName)); + } else { + String message = getFormattedStackTrace(); + sUnforwardedOps.add(new AsyncNotedAppOp(code, Process.myUid(), + attributionTag, message, System.currentTimeMillis())); + if (sUnforwardedOps.size() > MAX_UNFORWARDED_OPS) { + sUnforwardedOps.remove(0); + } } + } else if (isListeningForOpNotedInBinderTransaction()) { + collectNotedOpSync(code, attributionTag, packageName); + } + } + for (int code = notedAppOps.nextSetBit(0); code != -1; + code = notedAppOps.nextSetBit(code + 1)) { + if (Objects.equals(myPackageName, packageName)) { + sMessageCollector.onNoted(new SyncNotedAppOp(code, + attributionTag, packageName)); } } - } - for (int code = notedAppOps.nextSetBit(0); code != -1; - code = notedAppOps.nextSetBit(code + 1)) { - sMessageCollector.onNoted(new SyncNotedAppOp(code, attributionTag)); } } } @@ -9229,7 +9234,17 @@ public class AppOpsManager { * @hide */ public static boolean isListeningForOpNoted() { - return sOnOpNotedCallback != null || isCollectingStackTraces(); + return sOnOpNotedCallback != null || isListeningForOpNotedInBinderTransaction() + || isCollectingStackTraces(); + } + + /** + * @return whether we are in a binder transaction and collecting appops. + */ + private static boolean isListeningForOpNotedInBinderTransaction() { + return (sThreadsListeningForOpNotedInBinderTransaction + & Thread.currentThread().getId()) != 0 + && sBinderThreadCallingUid.get() != null; } /** @@ -9696,29 +9711,16 @@ public class AppOpsManager { } private static void writeDiscreteAccessArrayToParcel( - @Nullable List<AttributedOpEntry> array, @NonNull Parcel parcel) { - if (array != null) { - final int size = array.size(); - parcel.writeInt(size); - for (int i = 0; i < size; i++) { - array.get(i).writeToParcel(parcel, 0); - } - } else { - parcel.writeInt(-1); - } + @Nullable List<AttributedOpEntry> array, @NonNull Parcel parcel, int flags) { + ParceledListSlice<AttributedOpEntry> listSlice = + array == null ? null : new ParceledListSlice<>(array); + parcel.writeParcelable(listSlice, flags); } private static @Nullable List<AttributedOpEntry> readDiscreteAccessArrayFromParcel( @NonNull Parcel parcel) { - final int size = parcel.readInt(); - if (size < 0) { - return null; - } - final List<AttributedOpEntry> array = new ArrayList<>(size); - for (int i = 0; i < size; i++) { - array.add(new AttributedOpEntry(parcel)); - } - return array; + final ParceledListSlice<AttributedOpEntry> listSlice = parcel.readParcelable(null); + return listSlice == null ? null : listSlice.getList(); } /** diff --git a/core/java/android/app/ApplicationExitInfo.java b/core/java/android/app/ApplicationExitInfo.java index 8574678a5a02..4f94c9b5045b 100644 --- a/core/java/android/app/ApplicationExitInfo.java +++ b/core/java/android/app/ApplicationExitInfo.java @@ -325,6 +325,15 @@ public final class ApplicationExitInfo implements Parcelable { */ public static final int SUBREASON_ISOLATED_NOT_NEEDED = 17; + /** + * The process was killed because it's in forced-app-standby state, and it's cached and + * its uid state is idle; this would be set only when the reason is {@link #REASON_OTHER}. + * + * For internal use only. + * @hide + */ + public static final int SUBREASON_CACHED_IDLE_FORCED_APP_STANDBY = 18; + // If there is any OEM code which involves additional app kill reasons, it should // be categorized in {@link #REASON_OTHER}, with subreason code starting from 1000. @@ -435,6 +444,13 @@ public final class ApplicationExitInfo implements Parcelable { */ private IParcelFileDescriptorRetriever mNativeTombstoneRetriever; + /** + * Whether or not we've logged this into the statsd. + * + * for system internal use only, will not retain across processes. + */ + private boolean mLoggedInStatsd; + /** @hide */ @IntDef(prefix = { "REASON_" }, value = { REASON_UNKNOWN, @@ -881,6 +897,24 @@ public final class ApplicationExitInfo implements Parcelable { mNativeTombstoneRetriever = retriever; } + /** + * @see #mLoggedInStatsd + * + * @hide + */ + public boolean isLoggedInStatsd() { + return mLoggedInStatsd; + } + + /** + * @see #mLoggedInStatsd + * + * @hide + */ + public void setLoggedInStatsd(boolean loggedInStatsd) { + mLoggedInStatsd = loggedInStatsd; + } + @Override public int describeContents() { return 0; diff --git a/core/java/android/app/IOnProjectionStateChangeListener.aidl b/core/java/android/app/IOnProjectionStateChangedListener.aidl index f15498545a68..2d2bf7fd208b 100644 --- a/core/java/android/app/IOnProjectionStateChangeListener.aidl +++ b/core/java/android/app/IOnProjectionStateChangedListener.aidl @@ -17,6 +17,6 @@ package android.app; /** {@hide} */ -oneway interface IOnProjectionStateChangeListener { +oneway interface IOnProjectionStateChangedListener { void onProjectionStateChanged(int activeProjectionTypes, in List<String> projectingPackages); }
\ No newline at end of file diff --git a/core/java/android/app/IUiModeManager.aidl b/core/java/android/app/IUiModeManager.aidl index f71eebdc66ec..9f21bcc5f45c 100644 --- a/core/java/android/app/IUiModeManager.aidl +++ b/core/java/android/app/IUiModeManager.aidl @@ -16,7 +16,7 @@ package android.app; -import android.app.IOnProjectionStateChangeListener; +import android.app.IOnProjectionStateChangedListener; /** * Interface used to control special UI modes. @@ -119,12 +119,12 @@ interface IUiModeManager { /** * Registers a listener for changes to projection state. */ - void addOnProjectionStateChangeListener(in IOnProjectionStateChangeListener listener, int projectionType); + void addOnProjectionStateChangedListener(in IOnProjectionStateChangedListener listener, int projectionType); /** * Unregisters a listener for changes to projection state. */ - void removeOnProjectionStateChangeListener(in IOnProjectionStateChangeListener listener); + void removeOnProjectionStateChangedListener(in IOnProjectionStateChangedListener listener); /** * Returns packages that have currently set the given projection type. diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index d25561640385..2dcdd07c9946 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -1594,6 +1594,11 @@ public class Notification implements Parcelable * Apps should use {@link Notification.Builder#addAction(int, CharSequence, PendingIntent)} * or {@link Notification.Builder#addAction(Notification.Action)} * to attach actions. + * <p> + * As of Android {@link android.os.Build.VERSION_CODES#S}, apps targeting API level {@link + * android.os.Build.VERSION_CODES#S} or higher won't be able to start activities while + * processing broadcast receivers or services in response to notification action clicks. To + * launch an activity in those cases, provide a {@link PendingIntent} for the activity itself. */ public static class Action implements Parcelable { /** @@ -1869,6 +1874,13 @@ public class Notification implements Parcelable /** * Construct a new builder for {@link Action} object. + * + * <p>As of Android {@link android.os.Build.VERSION_CODES#S}, apps targeting API level + * {@link android.os.Build.VERSION_CODES#S} or higher won't be able to start activities + * while processing broadcast receivers or services in response to notification action + * clicks. To launch an activity in those cases, provide a {@link PendingIntent} for the + * activity itself. + * * @param icon icon to show for this action * @param title the title of the action * @param intent the {@link PendingIntent} to fire when users trigger this action @@ -4332,7 +4344,13 @@ public class Notification implements Parcelable /** * Supply a {@link PendingIntent} to be sent when the notification is clicked. * - * As of {@link android.os.Build.VERSION_CODES#HONEYCOMB}, if this field is unset and you + * <p>As of Android {@link android.os.Build.VERSION_CODES#S}, apps targeting API level + * {@link android.os.Build.VERSION_CODES#S} or higher won't be able to start activities + * while processing broadcast receivers or services in response to notification clicks. To + * launch an activity in those cases, provide a {@link PendingIntent} for the activity + * itself. + * + * <p>As of {@link android.os.Build.VERSION_CODES#HONEYCOMB}, if this field is unset and you * have specified a custom RemoteViews with {@link #setContent(RemoteViews)}, you can use * {@link RemoteViews#setOnClickPendingIntent RemoteViews.setOnClickPendingIntent(int,PendingIntent)} * to assign PendingIntents to individual views in that custom layout (i.e., to create @@ -4856,6 +4874,12 @@ public class Notification implements Parcelable * the order they were added. Actions will not be displayed when the notification is * collapsed, however, so be sure that any essential functions may be accessed by the user * in some other way (for example, in the Activity pointed to by {@link #contentIntent}). + * <p> + * As of Android {@link android.os.Build.VERSION_CODES#S}, apps targeting API level + * {@link android.os.Build.VERSION_CODES#S} or higher won't be able to start activities + * while processing broadcast receivers or services in response to notification action + * clicks. To launch an activity in those cases, provide a {@link PendingIntent} to the + * activity itself. * * @param icon Resource ID of a drawable that represents the action. * @param title Text describing the action. @@ -5046,7 +5070,7 @@ public class Notification implements Parcelable if (profileBadge != null) { contentView.setImageViewBitmap(R.id.profile_badge, profileBadge); contentView.setViewVisibility(R.id.profile_badge, View.VISIBLE); - if (isColorized(p)) { + if (isBackgroundColorized(p)) { contentView.setDrawableTint(R.id.profile_badge, false, getPrimaryTextColor(p), PorterDuff.Mode.SRC_ATOP); } @@ -5233,7 +5257,7 @@ public class Notification implements Parcelable private void updateBackgroundColor(RemoteViews contentView, StandardTemplateParams p) { - if (isColorized(p)) { + if (isBackgroundColorized(p)) { contentView.setInt(R.id.status_bar_latest_event_content, "setBackgroundColor", getBackgroundColor(p)); } else { @@ -5517,8 +5541,14 @@ public class Notification implements Parcelable return true; } - private boolean isColorized(StandardTemplateParams p) { - return p.allowColorization && mN.isColorized(); + /** + * Determines if the notification should be colorized *for the purposes of applying colors*. + * If this is the minimized view of a colorized notification, or if the app did not provide + * a color to colorize with, this will return false so that internal coloring logic can + * still render the notification normally. + */ + private boolean isBackgroundColorized(StandardTemplateParams p) { + return p.allowColorization && mN.color != COLOR_DEFAULT && mN.isColorized(); } private boolean isCallActionColorCustomizable() { @@ -5526,7 +5556,8 @@ public class Notification implements Parcelable // that is only used for disallowing colorization of headers for the minimized state, // and neither of those conditions applies when showing actions. // Not requiring StandardTemplateParams as an argument simplifies the creation process. - return mN.isColorized() && mContext.getResources().getBoolean( + return mN.color != COLOR_DEFAULT && mN.isColorized() + && mContext.getResources().getBoolean( R.bool.config_callNotificationActionColorsRequireColorized); } @@ -5570,7 +5601,8 @@ public class Notification implements Parcelable private void bindSnoozeAction(RemoteViews big, StandardTemplateParams p) { boolean hideSnoozeButton = mN.isForegroundService() || mN.fullScreenIntent != null - || isColorized(p) || p.mViewType == StandardTemplateParams.VIEW_TYPE_HEADS_UP; + || isBackgroundColorized(p) + || p.mViewType == StandardTemplateParams.VIEW_TYPE_HEADS_UP; big.setBoolean(R.id.snooze_button, "setEnabled", !hideSnoozeButton); if (hideSnoozeButton) { // Only hide; NotificationContentView will show it when it adds the click listener @@ -6086,7 +6118,7 @@ public class Notification implements Parcelable background = outResultColor[0].getDefaultColor(); textColor = ContrastColorUtil.resolvePrimaryColor(mContext, background, mInNightMode); - } else if (mTintActionButtons && !mInNightMode && !isColorized(p)) { + } else if (mTintActionButtons && !mInNightMode && !isBackgroundColorized(p)) { textColor = getAccentColor(p); } else { textColor = getPrimaryTextColor(p); @@ -6252,14 +6284,15 @@ public class Notification implements Parcelable * Gets the standard action button color */ private @ColorInt int getStandardActionColor(Notification.StandardTemplateParams p) { - return mTintActionButtons || isColorized(p) ? getAccentColor(p) : getNeutralColor(p); + return mTintActionButtons || isBackgroundColorized(p) + ? getAccentColor(p) : getNeutralColor(p); } /** * Gets a neutral color that can be used for icons or similar that should not stand out. */ private @ColorInt int getHeaderIconColor(StandardTemplateParams p) { - return isColorized(p) ? getSecondaryTextColor(p) : getNeutralColor(p); + return isBackgroundColorized(p) ? getSecondaryTextColor(p) : getNeutralColor(p); } /** @@ -6276,7 +6309,7 @@ public class Notification implements Parcelable * {@link #getSmallIconColor(StandardTemplateParams)}. */ private @ColorInt int getAccentColor(StandardTemplateParams p) { - if (isColorized(p)) { + if (isBackgroundColorized(p)) { return getPrimaryTextColor(p); } int color = obtainThemeColor(R.attr.colorAccent, COLOR_INVALID); @@ -6291,7 +6324,7 @@ public class Notification implements Parcelable * color when colorized, or when not using theme color tints. */ private @ColorInt int getProtectionColor(StandardTemplateParams p) { - if (!isColorized(p)) { + if (!isBackgroundColorized(p)) { int color = obtainThemeColor(R.attr.colorBackgroundFloating, COLOR_INVALID); if (color != COLOR_INVALID) { return color; @@ -6305,7 +6338,7 @@ public class Notification implements Parcelable * Gets the theme's error color, or the primary text color for colorized notifications. */ private @ColorInt int getErrorColor(StandardTemplateParams p) { - if (!isColorized(p)) { + if (!isBackgroundColorized(p)) { int color = obtainThemeColor(R.attr.colorError, COLOR_INVALID); if (color != COLOR_INVALID) { return color; @@ -6326,7 +6359,7 @@ public class Notification implements Parcelable * Gets the contrast-adjusted version of the color provided by the app. */ private @ColorInt int getContrastColor(StandardTemplateParams p) { - if (isColorized(p)) { + if (isBackgroundColorized(p)) { return getPrimaryTextColor(p); } int rawColor = getRawColor(p); @@ -6469,7 +6502,6 @@ public class Notification implements Parcelable + " notification: " + mN.mShortcutId + " vs bubble: " + mN.mBubbleMetadata.getShortcutId()); } - validateColorizedHasColor(); // first, add any extras from the calling code if (mUserExtras != null) { @@ -6523,21 +6555,6 @@ public class Notification implements Parcelable return mN; } - // This code is executed on behalf of other apps' notifications, sometimes even by 3p apps, - // a use case that is not supported by the Compat Framework library. - @SuppressWarnings("AndroidFrameworkCompatChange") - private void validateColorizedHasColor() { - if (mN.color == COLOR_DEFAULT && mN.extras.getBoolean(EXTRA_COLORIZED)) { - if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.S) { - throw new IllegalArgumentException( - "Colorized notifications must set a color (other than COLOR_DEFAULT)."); - } else { - Log.w(TAG, "Colorized notifications must set a color (other than " - + "COLOR_DEFAULT). This is required for apps targeting S."); - } - } - } - /** * Returns the color for the given Theme.DeviceDefault.DayNight attribute, or * defValue if that could not be completed @@ -6670,7 +6687,7 @@ public class Notification implements Parcelable * which must be resolved by the caller before being used. */ private @ColorInt int getUnresolvedBackgroundColor(StandardTemplateParams p) { - return isColorized(p) ? getRawColor(p) : COLOR_DEFAULT; + return isBackgroundColorized(p) ? getRawColor(p) : COLOR_DEFAULT; } /** @@ -6856,12 +6873,14 @@ public class Notification implements Parcelable } /** - * @return true if this notification is colorized. + * @return true if this notification is colorized *for the purposes of ranking*. If the + * {@link #color} is {@link #COLOR_DEFAULT} this will be true, even though the actual + * appearance of the notification may not be "colorized". * * @hide */ public boolean isColorized() { - return color != COLOR_DEFAULT && extras.getBoolean(EXTRA_COLORIZED) + return extras.getBoolean(EXTRA_COLORIZED) && (hasColorizedPermission() || isForegroundService()); } diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java index 6553b61ebbc2..1837fb860b73 100644 --- a/core/java/android/app/NotificationChannel.java +++ b/core/java/android/app/NotificationChannel.java @@ -260,6 +260,8 @@ public final class NotificationChannel implements Parcelable { private boolean mDemoted = false; private boolean mImportantConvo = false; private long mDeletedTime = DEFAULT_DELETION_TIME_MS; + // If the sound for this channel is missing, e.g. after restore. + private boolean mIsSoundMissing; /** * Creates a notification channel. @@ -715,6 +717,13 @@ public final class NotificationChannel implements Parcelable { } /** + * @hide + */ + public boolean isSoundMissing() { + return mIsSoundMissing; + } + + /** * Returns the audio attributes for sound played by notifications posted to this channel. */ public AudioAttributes getAudioAttributes() { @@ -998,8 +1007,9 @@ public final class NotificationChannel implements Parcelable { // according to the docs because canonicalize method has to handle canonical uris as well. Uri canonicalizedUri = contentResolver.canonicalize(uri); if (canonicalizedUri == null) { - // We got a null because the uri in the backup does not exist here, so we return default - return Settings.System.DEFAULT_NOTIFICATION_URI; + // We got a null because the uri in the backup does not exist here. + mIsSoundMissing = true; + return null; } return contentResolver.uncanonicalize(canonicalizedUri); } diff --git a/core/java/android/app/PictureInPictureUiState.java b/core/java/android/app/PictureInPictureUiState.java index 3d2cb3ffa58d..32ce89ae98cf 100644 --- a/core/java/android/app/PictureInPictureUiState.java +++ b/core/java/android/app/PictureInPictureUiState.java @@ -42,7 +42,20 @@ public final class PictureInPictureUiState implements Parcelable { } /** - * Returns whether Picture-in-Picture is stashed or not. + * Returns whether Picture-in-Picture is stashed or not. A stashed PiP means it is only + * partially visible to the user, with some parts of it being off-screen. This is usually + * an UI state that is triggered by the user, such as flinging the PiP to the edge or letting go + * of PiP while dragging partially off-screen. + * + * Developers can use this in conjunction with + * {@link Activity#onPictureInPictureUiStateChanged(PictureInPictureUiState)} to get a signal + * when the PiP stash state has changed. For example, if the state changed from {@code false} to + * {@code true}, developers can choose to temporarily pause video playback if PiP is of video + * content. Vice versa, if changing from {@code true} to {@code false} and video content is + * paused, developers can resumevideo playback. + * + * @see <a href="http://developer.android.com/about/versions/12/features/pip-improvements"> + * Picture in Picture (PiP) improvements</a> */ public boolean isStashed() { return mIsStashed; diff --git a/core/java/android/app/SyncNotedAppOp.java b/core/java/android/app/SyncNotedAppOp.java index bc4e5436996d..32d889e81cb0 100644 --- a/core/java/android/app/SyncNotedAppOp.java +++ b/core/java/android/app/SyncNotedAppOp.java @@ -19,7 +19,9 @@ package android.app; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.TestApi; import android.os.Parcelable; +import android.os.Process; import com.android.internal.annotations.Immutable; import com.android.internal.util.DataClass; @@ -48,13 +50,19 @@ public final class SyncNotedAppOp implements Parcelable { private final @IntRange(from = 0L, to = AppOpsManager._NUM_OP - 1) int mOpCode; /** attributionTag of synchronous appop noted */ private final @Nullable String mAttributionTag; + /** + * The package this op applies to + * @hide + */ + private final @NonNull String mPackageName; /** * Native code relies on parcel ordering, do not change * @hide */ + @TestApi public SyncNotedAppOp(int opMode, @IntRange(from = 0L) int opCode, - @Nullable String attributionTag) { + @Nullable String attributionTag, @NonNull String packageName) { this.mOpCode = opCode; com.android.internal.util.AnnotationValidations.validate( IntRange.class, null, mOpCode, @@ -62,6 +70,7 @@ public final class SyncNotedAppOp implements Parcelable { "to", AppOpsManager._NUM_OP - 1); this.mAttributionTag = attributionTag; this.mOpMode = opMode; + this.mPackageName = packageName; } /** @@ -73,7 +82,25 @@ public final class SyncNotedAppOp implements Parcelable { * attributionTag of synchronous appop noted */ public SyncNotedAppOp(@IntRange(from = 0L) int opCode, @Nullable String attributionTag) { - this(AppOpsManager.MODE_IGNORED, opCode, attributionTag); + this(AppOpsManager.MODE_IGNORED, opCode, attributionTag, ActivityThread + .currentPackageName()); + } + + /** + * Creates a new SyncNotedAppOp. + * + * @param opCode + * op code of synchronous appop noted + * @param attributionTag + * attributionTag of synchronous appop noted + * @param packageName + * The package this op applies to + * + * @hide + */ + public SyncNotedAppOp(@IntRange(from = 0L) int opCode, @Nullable String attributionTag, + @NonNull String packageName) { + this(AppOpsManager.MODE_IGNORED, opCode, attributionTag, packageName); } /** @@ -113,6 +140,16 @@ public final class SyncNotedAppOp implements Parcelable { return mAttributionTag; } + /** + * The package this op applies to + * + * @hide + */ + @DataClass.Generated.Member + public @NonNull String getPackageName() { + return mPackageName; + } + @Override @DataClass.Generated.Member public boolean equals(@Nullable Object o) { @@ -128,7 +165,8 @@ public final class SyncNotedAppOp implements Parcelable { return true && mOpMode == that.mOpMode && mOpCode == that.mOpCode - && java.util.Objects.equals(mAttributionTag, that.mAttributionTag); + && java.util.Objects.equals(mAttributionTag, that.mAttributionTag) + && java.util.Objects.equals(mPackageName, that.mPackageName); } @Override @@ -141,6 +179,7 @@ public final class SyncNotedAppOp implements Parcelable { _hash = 31 * _hash + mOpMode; _hash = 31 * _hash + mOpCode; _hash = 31 * _hash + java.util.Objects.hashCode(mAttributionTag); + _hash = 31 * _hash + java.util.Objects.hashCode(mPackageName); return _hash; } @@ -156,6 +195,7 @@ public final class SyncNotedAppOp implements Parcelable { dest.writeInt(mOpMode); dest.writeInt(mOpCode); if (mAttributionTag != null) dest.writeString(mAttributionTag); + dest.writeString(mPackageName); } @Override @@ -173,6 +213,7 @@ public final class SyncNotedAppOp implements Parcelable { int opMode = in.readInt(); int opCode = in.readInt(); String attributionTag = (flg & 0x4) == 0 ? null : in.readString(); + String packageName = in.readString(); this.mOpMode = opMode; this.mOpCode = opCode; @@ -181,6 +222,9 @@ public final class SyncNotedAppOp implements Parcelable { "from", 0L, "to", AppOpsManager._NUM_OP - 1); this.mAttributionTag = attributionTag; + this.mPackageName = packageName; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mPackageName); // onConstructed(); // You can define this method to get a callback } @@ -200,10 +244,10 @@ public final class SyncNotedAppOp implements Parcelable { }; @DataClass.Generated( - time = 1617317997768L, + time = 1619711733947L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/app/SyncNotedAppOp.java", - inputSignatures = "private final int mOpMode\nprivate final @android.annotation.IntRange int mOpCode\nprivate final @android.annotation.Nullable java.lang.String mAttributionTag\npublic @android.annotation.NonNull java.lang.String getOp()\npublic int getOpMode()\nclass SyncNotedAppOp extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genAidl=true, genConstructor=false)") + inputSignatures = "private final int mOpMode\nprivate final @android.annotation.IntRange int mOpCode\nprivate final @android.annotation.Nullable java.lang.String mAttributionTag\nprivate final @android.annotation.NonNull java.lang.String mPackageName\npublic @android.annotation.NonNull java.lang.String getOp()\npublic int getOpMode()\nclass SyncNotedAppOp extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genAidl=true, genConstructor=false)") @Deprecated private void __metadata() {} diff --git a/core/java/android/app/UiAutomationConnection.java b/core/java/android/app/UiAutomationConnection.java index e693c5ea6c93..e016027329ac 100644 --- a/core/java/android/app/UiAutomationConnection.java +++ b/core/java/android/app/UiAutomationConnection.java @@ -220,7 +220,9 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub { final long identity = Binder.clearCallingIdentity(); try { captureBuffer = SurfaceControl.captureLayers( - new SurfaceControl.LayerCaptureArgs.Builder(surfaceControl).build()); + new SurfaceControl.LayerCaptureArgs.Builder(surfaceControl) + .setChildrenOnly(false) + .build()); } finally { Binder.restoreCallingIdentity(identity); } diff --git a/core/java/android/app/UiModeManager.java b/core/java/android/app/UiModeManager.java index 24fd04bedeae..973a8fb068d1 100644 --- a/core/java/android/app/UiModeManager.java +++ b/core/java/android/app/UiModeManager.java @@ -79,7 +79,7 @@ public class UiModeManager { * @hide */ @SystemApi - public interface OnProjectionStateChangeListener { + public interface OnProjectionStateChangedListener { /** * Callback invoked when projection state changes for a {@link ProjectionType} for which * this listener was added. @@ -254,10 +254,10 @@ public class UiModeManager { private final Object mLock = new Object(); /** * Map that stores internally created {@link InnerListener} objects keyed by their corresponding - * externally provided {@link OnProjectionStateChangeListener} objects. + * externally provided callback objects. */ @GuardedBy("mLock") - private final Map<OnProjectionStateChangeListener, InnerListener> + private final Map<OnProjectionStateChangedListener, InnerListener> mProjectionStateListenerMap = new ArrayMap<>(); /** @@ -265,9 +265,9 @@ public class UiModeManager { * fail to remove listeners. */ @GuardedBy("mLock") - private final OnProjectionStateChangeListenerResourceManager - mOnProjectionStateChangeListenerResourceManager = - new OnProjectionStateChangeListenerResourceManager(); + private final OnProjectionStateChangedListenerResourceManager + mOnProjectionStateChangedListenerResourceManager = + new OnProjectionStateChangedListenerResourceManager(); @UnsupportedAppUsage /*package*/ UiModeManager() throws ServiceNotFoundException { @@ -687,7 +687,7 @@ public class UiModeManager { /** * Indicates no projection type. Can be used to compare with the {@link ProjectionType} in - * {@link OnProjectionStateChangeListener#onProjectionStateChanged(int, Set)}. + * {@link OnProjectionStateChangedListener#onProjectionStateChanged(int, Set)}. * * @hide */ @@ -706,7 +706,7 @@ public class UiModeManager { public static final int PROJECTION_TYPE_AUTOMOTIVE = 0x0001; /** * Indicates all projection types. For use with - * {@link #addOnProjectionStateChangeListener(int, Executor, OnProjectionStateChangeListener)} + * {@link #addOnProjectionStateChangedListener(int, Executor, OnProjectionStateChangedListener)} * and {@link #getProjectingPackages(int)}. * * @hide @@ -829,15 +829,15 @@ public class UiModeManager { * * @param projectionType one or more {@link ProjectionType}s to listen for changes regarding * @param executor an {@link Executor} on which to invoke the callbacks - * @param listener the {@link OnProjectionStateChangeListener} to add + * @param listener the {@link OnProjectionStateChangedListener} to add * * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) - public void addOnProjectionStateChangeListener(@ProjectionType int projectionType, + public void addOnProjectionStateChangedListener(@ProjectionType int projectionType, @NonNull @CallbackExecutor Executor executor, - @NonNull OnProjectionStateChangeListener listener) { + @NonNull OnProjectionStateChangedListener listener) { synchronized (mLock) { if (mProjectionStateListenerMap.containsKey(listener)) { Slog.i(TAG, "Attempted to add listener that was already added."); @@ -845,12 +845,12 @@ public class UiModeManager { } if (mService != null) { InnerListener innerListener = new InnerListener(executor, listener, - mOnProjectionStateChangeListenerResourceManager); + mOnProjectionStateChangedListenerResourceManager); try { - mService.addOnProjectionStateChangeListener(innerListener, projectionType); + mService.addOnProjectionStateChangedListener(innerListener, projectionType); mProjectionStateListenerMap.put(listener, innerListener); } catch (RemoteException e) { - mOnProjectionStateChangeListenerResourceManager.remove(innerListener); + mOnProjectionStateChangedListenerResourceManager.remove(innerListener); throw e.rethrowFromSystemServer(); } } @@ -860,14 +860,14 @@ public class UiModeManager { /** * Removes the listener so it stops receiving updates for all {@link ProjectionType}s. * - * @param listener the {@link OnProjectionStateChangeListener} to remove + * @param listener the {@link OnProjectionStateChangedListener} to remove * * @hide */ @SystemApi @RequiresPermission(android.Manifest.permission.READ_PROJECTION_STATE) - public void removeOnProjectionStateChangeListener( - @NonNull OnProjectionStateChangeListener listener) { + public void removeOnProjectionStateChangedListener( + @NonNull OnProjectionStateChangedListener listener) { synchronized (mLock) { InnerListener innerListener = mProjectionStateListenerMap.get(listener); if (innerListener == null) { @@ -876,23 +876,23 @@ public class UiModeManager { } if (mService != null) { try { - mService.removeOnProjectionStateChangeListener(innerListener); + mService.removeOnProjectionStateChangedListener(innerListener); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } } mProjectionStateListenerMap.remove(listener); - mOnProjectionStateChangeListenerResourceManager.remove(innerListener); + mOnProjectionStateChangedListenerResourceManager.remove(innerListener); } } - private static class InnerListener extends IOnProjectionStateChangeListener.Stub { - private final WeakReference<OnProjectionStateChangeListenerResourceManager> + private static class InnerListener extends IOnProjectionStateChangedListener.Stub { + private final WeakReference<OnProjectionStateChangedListenerResourceManager> mResourceManager; private InnerListener(@NonNull Executor executor, - @NonNull OnProjectionStateChangeListener outerListener, - @NonNull OnProjectionStateChangeListenerResourceManager resourceManager) { + @NonNull OnProjectionStateChangedListener outerListener, + @NonNull OnProjectionStateChangedListenerResourceManager resourceManager) { resourceManager.put(this, executor, outerListener); mResourceManager = new WeakReference<>(resourceManager); } @@ -900,13 +900,14 @@ public class UiModeManager { @Override public void onProjectionStateChanged(int activeProjectionTypes, List<String> projectingPackages) { - OnProjectionStateChangeListenerResourceManager resourceManager = mResourceManager.get(); + OnProjectionStateChangedListenerResourceManager resourceManager = + mResourceManager.get(); if (resourceManager == null) { Slog.w(TAG, "Can't execute onProjectionStateChanged, resource manager is gone."); return; } - OnProjectionStateChangeListener outerListener = resourceManager.getOuterListener(this); + OnProjectionStateChangedListener outerListener = resourceManager.getOuterListener(this); Executor executor = resourceManager.getExecutor(this); if (outerListener == null || executor == null) { Slog.w(TAG, "Can't execute onProjectionStatechanged, references are null."); @@ -914,7 +915,7 @@ public class UiModeManager { } executor.execute(PooledLambda.obtainRunnable( - OnProjectionStateChangeListener::onProjectionStateChanged, + OnProjectionStateChangedListener::onProjectionStateChanged, outerListener, activeProjectionTypes, new ArraySet<>(projectingPackages)).recycleOnUse()); @@ -924,15 +925,15 @@ public class UiModeManager { /** * Wrapper class that ensures we don't leak {@link Activity} or other large {@link Context} in * which this {@link UiModeManager} resides if/when it ends without unregistering associated - * {@link OnProjectionStateChangeListener}s. + * callback objects. */ - private static class OnProjectionStateChangeListenerResourceManager { - private final Map<InnerListener, OnProjectionStateChangeListener> mOuterListenerMap = + private static class OnProjectionStateChangedListenerResourceManager { + private final Map<InnerListener, OnProjectionStateChangedListener> mOuterListenerMap = new ArrayMap<>(1); private final Map<InnerListener, Executor> mExecutorMap = new ArrayMap<>(1); void put(@NonNull InnerListener innerListener, @NonNull Executor executor, - OnProjectionStateChangeListener outerListener) { + OnProjectionStateChangedListener outerListener) { mOuterListenerMap.put(innerListener, outerListener); mExecutorMap.put(innerListener, executor); } @@ -942,7 +943,7 @@ public class UiModeManager { mExecutorMap.remove(innerListener); } - OnProjectionStateChangeListener getOuterListener(@NonNull InnerListener innerListener) { + OnProjectionStateChangedListener getOuterListener(@NonNull InnerListener innerListener) { return mOuterListenerMap.get(innerListener); } diff --git a/core/java/android/app/WallpaperColors.java b/core/java/android/app/WallpaperColors.java index d640a6f49670..be62deb7696d 100644 --- a/core/java/android/app/WallpaperColors.java +++ b/core/java/android/app/WallpaperColors.java @@ -95,12 +95,12 @@ public final class WallpaperColors implements Parcelable { private static final float MIN_COLOR_OCCURRENCE = 0.05f; // Decides when dark theme is optimal for this wallpaper - private static final float DARK_THEME_MEAN_LUMINANCE = 0.25f; + private static final float DARK_THEME_MEAN_LUMINANCE = 0.3f; // Minimum mean luminosity that an image needs to have to support dark text - private static final float BRIGHT_IMAGE_MEAN_LUMINANCE = 0.75f; + private static final float BRIGHT_IMAGE_MEAN_LUMINANCE = 0.7f; // We also check if the image has dark pixels in it, // to avoid bright images with some dark spots. - private static final float DARK_PIXEL_CONTRAST = 6f; + private static final float DARK_PIXEL_CONTRAST = 5.5f; private static final float MAX_DARK_AREA = 0.025f; private final List<Color> mMainColors; diff --git a/core/java/android/app/WindowConfiguration.java b/core/java/android/app/WindowConfiguration.java index d04ca1d9a48e..4ff7924c4b98 100644 --- a/core/java/android/app/WindowConfiguration.java +++ b/core/java/android/app/WindowConfiguration.java @@ -106,19 +106,9 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu * {@link ActivityOptions#setLaunchWindowingMode(int)} will be launched in * {@link #WINDOWING_MODE_FULLSCREEN} if the display isn't currently in split-screen windowing * mode - * @see #WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY */ // TODO: Remove once split-screen is migrated to wm-shell. public static final int WINDOWING_MODE_SPLIT_SCREEN_SECONDARY = 4; - /** - * Alias for {@link #WINDOWING_MODE_SPLIT_SCREEN_SECONDARY} that makes it clear that the usage - * points for APIs like {@link ActivityOptions#setLaunchWindowingMode(int)} that the container - * will launch into fullscreen or split-screen secondary depending on if the device is currently - * in fullscreen mode or split-screen mode. - */ - // TODO: Remove once split-screen is migrated to wm-shell. - public static final int WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY = - WINDOWING_MODE_SPLIT_SCREEN_SECONDARY; /** Can be freely resized within its parent container. */ // TODO: Remove once freeform is migrated to wm-shell. public static final int WINDOWING_MODE_FREEFORM = 5; @@ -133,7 +123,6 @@ public class WindowConfiguration implements Parcelable, Comparable<WindowConfigu WINDOWING_MODE_PINNED, WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, - WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY, WINDOWING_MODE_FREEFORM, }) public @interface WindowingMode {} diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index 609c014feb5b..02e64b811e8e 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -4573,27 +4573,6 @@ public class DevicePolicyManager { } /** - * Determine whether the current profile password the user has set is sufficient - * to meet the policy requirements (e.g. quality, minimum length) that have been - * requested by the admins of the parent user and its profiles. - * - * @param userHandle the userId of the profile to check the password for. - * @return Returns true if the password would meet the current requirements, else false. - * @throws SecurityException if {@code userHandle} is not a managed profile. - * @hide - */ - public boolean isProfileActivePasswordSufficientForParent(int userHandle) { - if (mService != null) { - try { - return mService.isProfileActivePasswordSufficientForParent(userHandle); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - return false; - } - - /** * Returns whether the given user's credential will be sufficient for all password policy * requirement, once the user's profile has switched to unified challenge. * diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl index 370db60fb825..9f76bd197a25 100644 --- a/core/java/android/app/admin/IDevicePolicyManager.aidl +++ b/core/java/android/app/admin/IDevicePolicyManager.aidl @@ -88,7 +88,6 @@ interface IDevicePolicyManager { boolean isActivePasswordSufficient(int userHandle, boolean parent); boolean isActivePasswordSufficientForDeviceRequirement(); - boolean isProfileActivePasswordSufficientForParent(int userHandle); boolean isPasswordSufficientAfterProfileUnification(int userHandle, int profileUser); int getPasswordComplexity(boolean parent); void setRequiredPasswordComplexity(int passwordComplexity, boolean parent); diff --git a/core/java/android/app/admin/OWNERS b/core/java/android/app/admin/OWNERS index 8462cbe7497b..6acbef29bec3 100644 --- a/core/java/android/app/admin/OWNERS +++ b/core/java/android/app/admin/OWNERS @@ -3,9 +3,9 @@ # Android Enterprise team rubinxu@google.com sandness@google.com -eranm@google.com alexkershaw@google.com pgrafov@google.com # Emeritus yamasani@google.com +eranm@google.com diff --git a/core/java/android/app/compat/CompatChanges.java b/core/java/android/app/compat/CompatChanges.java index 74e1ece3fa89..8ca43c4a8e70 100644 --- a/core/java/android/app/compat/CompatChanges.java +++ b/core/java/android/app/compat/CompatChanges.java @@ -26,9 +26,11 @@ import android.os.ServiceManager; import android.os.UserHandle; import com.android.internal.compat.CompatibilityOverrideConfig; +import com.android.internal.compat.CompatibilityOverridesToRemoveConfig; import com.android.internal.compat.IPlatformCompat; import java.util.Map; +import java.util.Set; /** * CompatChanges APIs - to be used by platform code only (including mainline @@ -98,15 +100,19 @@ public final class CompatChanges { } /** - * Set an app compat override for a given package. This will check whether the caller is allowed + * Adds app compat overrides for a given package. This will check whether the caller is allowed * to perform this operation on the given apk and build. Only the installer package is allowed * to set overrides on a non-debuggable final build and a non-test apk. * + * <p>Note that calling this method doesn't remove previously added overrides for the given + * package if their change ID isn't in the given map, only replaces those that have the same + * change ID. + * * @param packageName The package name of the app in question. - * @param overrides A map from changeId to the override applied for this change id. + * @param overrides A map from change ID to the override applied for this change ID. */ @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) - public static void setPackageOverride(@NonNull String packageName, + public static void addPackageOverrides(@NonNull String packageName, @NonNull Map<Long, PackageOverride> overrides) { IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); @@ -117,4 +123,29 @@ public final class CompatChanges { e.rethrowFromSystemServer(); } } + + /** + * Removes app compat overrides for a given package. This will check whether the caller is + * allowed to perform this operation on the given apk and build. Only the installer package is + * allowed to clear overrides on a non-debuggable final build and a non-test apk. + * + * <p>Note that calling this method with an empty set is a no-op and no overrides will be + * removed for the given package. + * + * @param packageName The package name of the app in question. + * @param overridesToRemove A set of change IDs for which to remove overrides. + */ + @RequiresPermission(android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD) + public static void removePackageOverrides(@NonNull String packageName, + @NonNull Set<Long> overridesToRemove) { + IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface( + ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); + CompatibilityOverridesToRemoveConfig config = new CompatibilityOverridesToRemoveConfig( + overridesToRemove); + try { + platformCompat.removeOverridesOnReleaseBuilds(config, packageName); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + } } diff --git a/core/java/android/app/search/SearchContext.java b/core/java/android/app/search/SearchContext.java index 3e345fa93d7b..8f584cc712c5 100644 --- a/core/java/android/app/search/SearchContext.java +++ b/core/java/android/app/search/SearchContext.java @@ -62,7 +62,7 @@ public final class SearchContext implements Parcelable { * @param resultTypes {@link SearchTarget.SearchResultType}s combined using bit OR operation * @param timeoutMillis timeout before client renders its own fallback result */ - public SearchContext(int resultTypes, int timeoutMillis) { + public SearchContext(@SearchTarget.SearchResultType int resultTypes, int timeoutMillis) { this(resultTypes, timeoutMillis, new Bundle()); } diff --git a/core/java/android/app/search/SearchTarget.java b/core/java/android/app/search/SearchTarget.java index 56c5ddf9ace7..6d638d47f525 100644 --- a/core/java/android/app/search/SearchTarget.java +++ b/core/java/android/app/search/SearchTarget.java @@ -15,9 +15,11 @@ */ package android.app.search; +import android.annotation.FloatRange; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.StringDef; import android.annotation.SystemApi; import android.app.slice.SliceManager; import android.appwidget.AppWidgetProviderInfo; @@ -66,6 +68,24 @@ public final class SearchTarget implements Parcelable { public static final int RESULT_TYPE_SHORTCUT = 1 << 1; public static final int RESULT_TYPE_SLICE = 1 << 2; public static final int RESULT_TYPE_WIDGETS = 1 << 3; + + // ------ + // | icon | + // ------ + // text + public static final String LAYOUT_TYPE_ICON = "icon"; + + // ------ ------ ------ + // | | title |(opt)| |(opt)| + // | icon | subtitle (optional) | icon| | icon| + // ------ ------ ------ + public static final String LAYOUT_TYPE_ICON_ROW = "icon_row"; + + // ------ + // | icon | title / subtitle (optional) + // ------ + public static final String LAYOUT_TYPE_SHORT_ICON_ROW = "short_icon_row"; + /** * @hide */ @@ -80,6 +100,17 @@ public final class SearchTarget implements Parcelable { private final int mResultType; /** + * @hide + */ + @StringDef(prefix = {"LAYOUT_TYPE_"}, value = { + LAYOUT_TYPE_ICON, + LAYOUT_TYPE_ICON_ROW, + LAYOUT_TYPE_SHORT_ICON_ROW, + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SearchLayoutType {} + + /** * Constant to express how the group of {@link SearchTarget} should be rendered on * the client side. (e.g., "icon", "icon_row", "short_icon_row") */ @@ -178,7 +209,7 @@ public final class SearchTarget implements Parcelable { * Retrieves the layout type. */ @NonNull - public String getLayoutType() { + public @SearchLayoutType String getLayoutType() { return mLayoutType; } @@ -337,7 +368,7 @@ public final class SearchTarget implements Parcelable { private Bundle mExtras; public Builder(@SearchResultType int resultType, - @NonNull String layoutType, + @SearchLayoutType @NonNull String layoutType, @NonNull String id) { mId = id; mLayoutType = Objects.requireNonNull(layoutType); @@ -433,13 +464,13 @@ public final class SearchTarget implements Parcelable { * Sets the score of the object. */ @NonNull - public Builder setScore(float score) { + public Builder setScore(@FloatRange(from = 0.0f, to = 1.0f) float score) { mScore = score; return this; } /** - * Sets whether the result should be hidden by default inside client. + * Sets whether the result should be hidden (e.g. not visible) by default inside client. */ @NonNull public Builder setShouldHide(boolean shouldHide) { diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java index 82da4fbf5f7e..152de4496cac 100644 --- a/core/java/android/appwidget/AppWidgetHostView.java +++ b/core/java/android/appwidget/AppWidgetHostView.java @@ -17,6 +17,7 @@ package android.appwidget; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.Activity; import android.app.ActivityOptions; import android.compat.annotation.UnsupportedAppUsage; @@ -68,6 +69,7 @@ public class AppWidgetHostView extends FrameLayout { static final String TAG = "AppWidgetHostView"; private static final String KEY_JAILED_ARRAY = "jail"; + private static final String KEY_INFLATION_ID = "inflation_id"; static final boolean LOGD = false; @@ -97,9 +99,12 @@ public class AppWidgetHostView extends FrameLayout { private RemoteViews.ColorResources mColorResources = null; // Stores the last remote views last inflated. private RemoteViews mLastInflatedRemoteViews = null; + private long mLastInflatedRemoteViewsId = -1; private Executor mAsyncExecutor; private CancellationSignal mLastExecutionSignal; + private SparseArray<Parcelable> mDelayedRestoredState; + private long mDelayedRestoredInflationId; /** * Create a host view. Uses default fade animations. @@ -226,6 +231,8 @@ public class AppWidgetHostView extends FrameLayout { Bundle bundle = new Bundle(); bundle.putSparseParcelableArray(KEY_JAILED_ARRAY, jail); + bundle.putLong(KEY_INFLATION_ID, mLastInflatedRemoteViewsId); + container.put(generateId(), bundle); container.put(generateId(), bundle); } @@ -239,14 +246,30 @@ public class AppWidgetHostView extends FrameLayout { final Parcelable parcelable = container.get(generateId()); SparseArray<Parcelable> jail = null; + long inflationId = -1; if (parcelable instanceof Bundle) { - jail = ((Bundle) parcelable).getSparseParcelableArray(KEY_JAILED_ARRAY); + Bundle bundle = (Bundle) parcelable; + jail = bundle.getSparseParcelableArray(KEY_JAILED_ARRAY); + inflationId = bundle.getLong(KEY_INFLATION_ID, -1); } if (jail == null) jail = new SparseArray<>(); + mDelayedRestoredState = jail; + mDelayedRestoredInflationId = inflationId; + restoreInstanceState(); + } + + void restoreInstanceState() { + long inflationId = mDelayedRestoredInflationId; + SparseArray<Parcelable> state = mDelayedRestoredState; + if (inflationId == -1 || inflationId != mLastInflatedRemoteViewsId) { + return; // We don't restore. + } + mDelayedRestoredInflationId = -1; + mDelayedRestoredState = null; try { - super.dispatchRestoreInstanceState(jail); + super.dispatchRestoreInstanceState(state); } catch (Exception e) { Log.e(TAG, "failed to restoreInstanceState for widget id: " + mAppWidgetId + ", " + (mInfo == null ? "null" : mInfo.provider), e); @@ -476,7 +499,7 @@ public class AppWidgetHostView extends FrameLayout { * AppWidget provider. Will animate into these new views as needed */ public void updateAppWidget(RemoteViews remoteViews) { - this.mLastInflatedRemoteViews = remoteViews; + mLastInflatedRemoteViews = remoteViews; applyRemoteViews(remoteViews, true); } @@ -484,17 +507,23 @@ public class AppWidgetHostView extends FrameLayout { * Reapply the last inflated remote views, or the default view is none was inflated. */ private void reapplyLastRemoteViews() { + SparseArray<Parcelable> savedState = new SparseArray<>(); + saveHierarchyState(savedState); applyRemoteViews(mLastInflatedRemoteViews, true); + restoreHierarchyState(savedState); } /** * @hide */ - protected void applyRemoteViews(RemoteViews remoteViews, boolean useAsyncIfPossible) { + protected void applyRemoteViews(@Nullable RemoteViews remoteViews, boolean useAsyncIfPossible) { boolean recycled = false; View content = null; Exception exception = null; + // Block state restore until the end of the apply. + mLastInflatedRemoteViewsId = -1; + if (mLastExecutionSignal != null) { mLastExecutionSignal.cancel(); mLastExecutionSignal = null; @@ -525,6 +554,7 @@ public class AppWidgetHostView extends FrameLayout { rvToApply.reapply(mContext, mView, mInteractionHandler, mCurrentSize, mColorResources); content = mView; + mLastInflatedRemoteViewsId = rvToApply.computeUniqueId(remoteViews); recycled = true; if (LOGD) Log.d(TAG, "was able to recycle existing layout"); } catch (RuntimeException e) { @@ -537,6 +567,7 @@ public class AppWidgetHostView extends FrameLayout { try { content = rvToApply.apply(mContext, this, mInteractionHandler, mCurrentSize, mColorResources); + mLastInflatedRemoteViewsId = rvToApply.computeUniqueId(remoteViews); if (LOGD) Log.d(TAG, "had to inflate new layout"); } catch (RuntimeException e) { exception = e; @@ -557,7 +588,7 @@ public class AppWidgetHostView extends FrameLayout { return ; } if (exception != null) { - Log.w(TAG, "Error inflating RemoteViews : " + exception.toString()); + Log.w(TAG, "Error inflating RemoteViews", exception); } content = getErrorView(); mViewMode = VIEW_MODE_ERROR; @@ -574,12 +605,16 @@ public class AppWidgetHostView extends FrameLayout { } } - private void inflateAsync(RemoteViews remoteViews) { + private void inflateAsync(@NonNull RemoteViews remoteViews) { // Prepare a local reference to the remote Context so we're ready to // inflate any requested LayoutParams. mRemoteContext = getRemoteContext(); int layoutId = remoteViews.getLayoutId(); + if (mLastExecutionSignal != null) { + mLastExecutionSignal.cancel(); + } + // If our stale view has been prepared to match active, and the new // layout matches, try recycling it if (layoutId == mLayoutId && mView != null) { @@ -611,7 +646,10 @@ public class AppWidgetHostView extends FrameLayout { private final boolean mIsReapply; private final int mLayoutId; - public ViewApplyListener(RemoteViews views, int layoutId, boolean isReapply) { + ViewApplyListener( + RemoteViews views, + int layoutId, + boolean isReapply) { mViews = views; mLayoutId = layoutId; mIsReapply = isReapply; @@ -623,6 +661,10 @@ public class AppWidgetHostView extends FrameLayout { mViewMode = VIEW_MODE_CONTENT; applyContent(v, mIsReapply, null); + + mLastInflatedRemoteViewsId = mViews.computeUniqueId(mLastInflatedRemoteViews); + restoreInstanceState(); + mLastExecutionSignal = null; } @Override @@ -638,6 +680,7 @@ public class AppWidgetHostView extends FrameLayout { } else { applyContent(null, false, e); } + mLastExecutionSignal = null; } } @@ -743,7 +786,7 @@ public class AppWidgetHostView extends FrameLayout { } if (exception != null) { - Log.w(TAG, "Error inflating AppWidget " + mInfo + ": " + exception.toString()); + Log.w(TAG, "Error inflating AppWidget " + mInfo, exception); } if (defaultView == null) { diff --git a/core/java/android/appwidget/AppWidgetProviderInfo.java b/core/java/android/appwidget/AppWidgetProviderInfo.java index 3db18856d9a7..063ba1174cdc 100644 --- a/core/java/android/appwidget/AppWidgetProviderInfo.java +++ b/core/java/android/appwidget/AppWidgetProviderInfo.java @@ -455,13 +455,14 @@ public class AppWidgetProviderInfo implements Parcelable { @Nullable public final CharSequence loadDescription(@NonNull Context context) { if (ResourceId.isValid(descriptionRes)) { - return context.getPackageManager() - .getText( + CharSequence description = + context.getPackageManager().getText( providerInfo.packageName, descriptionRes, - providerInfo.applicationInfo) - .toString() - .trim(); + providerInfo.applicationInfo); + if (description != null) { + return description.toString().trim(); + } } return null; } diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java index 0ca6d74c6759..40326631402f 100644 --- a/core/java/android/bluetooth/BluetoothDevice.java +++ b/core/java/android/bluetooth/BluetoothDevice.java @@ -1770,13 +1770,13 @@ public final class BluetoothDevice implements Parcelable { * * <p>This API is asynchronous and {@link #ACTION_UUID} intent is sent, * with the UUIDs supported by the remote end. If there is an error - * in getting the SDP records or if the process takes a long time, - * {@link #ACTION_UUID} intent is sent with the UUIDs that is currently - * present in the cache. Clients should use the {@link #getUuids} to get UUIDs + * in getting the SDP records or if the process takes a long time, or the device is bonding and + * we have its UUIDs cached, {@link #ACTION_UUID} intent is sent with the UUIDs that is + * currently present in the cache. Clients should use the {@link #getUuids} to get UUIDs * if service discovery is not to be performed. * * @return False if the check fails, True if the process of initiating an ACL connection - * to the remote device was started. + * to the remote device was started or cached UUIDs will be broadcast. */ @RequiresLegacyBluetoothPermission @RequiresBluetoothConnectPermission diff --git a/core/java/android/content/AttributionSource.java b/core/java/android/content/AttributionSource.java index 2c155d5884ac..7ab731f15ad2 100644 --- a/core/java/android/content/AttributionSource.java +++ b/core/java/android/content/AttributionSource.java @@ -31,10 +31,9 @@ import android.permission.PermissionManager; import android.util.ArraySet; import com.android.internal.annotations.Immutable; -import com.android.internal.util.CollectionUtils; -import com.android.internal.util.DataClass; -import com.android.internal.util.Parcelling; +import java.util.Arrays; +import java.util.Collections; import java.util.Objects; import java.util.Set; @@ -70,10 +69,10 @@ import java.util.Set; * This is supported to handle cases where you don't have access to the caller's attribution * source and you can directly use the {@link AttributionSource.Builder} APIs. However, * if the data flows through more than two apps (more than you access the data for the - * caller - which you cannot know ahead of time) you need to have a handle to the {@link - * AttributionSource} for the calling app's context in order to create an attribution context. - * This means you either need to have an API for the other app to send you its attribution - * source or use a platform API that pipes the callers attribution source. + * caller) you need to have a handle to the {@link AttributionSource} for the calling app's + * context in order to create an attribution context. This means you either need to have an + * API for the other app to send you its attribution source or use a platform API that pipes + * the callers attribution source. * <p> * You cannot forge an attribution chain without the participation of every app in the * attribution chain (aside of the special case mentioned above). To create an attribution @@ -85,80 +84,11 @@ import java.util.Set; * permission protected APIs since some app in the chain may not have the permission. */ @Immutable -// TODO: Codegen doesn't properly verify the class if the parcelling is inner class -// TODO: Codegen doesn't allow overriding the constructor to change its visibility -// TODO: Codegen applies method level annotations to argument vs the generated member (@SystemApi) -// TODO: Codegen doesn't properly read/write IBinder members -// TODO: Codegen doesn't properly handle Set arguments -// TODO: Codegen requires @SystemApi annotations on fields which breaks -// android.signature.cts.api.AnnotationTest (need to update the test) -// @DataClass(genEqualsHashCode = true, genConstructor = false, genBuilder = true) public final class AttributionSource implements Parcelable { - /** - * @hide - */ - static class RenouncedPermissionsParcelling implements Parcelling<Set<String>> { - - @Override - public void parcel(Set<String> item, Parcel dest, int parcelFlags) { - if (item == null) { - dest.writeInt(-1); - } else { - dest.writeInt(item.size()); - for (String permission : item) { - dest.writeString8(permission); - } - } - } - - @Override - public Set<String> unparcel(Parcel source) { - final int size = source.readInt(); - if (size < 0) { - return null; - } - final ArraySet<String> result = new ArraySet<>(size); - for (int i = 0; i < size; i++) { - result.add(source.readString8()); - } - return result; - } - } - - /** - * The UID that is accessing the permission protected data. - */ - private final int mUid; - - /** - * The package that is accessing the permission protected data. - */ - private @Nullable String mPackageName = null; + private final @NonNull AttributionSourceState mAttributionSourceState; - /** - * The attribution tag of the app accessing the permission protected data. - */ - private @Nullable String mAttributionTag = null; - - /** - * Unique token for that source. - * - * @hide - */ - private @Nullable IBinder mToken = null; - - /** - * Permissions that should be considered revoked regardless if granted. - * - * @hide - */ - @DataClass.ParcelWith(RenouncedPermissionsParcelling.class) - private @Nullable Set<String> mRenouncedPermissions = null; - - /** - * The next app to receive the permission protected data. - */ - private @Nullable AttributionSource mNext = null; + private @Nullable AttributionSource mNextCached; + private @Nullable Set<String> mRenouncedPermissionsCached; /** @hide */ @TestApi @@ -171,8 +101,7 @@ public final class AttributionSource implements Parcelable { @TestApi public AttributionSource(int uid, @Nullable String packageName, @Nullable String attributionTag, @Nullable AttributionSource next) { - this(uid, packageName, attributionTag, /*token*/ null, - /*renouncedPermissions*/ null, next); + this(uid, packageName, attributionTag, /*renouncedPermissions*/ null, next); } /** @hide */ @@ -180,8 +109,8 @@ public final class AttributionSource implements Parcelable { public AttributionSource(int uid, @Nullable String packageName, @Nullable String attributionTag, @Nullable Set<String> renouncedPermissions, @Nullable AttributionSource next) { - this(uid, packageName, attributionTag, /*token*/ null, - renouncedPermissions, next); + this(uid, packageName, attributionTag, /*token*/ null, (renouncedPermissions != null) + ? renouncedPermissions.toArray(new String[0]) : null, next); } /** @hide */ @@ -191,16 +120,49 @@ public final class AttributionSource implements Parcelable { /*token*/ null, /*renouncedPermissions*/ null, next); } + AttributionSource(int uid, @Nullable String packageName, @Nullable String attributionTag, + @Nullable IBinder token, @Nullable String[] renouncedPermissions, + @Nullable AttributionSource next) { + mAttributionSourceState = new AttributionSourceState(); + mAttributionSourceState.uid = uid; + mAttributionSourceState.packageName = packageName; + mAttributionSourceState.attributionTag = attributionTag; + mAttributionSourceState.token = token; + mAttributionSourceState.renouncedPermissions = renouncedPermissions; + mAttributionSourceState.next = (next != null) ? new AttributionSourceState[] + {next.mAttributionSourceState} : null; + } + + AttributionSource(@NonNull Parcel in) { + this(AttributionSourceState.CREATOR.createFromParcel(in)); + } + + /** @hide */ + public AttributionSource(@NonNull AttributionSourceState attributionSourceState) { + mAttributionSourceState = attributionSourceState; + } + /** @hide */ public AttributionSource withNextAttributionSource(@Nullable AttributionSource next) { - return new AttributionSource(mUid, mPackageName, mAttributionTag, mToken, - mRenouncedPermissions, next); + return new AttributionSource(getUid(), getPackageName(), getAttributionTag(), + getToken(), mAttributionSourceState.renouncedPermissions, next); } /** @hide */ public AttributionSource withToken(@Nullable IBinder token) { - return new AttributionSource(mUid, mPackageName, mAttributionTag, token, - mRenouncedPermissions, mNext); + return new AttributionSource(getUid(), getPackageName(), getAttributionTag(), + token, mAttributionSourceState.renouncedPermissions, getNext()); + } + + /** @hide */ + public AttributionSource withPackageName(@Nullable String packageName) { + return new AttributionSource(getUid(), packageName, getAttributionTag(), getToken(), + mAttributionSourceState.renouncedPermissions, getNext()); + } + + /** @hide */ + public @NonNull AttributionSourceState asState() { + return mAttributionSourceState; } /** @@ -213,10 +175,9 @@ public final class AttributionSource implements Parcelable { * from the caller. */ public void enforceCallingUid() { - final int callingUid = Binder.getCallingUid(); - if (callingUid != Process.SYSTEM_UID && callingUid != mUid) { - throw new SecurityException("Calling uid: " + callingUid - + " doesn't match source uid: " + mUid); + if (!checkCallingUid()) { + throw new SecurityException("Calling uid: " + Binder.getCallingUid() + + " doesn't match source uid: " + mAttributionSourceState.uid); } // No need to check package as app ops manager does it already. } @@ -231,7 +192,8 @@ public final class AttributionSource implements Parcelable { */ public boolean checkCallingUid() { final int callingUid = Binder.getCallingUid(); - if (callingUid != Process.SYSTEM_UID && callingUid != mUid) { + if (callingUid != Process.SYSTEM_UID + && callingUid != mAttributionSourceState.uid) { return false; } // No need to check package as app ops manager does it already. @@ -242,11 +204,12 @@ public final class AttributionSource implements Parcelable { public String toString() { if (Build.IS_DEBUGGABLE) { return "AttributionSource { " + - "uid = " + mUid + ", " + - "packageName = " + mPackageName + ", " + - "attributionTag = " + mAttributionTag + ", " + - "token = " + mToken + ", " + - "next = " + mNext + + "uid = " + mAttributionSourceState.uid + ", " + + "packageName = " + mAttributionSourceState.packageName + ", " + + "attributionTag = " + mAttributionSourceState.attributionTag + ", " + + "token = " + mAttributionSourceState.token + ", " + + "next = " + (mAttributionSourceState.next != null + ? mAttributionSourceState.next[0]: null) + " }"; } return super.toString(); @@ -258,8 +221,8 @@ public final class AttributionSource implements Parcelable { * @hide */ public int getNextUid() { - if (mNext != null) { - return mNext.getUid(); + if (mAttributionSourceState.next != null) { + return mAttributionSourceState.next[0].uid; } return Process.INVALID_UID; } @@ -270,8 +233,8 @@ public final class AttributionSource implements Parcelable { * @hide */ public @Nullable String getNextPackageName() { - if (mNext != null) { - return mNext.getPackageName(); + if (mAttributionSourceState.next != null) { + return mAttributionSourceState.next[0].packageName; } return null; } @@ -283,8 +246,8 @@ public final class AttributionSource implements Parcelable { * @hide */ public @Nullable String getNextAttributionTag() { - if (mNext != null) { - return mNext.getAttributionTag(); + if (mAttributionSourceState.next != null) { + return mAttributionSourceState.next[0].attributionTag; } return null; } @@ -297,8 +260,9 @@ public final class AttributionSource implements Parcelable { * @return Whether this is a trusted source. */ public boolean isTrusted(@NonNull Context context) { - return mToken != null && context.getSystemService(PermissionManager.class) - .isRegisteredAttributionSource(this); + return mAttributionSourceState.token != null + && context.getSystemService(PermissionManager.class) + .isRegisteredAttributionSource(this); } /** @@ -310,71 +274,36 @@ public final class AttributionSource implements Parcelable { @RequiresPermission(android.Manifest.permission.RENOUNCE_PERMISSIONS) @NonNull public Set<String> getRenouncedPermissions() { - return CollectionUtils.emptyIfNull(mRenouncedPermissions); - } - - @DataClass.Suppress({"setUid", "setToken"}) - static class BaseBuilder {} - - - - - - - // Code below generated by codegen v1.0.22. - // - // DO NOT MODIFY! - // CHECKSTYLE:OFF Generated code - // - // To regenerate run: - // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/content/AttributionSource.java - // - // To exclude the generated code from IntelliJ auto-formatting enable (one-time): - // Settings > Editor > Code Style > Formatter Control - //@formatter:off - - - /* package-private */ AttributionSource( - int uid, - @Nullable String packageName, - @Nullable String attributionTag, - @Nullable IBinder token, - @RequiresPermission(android.Manifest.permission.RENOUNCE_PERMISSIONS) @Nullable Set<String> renouncedPermissions, - @Nullable AttributionSource next) { - this.mUid = uid; - this.mPackageName = packageName; - this.mAttributionTag = attributionTag; - this.mToken = token; - this.mRenouncedPermissions = renouncedPermissions; - com.android.internal.util.AnnotationValidations.validate( - SystemApi.class, null, mRenouncedPermissions); - com.android.internal.util.AnnotationValidations.validate( - RequiresPermission.class, null, mRenouncedPermissions, - "value", android.Manifest.permission.RENOUNCE_PERMISSIONS); - this.mNext = next; - - // onConstructed(); // You can define this method to get a callback + if (mRenouncedPermissionsCached == null) { + if (mAttributionSourceState.renouncedPermissions != null) { + mRenouncedPermissionsCached = new ArraySet<>( + mAttributionSourceState.renouncedPermissions); + } else { + mRenouncedPermissionsCached = Collections.emptySet(); + } + } + return mRenouncedPermissionsCached; } /** * The UID that is accessing the permission protected data. */ public int getUid() { - return mUid; + return mAttributionSourceState.uid; } /** * The package that is accessing the permission protected data. */ public @Nullable String getPackageName() { - return mPackageName; + return mAttributionSourceState.packageName; } /** * The attribution tag of the app accessing the permission protected data. */ public @Nullable String getAttributionTag() { - return mAttributionTag; + return mAttributionSourceState.attributionTag; } /** @@ -383,113 +312,56 @@ public final class AttributionSource implements Parcelable { * @hide */ public @Nullable IBinder getToken() { - return mToken; + return mAttributionSourceState.token; } /** * The next app to receive the permission protected data. */ public @Nullable AttributionSource getNext() { - return mNext; + if (mNextCached == null && mAttributionSourceState.next != null) { + mNextCached = new AttributionSource(mAttributionSourceState.next[0]); + } + return mNextCached; } @Override public boolean equals(@Nullable Object o) { - // You can override field equality logic by defining either of the methods like: - // boolean fieldNameEquals(AttributionSource other) { ... } - // boolean fieldNameEquals(FieldType otherValue) { ... } - if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - @SuppressWarnings("unchecked") AttributionSource that = (AttributionSource) o; - //noinspection PointlessBooleanExpression - return true - && mUid == that.mUid - && Objects.equals(mPackageName, that.mPackageName) - && Objects.equals(mAttributionTag, that.mAttributionTag) - && Objects.equals(mToken, that.mToken) - && Objects.equals(mRenouncedPermissions, that.mRenouncedPermissions) - && Objects.equals(mNext, that.mNext); + return mAttributionSourceState.uid == that.mAttributionSourceState.uid + && Objects.equals(mAttributionSourceState.packageName, + that.mAttributionSourceState.packageName) + && Objects.equals(mAttributionSourceState.attributionTag, + that.mAttributionSourceState.attributionTag) + && Objects.equals(mAttributionSourceState.token, + that.mAttributionSourceState.token) + && Arrays.equals(mAttributionSourceState.renouncedPermissions, + that.mAttributionSourceState.renouncedPermissions) + && Objects.equals(getNext(), that.getNext()); } @Override public int hashCode() { - // You can override field hashCode logic by defining methods like: - // int fieldNameHashCode() { ... } - int _hash = 1; - _hash = 31 * _hash + mUid; - _hash = 31 * _hash + Objects.hashCode(mPackageName); - _hash = 31 * _hash + Objects.hashCode(mAttributionTag); - _hash = 31 * _hash + Objects.hashCode(mToken); - _hash = 31 * _hash + Objects.hashCode(mRenouncedPermissions); - _hash = 31 * _hash + Objects.hashCode(mNext); + _hash = 31 * _hash + mAttributionSourceState.uid; + _hash = 31 * _hash + Objects.hashCode(mAttributionSourceState.packageName); + _hash = 31 * _hash + Objects.hashCode(mAttributionSourceState.attributionTag); + _hash = 31 * _hash + Objects.hashCode(mAttributionSourceState.token); + _hash = 31 * _hash + Objects.hashCode(mAttributionSourceState.renouncedPermissions); + _hash = 31 * _hash + Objects.hashCode(getNext()); return _hash; } - static Parcelling<Set<String>> sParcellingForRenouncedPermissions = - Parcelling.Cache.get( - RenouncedPermissionsParcelling.class); - static { - if (sParcellingForRenouncedPermissions == null) { - sParcellingForRenouncedPermissions = Parcelling.Cache.put( - new RenouncedPermissionsParcelling()); - } - } - @Override public void writeToParcel(@NonNull Parcel dest, int flags) { - // You can override field parcelling by defining methods like: - // void parcelFieldName(Parcel dest, int flags) { ... } - - byte flg = 0; - if (mPackageName != null) flg |= 0x2; - if (mAttributionTag != null) flg |= 0x4; - if (mToken != null) flg |= 0x8; - if (mRenouncedPermissions != null) flg |= 0x10; - if (mNext != null) flg |= 0x20; - dest.writeByte(flg); - dest.writeInt(mUid); - if (mPackageName != null) dest.writeString(mPackageName); - if (mAttributionTag != null) dest.writeString(mAttributionTag); - if (mToken != null) dest.writeStrongBinder(mToken); - sParcellingForRenouncedPermissions.parcel(mRenouncedPermissions, dest, flags); - if (mNext != null) dest.writeTypedObject(mNext, flags); + mAttributionSourceState.writeToParcel(dest, flags); } @Override public int describeContents() { return 0; } - /** @hide */ - @SuppressWarnings({"unchecked", "RedundantCast"}) - /* package-private */ AttributionSource(@NonNull Parcel in) { - // You can override field unparcelling by defining methods like: - // static FieldType unparcelFieldName(Parcel in) { ... } - - byte flg = in.readByte(); - int uid = in.readInt(); - String packageName = (flg & 0x2) == 0 ? null : in.readString(); - String attributionTag = (flg & 0x4) == 0 ? null : in.readString(); - IBinder token = (flg & 0x8) == 0 ? null : in.readStrongBinder(); - Set<String> renouncedPermissions = sParcellingForRenouncedPermissions.unparcel(in); - AttributionSource next = (flg & 0x20) == 0 ? null : (AttributionSource) in.readTypedObject(AttributionSource.CREATOR); - - this.mUid = uid; - this.mPackageName = packageName; - this.mAttributionTag = attributionTag; - this.mToken = token; - this.mRenouncedPermissions = renouncedPermissions; - com.android.internal.util.AnnotationValidations.validate( - SystemApi.class, null, mRenouncedPermissions); - com.android.internal.util.AnnotationValidations.validate( - RequiresPermission.class, null, mRenouncedPermissions, - "value", android.Manifest.permission.RENOUNCE_PERMISSIONS); - this.mNext = next; - - // onConstructed(); // You can define this method to get a callback - } - public static final @NonNull Parcelable.Creator<AttributionSource> CREATOR = new Parcelable.Creator<AttributionSource>() { @Override @@ -506,15 +378,9 @@ public final class AttributionSource implements Parcelable { /** * A builder for {@link AttributionSource} */ - @SuppressWarnings("WeakerAccess") - public static final class Builder extends BaseBuilder { - - private int mUid; - private @Nullable String mPackageName; - private @Nullable String mAttributionTag; - private @Nullable IBinder mToken; - private @Nullable Set<String> mRenouncedPermissions; - private @Nullable AttributionSource mNext; + public static final class Builder { + private @NonNull final AttributionSourceState mAttributionSourceState = + new AttributionSourceState(); private long mBuilderFieldsSet = 0L; @@ -524,9 +390,8 @@ public final class AttributionSource implements Parcelable { * @param uid * The UID that is accessing the permission protected data. */ - public Builder( - int uid) { - mUid = uid; + public Builder(int uid) { + mAttributionSourceState.uid = uid; } /** @@ -535,7 +400,7 @@ public final class AttributionSource implements Parcelable { public @NonNull Builder setPackageName(@Nullable String value) { checkNotUsed(); mBuilderFieldsSet |= 0x2; - mPackageName = value; + mAttributionSourceState.packageName = value; return this; } @@ -545,7 +410,7 @@ public final class AttributionSource implements Parcelable { public @NonNull Builder setAttributionTag(@Nullable String value) { checkNotUsed(); mBuilderFieldsSet |= 0x4; - mAttributionTag = value; + mAttributionSourceState.attributionTag = value; return this; } @@ -578,7 +443,8 @@ public final class AttributionSource implements Parcelable { public @NonNull Builder setRenouncedPermissions(@Nullable Set<String> value) { checkNotUsed(); mBuilderFieldsSet |= 0x10; - mRenouncedPermissions = value; + mAttributionSourceState.renouncedPermissions = (value != null) + ? value.toArray(new String[0]) : null; return this; } @@ -588,7 +454,8 @@ public final class AttributionSource implements Parcelable { public @NonNull Builder setNext(@Nullable AttributionSource value) { checkNotUsed(); mBuilderFieldsSet |= 0x20; - mNext = value; + mAttributionSourceState.next = (value != null) ? new AttributionSourceState[] + {value.mAttributionSourceState} : null; return this; } @@ -598,28 +465,21 @@ public final class AttributionSource implements Parcelable { mBuilderFieldsSet |= 0x40; // Mark builder used if ((mBuilderFieldsSet & 0x2) == 0) { - mPackageName = null; + mAttributionSourceState.packageName = null; } if ((mBuilderFieldsSet & 0x4) == 0) { - mAttributionTag = null; + mAttributionSourceState.attributionTag = null; } if ((mBuilderFieldsSet & 0x8) == 0) { - mToken = null; + mAttributionSourceState.token = null; } if ((mBuilderFieldsSet & 0x10) == 0) { - mRenouncedPermissions = null; + mAttributionSourceState.renouncedPermissions = null; } if ((mBuilderFieldsSet & 0x20) == 0) { - mNext = null; + mAttributionSourceState.next = null; } - AttributionSource o = new AttributionSource( - mUid, - mPackageName, - mAttributionTag, - mToken, - mRenouncedPermissions, - mNext); - return o; + return new AttributionSource(mAttributionSourceState); } private void checkNotUsed() { @@ -629,9 +489,4 @@ public final class AttributionSource implements Parcelable { } } } - - - //@formatter:on - // End of generated code - } diff --git a/core/java/android/content/PermissionChecker.java b/core/java/android/content/PermissionChecker.java index 5089f30585b4..66e088359459 100644 --- a/core/java/android/content/PermissionChecker.java +++ b/core/java/android/content/PermissionChecker.java @@ -16,21 +16,19 @@ package android.content; -import android.Manifest; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.AppOpsManager; -import android.content.pm.PackageManager; -import android.content.pm.PermissionInfo; import android.os.Binder; +import android.os.IBinder; import android.os.Process; -import android.util.Slog; +import android.os.RemoteException; +import android.os.ServiceManager; +import android.permission.IPermissionChecker; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; /** * This class provides permission check APIs that verify both the @@ -72,34 +70,44 @@ import java.util.concurrent.ConcurrentHashMap; * @hide */ public final class PermissionChecker { - private static final String LOG_TAG = PermissionChecker.class.getName(); - - private static final String PLATFORM_PACKAGE_NAME = "android"; - - /** The permission is granted. */ - public static final int PERMISSION_GRANTED = AppOpsManager.MODE_ALLOWED; + /** + * The permission is granted. + * + * @hide + */ + public static final int PERMISSION_GRANTED = IPermissionChecker.PERMISSION_GRANTED; - /** Only for runtime permissions, its returned when the runtime permission - * is granted, but the corresponding app op is denied. */ - public static final int PERMISSION_SOFT_DENIED = AppOpsManager.MODE_IGNORED; + /** + * The permission is denied. Applicable only to runtime and app op permissions. + * + * <p>Returned when: + * <ul> + * <li>the runtime permission is granted, but the corresponding app op is denied + * for runtime permissions.</li> + * <li>the app ops is ignored for app op permissions.</li> + * </ul> + * + * @hide + */ + public static final int PERMISSION_SOFT_DENIED = IPermissionChecker.PERMISSION_SOFT_DENIED; - /** Returned when: + /** + * The permission is denied. + * + * <p>Returned when: * <ul> - * <li>For non app op permissions, returned when the permission is denied.</li> - * <li>For app op permissions, returned when the app op is denied or app op is - * {@link AppOpsManager#MODE_DEFAULT} and permission is denied.</li> + * <li>the permission is denied for non app op permissions.</li> + * <li>the app op is denied or app op is {@link AppOpsManager#MODE_DEFAULT} + * and permission is denied.</li> * </ul> * + * @hide */ - public static final int PERMISSION_HARD_DENIED = AppOpsManager.MODE_ERRORED; + public static final int PERMISSION_HARD_DENIED = IPermissionChecker.PERMISSION_HARD_DENIED; /** Constant when the PID for which we check permissions is unknown. */ public static final int PID_UNKNOWN = -1; - // Cache for platform defined runtime permissions to avoid multi lookup (name -> info) - private static final ConcurrentHashMap<String, PermissionInfo> sPlatformPermissions - = new ConcurrentHashMap<>(); - /** @hide */ @IntDef({PERMISSION_GRANTED, PERMISSION_SOFT_DENIED, @@ -107,6 +115,8 @@ public final class PermissionChecker { @Retention(RetentionPolicy.SOURCE) public @interface PermissionResult {} + private static volatile IPermissionChecker sService; + private PermissionChecker() { /* do nothing */ } @@ -232,7 +242,7 @@ public final class PermissionChecker { public static int checkPermissionForDataDeliveryFromDataSource(@NonNull Context context, @NonNull String permission, int pid, @NonNull AttributionSource attributionSource, @Nullable String message) { - return checkPermissionForDataDeliveryCommon(context, permission, pid, attributionSource, + return checkPermissionForDataDeliveryCommon(context, permission, attributionSource, message, false /*startDataDelivery*/, /*fromDatasource*/ true); } @@ -307,21 +317,23 @@ public final class PermissionChecker { public static int checkPermissionForDataDelivery(@NonNull Context context, @NonNull String permission, int pid, @NonNull AttributionSource attributionSource, @Nullable String message, boolean startDataDelivery) { - return checkPermissionForDataDeliveryCommon(context, permission, pid, attributionSource, + return checkPermissionForDataDeliveryCommon(context, permission, attributionSource, message, startDataDelivery, /*fromDatasource*/ false); } private static int checkPermissionForDataDeliveryCommon(@NonNull Context context, - @NonNull String permission, int pid, @NonNull AttributionSource attributionSource, + @NonNull String permission, @NonNull AttributionSource attributionSource, @Nullable String message, boolean startDataDelivery, boolean fromDatasource) { // If the check failed in the middle of the chain, finish any started op. - final int result = checkPermissionCommon(context, permission, attributionSource, - message, true /*forDataDelivery*/, startDataDelivery, fromDatasource); - if (startDataDelivery && result != PERMISSION_GRANTED) { - finishDataDelivery(context, AppOpsManager.permissionToOp(permission), - attributionSource); + try { + final int result = getPermissionCheckerService().checkPermission(permission, + attributionSource.asState(), message, true /*forDataDelivery*/, + startDataDelivery, fromDatasource); + return result; + } catch (RemoteException e) { + e.rethrowFromSystemServer(); } - return result; + return PERMISSION_HARD_DENIED; } /** @@ -356,9 +368,14 @@ public final class PermissionChecker { public static int checkPermissionAndStartDataDelivery(@NonNull Context context, @NonNull String permission, @NonNull AttributionSource attributionSource, @Nullable String message) { - return checkPermissionCommon(context, permission, attributionSource, - message, true /*forDataDelivery*/, /*startDataDelivery*/ true, - /*fromDatasource*/ false); + try { + return getPermissionCheckerService().checkPermission(permission, + attributionSource.asState(), message, true /*forDataDelivery*/, + /*startDataDelivery*/ true, /*fromDatasource*/ false); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + return PERMISSION_HARD_DENIED; } /** @@ -390,13 +407,14 @@ public final class PermissionChecker { public static int startOpForDataDelivery(@NonNull Context context, @NonNull String opName, @NonNull AttributionSource attributionSource, @Nullable String message) { - final int result = checkOp(context, AppOpsManager.strOpToOp(opName), attributionSource, - message, true /*forDataDelivery*/, true /*startDataDelivery*/); - // It is important to finish any started op if some step in the attribution chain failed. - if (result != PERMISSION_GRANTED) { - finishDataDelivery(context, opName, attributionSource); + try { + return getPermissionCheckerService().checkOp( + AppOpsManager.strOpToOp(opName), attributionSource.asState(), message, + true /*forDataDelivery*/, true /*startDataDelivery*/); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); } - return result; + return PERMISSION_HARD_DENIED; } /** @@ -412,15 +430,10 @@ public final class PermissionChecker { */ public static void finishDataDelivery(@NonNull Context context, @NonNull String op, @NonNull AttributionSource attributionSource) { - if (op == null || attributionSource.getPackageName() == null) { - return; - } - - final AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class); - appOpsManager.finishProxyOp(op, attributionSource); - - if (attributionSource.getNext() != null) { - finishDataDelivery(context, op, attributionSource.getNext()); + try { + getPermissionCheckerService().finishDataDelivery(op, attributionSource.asState()); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); } } @@ -456,8 +469,14 @@ public final class PermissionChecker { public static int checkOpForPreflight(@NonNull Context context, @NonNull String opName, @NonNull AttributionSource attributionSource, @Nullable String message) { - return checkOp(context, AppOpsManager.strOpToOp(opName), attributionSource, - message, false /*forDataDelivery*/, false /*startDataDelivery*/); + try { + return getPermissionCheckerService().checkOp(AppOpsManager.strOpToOp(opName), + attributionSource.asState(), message, false /*forDataDelivery*/, + false /*startDataDelivery*/); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + return PERMISSION_HARD_DENIED; } /** @@ -489,8 +508,14 @@ public final class PermissionChecker { public static int checkOpForDataDelivery(@NonNull Context context, @NonNull String opName, @NonNull AttributionSource attributionSource, @Nullable String message) { - return checkOp(context, AppOpsManager.strOpToOp(opName), attributionSource, - message, true /*forDataDelivery*/, false /*startDataDelivery*/); + try { + return getPermissionCheckerService().checkOp(AppOpsManager.strOpToOp(opName), + attributionSource.asState(), message, true /*forDataDelivery*/, + false /*startDataDelivery*/); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + return PERMISSION_HARD_DENIED; } /** @@ -561,9 +586,14 @@ public final class PermissionChecker { @PermissionResult public static int checkPermissionForPreflight(@NonNull Context context, @NonNull String permission, @NonNull AttributionSource attributionSource) { - return checkPermissionCommon(context, permission, attributionSource, - null /*message*/, false /*forDataDelivery*/, /*startDataDelivery*/ false, - /*fromDatasource*/ false); + try { + return getPermissionCheckerService().checkPermission(permission, + attributionSource.asState(), null /*message*/, false /*forDataDelivery*/, + /*startDataDelivery*/ false, /*fromDatasource*/ false); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + return PERMISSION_HARD_DENIED; } /** @@ -798,356 +828,12 @@ public final class PermissionChecker { Binder.getCallingUid(), packageName); } - @PermissionResult - private static int checkPermissionCommon(@NonNull Context context, @NonNull String permission, - @NonNull AttributionSource attributionSource, - @Nullable String message, boolean forDataDelivery, boolean startDataDelivery, - boolean fromDatasource) { - PermissionInfo permissionInfo = sPlatformPermissions.get(permission); - - if (permissionInfo == null) { - try { - permissionInfo = context.getPackageManager().getPermissionInfo(permission, 0); - if (PLATFORM_PACKAGE_NAME.equals(permissionInfo.packageName)) { - // Double addition due to concurrency is fine - the backing store is concurrent. - sPlatformPermissions.put(permission, permissionInfo); - } - } catch (PackageManager.NameNotFoundException ignored) { - return PERMISSION_HARD_DENIED; - } - } - - if (permissionInfo.isAppOp()) { - return checkAppOpPermission(context, permission, attributionSource, message, - forDataDelivery, fromDatasource); - } - if (permissionInfo.isRuntime()) { - return checkRuntimePermission(context, permission, attributionSource, message, - forDataDelivery, startDataDelivery, fromDatasource); - } - - if (!fromDatasource && !checkPermission(context, permission, attributionSource.getUid(), - attributionSource.getRenouncedPermissions())) { - return PERMISSION_HARD_DENIED; - } - - if (attributionSource.getNext() != null) { - return checkPermissionCommon(context, permission, - attributionSource.getNext(), message, forDataDelivery, - startDataDelivery, /*fromDatasource*/ false); - } - - return PERMISSION_GRANTED; - } - - @PermissionResult - private static int checkAppOpPermission(@NonNull Context context, @NonNull String permission, - @NonNull AttributionSource attributionSource, @Nullable String message, - boolean forDataDelivery, boolean fromDatasource) { - final int op = AppOpsManager.permissionToOpCode(permission); - if (op < 0) { - Slog.wtf(LOG_TAG, "Appop permission " + permission + " with no app op defined!"); - return PERMISSION_HARD_DENIED; - } - - AttributionSource current = attributionSource; - AttributionSource next = null; - - while (true) { - final boolean skipCurrentChecks = (fromDatasource || next != null); - - next = current.getNext(); - - // If the call is from a datasource we need to vet only the chain before it. This - // way we can avoid the datasource creating an attribution context for every call. - if (!(fromDatasource && current == attributionSource) - && next != null && !current.isTrusted(context)) { - return PERMISSION_HARD_DENIED; - } - - // The access is for oneself if this is the single receiver of data - // after the data source or if this is the single attribution source - // in the chain if not from a datasource. - final boolean singleReceiverFromDatasource = (fromDatasource - && current == attributionSource && next != null && next.getNext() == null); - final boolean selfAccess = singleReceiverFromDatasource || next == null; - - final int opMode = performOpTransaction(context, op, current, message, - forDataDelivery, /*startDataDelivery*/ false, skipCurrentChecks, - selfAccess, singleReceiverFromDatasource); - - switch (opMode) { - case AppOpsManager.MODE_IGNORED: - case AppOpsManager.MODE_ERRORED: { - return PERMISSION_HARD_DENIED; - } - case AppOpsManager.MODE_DEFAULT: { - if (!skipCurrentChecks && !checkPermission(context, permission, - attributionSource.getUid(), attributionSource - .getRenouncedPermissions())) { - return PERMISSION_HARD_DENIED; - } - if (next != null && !checkPermission(context, permission, - next.getUid(), next.getRenouncedPermissions())) { - return PERMISSION_HARD_DENIED; - } - } - } - - if (next == null || next.getNext() == null) { - return PERMISSION_GRANTED; - } - - current = next; - } - } - - private static int checkRuntimePermission(@NonNull Context context, @NonNull String permission, - @NonNull AttributionSource attributionSource, @Nullable String message, - boolean forDataDelivery, boolean startDataDelivery, boolean fromDatasource) { - // Now let's check the identity chain... - final int op = AppOpsManager.permissionToOpCode(permission); - - AttributionSource current = attributionSource; - AttributionSource next = null; - - while (true) { - final boolean skipCurrentChecks = (fromDatasource || next != null); - next = current.getNext(); - - // If the call is from a datasource we need to vet only the chain before it. This - // way we can avoid the datasource creating an attribution context for every call. - if (!(fromDatasource && current == attributionSource) - && next != null && !current.isTrusted(context)) { - return PERMISSION_HARD_DENIED; - } - - // If we already checked the permission for this one, skip the work - if (!skipCurrentChecks && !checkPermission(context, permission, - current.getUid(), current.getRenouncedPermissions())) { - return PERMISSION_HARD_DENIED; - } - - if (next != null && !checkPermission(context, permission, - next.getUid(), next.getRenouncedPermissions())) { - return PERMISSION_HARD_DENIED; - } - - if (op < 0) { - // Bg location is one-off runtime modifier permission and has no app op - if (sPlatformPermissions.contains(permission) - && !Manifest.permission.ACCESS_BACKGROUND_LOCATION.equals(permission)) { - Slog.wtf(LOG_TAG, "Platform runtime permission " + permission - + " with no app op defined!"); - } - if (next == null) { - return PERMISSION_GRANTED; - } - current = next; - continue; - } - - // The access is for oneself if this is the single receiver of data - // after the data source or if this is the single attribution source - // in the chain if not from a datasource. - final boolean singleReceiverFromDatasource = (fromDatasource - && current == attributionSource && next != null && next.getNext() == null); - final boolean selfAccess = singleReceiverFromDatasource || next == null; - - final int opMode = performOpTransaction(context, op, current, message, - forDataDelivery, startDataDelivery, skipCurrentChecks, selfAccess, - singleReceiverFromDatasource); - - switch (opMode) { - case AppOpsManager.MODE_ERRORED: { - return PERMISSION_HARD_DENIED; - } - case AppOpsManager.MODE_IGNORED: { - return PERMISSION_SOFT_DENIED; - } - } - - if (next == null || next.getNext() == null) { - return PERMISSION_GRANTED; - } - - current = next; - } - } - - private static boolean checkPermission(@NonNull Context context, @NonNull String permission, - int uid, @NonNull Set<String> renouncedPermissions) { - final boolean permissionGranted = context.checkPermission(permission, /*pid*/ -1, - uid) == PackageManager.PERMISSION_GRANTED; - if (permissionGranted && renouncedPermissions.contains(permission) - && context.checkPermission(Manifest.permission.RENOUNCE_PERMISSIONS, - /*pid*/ -1, uid) == PackageManager.PERMISSION_GRANTED) { - return false; - } - return permissionGranted; - } - - private static int checkOp(@NonNull Context context, @NonNull int op, - @NonNull AttributionSource attributionSource, @Nullable String message, - boolean forDataDelivery, boolean startDataDelivery) { - if (op < 0 || attributionSource.getPackageName() == null) { - return PERMISSION_HARD_DENIED; - } - - AttributionSource current = attributionSource; - AttributionSource next = null; - - while (true) { - final boolean skipCurrentChecks = (next != null); - next = current.getNext(); - - // If the call is from a datasource we need to vet only the chain before it. This - // way we can avoid the datasource creating an attribution context for every call. - if (next != null && !current.isTrusted(context)) { - return PERMISSION_HARD_DENIED; - } - - // The access is for oneself if this is the single attribution source in the chain. - final boolean selfAccess = (next == null); - - final int opMode = performOpTransaction(context, op, current, message, - forDataDelivery, startDataDelivery, skipCurrentChecks, selfAccess, - /*fromDatasource*/ false); - - switch (opMode) { - case AppOpsManager.MODE_ERRORED: { - return PERMISSION_HARD_DENIED; - } - case AppOpsManager.MODE_IGNORED: { - return PERMISSION_SOFT_DENIED; - } - } - - if (next == null || next.getNext() == null) { - return PERMISSION_GRANTED; - } - - current = next; - } - } - - private static int performOpTransaction(@NonNull Context context, int op, - @NonNull AttributionSource attributionSource, @Nullable String message, - boolean forDataDelivery, boolean startDataDelivery, boolean skipProxyOperation, - boolean selfAccess, boolean singleReceiverFromDatasource) { - // We cannot perform app ops transactions without a package name. In all relevant - // places we pass the package name but just in case there is a bug somewhere we - // do a best effort to resolve the package from the UID (pick first without a loss - // of generality - they are in the same security sandbox). - final AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class); - final AttributionSource accessorSource = (!singleReceiverFromDatasource) - ? attributionSource : attributionSource.getNext(); - if (!forDataDelivery) { - final String resolvedAccessorPackageName = resolvePackageName(context, accessorSource); - if (resolvedAccessorPackageName == null) { - return AppOpsManager.MODE_ERRORED; - } - final int opMode = appOpsManager.unsafeCheckOpRawNoThrow(op, - accessorSource.getUid(), resolvedAccessorPackageName); - final AttributionSource next = accessorSource.getNext(); - if (!selfAccess && opMode == AppOpsManager.MODE_ALLOWED && next != null) { - final String resolvedNextPackageName = resolvePackageName(context, next); - if (resolvedNextPackageName == null) { - return AppOpsManager.MODE_ERRORED; - } - return appOpsManager.unsafeCheckOpRawNoThrow(op, next.getUid(), - resolvedNextPackageName); - } - return opMode; - } else if (startDataDelivery) { - final AttributionSource resolvedAttributionSource = resolveAttributionSource( - context, accessorSource); - if (resolvedAttributionSource.getPackageName() == null) { - return AppOpsManager.MODE_ERRORED; - } - if (selfAccess) { - // If the datasource is not in a trusted platform component then in would not - // have UPDATE_APP_OPS_STATS and the call below would fail. The problem is that - // an app is exposing runtime permission protected data but cannot blame others - // in a trusted way which would not properly show in permission usage UIs. - // As a fallback we note a proxy op that blames the app and the datasource. - try { - return appOpsManager.startOpNoThrow(op, resolvedAttributionSource.getUid(), - resolvedAttributionSource.getPackageName(), - /*startIfModeDefault*/ false, - resolvedAttributionSource.getAttributionTag(), - message); - } catch (SecurityException e) { - Slog.w(LOG_TAG, "Datasource " + attributionSource + " protecting data with" - + " platform defined runtime permission " - + AppOpsManager.opToPermission(op) + " while not having " - + Manifest.permission.UPDATE_APP_OPS_STATS); - return appOpsManager.startProxyOpNoThrow(op, attributionSource, message, - skipProxyOperation); - } - } else { - return appOpsManager.startProxyOpNoThrow(op, resolvedAttributionSource, message, - skipProxyOperation); - } - } else { - final AttributionSource resolvedAttributionSource = resolveAttributionSource( - context, accessorSource); - if (resolvedAttributionSource.getPackageName() == null) { - return AppOpsManager.MODE_ERRORED; - } - if (selfAccess) { - // If the datasource is not in a trusted platform component then in would not - // have UPDATE_APP_OPS_STATS and the call below would fail. The problem is that - // an app is exposing runtime permission protected data but cannot blame others - // in a trusted way which would not properly show in permission usage UIs. - // As a fallback we note a proxy op that blames the app and the datasource. - try { - return appOpsManager.noteOpNoThrow(op, resolvedAttributionSource.getUid(), - resolvedAttributionSource.getPackageName(), - resolvedAttributionSource.getAttributionTag(), - message); - } catch (SecurityException e) { - Slog.w(LOG_TAG, "Datasource " + attributionSource + " protecting data with" - + " platform defined runtime permission " - + AppOpsManager.opToPermission(op) + " while not having " - + Manifest.permission.UPDATE_APP_OPS_STATS); - return appOpsManager.noteProxyOpNoThrow(op, attributionSource, message, - skipProxyOperation); - } - } else { - return appOpsManager.noteProxyOpNoThrow(op, resolvedAttributionSource, message, - skipProxyOperation); - } - } - } - - private static @Nullable String resolvePackageName(@NonNull Context context, - @NonNull AttributionSource attributionSource) { - if (attributionSource.getPackageName() != null) { - return attributionSource.getPackageName(); - } - final String[] packageNames = context.getPackageManager().getPackagesForUid( - attributionSource.getUid()); - if (packageNames != null) { - // This is best effort if the caller doesn't pass a package. The security - // sandbox is UID, therefore we pick an arbitrary package. - return packageNames[0]; - } - // Last resort to handle special UIDs like root, etc. - return AppOpsManager.resolvePackageName(attributionSource.getUid(), - attributionSource.getPackageName()); - } - - private static @NonNull AttributionSource resolveAttributionSource( - @NonNull Context context, @NonNull AttributionSource attributionSource) { - if (attributionSource.getPackageName() != null) { - return attributionSource; + private static @NonNull IPermissionChecker getPermissionCheckerService() { + // Race is fine, we may end up looking up the same instance twice, no big deal. + if (sService == null) { + final IBinder service = ServiceManager.getService("permission_checker"); + sService = IPermissionChecker.Stub.asInterface(service); } - return new AttributionSource(attributionSource.getUid(), - resolvePackageName(context, attributionSource), - attributionSource.getAttributionTag(), - attributionSource.getToken(), - attributionSource.getRenouncedPermissions(), - attributionSource.getNext()); + return sService; } } diff --git a/core/java/android/content/pm/BaseParceledListSlice.java b/core/java/android/content/pm/BaseParceledListSlice.java index 5c7a5488076b..7bade740c9be 100644 --- a/core/java/android/content/pm/BaseParceledListSlice.java +++ b/core/java/android/content/pm/BaseParceledListSlice.java @@ -75,16 +75,7 @@ abstract class BaseParceledListSlice<T> implements Parcelable { if (p.readInt() == 0) { break; } - - final T parcelable = readCreator(creator, p, loader); - if (listElementClass == null) { - listElementClass = parcelable.getClass(); - } else { - verifySameType(listElementClass, parcelable.getClass()); - } - - mList.add(parcelable); - + listElementClass = readVerifyAndAddElement(creator, p, loader, listElementClass); if (DEBUG) Log.d(TAG, "Read inline #" + i + ": " + mList.get(mList.size()-1)); i++; } @@ -104,11 +95,8 @@ abstract class BaseParceledListSlice<T> implements Parcelable { return; } while (i < N && reply.readInt() != 0) { - final T parcelable = readCreator(creator, reply, loader); - verifySameType(listElementClass, parcelable.getClass()); - - mList.add(parcelable); - + listElementClass = readVerifyAndAddElement(creator, reply, loader, + listElementClass); if (DEBUG) Log.d(TAG, "Read extra #" + i + ": " + mList.get(mList.size()-1)); i++; } @@ -117,6 +105,18 @@ abstract class BaseParceledListSlice<T> implements Parcelable { } } + private Class<?> readVerifyAndAddElement(Parcelable.Creator<?> creator, Parcel p, + ClassLoader loader, Class<?> listElementClass) { + final T parcelable = readCreator(creator, p, loader); + if (listElementClass == null) { + listElementClass = parcelable.getClass(); + } else { + verifySameType(listElementClass, parcelable.getClass()); + } + mList.add(parcelable); + return listElementClass; + } + private T readCreator(Parcelable.Creator<?> creator, Parcel p, ClassLoader loader) { if (creator instanceof Parcelable.ClassLoaderCreator<?>) { Parcelable.ClassLoaderCreator<?> classLoaderCreator = diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java index 725576fda389..22d75ef93137 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java +++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java @@ -3069,13 +3069,6 @@ public class ParsingPackageUtils { /** * @hide */ - public static void setCompatibilityModeEnabled(boolean compatibilityModeEnabled) { - sCompatibilityModeEnabled = compatibilityModeEnabled; - } - - /** - * @hide - */ public static void readConfigUseRoundIcon(Resources r) { if (r != null) { sUseRoundIcon = r.getBoolean(com.android.internal.R.bool.config_useRoundIcon); diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index cc1aeeb92685..b52955d035b5 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -926,6 +926,23 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing } /** + * @hide + */ + @RequiresPermission(USE_BIOMETRIC_INTERNAL) + public void onUiReady(int sensorId) { + if (mService == null) { + Slog.w(TAG, "onUiReady: no fingerprint service"); + return; + } + + try { + mService.onUiReady(sensorId); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** * Determine if there is at least one fingerprint enrolled. * * @return true if at least one fingerprint is enrolled, false otherwise @@ -1450,7 +1467,6 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing @Override // binder call public void onUdfpsPointerUp(int sensorId) { mHandler.obtainMessage(MSG_UDFPS_POINTER_UP, sensorId, 0).sendToTarget(); - } }; diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl index 833747f19a0c..936f3d6b2788 100644 --- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl +++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl @@ -160,6 +160,9 @@ interface IFingerprintService { // Notifies about a finger leaving the sensor area. void onPointerUp(int sensorId); + // Notifies about the fingerprint UI being ready (e.g. HBM illumination is enabled). + void onUiReady(int sensorId); + // Sets the controller for managing the UDFPS overlay. void setUdfpsOverlayController(in IUdfpsOverlayController controller); diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index 51d196dc8292..17116e248646 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -223,14 +223,6 @@ public final class InputManager { public static final long BLOCK_FLAG_SLIPPERY = android.os.IInputConstants.BLOCK_FLAG_SLIPPERY; /** - * Check whether apps are using MotionEvent.getRawX/Y. This is implementation-specific, and - * thus undefined for most 3p app usages. - * @hide - */ - @ChangeId - public static final long APP_USES_RAW_INPUT_COORDS = 179274888L; - - /** * Input Event Injection Synchronization Mode: None. * Never blocks. Injection is asynchronous and is assumed always to be successful. * @hide diff --git a/core/java/android/net/vcn/VcnNetworkPolicyResult.java b/core/java/android/net/vcn/VcnNetworkPolicyResult.java index 5e938200639c..14e70cfeb18a 100644 --- a/core/java/android/net/vcn/VcnNetworkPolicyResult.java +++ b/core/java/android/net/vcn/VcnNetworkPolicyResult.java @@ -87,6 +87,16 @@ public final class VcnNetworkPolicyResult implements Parcelable { && mNetworkCapabilities.equals(that.mNetworkCapabilities); } + @Override + public String toString() { + return "VcnNetworkPolicyResult { " + + "mIsTeardownRequested = " + + mIsTearDownRequested + + ", mNetworkCapabilities" + + mNetworkCapabilities + + " }"; + } + /** {@inheritDoc} */ @Override public int describeContents() { diff --git a/core/java/android/net/vcn/VcnUnderlyingNetworkPolicy.java b/core/java/android/net/vcn/VcnUnderlyingNetworkPolicy.java index b47d5642419e..b0d4f3be248f 100644 --- a/core/java/android/net/vcn/VcnUnderlyingNetworkPolicy.java +++ b/core/java/android/net/vcn/VcnUnderlyingNetworkPolicy.java @@ -85,6 +85,11 @@ public final class VcnUnderlyingNetworkPolicy implements Parcelable { return mVcnNetworkPolicyResult.equals(that.mVcnNetworkPolicyResult); } + @Override + public String toString() { + return mVcnNetworkPolicyResult.toString(); + } + /** {@inheritDoc} */ @Override public int describeContents() { diff --git a/core/java/android/os/BinderProxy.java b/core/java/android/os/BinderProxy.java index d026e959905c..2a9b703583a6 100644 --- a/core/java/android/os/BinderProxy.java +++ b/core/java/android/os/BinderProxy.java @@ -560,9 +560,6 @@ public final class BinderProxy implements IBinder { } } - final AppOpsManager.PausedNotedAppOpsCollection prevCollection = - AppOpsManager.pauseNotedAppOpsCollection(); - if ((flags & FLAG_ONEWAY) == 0 && AppOpsManager.isListeningForOpNoted()) { flags |= FLAG_COLLECT_NOTED_APP_OPS; } @@ -571,8 +568,6 @@ public final class BinderProxy implements IBinder { boolean replyOwnsNative = (reply == null) ? false : reply.ownsNativeParcelObject(); return transactNative(code, data, reply, replyOwnsNative, flags); } finally { - AppOpsManager.resumeNotedAppOpsCollection(prevCollection); - if (transactListener != null) { transactListener.onTransactEnded(session); } diff --git a/core/java/android/os/IRecoverySystem.aidl b/core/java/android/os/IRecoverySystem.aidl index 9368b68a91c6..88bdb7f6f00b 100644 --- a/core/java/android/os/IRecoverySystem.aidl +++ b/core/java/android/os/IRecoverySystem.aidl @@ -23,6 +23,7 @@ import android.os.IRecoverySystemProgressListener; /** @hide */ interface IRecoverySystem { + boolean allocateSpaceForUpdate(in String packageFilePath); boolean uncrypt(in String packageFile, IRecoverySystemProgressListener listener); boolean setupBcb(in String command); boolean clearBcb(); diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java index 051447f9219b..944b71700450 100644 --- a/core/java/android/os/RecoverySystem.java +++ b/core/java/android/os/RecoverySystem.java @@ -672,6 +672,14 @@ public class RecoverySystem { if (!rs.setupBcb(command)) { throw new IOException("Setup BCB failed"); } + try { + if (!rs.allocateSpaceForUpdate(packageFile)) { + throw new IOException("Failed to allocate space for update " + + packageFile.getAbsolutePath()); + } + } catch (RemoteException e) { + e.rethrowAsRuntimeException(); + } // Having set up the BCB (bootloader control block), go ahead and reboot PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); @@ -1392,6 +1400,13 @@ public class RecoverySystem { } /** + * Talks to RecoverySystemService via Binder to allocate space + */ + private boolean allocateSpaceForUpdate(File packageFile) throws RemoteException { + return mService.allocateSpaceForUpdate(packageFile.getAbsolutePath()); + } + + /** * Talks to RecoverySystemService via Binder to clear up the BCB. */ private boolean clearBcb() { diff --git a/core/java/android/os/incremental/IIncrementalService.aidl b/core/java/android/os/incremental/IIncrementalService.aidl index c68f878b3b74..8c9f2ddcd3d1 100644 --- a/core/java/android/os/incremental/IIncrementalService.aidl +++ b/core/java/android/os/incremental/IIncrementalService.aidl @@ -186,7 +186,30 @@ interface IIncrementalService { * Metrics key for delay in milliseconds to retry data loader binding. The value is a long. */ const @utf8InCpp String METRICS_DATA_LOADER_BIND_DELAY_MILLIS = "dataLoaderBindDelayMillis"; - + /** + * Metrics key for total count of delayed reads caused by pending reads. The value is an int. + */ + const @utf8InCpp String METRICS_TOTAL_DELAYED_READS = "totalDelayedReads"; + /** + * Metrics key for total count of delayed reads caused by pending reads. The value is an int. + */ + const @utf8InCpp String METRICS_TOTAL_DELAYED_READS_MILLIS = "totalDelayedReadsMillis"; + /** + * Metrics key for total count of failed reads. The value is an int. + */ + const @utf8InCpp String METRICS_TOTAL_FAILED_READS = "totalFailedReads"; + /** + * Metrics key for the uid of the last read error. The value is an int. + */ + const @utf8InCpp String METRICS_LAST_READ_ERROR_UID = "lastReadErrorUid"; + /** + * Metrics key for duration in milliseconds since the last read error. The value is a long. + */ + const @utf8InCpp String METRICS_MILLIS_SINCE_LAST_READ_ERROR = "millisSinceLastReadError"; + /** + * Metrics key for the error number of the last read error. The value is an int. + */ + const @utf8InCpp String METRICS_LAST_READ_ERROR_NUMBER = "lastReadErrorNo"; /** * Return a bundle containing the requested metrics keys and their values. */ diff --git a/core/java/android/os/incremental/IncrementalMetrics.java b/core/java/android/os/incremental/IncrementalMetrics.java index 98eb4312d7bf..c44b7d97b56f 100644 --- a/core/java/android/os/incremental/IncrementalMetrics.java +++ b/core/java/android/os/incremental/IncrementalMetrics.java @@ -71,4 +71,46 @@ public class IncrementalMetrics { public long getDataLoaderBindDelayMillis() { return mData.getLong(IIncrementalService.METRICS_DATA_LOADER_BIND_DELAY_MILLIS, -1); } + + /** + * @return total count of delayed reads caused by pending reads + */ + public int getTotalDelayedReads() { + return mData.getInt(IIncrementalService.METRICS_TOTAL_DELAYED_READS, -1); + } + + /** + * @return total count of failed reads + */ + public int getTotalFailedReads() { + return mData.getInt(IIncrementalService.METRICS_TOTAL_FAILED_READS, -1); + } + + /** + * @return total duration in milliseconds of delayed reads + */ + public long getTotalDelayedReadsDurationMillis() { + return mData.getInt(IIncrementalService.METRICS_TOTAL_DELAYED_READS_MILLIS, -1); + } + + /** + * @return the uid of the last read error + */ + public int getLastReadErrorUid() { + return mData.getInt(IIncrementalService.METRICS_LAST_READ_ERROR_UID, -1); + } + + /** + * @return duration in milliseconds since the last read error + */ + public long getMillisSinceLastReadError() { + return mData.getLong(IIncrementalService.METRICS_MILLIS_SINCE_LAST_READ_ERROR, -1); + } + + /** + * @return the error number of the last read error + */ + public int getLastReadErrorNumber() { + return mData.getInt(IIncrementalService.METRICS_LAST_READ_ERROR_NUMBER, -1); + } } diff --git a/core/java/android/print/PrintAttributes.java b/core/java/android/print/PrintAttributes.java index b2c1e7a908e7..820f53164704 100644 --- a/core/java/android/print/PrintAttributes.java +++ b/core/java/android/print/PrintAttributes.java @@ -837,8 +837,8 @@ public final class PrintAttributes implements Parcelable { new MediaSize("JPN_YOU4", "android", R.string.mediasize_japanese_you4, 4134, 9252); /** Japanese Photo L media size: 89mm x 127mm (3.5 x 5") */ - public static final @NonNull MediaSize OE_PHOTO_L = - new MediaSize("OE_PHOTO_L", "android", + public static final @NonNull MediaSize JPN_OE_PHOTO_L = + new MediaSize("JPN_OE_PHOTO_L", "android", R.string.mediasize_japanese_l, 3500, 5000); private final @NonNull String mId; diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index c8e5e4275e74..c51c50685402 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2660,7 +2660,6 @@ public final class Settings { private static final class ContentProviderHolder { private final Object mLock = new Object(); - @GuardedBy("mLock") private final Uri mUri; @GuardedBy("mLock") @UnsupportedAppUsage diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java index 6c775852fcee..71f90fd28e3f 100644 --- a/core/java/android/service/notification/NotificationListenerService.java +++ b/core/java/android/service/notification/NotificationListenerService.java @@ -83,11 +83,11 @@ import java.util.Objects; * </intent-filter> * <meta-data * android:name="android.service.notification.default_filter_types" - * android:value="1,2"> + * android:value="conversations,alerting"> * </meta-data> * <meta-data * android:name="android.service.notification.disabled_filter_types" - * android:value="2"> + * android:value="ongoing,silent"> * </meta-data> * </service></pre> * diff --git a/core/java/android/service/voice/HotwordDetectedResult.java b/core/java/android/service/voice/HotwordDetectedResult.java index e50de1c30ba0..ee82c374691b 100644 --- a/core/java/android/service/voice/HotwordDetectedResult.java +++ b/core/java/android/service/voice/HotwordDetectedResult.java @@ -57,8 +57,6 @@ public final class HotwordDetectedResult implements Parcelable { * A {@code MediaSyncEvent} that allows the {@link HotwordDetector} to recapture the audio * that contains the hotword trigger. This must be obtained using * {@link android.media.AudioRecord#shareAudioHistory(String, long)}. - * <p> - * This can be {@code null} if reprocessing the hotword trigger isn't required. */ @Nullable private MediaSyncEvent mMediaSyncEvent = null; @@ -150,6 +148,18 @@ public final class HotwordDetectedResult implements Parcelable { return 50; } + /** + * A {@code MediaSyncEvent} that allows the {@link HotwordDetector} to recapture the audio + * that contains the hotword trigger. This must be obtained using + * {@link android.media.AudioRecord#shareAudioHistory(String, long)}. + * <p> + * This can be {@code null} if reprocessing the hotword trigger isn't required. + */ + // Suppress codegen to make javadoc consistent. Getter returns @Nullable, setter accepts + // @NonNull only, and by default codegen would use the same javadoc on both. + public @Nullable MediaSyncEvent getMediaSyncEvent() { + return mMediaSyncEvent; + } // Code below generated by codegen v1.0.23. @@ -198,18 +208,6 @@ public final class HotwordDetectedResult implements Parcelable { } /** - * A {@code MediaSyncEvent} that allows the {@link HotwordDetector} to recapture the audio - * that contains the hotword trigger. This must be obtained using - * {@link android.media.AudioRecord#shareAudioHistory(String, long)}. - * <p> - * This can be {@code null} if reprocessing the hotword trigger isn't required. - */ - @DataClass.Generated.Member - public @Nullable MediaSyncEvent getMediaSyncEvent() { - return mMediaSyncEvent; - } - - /** * Byte offset in the audio stream when the trigger event happened. */ @DataClass.Generated.Member @@ -425,8 +423,6 @@ public final class HotwordDetectedResult implements Parcelable { * A {@code MediaSyncEvent} that allows the {@link HotwordDetector} to recapture the audio * that contains the hotword trigger. This must be obtained using * {@link android.media.AudioRecord#shareAudioHistory(String, long)}. - * <p> - * This can be {@code null} if reprocessing the hotword trigger isn't required. */ @DataClass.Generated.Member public @NonNull Builder setMediaSyncEvent(@NonNull MediaSyncEvent value) { @@ -555,10 +551,10 @@ public final class HotwordDetectedResult implements Parcelable { } @DataClass.Generated( - time = 1619059352684L, + time = 1620133603958L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/service/voice/HotwordDetectedResult.java", - inputSignatures = "public static final int BYTE_OFFSET_UNSET\nprivate final @android.service.voice.HotwordDetector.HotwordConfidenceLevelValue int mConfidenceLevel\nprivate @android.annotation.Nullable android.media.MediaSyncEvent mMediaSyncEvent\nprivate final int mByteOffset\nprivate final int mScore\nprivate final int mPersonalizedScore\nprivate final int mHotwordPhraseId\nprivate final @android.annotation.NonNull android.os.PersistableBundle mExtras\nprivate static int defaultConfidenceLevel()\nprivate static int defaultByteOffset()\nprivate static int defaultScore()\nprivate static int defaultPersonalizedScore()\npublic static int getMaxScore()\nprivate static int defaultHotwordPhraseId()\npublic static int getMaxHotwordPhraseId()\nprivate static android.os.PersistableBundle defaultExtras()\npublic static int getMaxBundleSize()\nclass HotwordDetectedResult extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)") + inputSignatures = "public static final int BYTE_OFFSET_UNSET\nprivate final @android.service.voice.HotwordDetector.HotwordConfidenceLevelValue int mConfidenceLevel\nprivate @android.annotation.Nullable android.media.MediaSyncEvent mMediaSyncEvent\nprivate final int mByteOffset\nprivate final int mScore\nprivate final int mPersonalizedScore\nprivate final int mHotwordPhraseId\nprivate final @android.annotation.NonNull android.os.PersistableBundle mExtras\nprivate static int defaultConfidenceLevel()\nprivate static int defaultByteOffset()\nprivate static int defaultScore()\nprivate static int defaultPersonalizedScore()\npublic static int getMaxScore()\nprivate static int defaultHotwordPhraseId()\npublic static int getMaxHotwordPhraseId()\nprivate static android.os.PersistableBundle defaultExtras()\npublic static int getMaxBundleSize()\npublic @android.annotation.Nullable android.media.MediaSyncEvent getMediaSyncEvent()\nclass HotwordDetectedResult extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)") @Deprecated private void __metadata() {} diff --git a/core/java/android/util/JsonReader.java b/core/java/android/util/JsonReader.java index 50f63f8db304..c75e23807432 100644 --- a/core/java/android/util/JsonReader.java +++ b/core/java/android/util/JsonReader.java @@ -16,7 +16,7 @@ package android.util; -import libcore.internal.StringPool; +import com.android.internal.util.StringPool; import java.io.Closeable; import java.io.EOFException; diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java index 31ca8e124f9e..0483d0ba7615 100644 --- a/core/java/android/view/MotionEvent.java +++ b/core/java/android/view/MotionEvent.java @@ -16,7 +16,6 @@ package android.view; -import static android.hardware.input.InputManager.APP_USES_RAW_INPUT_COORDS; import static android.view.Display.DEFAULT_DISPLAY; import static java.lang.annotation.RetentionPolicy.SOURCE; @@ -24,7 +23,6 @@ import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.TestApi; -import android.compat.Compatibility; import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Matrix; import android.os.Build; @@ -487,6 +485,15 @@ public final class MotionEvent extends InputEvent implements Parcelable { public static final int FLAG_CANCELED = 0x20; /** + * This flag indicates that the event will not cause a focus change if it is directed to an + * unfocused window, even if it an {@link #ACTION_DOWN}. This is typically used with pointer + * gestures to allow the user to direct gestures to an unfocused window without bringing the + * window into focus. + * @hide + */ + public static final int FLAG_NO_FOCUS_CHANGE = 0x40; + + /** * Private flag that indicates when the system has detected that this motion event * may be inconsistent with respect to the sequence of previously delivered motion events, * such as when a pointer move event is sent but the pointer is not down. @@ -1569,6 +1576,8 @@ public final class MotionEvent extends InputEvent implements Parcelable { int axis, int pointerIndex, int historyPos); @FastNative private static native void nativeTransform(long nativePtr, Matrix matrix); + @FastNative + private static native void nativeApplyTransform(long nativePtr, Matrix matrix); // -------------- @CriticalNative ---------------------- @@ -2674,7 +2683,6 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see #AXIS_X */ public final float getRawX() { - Compatibility.reportUnconditionalChange(APP_USES_RAW_INPUT_COORDS); return nativeGetRawAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT); } @@ -2688,7 +2696,6 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see #AXIS_Y */ public final float getRawY() { - Compatibility.reportUnconditionalChange(APP_USES_RAW_INPUT_COORDS); return nativeGetRawAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT); } @@ -2705,7 +2712,6 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see #AXIS_X */ public float getRawX(int pointerIndex) { - Compatibility.reportUnconditionalChange(APP_USES_RAW_INPUT_COORDS); return nativeGetRawAxisValue(mNativePtr, AXIS_X, pointerIndex, HISTORY_CURRENT); } @@ -2722,7 +2728,6 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see #AXIS_Y */ public float getRawY(int pointerIndex) { - Compatibility.reportUnconditionalChange(APP_USES_RAW_INPUT_COORDS); return nativeGetRawAxisValue(mNativePtr, AXIS_Y, pointerIndex, HISTORY_CURRENT); } @@ -3266,6 +3271,21 @@ public final class MotionEvent extends InputEvent implements Parcelable { } /** + * Transforms all of the points in the event directly instead of modifying the event's + * internal transform. + * + * @param matrix The transformation matrix to apply. + * @hide + */ + public void applyTransform(Matrix matrix) { + if (matrix == null) { + throw new IllegalArgumentException("matrix must not be null"); + } + + nativeApplyTransform(mNativePtr, matrix); + } + + /** * Add a new movement to the batch of movements in this event. The event's * current location, position and size is updated to the new values. * The current values in the event are added to a list of historical values. diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 1ae7ab0de96c..45c49352afff 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -146,8 +146,9 @@ public final class SurfaceControl implements Parcelable { private static native void nativeSetBlurRegions(long transactionObj, long nativeObj, float[][] regions, int length); private static native void nativeSetStretchEffect(long transactionObj, long nativeObj, - float left, float top, float right, float bottom, float vecX, float vecY, - float maxStretchAmount); + float width, float height, float vecX, float vecY, + float maxStretchAmountX, float maxStretchAmountY, float childRelativeLeft, + float childRelativeTop, float childRelativeRight, float childRelativeBottom); private static native boolean nativeClearContentFrameStats(long nativeObject); private static native boolean nativeGetContentFrameStats(long nativeObject, WindowContentFrameStats outStats); @@ -3038,11 +3039,14 @@ public final class SurfaceControl implements Parcelable { /** * @hide */ - public Transaction setStretchEffect(SurfaceControl sc, float left, float top, float right, - float bottom, float vecX, float vecY, float maxStretchAmount) { + public Transaction setStretchEffect(SurfaceControl sc, float width, float height, + float vecX, float vecY, float maxStretchAmountX, + float maxStretchAmountY, float childRelativeLeft, float childRelativeTop, float childRelativeRight, + float childRelativeBottom) { checkPreconditions(sc); - nativeSetStretchEffect(mNativeObject, sc.mNativeObject, left, top, right, bottom, - vecX, vecY, maxStretchAmount); + nativeSetStretchEffect(mNativeObject, sc.mNativeObject, width, height, + vecX, vecY, maxStretchAmountX, maxStretchAmountY, childRelativeLeft, childRelativeTop, + childRelativeRight, childRelativeBottom); return this; } diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java index 7bdf5cf879f3..2fce4348cbb0 100644 --- a/core/java/android/view/SurfaceView.java +++ b/core/java/android/view/SurfaceView.java @@ -1471,10 +1471,13 @@ public class SurfaceView extends View implements ViewRootImpl.SurfaceChangedCall } @Override - public void applyStretch(long frameNumber, float left, float top, float right, - float bottom, float vecX, float vecY, float maxStretch) { - mRtTransaction.setStretchEffect(mSurfaceControl, left, top, right, bottom, vecX, vecY, - maxStretch); + public void applyStretch(long frameNumber, float width, float height, + float vecX, float vecY, float maxStretchX, float maxStretchY, + float childRelativeLeft, float childRelativeTop, float childRelativeRight, + float childRelativeBottom) { + mRtTransaction.setStretchEffect(mSurfaceControl, width, height, vecX, vecY, + maxStretchX, maxStretchY, childRelativeLeft, childRelativeTop, + childRelativeRight, childRelativeBottom); applyOrMergeTransaction(mRtTransaction, frameNumber); } diff --git a/core/java/android/view/SyncRtSurfaceTransactionApplier.java b/core/java/android/view/SyncRtSurfaceTransactionApplier.java index 162c71bf1c16..3e2110341693 100644 --- a/core/java/android/view/SyncRtSurfaceTransactionApplier.java +++ b/core/java/android/view/SyncRtSurfaceTransactionApplier.java @@ -54,20 +54,21 @@ public class SyncRtSurfaceTransactionApplier { /** * Schedules applying surface parameters on the next frame. * - * @param params The surface parameters to apply. DO NOT MODIFY the list after passing into - * this method to avoid synchronization issues. + * @param params The surface parameters to apply. */ public void scheduleApply(final SurfaceParams... params) { if (mTargetViewRootImpl == null) { return; } mTargetSc = mTargetViewRootImpl.getSurfaceControl(); + final Transaction t = new Transaction(); + applyParams(t, params); + mTargetViewRootImpl.registerRtFrameCallback(frame -> { if (mTargetSc == null || !mTargetSc.isValid()) { return; } - Transaction t = new Transaction(); - applyParams(t, frame, params); + applyTransaction(t, frame); }); // Make sure a frame gets scheduled. @@ -78,15 +79,17 @@ public class SyncRtSurfaceTransactionApplier { * Applies surface parameters on the next frame. * @param t transaction to apply all parameters in. * @param frame frame to synchronize to. Set -1 when sync is not required. - * @param params The surface parameters to apply. DO NOT MODIFY the list after passing into - * this method to avoid synchronization issues. + * @param params The surface parameters to apply. */ - void applyParams(Transaction t, long frame, final SurfaceParams... params) { + void applyParams(Transaction t, final SurfaceParams... params) { for (int i = params.length - 1; i >= 0; i--) { SurfaceParams surfaceParams = params[i]; SurfaceControl surface = surfaceParams.surface; applyParams(t, surfaceParams, mTmpFloat9); } + } + + void applyTransaction(Transaction t, long frame) { if (mTargetViewRootImpl != null) { mTargetViewRootImpl.mergeWithNextTransaction(t, frame); } else { diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 11fac0561907..c1c892c98653 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -23553,6 +23553,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, mStateListAnimator.setState(state); } + if (!isAggregatedVisible()) { + // If we're not visible, skip any animated changes + jumpDrawablesToCurrentState(); + } + if (changed) { invalidate(); } diff --git a/core/java/android/view/ViewRootInsetsControllerHost.java b/core/java/android/view/ViewRootInsetsControllerHost.java index 514fb29029d0..d8cd6056de90 100644 --- a/core/java/android/view/ViewRootInsetsControllerHost.java +++ b/core/java/android/view/ViewRootInsetsControllerHost.java @@ -127,7 +127,9 @@ public class ViewRootInsetsControllerHost implements InsetsController.Host { // Window doesn't support hardware acceleration, no synchronization for now. // TODO(b/149342281): use mViewRoot.mSurface.getNextFrameNumber() to sync on every // frame instead. - mApplier.applyParams(new SurfaceControl.Transaction(), -1 /* frame */, params); + final SurfaceControl.Transaction t = new SurfaceControl.Transaction(); + mApplier.applyParams(t, params); + mApplier.applyTransaction(t, -1); } } diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 1c15bbcc8b57..085eb81182f1 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -178,6 +178,8 @@ public class AccessibilityNodeInfo implements Parcelable { /** * Action that long clicks on the node. + * + * <p>It does not support coordinate information for anchoring.</p> */ public static final int ACTION_LONG_CLICK = 0x00000020; diff --git a/core/java/android/view/accessibility/AccessibilityWindowInfo.java b/core/java/android/view/accessibility/AccessibilityWindowInfo.java index ccc7a36845c0..edcb59a79c70 100644 --- a/core/java/android/view/accessibility/AccessibilityWindowInfo.java +++ b/core/java/android/view/accessibility/AccessibilityWindowInfo.java @@ -59,7 +59,7 @@ public final class AccessibilityWindowInfo implements Parcelable { public static final int TYPE_INPUT_METHOD = 2; /** - * Window type: This is an system window. Such a window shows UI for + * Window type: This is a system window. Such a window shows UI for * interacting with the system. */ public static final int TYPE_SYSTEM = 3; diff --git a/core/java/android/view/translation/UiTranslationController.java b/core/java/android/view/translation/UiTranslationController.java index bdf217d644e2..8a2b629b53cd 100644 --- a/core/java/android/view/translation/UiTranslationController.java +++ b/core/java/android/view/translation/UiTranslationController.java @@ -105,6 +105,7 @@ public class UiTranslationController { || state == STATE_UI_TRANSLATION_RESUMED)) { return; } + Log.i(TAG, "updateUiTranslationState state: " + stateToString(state) + (DEBUG ? ", views: " + views : "")); synchronized (mLock) { @@ -235,7 +236,9 @@ public class UiTranslationController { public void onTranslationCompleted(TranslationResponse response) { if (response == null || response.getTranslationStatus() != TranslationResponse.TRANSLATION_STATUS_SUCCESS) { - Log.w(TAG, "Fail result from TranslationService, response: " + response); + Log.w(TAG, "Fail result from TranslationService, status=" + (response == null + ? "null" + : response.getTranslationStatus())); return; } final SparseArray<ViewTranslationResponse> translatedResult = @@ -303,9 +306,8 @@ public class UiTranslationController { final LongSparseArray<ViewTranslationResponse> virtualChildResponse = translatedResult.valueAt(i); if (DEBUG) { - // TODO(b/182433547): remove before S release - Log.v(TAG, "onVirtualViewTranslationCompleted: receive " - + virtualChildResponse + " for AutofillId " + autofillId); + Log.v(TAG, "onVirtualViewTranslationCompleted: received response for " + + "AutofillId " + autofillId); } mActivity.runOnUiThread(() -> { if (view.getViewTranslationCallback() == null) { @@ -348,11 +350,12 @@ public class UiTranslationController { final ViewTranslationResponse response = translatedResult.valueAt(i); if (DEBUG) { // TODO(b/182433547): remove before S release - Log.v(TAG, "onTranslationCompleted: response= " + response); + Log.v(TAG, "onTranslationCompleted: " + + sanitizedViewTranslationResponse(response)); } final AutofillId autofillId = response.getAutofillId(); if (autofillId == null) { - Log.w(TAG, "No AutofillId is set in ViewTranslationResponse:" + response); + Log.w(TAG, "No AutofillId is set in ViewTranslationResponse"); continue; } final View view = mViews.get(autofillId).get(); @@ -408,7 +411,13 @@ public class UiTranslationController { .setViewTranslationRequests(requests) .build(); if (DEBUG) { - Log.d(TAG, "sendTranslationRequest: request= " + request); + StringBuilder msg = new StringBuilder("sendTranslationRequest:{requests=["); + for (ViewTranslationRequest viewRequest: requests) { + msg.append("{request=") + .append(sanitizedViewTranslationRequest(viewRequest)) + .append("}, "); + } + Log.d(TAG, "sendTranslationRequest: " + msg.toString()); } translator.requestUiTranslate(request, (r) -> r.run(), this::onTranslationCompleted); } @@ -418,7 +427,7 @@ public class UiTranslationController { */ private void onUiTranslationStarted(Translator translator, List<AutofillId> views) { synchronized (mLock) { - // Filter the request views's AutofillId + // Filter the request views' AutofillId SparseIntArray virtualViewChildCount = getRequestVirtualViewChildCount(views); Map<AutofillId, long[]> viewIds = new ArrayMap<>(); Map<AutofillId, Integer> unusedIndices = null; @@ -547,7 +556,7 @@ public class UiTranslationController { } if (view == null || view.getViewTranslationCallback() == null) { if (DEBUG) { - Log.d(TAG, "View was gone or ViewTranslationCallback for autofillid " + Log.d(TAG, "View was gone or ViewTranslationCallback for autofillId " + "= " + views.keyAt(i)); } continue; @@ -603,4 +612,42 @@ public class UiTranslationController { return "Unknown state (" + state + ")"; } } + + // TODO(b/182433547): maybe remove below before S release + + /** + * Returns a sanitized string representation of {@link ViewTranslationRequest}; + */ + private static String sanitizedViewTranslationRequest(@NonNull ViewTranslationRequest request) { + StringBuilder msg = new StringBuilder("ViewTranslationRequest:{values=["); + for (String key: request.getKeys()) { + final TranslationRequestValue value = request.getValue(key); + msg.append("{text=").append(value.getText() == null + ? "null" + : "string[" + value.getText().length() + "]}, "); + } + return msg.toString(); + } + + /** + * Returns a sanitized string representation of {@link ViewTranslationResponse}; + */ + private static String sanitizedViewTranslationResponse( + @NonNull ViewTranslationResponse response) { + StringBuilder msg = new StringBuilder("ViewTranslationResponse:{values=["); + for (String key: response.getKeys()) { + final TranslationResponseValue value = response.getValue(key); + msg.append("{status=").append(value.getStatusCode()).append(", "); + msg.append("text=").append(value.getText() == null + ? "null" + : "string[" + value.getText().length() + "], "); + msg.append("dict=").append(value.getDictionaryDescription() == null + ? "null" + : "string[" + value.getDictionaryDescription().length() + "], "); + msg.append("transliteration=").append(value.getTransliteration() == null + ? "null" + : "string[" + value.getTransliteration().length() + "]}, "); + } + return msg.toString(); + } } diff --git a/core/java/android/view/translation/UiTranslationManager.java b/core/java/android/view/translation/UiTranslationManager.java index 7726086a4787..882833d20e3c 100644 --- a/core/java/android/view/translation/UiTranslationManager.java +++ b/core/java/android/view/translation/UiTranslationManager.java @@ -338,7 +338,7 @@ public final class UiTranslationManager { mCallback.onStarted(mSourceLocale, mTargetLocale); break; case STATE_UI_TRANSLATION_RESUMED: - mCallback.onStarted(mSourceLocale, mTargetLocale); + mCallback.onResumed(mSourceLocale, mTargetLocale); break; case STATE_UI_TRANSLATION_PAUSED: mCallback.onPaused(); diff --git a/core/java/android/view/translation/UiTranslationStateCallback.java b/core/java/android/view/translation/UiTranslationStateCallback.java index e60eecd97054..1bae0efb632e 100644 --- a/core/java/android/view/translation/UiTranslationStateCallback.java +++ b/core/java/android/view/translation/UiTranslationStateCallback.java @@ -38,7 +38,7 @@ public interface UiTranslationStateCallback { * targetLocale}. * <p> * This is also called if either the requested {@code sourceLocale} or {@code targetLocale} has - * changed; or called again after {@link #onPaused()}. + * changed. */ default void onStarted(@NonNull ULocale sourceLocale, @NonNull ULocale targetLocale) { onStarted(sourceLocale.getLanguage(), targetLocale.getLanguage()); @@ -51,6 +51,14 @@ public interface UiTranslationStateCallback { void onPaused(); /** + * The system is requesting that the application restore from the temporarily paused state and + * show the content in translated language. + */ + // TODO: Remove the default implementation when clients have implemented this. + default void onResumed(@NonNull ULocale sourceLocale, @NonNull ULocale targetLocale) { + } + + /** * The UI Translation session has ended. */ void onFinished(); diff --git a/core/java/android/webkit/WebViewDelegate.java b/core/java/android/webkit/WebViewDelegate.java index 6b4956982d5f..ad123c19459f 100644 --- a/core/java/android/webkit/WebViewDelegate.java +++ b/core/java/android/webkit/WebViewDelegate.java @@ -16,10 +16,10 @@ package android.webkit; -import android.annotation.ElapsedRealtimeLong; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; +import android.annotation.UptimeMillisLong; import android.app.ActivityThread; import android.app.Application; import android.app.ResourcesManager; @@ -227,7 +227,7 @@ public final class WebViewDelegate { * WebViewChromiumFactoryProvider#create method was invoked. */ @NonNull - @ElapsedRealtimeLong + @UptimeMillisLong public long[] getTimestamps() { return WebViewFactory.getTimestamps(); } diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java index 5fc5b2972c65..9a385120e08c 100644 --- a/core/java/android/webkit/WebViewFactory.java +++ b/core/java/android/webkit/WebViewFactory.java @@ -273,7 +273,7 @@ public final class WebViewFactory { // us honest and minimize usage of WebView internals when binding the proxy. if (sProviderInstance != null) return sProviderInstance; - sTimestamps[WEBVIEW_LOAD_START] = SystemClock.elapsedRealtime(); + sTimestamps[WEBVIEW_LOAD_START] = SystemClock.uptimeMillis(); final int uid = android.os.Process.myUid(); if (uid == android.os.Process.ROOT_UID || uid == android.os.Process.SYSTEM_UID || uid == android.os.Process.PHONE_UID || uid == android.os.Process.NFC_UID @@ -413,7 +413,7 @@ public final class WebViewFactory { Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "initialApplication.createApplicationContext"); - sTimestamps[CREATE_CONTEXT_START] = SystemClock.elapsedRealtime(); + sTimestamps[CREATE_CONTEXT_START] = SystemClock.uptimeMillis(); try { // Construct an app context to load the Java code into the current app. Context webViewContext = initialApplication.createApplicationContext( @@ -422,7 +422,7 @@ public final class WebViewFactory { sPackageInfo = newPackageInfo; return webViewContext; } finally { - sTimestamps[CREATE_CONTEXT_END] = SystemClock.elapsedRealtime(); + sTimestamps[CREATE_CONTEXT_END] = SystemClock.uptimeMillis(); Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW); } } catch (RemoteException | PackageManager.NameNotFoundException e) { @@ -448,26 +448,26 @@ public final class WebViewFactory { Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "WebViewFactory.getChromiumProviderClass()"); try { - sTimestamps[ADD_ASSETS_START] = SystemClock.elapsedRealtime(); + sTimestamps[ADD_ASSETS_START] = SystemClock.uptimeMillis(); for (String newAssetPath : webViewContext.getApplicationInfo().getAllApkPaths()) { initialApplication.getAssets().addAssetPathAsSharedLibrary(newAssetPath); } sTimestamps[ADD_ASSETS_END] = sTimestamps[GET_CLASS_LOADER_START] = - SystemClock.elapsedRealtime(); + SystemClock.uptimeMillis(); ClassLoader clazzLoader = webViewContext.getClassLoader(); Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "WebViewFactory.loadNativeLibrary()"); sTimestamps[GET_CLASS_LOADER_END] = sTimestamps[NATIVE_LOAD_START] = - SystemClock.elapsedRealtime(); + SystemClock.uptimeMillis(); WebViewLibraryLoader.loadNativeLibrary(clazzLoader, getWebViewLibrary(sPackageInfo.applicationInfo)); Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW); Trace.traceBegin(Trace.TRACE_TAG_WEBVIEW, "Class.forName()"); sTimestamps[NATIVE_LOAD_END] = sTimestamps[PROVIDER_CLASS_FOR_NAME_START] = - SystemClock.elapsedRealtime(); + SystemClock.uptimeMillis(); try { return getWebViewProviderClass(clazzLoader); } finally { - sTimestamps[PROVIDER_CLASS_FOR_NAME_END] = SystemClock.elapsedRealtime(); + sTimestamps[PROVIDER_CLASS_FOR_NAME_END] = SystemClock.uptimeMillis(); Trace.traceEnd(Trace.TRACE_TAG_WEBVIEW); } } catch (ClassNotFoundException e) { diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index b3f848b4cf22..4d3565556a68 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -88,6 +88,7 @@ import android.view.inspector.InspectableProperty.EnumEntry; import android.widget.RemoteViews.InteractionHandler; import com.android.internal.R; +import com.android.internal.annotations.VisibleForTesting; import java.util.ArrayList; import java.util.List; @@ -712,20 +713,24 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te * * Even though this field is practically final, we cannot make it final because there are apps * setting it via reflection and they need to keep working until they target Q. + * @hide */ @NonNull @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 123769408) - private EdgeEffect mEdgeGlowTop; + @VisibleForTesting + public EdgeEffect mEdgeGlowTop; /** * Tracks the state of the bottom edge glow. * * Even though this field is practically final, we cannot make it final because there are apps * setting it via reflection and they need to keep working until they target Q. + * @hide */ @NonNull @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 123768444) - private EdgeEffect mEdgeGlowBottom; + @VisibleForTesting + public EdgeEffect mEdgeGlowBottom; /** * An estimate of how many pixels are between the top of the list and @@ -4105,152 +4110,159 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te private void onTouchUp(MotionEvent ev) { switch (mTouchMode) { - case TOUCH_MODE_DOWN: - case TOUCH_MODE_TAP: - case TOUCH_MODE_DONE_WAITING: - final int motionPosition = mMotionPosition; - final View child = getChildAt(motionPosition - mFirstPosition); - if (child != null) { - if (mTouchMode != TOUCH_MODE_DOWN) { - child.setPressed(false); - } - - final float x = ev.getX(); - final boolean inList = x > mListPadding.left && x < getWidth() - mListPadding.right; - if (inList && !child.hasExplicitFocusable()) { - if (mPerformClick == null) { - mPerformClick = new PerformClick(); + case TOUCH_MODE_DOWN: + case TOUCH_MODE_TAP: + case TOUCH_MODE_DONE_WAITING: + final int motionPosition = mMotionPosition; + final View child = getChildAt(motionPosition - mFirstPosition); + if (child != null) { + if (mTouchMode != TOUCH_MODE_DOWN) { + child.setPressed(false); } - final AbsListView.PerformClick performClick = mPerformClick; - performClick.mClickMotionPosition = motionPosition; - performClick.rememberWindowAttachCount(); - - mResurrectToPosition = motionPosition; - - if (mTouchMode == TOUCH_MODE_DOWN || mTouchMode == TOUCH_MODE_TAP) { - removeCallbacks(mTouchMode == TOUCH_MODE_DOWN ? - mPendingCheckForTap : mPendingCheckForLongPress); - mLayoutMode = LAYOUT_NORMAL; - if (!mDataChanged && mAdapter.isEnabled(motionPosition)) { - mTouchMode = TOUCH_MODE_TAP; - setSelectedPositionInt(mMotionPosition); - layoutChildren(); - child.setPressed(true); - positionSelector(mMotionPosition, child); - setPressed(true); - if (mSelector != null) { - Drawable d = mSelector.getCurrent(); - if (d != null && d instanceof TransitionDrawable) { - ((TransitionDrawable) d).resetTransition(); - } - mSelector.setHotspot(x, ev.getY()); - } - if (mTouchModeReset != null) { - removeCallbacks(mTouchModeReset); - } - mTouchModeReset = new Runnable() { - @Override - public void run() { - mTouchModeReset = null; - mTouchMode = TOUCH_MODE_REST; - child.setPressed(false); - setPressed(false); - if (!mDataChanged && !mIsDetaching && isAttachedToWindow()) { - performClick.run(); + final float x = ev.getX(); + final boolean inList = + x > mListPadding.left && x < getWidth() - mListPadding.right; + if (inList && !child.hasExplicitFocusable()) { + if (mPerformClick == null) { + mPerformClick = new PerformClick(); + } + + final AbsListView.PerformClick performClick = mPerformClick; + performClick.mClickMotionPosition = motionPosition; + performClick.rememberWindowAttachCount(); + + mResurrectToPosition = motionPosition; + + if (mTouchMode == TOUCH_MODE_DOWN || mTouchMode == TOUCH_MODE_TAP) { + removeCallbacks(mTouchMode == TOUCH_MODE_DOWN + ? mPendingCheckForTap : mPendingCheckForLongPress); + mLayoutMode = LAYOUT_NORMAL; + if (!mDataChanged && mAdapter.isEnabled(motionPosition)) { + mTouchMode = TOUCH_MODE_TAP; + setSelectedPositionInt(mMotionPosition); + layoutChildren(); + child.setPressed(true); + positionSelector(mMotionPosition, child); + setPressed(true); + if (mSelector != null) { + Drawable d = mSelector.getCurrent(); + if (d != null && d instanceof TransitionDrawable) { + ((TransitionDrawable) d).resetTransition(); } + mSelector.setHotspot(x, ev.getY()); } - }; - postDelayed(mTouchModeReset, - ViewConfiguration.getPressedStateDuration()); - } else { - mTouchMode = TOUCH_MODE_REST; - updateSelectorState(); + if (mTouchModeReset != null) { + removeCallbacks(mTouchModeReset); + } + mTouchModeReset = new Runnable() { + @Override + public void run() { + mTouchModeReset = null; + mTouchMode = TOUCH_MODE_REST; + child.setPressed(false); + setPressed(false); + if (!mDataChanged && !mIsDetaching + && isAttachedToWindow()) { + performClick.run(); + } + } + }; + postDelayed(mTouchModeReset, + ViewConfiguration.getPressedStateDuration()); + } else { + mTouchMode = TOUCH_MODE_REST; + updateSelectorState(); + } + return; + } else if (!mDataChanged && mAdapter.isEnabled(motionPosition)) { + performClick.run(); } - return; - } else if (!mDataChanged && mAdapter.isEnabled(motionPosition)) { - performClick.run(); } } - } - mTouchMode = TOUCH_MODE_REST; - updateSelectorState(); - break; - case TOUCH_MODE_SCROLL: - final int childCount = getChildCount(); - if (childCount > 0) { - final int firstChildTop = getChildAt(0).getTop(); - final int lastChildBottom = getChildAt(childCount - 1).getBottom(); - final int contentTop = mListPadding.top; - final int contentBottom = getHeight() - mListPadding.bottom; - if (mFirstPosition == 0 && firstChildTop >= contentTop && - mFirstPosition + childCount < mItemCount && - lastChildBottom <= getHeight() - contentBottom) { - mTouchMode = TOUCH_MODE_REST; - reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); - } else { - final VelocityTracker velocityTracker = mVelocityTracker; - velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); - - final int initialVelocity = (int) - (velocityTracker.getYVelocity(mActivePointerId) * mVelocityScale); - // Fling if we have enough velocity and we aren't at a boundary. - // Since we can potentially overfling more than we can overscroll, don't - // allow the weird behavior where you can scroll to a boundary then - // fling further. - boolean flingVelocity = Math.abs(initialVelocity) > mMinimumVelocity; - if (flingVelocity && - !((mFirstPosition == 0 && - firstChildTop == contentTop - mOverscrollDistance) || - (mFirstPosition + childCount == mItemCount && - lastChildBottom == contentBottom + mOverscrollDistance))) { - if (!dispatchNestedPreFling(0, -initialVelocity)) { - if (mFlingRunnable == null) { - mFlingRunnable = new FlingRunnable(); + mTouchMode = TOUCH_MODE_REST; + updateSelectorState(); + break; + case TOUCH_MODE_SCROLL: + final int childCount = getChildCount(); + if (childCount > 0) { + final int firstChildTop = getChildAt(0).getTop(); + final int lastChildBottom = getChildAt(childCount - 1).getBottom(); + final int contentTop = mListPadding.top; + final int contentBottom = getHeight() - mListPadding.bottom; + if (mFirstPosition == 0 && firstChildTop >= contentTop + && mFirstPosition + childCount < mItemCount + && lastChildBottom <= getHeight() - contentBottom) { + mTouchMode = TOUCH_MODE_REST; + reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); + } else { + final VelocityTracker velocityTracker = mVelocityTracker; + velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); + + final int initialVelocity = (int) + (velocityTracker.getYVelocity(mActivePointerId) * mVelocityScale); + // Fling if we have enough velocity and we aren't at a boundary. + // Since we can potentially overfling more than we can overscroll, don't + // allow the weird behavior where you can scroll to a boundary then + // fling further. + boolean flingVelocity = Math.abs(initialVelocity) > mMinimumVelocity; + if (flingVelocity && !mEdgeGlowTop.isFinished()) { + mEdgeGlowTop.onAbsorb(initialVelocity); + } else if (flingVelocity && !mEdgeGlowBottom.isFinished()) { + mEdgeGlowBottom.onAbsorb(-initialVelocity); + } else if (flingVelocity + && !((mFirstPosition == 0 + && firstChildTop == contentTop - mOverscrollDistance) + || (mFirstPosition + childCount == mItemCount + && lastChildBottom == contentBottom + mOverscrollDistance)) + ) { + if (!dispatchNestedPreFling(0, -initialVelocity)) { + if (mFlingRunnable == null) { + mFlingRunnable = new FlingRunnable(); + } + reportScrollStateChange(OnScrollListener.SCROLL_STATE_FLING); + mFlingRunnable.start(-initialVelocity); + dispatchNestedFling(0, -initialVelocity, true); + } else { + mTouchMode = TOUCH_MODE_REST; + reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); } - reportScrollStateChange(OnScrollListener.SCROLL_STATE_FLING); - mFlingRunnable.start(-initialVelocity); - dispatchNestedFling(0, -initialVelocity, true); } else { mTouchMode = TOUCH_MODE_REST; reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); - } - } else { - mTouchMode = TOUCH_MODE_REST; - reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); - if (mFlingRunnable != null) { - mFlingRunnable.endFling(); - } - if (mPositionScroller != null) { - mPositionScroller.stop(); - } - if (flingVelocity && !dispatchNestedPreFling(0, -initialVelocity)) { - dispatchNestedFling(0, -initialVelocity, false); + if (mFlingRunnable != null) { + mFlingRunnable.endFling(); + } + if (mPositionScroller != null) { + mPositionScroller.stop(); + } + if (flingVelocity && !dispatchNestedPreFling(0, -initialVelocity)) { + dispatchNestedFling(0, -initialVelocity, false); + } } } + } else { + mTouchMode = TOUCH_MODE_REST; + reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); } - } else { - mTouchMode = TOUCH_MODE_REST; - reportScrollStateChange(OnScrollListener.SCROLL_STATE_IDLE); - } - break; + break; - case TOUCH_MODE_OVERSCROLL: - if (mFlingRunnable == null) { - mFlingRunnable = new FlingRunnable(); - } - final VelocityTracker velocityTracker = mVelocityTracker; - velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); - final int initialVelocity = (int) velocityTracker.getYVelocity(mActivePointerId); + case TOUCH_MODE_OVERSCROLL: + if (mFlingRunnable == null) { + mFlingRunnable = new FlingRunnable(); + } + final VelocityTracker velocityTracker = mVelocityTracker; + velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); + final int initialVelocity = (int) velocityTracker.getYVelocity(mActivePointerId); - reportScrollStateChange(OnScrollListener.SCROLL_STATE_FLING); - if (Math.abs(initialVelocity) > mMinimumVelocity) { - mFlingRunnable.startOverfling(-initialVelocity); - } else { - mFlingRunnable.startSpringback(); - } + reportScrollStateChange(OnScrollListener.SCROLL_STATE_FLING); + if (Math.abs(initialVelocity) > mMinimumVelocity) { + mFlingRunnable.startOverfling(-initialVelocity); + } else { + mFlingRunnable.startSpringback(); + } - break; + break; } setPressed(false); diff --git a/core/java/android/widget/EdgeEffect.java b/core/java/android/widget/EdgeEffect.java index c11344ebaece..756e3ce91bf9 100644 --- a/core/java/android/widget/EdgeEffect.java +++ b/core/java/android/widget/EdgeEffect.java @@ -594,14 +594,10 @@ public class EdgeEffect { boolean hasValidVectors = Float.isFinite(vecX) && Float.isFinite(vecY); if (right > left && bottom > top && mWidth > 0 && mHeight > 0 && hasValidVectors) { renderNode.stretch( - left, - top, - right, - bottom, - vecX, - vecY, - mWidth, - mHeight + vecX, // horizontal stretch intensity + vecY, // vertical stretch intensity + mWidth, // max horizontal stretch in pixels + mHeight // max vertical stretch in pixels ); } } else { diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index 0dbdb8f6f0c4..ee7818c1d422 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -385,6 +385,11 @@ public class RemoteViews implements Parcelable, Filter { */ private int mViewId = View.NO_ID; + /** + * Id used to uniquely identify a {@link RemoteViews} instance coming from a given provider. + */ + private long mProviderInstanceId = -1; + /** Class cookies of the Parcel this instance was read from. */ private Map<Class, Object> mClassCookies; @@ -3646,6 +3651,7 @@ public class RemoteViews implements Parcelable, Filter { mApplyFlags = src.mApplyFlags; mClassCookies = src.mClassCookies; mIdealSize = src.mIdealSize; + mProviderInstanceId = src.mProviderInstanceId; if (src.hasLandscapeAndPortraitLayouts()) { mLandscape = new RemoteViews(src.mLandscape); @@ -3744,6 +3750,7 @@ public class RemoteViews implements Parcelable, Filter { mLightBackgroundLayoutId = mPortrait.mLightBackgroundLayoutId; } mApplyFlags = parcel.readInt(); + mProviderInstanceId = parcel.readLong(); } private void readActionsFromParcel(Parcel parcel, int depth) { @@ -6021,6 +6028,7 @@ public class RemoteViews implements Parcelable, Filter { mPortrait.writeToParcel(dest, flags | PARCELABLE_ELIDE_DUPLICATES); } dest.writeInt(mApplyFlags); + dest.writeLong(mProviderInstanceId); } private void writeActionsToParcel(Parcel parcel) { @@ -6711,4 +6719,85 @@ public class RemoteViews implements Parcelable, Filter { public @IdRes int getViewId() { return mViewId; } + + /** + * Set the provider instance ID. + * + * This should only be used by {@link com.android.server.appwidget.AppWidgetService}. + * @hide + */ + public void setProviderInstanceId(long id) { + mProviderInstanceId = id; + } + + /** + * Get the provider instance id. + * + * This should uniquely identifies {@link RemoteViews} coming from a given App Widget + * Provider. This changes each time the App Widget provider update the {@link RemoteViews} of + * its widget. Returns -1 if the {@link RemoteViews} doesn't come from an App Widget provider. + * @hide + */ + public long getProviderInstanceId() { + return mProviderInstanceId; + } + + /** + * Identify the child of this {@link RemoteViews}, or 0 if this is not a child. + * + * The returned value is always a small integer, currently between 0 and 17. + */ + private int getChildId(@NonNull RemoteViews child) { + if (child == this) { + return 0; + } + if (hasSizedRemoteViews()) { + for (int i = 0; i < mSizedRemoteViews.size(); i++) { + if (mSizedRemoteViews.get(i) == child) { + return i + 1; + } + } + } + if (hasLandscapeAndPortraitLayouts()) { + if (mLandscape == child) { + return 1; + } else if (mPortrait == child) { + return 2; + } + } + // This is not a child of this RemoteViews. + return 0; + } + + /** + * Identify uniquely this RemoteViews, or returns -1 if not possible. + * + * @param parent If the {@link RemoteViews} is not a root {@link RemoteViews}, this should be + * the parent that contains it. + * + * @hide + */ + public long computeUniqueId(@Nullable RemoteViews parent) { + if (mIsRoot) { + long viewId = getProviderInstanceId(); + if (viewId != -1) { + viewId <<= 8; + } + return viewId; + } + if (parent == null) { + return -1; + } + long viewId = parent.getProviderInstanceId(); + if (viewId == -1) { + return -1; + } + int childId = parent.getChildId(this); + if (childId == -1) { + return -1; + } + viewId <<= 8; + viewId |= childId; + return viewId; + } } diff --git a/core/java/android/widget/RemoteViewsAdapter.java b/core/java/android/widget/RemoteViewsAdapter.java index 9749a688a97f..6b33428d7fe4 100644 --- a/core/java/android/widget/RemoteViewsAdapter.java +++ b/core/java/android/widget/RemoteViewsAdapter.java @@ -86,8 +86,8 @@ public class RemoteViewsAdapter extends BaseAdapter implements Handler.Callback // Default height for the default loading view, in case we cannot get inflate the first view private static final int DEFAULT_LOADING_VIEW_HEIGHT = 50; - // We cache the FixedSizeRemoteViewsCaches across orientation. These are the related data - // structures; + // We cache the FixedSizeRemoteViewsCaches across orientation and re-inflation due to color + // palette changes. These are the related data structures: private static final HashMap<RemoteViewsCacheKey, FixedSizeRemoteViewsCache> sCachedRemoteViewsCaches = new HashMap<>(); private static final HashMap<RemoteViewsCacheKey, Runnable> diff --git a/core/java/android/widget/TextViewOnReceiveContentListener.java b/core/java/android/widget/TextViewOnReceiveContentListener.java index 0d5bf71dc955..6a966e0b6d3f 100644 --- a/core/java/android/widget/TextViewOnReceiveContentListener.java +++ b/core/java/android/widget/TextViewOnReceiveContentListener.java @@ -19,7 +19,6 @@ package android.widget; import static android.content.ContentResolver.SCHEME_CONTENT; import static android.view.ContentInfo.FLAG_CONVERT_TO_PLAIN_TEXT; import static android.view.ContentInfo.SOURCE_AUTOFILL; -import static android.view.ContentInfo.SOURCE_DRAG_AND_DROP; import static android.view.ContentInfo.SOURCE_INPUT_METHOD; import android.annotation.NonNull; @@ -82,10 +81,6 @@ public final class TextViewOnReceiveContentListener implements OnReceiveContentL onReceiveForAutofill((TextView) view, payload); return null; } - if (source == SOURCE_DRAG_AND_DROP) { - onReceiveForDragAndDrop((TextView) view, payload); - return null; - } // The code here follows the original paste logic from TextView: // https://cs.android.com/android/_/android/platform/frameworks/base/+/9fefb65aa9e7beae9ca8306b925b9fbfaeffecc9:core/java/android/widget/TextView.java;l=12644 @@ -147,13 +142,6 @@ public final class TextViewOnReceiveContentListener implements OnReceiveContentL Selection.setSelection(editable, editable.length()); } - private static void onReceiveForDragAndDrop(@NonNull TextView view, - @NonNull ContentInfo payload) { - final CharSequence text = coerceToText(payload.getClip(), view.getContext(), - payload.getFlags()); - replaceSelection((Editable) view.getText(), text); - } - private static @NonNull CharSequence coerceToText(@NonNull ClipData clip, @NonNull Context context, @Flags int flags) { SpannableStringBuilder ssb = new SpannableStringBuilder(); diff --git a/core/java/android/window/SplashScreenView.java b/core/java/android/window/SplashScreenView.java index 933760c8bf18..8debe5d569a3 100644 --- a/core/java/android/window/SplashScreenView.java +++ b/core/java/android/window/SplashScreenView.java @@ -70,6 +70,7 @@ public final class SplashScreenView extends FrameLayout { private static final boolean DEBUG = false; private boolean mNotCopyable; + private boolean mRevealAnimationSupported = true; private int mInitBackgroundColor; private int mInitIconBackgroundColor; private View mIconView; @@ -264,6 +265,25 @@ public final class SplashScreenView extends FrameLayout { } /** + * If set to true, indicates to the system that this view can be dismissed by playing the + * Reveal animation. + * <p> + * If the exit animation is handled by the client, the animation won't be played anyway. + * @hide + */ + public void setRevealAnimationSupported(boolean support) { + mRevealAnimationSupported = support; + } + + /** + * Whether this view support reveal animation. + * @hide + */ + public boolean isRevealAnimationSupported() { + return mRevealAnimationSupported; + } + + /** * Returns the duration of the icon animation if icon is animatable. * * @see android.R.attr#windowSplashScreenAnimatedIcon diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java index 2b4e09d66851..83def0cc1fd6 100644 --- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java +++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java @@ -80,6 +80,8 @@ public class AccessibilityShortcutController { "com.android.server.accessibility.MagnificationController"; public static final ComponentName MAGNIFICATION_COMPONENT_NAME = new ComponentName("com.android.server.accessibility", "Magnification"); + public static final ComponentName ONE_HANDED_COMPONENT_NAME = + new ComponentName("com.android.server.accessibility", "OneHandedMode"); public static final ComponentName REDUCE_BRIGHT_COLORS_COMPONENT_NAME = new ComponentName("com.android.server.accessibility", "ReduceBrightColors"); @@ -117,7 +119,7 @@ public class AccessibilityShortcutController { public static Map<ComponentName, ToggleableFrameworkFeatureInfo> getFrameworkShortcutFeaturesMap() { if (sFrameworkShortcutFeaturesMap == null) { - Map<ComponentName, ToggleableFrameworkFeatureInfo> featuresMap = new ArrayMap<>(2); + Map<ComponentName, ToggleableFrameworkFeatureInfo> featuresMap = new ArrayMap<>(4); featuresMap.put(COLOR_INVERSION_COMPONENT_NAME, new ToggleableFrameworkFeatureInfo( Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, @@ -128,6 +130,11 @@ public class AccessibilityShortcutController { Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED, "1" /* Value to enable */, "0" /* Value to disable */, R.string.color_correction_feature_name)); + featuresMap.put(ONE_HANDED_COMPONENT_NAME, + new ToggleableFrameworkFeatureInfo( + Settings.Secure.ONE_HANDED_MODE_ACTIVATED, + "1" /* Value to enable */, "0" /* Value to disable */, + R.string.one_handed_mode_feature_name)); featuresMap.put(REDUCE_BRIGHT_COLORS_COMPONENT_NAME, new ToggleableFrameworkFeatureInfo( Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java index f2d91ba30842..4a20ad0f33f5 100644 --- a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java +++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java @@ -21,6 +21,7 @@ import static android.view.accessibility.AccessibilityManager.ACCESSIBILITY_BUTT import static com.android.internal.accessibility.AccessibilityShortcutController.COLOR_INVERSION_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.DALTONIZER_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_CONTROLLER_NAME; +import static com.android.internal.accessibility.AccessibilityShortcutController.ONE_HANDED_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.REDUCE_BRIGHT_COLORS_COMPONENT_NAME; import static com.android.internal.accessibility.util.AccessibilityUtils.getAccessibilityServiceFragmentType; import static com.android.internal.accessibility.util.ShortcutUtils.isShortcutContained; @@ -230,6 +231,16 @@ public final class AccessibilityTargetHelper { context.getDrawable(R.drawable.ic_accessibility_color_inversion), Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); + final ToggleAllowListingFeatureTarget oneHandedMode = + new ToggleAllowListingFeatureTarget(context, + shortcutType, + isShortcutContained(context, shortcutType, + ONE_HANDED_COMPONENT_NAME.flattenToString()), + ONE_HANDED_COMPONENT_NAME.flattenToString(), + context.getString(R.string.one_handed_mode_feature_name), + context.getDrawable(R.drawable.ic_accessibility_one_handed), + Settings.Secure.ONE_HANDED_MODE_ACTIVATED); + final ToggleAllowListingFeatureTarget reduceBrightColors = new ToggleAllowListingFeatureTarget(context, shortcutType, @@ -243,6 +254,7 @@ public final class AccessibilityTargetHelper { targets.add(magnification); targets.add(daltonizer); targets.add(colorInversion); + targets.add(oneHandedMode); targets.add(reduceBrightColors); return targets; diff --git a/core/java/com/android/internal/app/procstats/DumpUtils.java b/core/java/com/android/internal/app/procstats/DumpUtils.java index 2785c21baf95..bce0d6076d24 100644 --- a/core/java/com/android/internal/app/procstats/DumpUtils.java +++ b/core/java/com/android/internal/app/procstats/DumpUtils.java @@ -93,7 +93,6 @@ public final class DumpUtils { STATE_LABELS[STATE_BOUND_TOP_OR_FGS] = "Bnd TopFgs"; STATE_LABELS[STATE_FGS] = " Fgs"; STATE_LABELS[STATE_IMPORTANT_FOREGROUND] = " Imp Fg"; - STATE_LABELS[STATE_IMPORTANT_FOREGROUND] = " Imp Fg"; STATE_LABELS[STATE_IMPORTANT_BACKGROUND] = " Imp Bg"; STATE_LABELS[STATE_BACKUP] = " Backup"; STATE_LABELS[STATE_SERVICE] = " Service"; diff --git a/core/java/com/android/internal/app/procstats/ProcessState.java b/core/java/com/android/internal/app/procstats/ProcessState.java index 4bced27cafb4..d259b7fe0782 100644 --- a/core/java/com/android/internal/app/procstats/ProcessState.java +++ b/core/java/com/android/internal/app/procstats/ProcessState.java @@ -1550,6 +1550,10 @@ public final class ProcessState { final int key = mDurations.getKeyAt(i); final int type = SparseMappingTable.getIdFromKey(key); final int aggregatedType = DumpUtils.aggregateCurrentProcessState(type); + if ((type % STATE_COUNT) == STATE_SERVICE_RESTARTING) { + // Skip restarting service state -- that is not actually a running process. + continue; + } long time = mDurations.getValue(key); if (mCurCombinedState == type) { @@ -1563,7 +1567,9 @@ public final class ProcessState { durationByState.put(aggregatedType, time); } } - if (!didCurState && mCurCombinedState != STATE_NOTHING) { + if (!didCurState && mCurCombinedState != STATE_NOTHING + && (mCurCombinedState % STATE_COUNT) != STATE_SERVICE_RESTARTING) { + // Skip restarting service state -- that is not actually a running process. final int aggregatedType = DumpUtils.aggregateCurrentProcessState(mCurCombinedState); int index = durationByState.indexOfKey(aggregatedType); if (index >= 0) { diff --git a/core/java/com/android/internal/compat/CompatibilityChangeConfig.java b/core/java/com/android/internal/compat/CompatibilityChangeConfig.java index 36bc22906695..182dba71d0d7 100644 --- a/core/java/com/android/internal/compat/CompatibilityChangeConfig.java +++ b/core/java/com/android/internal/compat/CompatibilityChangeConfig.java @@ -39,14 +39,14 @@ public final class CompatibilityChangeConfig implements Parcelable { * Changes forced to be enabled. */ public Set<Long> enabledChanges() { - return mChangeConfig.forceEnabledSet(); + return mChangeConfig.getEnabledSet(); } /** * Changes forced to be disabled. */ public Set<Long> disabledChanges() { - return mChangeConfig.forceDisabledSet(); + return mChangeConfig.getDisabledSet(); } /** @@ -84,8 +84,8 @@ public final class CompatibilityChangeConfig implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - long[] enabled = mChangeConfig.forceEnabledChangesArray(); - long[] disabled = mChangeConfig.forceDisabledChangesArray(); + long[] enabled = mChangeConfig.getEnabledChangesArray(); + long[] disabled = mChangeConfig.getDisabledChangesArray(); dest.writeLongArray(enabled); dest.writeLongArray(disabled); diff --git a/core/java/com/android/internal/compat/CompatibilityOverridesToRemoveConfig.aidl b/core/java/com/android/internal/compat/CompatibilityOverridesToRemoveConfig.aidl new file mode 100644 index 000000000000..441e553e4d88 --- /dev/null +++ b/core/java/com/android/internal/compat/CompatibilityOverridesToRemoveConfig.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.compat; + +parcelable CompatibilityOverridesToRemoveConfig; diff --git a/core/java/com/android/internal/compat/CompatibilityOverridesToRemoveConfig.java b/core/java/com/android/internal/compat/CompatibilityOverridesToRemoveConfig.java new file mode 100644 index 000000000000..642f79ca7afa --- /dev/null +++ b/core/java/com/android/internal/compat/CompatibilityOverridesToRemoveConfig.java @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.compat; + + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.HashSet; +import java.util.Set; + +/** + * Parcelable containing compat config change IDs for which to remove overrides for a given + * application. + * @hide + */ +public final class CompatibilityOverridesToRemoveConfig implements Parcelable { + public final Set<Long> changeIds; + + public CompatibilityOverridesToRemoveConfig(Set<Long> changeIds) { + this.changeIds = changeIds; + } + + private CompatibilityOverridesToRemoveConfig(Parcel in) { + int keyCount = in.readInt(); + changeIds = new HashSet<>(); + for (int i = 0; i < keyCount; i++) { + changeIds.add(in.readLong()); + } + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(changeIds.size()); + for (Long changeId : changeIds) { + dest.writeLong(changeId); + } + } + + public static final Creator<CompatibilityOverridesToRemoveConfig> CREATOR = + new Creator<CompatibilityOverridesToRemoveConfig>() { + + @Override + public CompatibilityOverridesToRemoveConfig createFromParcel(Parcel in) { + return new CompatibilityOverridesToRemoveConfig(in); + } + + @Override + public CompatibilityOverridesToRemoveConfig[] newArray(int size) { + return new CompatibilityOverridesToRemoveConfig[size]; + } + }; +} diff --git a/core/java/com/android/internal/compat/IPlatformCompat.aidl b/core/java/com/android/internal/compat/IPlatformCompat.aidl index afcd0b0775a6..f718d408f217 100644 --- a/core/java/com/android/internal/compat/IPlatformCompat.aidl +++ b/core/java/com/android/internal/compat/IPlatformCompat.aidl @@ -22,6 +22,7 @@ import java.util.Map; parcelable CompatibilityChangeConfig; parcelable CompatibilityOverrideConfig; +parcelable CompatibilityOverridesToRemoveConfig; parcelable CompatibilityChangeInfo; /** * Platform private API for talking with the PlatformCompat service. @@ -205,6 +206,27 @@ interface IPlatformCompat { boolean clearOverrideForTest(long changeId, String packageName); /** + * Restores the default behaviour for compatibility changes on release builds. + * + * <p>The caller to this API needs to hold + * {@code android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG_ON_RELEASE_BUILD} and all change ids + * in {@code overridesToRemove} need to annotated with + * {@link android.compat.annotation.Overridable}. + * + * A release build in this definition means that {@link android.os.Build#IS_DEBUGGABLE} needs to + * be {@code false}. + * + * <p>Note that this does not kill the app, and therefore overrides read from the app process + * will not be updated. Overrides read from the system process do take effect. + * + * @param overridesToRemove parcelable containing the compat change overrides to be removed + * @param packageName the package name of the app whose changes will be restored to the + * default behaviour + * @throws SecurityException if overriding changes is not permitted + */ + void removeOverridesOnReleaseBuilds(in CompatibilityOverridesToRemoveConfig overridesToRemove, in String packageName); + + /** * Enables all compatibility changes that have enabledSinceTargetSdk == * {@param targetSdkVersion} for an app, subject to the policy. * diff --git a/core/java/com/android/internal/jank/FrameTracker.java b/core/java/com/android/internal/jank/FrameTracker.java index 4d3f7745decf..4d5b90a9ccbf 100644 --- a/core/java/com/android/internal/jank/FrameTracker.java +++ b/core/java/com/android/internal/jank/FrameTracker.java @@ -167,6 +167,7 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener if (mBeginVsyncId != INVALID_ID) { mSurfaceControlWrapper.addJankStatsListener( FrameTracker.this, mSurfaceControl); + postTraceStartMarker(); } } } @@ -208,15 +209,9 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener public synchronized void begin() { mBeginVsyncId = mChoreographer.getVsyncId() + 1; mSession.setTimeStamp(System.nanoTime()); - mChoreographer.mChoreographer.postCallback(Choreographer.CALLBACK_INPUT, () -> { - synchronized (FrameTracker.this) { - if (mCancelled || mEndVsyncId != INVALID_ID) { - return; - } - mTracingStarted = true; - Trace.beginAsyncSection(mSession.getName(), (int) mBeginVsyncId); - } - }, null); + if (mSurfaceControl != null) { + postTraceStartMarker(); + } mRendererWrapper.addObserver(mObserver); if (DEBUG) { Log.d(TAG, "begin: " + mSession.getName() + ", begin=" + mBeginVsyncId); @@ -229,6 +224,18 @@ public class FrameTracker extends SurfaceControl.OnJankDataListener } } + private void postTraceStartMarker() { + mChoreographer.mChoreographer.postCallback(Choreographer.CALLBACK_INPUT, () -> { + synchronized (FrameTracker.this) { + if (mCancelled || mEndVsyncId != INVALID_ID) { + return; + } + mTracingStarted = true; + Trace.beginAsyncSection(mSession.getName(), (int) mBeginVsyncId); + } + }, null); + } + /** * End the trace session of the CUJ. */ diff --git a/core/java/com/android/internal/os/BinderCallsStats.java b/core/java/com/android/internal/os/BinderCallsStats.java index 1004e17e91e6..c297a1fc4279 100644 --- a/core/java/com/android/internal/os/BinderCallsStats.java +++ b/core/java/com/android/internal/os/BinderCallsStats.java @@ -1105,9 +1105,11 @@ public class BinderCallsStats implements BinderInternal.Observer { public static final String SETTINGS_MAX_CALL_STATS_KEY = "max_call_stats_count"; public static final String SETTINGS_IGNORE_BATTERY_STATUS_KEY = "ignore_battery_status"; // Settings for BinderLatencyObserver. - public static final String SETTINGS_COLLECT_LATENCY_DATA_KEY = "collect_Latency_data"; + public static final String SETTINGS_COLLECT_LATENCY_DATA_KEY = "collect_latency_data"; public static final String SETTINGS_LATENCY_OBSERVER_SAMPLING_INTERVAL_KEY = "latency_observer_sampling_interval"; + public static final String SETTINGS_LATENCY_OBSERVER_SHARDING_MODULO_KEY = + "latency_observer_sharding_modulo"; public static final String SETTINGS_LATENCY_OBSERVER_PUSH_INTERVAL_MINUTES_KEY = "latency_observer_push_interval_minutes"; public static final String SETTINGS_LATENCY_HISTOGRAM_BUCKET_COUNT_KEY = @@ -1187,6 +1189,9 @@ public class BinderCallsStats implements BinderInternal.Observer { binderLatencyObserver.setSamplingInterval(mParser.getInt( SETTINGS_LATENCY_OBSERVER_SAMPLING_INTERVAL_KEY, BinderLatencyObserver.PERIODIC_SAMPLING_INTERVAL_DEFAULT)); + binderLatencyObserver.setShardingModulo(mParser.getInt( + SETTINGS_LATENCY_OBSERVER_SHARDING_MODULO_KEY, + BinderLatencyObserver.SHARDING_MODULO_DEFAULT)); binderLatencyObserver.setHistogramBucketsParams( mParser.getInt( SETTINGS_LATENCY_HISTOGRAM_BUCKET_COUNT_KEY, diff --git a/core/java/com/android/internal/os/BinderDeathDispatcher.java b/core/java/com/android/internal/os/BinderDeathDispatcher.java index 0c93f7f160e4..8ca6241e63c6 100644 --- a/core/java/com/android/internal/os/BinderDeathDispatcher.java +++ b/core/java/com/android/internal/os/BinderDeathDispatcher.java @@ -24,12 +24,11 @@ import android.os.IInterface; import android.os.RemoteException; import android.util.ArrayMap; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; -import java.io.PrintWriter; - /** * Multiplexes multiple binder death recipients on the same binder objects, so that at the native * level, we only need to keep track of one death recipient reference. This will help reduce the @@ -63,6 +62,10 @@ public class BinderDeathDispatcher<T extends IInterface> { @Override public void binderDied() { + } + + @Override + public void binderDied(IBinder who) { final ArraySet<DeathRecipient> copy; synchronized (mLock) { copy = mRecipients; @@ -77,7 +80,7 @@ public class BinderDeathDispatcher<T extends IInterface> { // Let's call it without holding the lock. final int size = copy.size(); for (int i = 0; i < size; i++) { - copy.valueAt(i).binderDied(); + copy.valueAt(i).binderDied(who); } } } @@ -124,13 +127,12 @@ public class BinderDeathDispatcher<T extends IInterface> { } } - public void dump(PrintWriter pw, String indent) { + /** Dump stats useful for debugging. Can be used from dump() methods of client services. */ + public void dump(IndentingPrintWriter pw) { synchronized (mLock) { - pw.print(indent); pw.print("# of watched binders: "); pw.println(mTargets.size()); - pw.print(indent); pw.print("# of death recipients: "); int n = 0; for (RecipientsInfo info : mTargets.values()) { diff --git a/core/java/com/android/internal/os/BinderLatencyObserver.java b/core/java/com/android/internal/os/BinderLatencyObserver.java index 5fa96bd9a152..ed7e172e8071 100644 --- a/core/java/com/android/internal/os/BinderLatencyObserver.java +++ b/core/java/com/android/internal/os/BinderLatencyObserver.java @@ -44,6 +44,7 @@ public class BinderLatencyObserver { // Latency observer parameters. public static final int PERIODIC_SAMPLING_INTERVAL_DEFAULT = 10; + public static final int SHARDING_MODULO_DEFAULT = 1; public static final int STATSD_PUSH_INTERVAL_MINUTES_DEFAULT = 360; // Histogram buckets parameters. @@ -58,6 +59,11 @@ public class BinderLatencyObserver { // Sampling period to control how often to track CPU usage. 1 means all calls, 100 means ~1 out // of 100 requests. private int mPeriodicSamplingInterval = PERIODIC_SAMPLING_INTERVAL_DEFAULT; + // Controls how many APIs will be collected per device. 1 means all APIs, 10 means every 10th + // API will be collected. + private int mShardingModulo = SHARDING_MODULO_DEFAULT; + // Controls which shards will be collected on this device. + private int mShardingOffset; private int mBucketCount = BUCKET_COUNT_DEFAULT; private int mFirstBucketSize = FIRST_BUCKET_SIZE_DEFAULT; @@ -156,7 +162,7 @@ public class BinderLatencyObserver { FrameworkStatsLog.BINDER_LATENCY_REPORTED, atom.getBytes(), mPeriodicSamplingInterval, - 1, + mShardingModulo, mBucketCount, mFirstBucketSize, mBucketScaleFactor); @@ -185,6 +191,7 @@ public class BinderLatencyObserver { mLatencyBuckets = new BinderLatencyBuckets( mBucketCount, mFirstBucketSize, mBucketScaleFactor); mProcessSource = processSource; + mShardingOffset = mRandom.nextInt(mShardingModulo); noteLatencyDelayed(); } @@ -194,7 +201,12 @@ public class BinderLatencyObserver { return; } - LatencyDims dims = new LatencyDims(s.binderClass, s.transactionCode); + LatencyDims dims = LatencyDims.create(s.binderClass, s.transactionCode); + + if (!shouldCollect(dims)) { + return; + } + long elapsedTimeMicro = getElapsedRealtimeMicro(); long callDuration = elapsedTimeMicro - s.timeStarted; @@ -220,6 +232,10 @@ public class BinderLatencyObserver { return SystemClock.elapsedRealtimeNanos() / 1000; } + protected boolean shouldCollect(LatencyDims dims) { + return (dims.hashCode() + mShardingOffset) % mShardingModulo == 0; + } + protected boolean shouldKeepSample() { return mRandom.nextInt() % mPeriodicSamplingInterval == 0; } @@ -240,6 +256,23 @@ public class BinderLatencyObserver { } } + /** Updates the sharding modulo. */ + public void setShardingModulo(int shardingModulo) { + if (shardingModulo <= 0) { + Slog.w(TAG, "Ignored invalid sharding modulo (value must be positive): " + + shardingModulo); + return; + } + + synchronized (mLock) { + if (shardingModulo != mShardingModulo) { + mShardingModulo = shardingModulo; + mShardingOffset = mRandom.nextInt(shardingModulo); + reset(); + } + } + } + /** Updates the statsd push interval. */ public void setPushInterval(int pushIntervalMinutes) { if (pushIntervalMinutes <= 0) { @@ -289,7 +322,12 @@ public class BinderLatencyObserver { // Cached hash code, 0 if not set yet. private int mHashCode = 0; - public LatencyDims(Class<? extends Binder> binderClass, int transactionCode) { + /** Creates a new instance of LatencyDims. */ + public static LatencyDims create(Class<? extends Binder> binderClass, int transactionCode) { + return new LatencyDims(binderClass, transactionCode); + } + + private LatencyDims(Class<? extends Binder> binderClass, int transactionCode) { this.mBinderClass = binderClass; this.mTransactionCode = transactionCode; } @@ -317,7 +355,7 @@ public class BinderLatencyObserver { return mHashCode; } int hash = mTransactionCode; - hash = 31 * hash + mBinderClass.hashCode(); + hash = 31 * hash + mBinderClass.getName().hashCode(); mHashCode = hash; return hash; } diff --git a/core/java/com/android/internal/os/TEST_MAPPING b/core/java/com/android/internal/os/TEST_MAPPING index 14cdb0890b25..2b22f08652e7 100644 --- a/core/java/com/android/internal/os/TEST_MAPPING +++ b/core/java/com/android/internal/os/TEST_MAPPING @@ -13,6 +13,16 @@ ] }, { + "file_patterns": [ + "BinderDeathDispatcher\\.java" + ], + "name": "FrameworksCoreTests", + "options": [ + { "include-filter": "com.android.internal.os.BinderDeathDispatcherTest" }, + { "exclude-annotation": "com.android.internal.os.SkipPresubmit" } + ] + }, + { "file_patterns": ["Battery[^/]*\\.java"], "name": "FrameworksServicesTests", "options": [ diff --git a/core/java/com/android/internal/util/StringPool.java b/core/java/com/android/internal/util/StringPool.java new file mode 100644 index 000000000000..c5180a3fe8cf --- /dev/null +++ b/core/java/com/android/internal/util/StringPool.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2010 The Android Open 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.internal.util; + +/** + * A pool of string instances. Unlike the {@link String#intern() VM's + * interned strings}, this pool provides no guarantee of reference equality. + * It is intended only to save allocations. This class is not thread safe. + * + * @hide + */ +public final class StringPool { + + private final String[] mPool = new String[512]; + + /** + * Constructs string pool. + */ + public StringPool() { + } + + private static boolean contentEquals(String s, char[] chars, int start, int length) { + if (s.length() != length) { + return false; + } + for (int i = 0; i < length; i++) { + if (chars[start + i] != s.charAt(i)) { + return false; + } + } + return true; + } + + /** + * Returns a string equal to {@code new String(array, start, length)}. + * + * @param array buffer containing string chars + * @param start offset in {@code array} where string starts + * @param length length of string + * @return string equal to {@code new String(array, start, length)} + */ + public String get(char[] array, int start, int length) { + // Compute an arbitrary hash of the content + int hashCode = 0; + for (int i = start; i < start + length; i++) { + hashCode = (hashCode * 31) + array[i]; + } + + // Pick a bucket using Doug Lea's supplemental secondaryHash function (from HashMap) + hashCode ^= (hashCode >>> 20) ^ (hashCode >>> 12); + hashCode ^= (hashCode >>> 7) ^ (hashCode >>> 4); + int index = hashCode & (mPool.length - 1); + + String pooled = mPool[index]; + if (pooled != null && contentEquals(pooled, array, start, length)) { + return pooled; + } + + String result = new String(array, start, length); + mPool[index] = result; + return result; + } +} diff --git a/core/java/com/android/internal/widget/ConversationLayout.java b/core/java/com/android/internal/widget/ConversationLayout.java index 4e96ae7f7903..2c92b91035d7 100644 --- a/core/java/com/android/internal/widget/ConversationLayout.java +++ b/core/java/com/android/internal/widget/ConversationLayout.java @@ -116,13 +116,13 @@ public class ConversationLayout extends FrameLayout private ViewGroup mExpandButtonAndContentContainer; private NotificationExpandButton mExpandButton; private MessagingLinearLayout mImageMessageContainer; - private int mBadgedSideMargins; + private int mBadgeProtrusion; private int mConversationAvatarSize; private int mConversationAvatarSizeExpanded; private CachingIconView mIcon; private CachingIconView mImportanceRingView; - private int mExpandedGroupSideMargin; - private int mExpandedGroupSideMarginFacePile; + private int mExpandedGroupBadgeProtrusion; + private int mExpandedGroupBadgeProtrusionFacePile; private View mConversationFacePile; private int mNotificationBackgroundColor; private CharSequence mFallbackChatName; @@ -251,8 +251,8 @@ public class ConversationLayout extends FrameLayout R.dimen.conversation_header_expanded_padding_end); mContentMarginEnd = getResources().getDimensionPixelSize( R.dimen.notification_content_margin_end); - mBadgedSideMargins = getResources().getDimensionPixelSize( - R.dimen.conversation_badge_side_margin); + mBadgeProtrusion = getResources().getDimensionPixelSize( + R.dimen.conversation_badge_protrusion); mConversationAvatarSize = getResources().getDimensionPixelSize( R.dimen.conversation_avatar_size); mConversationAvatarSizeExpanded = getResources().getDimensionPixelSize( @@ -263,10 +263,10 @@ public class ConversationLayout extends FrameLayout R.dimen.conversation_icon_container_top_padding); mExpandedGroupMessagePadding = getResources().getDimensionPixelSize( R.dimen.expanded_group_conversation_message_padding); - mExpandedGroupSideMargin = getResources().getDimensionPixelSize( - R.dimen.conversation_badge_side_margin_group_expanded); - mExpandedGroupSideMarginFacePile = getResources().getDimensionPixelSize( - R.dimen.conversation_badge_side_margin_group_expanded_face_pile); + mExpandedGroupBadgeProtrusion = getResources().getDimensionPixelSize( + R.dimen.conversation_badge_protrusion_group_expanded); + mExpandedGroupBadgeProtrusionFacePile = getResources().getDimensionPixelSize( + R.dimen.conversation_badge_protrusion_group_expanded_face_pile); mConversationFacePile = findViewById(R.id.conversation_face_pile); mFacePileAvatarSize = getResources().getDimensionPixelSize( R.dimen.conversation_face_pile_avatar_size); @@ -646,7 +646,7 @@ public class ConversationLayout extends FrameLayout facepileAvatarSize = mFacePileAvatarSizeExpandedGroup; facePileBackgroundSize = facepileAvatarSize + 2 * mFacePileProtectionWidthExpanded; } - LayoutParams layoutParams = (LayoutParams) mConversationIconView.getLayoutParams(); + LayoutParams layoutParams = (LayoutParams) mConversationFacePile.getLayoutParams(); layoutParams.width = conversationAvatarSize; layoutParams.height = conversationAvatarSize; mConversationFacePile.setLayoutParams(layoutParams); @@ -679,29 +679,35 @@ public class ConversationLayout extends FrameLayout * update the icon position and sizing */ private void updateIconPositionAndSize() { - int sidemargin; + int badgeProtrusion; int conversationAvatarSize; if (mIsOneToOne || mIsCollapsed) { - sidemargin = mBadgedSideMargins; + badgeProtrusion = mBadgeProtrusion; conversationAvatarSize = mConversationAvatarSize; } else { - sidemargin = mConversationFacePile.getVisibility() == VISIBLE - ? mExpandedGroupSideMarginFacePile - : mExpandedGroupSideMargin; + badgeProtrusion = mConversationFacePile.getVisibility() == VISIBLE + ? mExpandedGroupBadgeProtrusionFacePile + : mExpandedGroupBadgeProtrusion; conversationAvatarSize = mConversationAvatarSizeExpanded; } - LayoutParams layoutParams = - (LayoutParams) mConversationIconBadge.getLayoutParams(); - layoutParams.topMargin = sidemargin; - layoutParams.setMarginStart(sidemargin); - mConversationIconBadge.setLayoutParams(layoutParams); if (mConversationIconView.getVisibility() == VISIBLE) { - layoutParams = (LayoutParams) mConversationIconView.getLayoutParams(); + LayoutParams layoutParams = (LayoutParams) mConversationIconView.getLayoutParams(); layoutParams.width = conversationAvatarSize; layoutParams.height = conversationAvatarSize; + layoutParams.leftMargin = badgeProtrusion; + layoutParams.rightMargin = badgeProtrusion; + layoutParams.bottomMargin = badgeProtrusion; mConversationIconView.setLayoutParams(layoutParams); } + + if (mConversationFacePile.getVisibility() == VISIBLE) { + LayoutParams layoutParams = (LayoutParams) mConversationFacePile.getLayoutParams(); + layoutParams.leftMargin = badgeProtrusion; + layoutParams.rightMargin = badgeProtrusion; + layoutParams.bottomMargin = badgeProtrusion; + mConversationFacePile.setLayoutParams(layoutParams); + } } private void updatePaddingsBasedOnContentAvailability() { diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index db4e6734c848..498505cd46ff 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -854,16 +854,6 @@ public class LockPatternUtils { && getDevicePolicyManager().isSeparateProfileChallengeAllowed(userHandle); } - /** - * Retrieves whether the current profile and device locks can be unified. - * @param userHandle profile user handle. - */ - public boolean isSeparateProfileChallengeAllowedToUnify(int userHandle) { - return getDevicePolicyManager().isProfileActivePasswordSufficientForParent(userHandle) - && !getUserManager().hasUserRestriction( - UserManager.DISALLOW_UNIFIED_PASSWORD, UserHandle.of(userHandle)); - } - private boolean hasSeparateChallenge(int userHandle) { try { return getLockSettings().getSeparateProfileChallengeEnabled(userHandle); diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index de4cede6b7fe..f76cccb65973 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -638,6 +638,7 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool p char hotstartupsamplesOptsBuf[sizeof("-Xps-hot-startup-method-samples:")-1 + PROPERTY_VALUE_MAX]; char saveResolvedClassesDelayMsOptsBuf[ sizeof("-Xps-save-resolved-classes-delay-ms:")-1 + PROPERTY_VALUE_MAX]; + char profileMinSavePeriodOptsBuf[sizeof("-Xps-min-save-period-ms:")-1 + PROPERTY_VALUE_MAX]; char madviseRandomOptsBuf[sizeof("-XX:MadviseRandomAccess:")-1 + PROPERTY_VALUE_MAX]; char madviseWillNeedFileSizeVdex[ sizeof("-XMadviseWillNeedVdexFileSize:")-1 + PROPERTY_VALUE_MAX]; @@ -670,6 +671,8 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool p char extraOptsBuf[PROPERTY_VALUE_MAX]; char voldDecryptBuf[PROPERTY_VALUE_MAX]; char perfettoHprofOptBuf[sizeof("-XX:PerfettoHprof=") + PROPERTY_VALUE_MAX]; + char perfettoJavaHeapStackOptBuf[ + sizeof("-XX:PerfettoJavaHeapStackProf=") + PROPERTY_VALUE_MAX]; enum { kEMDefault, kEMIntPortable, @@ -784,6 +787,10 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool p parseRuntimeOption("dalvik.vm.perfetto_hprof", perfettoHprofOptBuf, "-XX:PerfettoHprof=", "true"); + // Enable PerfettoJavaHeapStackProf in the zygote + parseRuntimeOption("dalvik.vm.perfetto_javaheap", perfettoJavaHeapStackOptBuf, + "-XX:PerfettoJavaHeapStackProf=", "true"); + if (primary_zygote) { addOption("-Xprimaryzygote"); } @@ -867,6 +874,9 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool p parseRuntimeOption("dalvik.vm.ps-resolved-classes-delay-ms", saveResolvedClassesDelayMsOptsBuf, "-Xps-save-resolved-classes-delay-ms:"); + parseRuntimeOption("dalvik.vm.ps-min-save-period-ms", profileMinSavePeriodOptsBuf, + "-Xps-min-save-period-ms:"); + property_get("ro.config.low_ram", propBuf, ""); if (strcmp(propBuf, "true") == 0) { addOption("-XX:LowMemoryMode"); diff --git a/core/jni/android_content_res_ApkAssets.cpp b/core/jni/android_content_res_ApkAssets.cpp index c32951af72e4..9c8daec7919a 100644 --- a/core/jni/android_content_res_ApkAssets.cpp +++ b/core/jni/android_content_res_ApkAssets.cpp @@ -29,7 +29,6 @@ #include "utils/Trace.h" #include "android_content_res_ApkAssets.h" -#include "android_util_AssetManager_private.h" #include "core_jni_helpers.h" #include "jni.h" #include "nativehelper/ScopedUtfChars.h" @@ -473,8 +472,9 @@ static jlong NativeOpenXml(JNIEnv* env, jclass /*clazz*/, jlong ptr, jstring fil const auto buffer = asset->getIncFsBuffer(true /* aligned */); const size_t length = asset->getLength(); if (!buffer.convert<uint8_t>().verify(length)) { - jniThrowException(env, kResourcesNotFound, kIOErrorMessage); - return 0; + jniThrowException(env, "java/io/FileNotFoundException", + "File not fully present due to incremental installation"); + return 0; } // DynamicRefTable is only needed when looking up resource references. Opening an XML file diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index 5eb1e0094725..56814c7eb774 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -2382,10 +2382,19 @@ android_media_AudioSystem_setSurroundFormatEnabled(JNIEnv *env, jobject thiz, return (jint)nativeToJavaStatus(status); } -static jint android_media_AudioSystem_get_FCC_8(JNIEnv *env, jobject thiz) { +static jint android_media_AudioSystem_getMaxChannelCount(JNIEnv *env, jobject thiz) { return FCC_8; } +static jint android_media_AudioSystem_getMaxSampleRate(JNIEnv *env, jobject thiz) { + // see frameworks/av/services/audiopolicy/common/include/policy.h + return 192000; // SAMPLE_RATE_HZ_MAX (for API) +} + +static jint android_media_AudioSystem_getMinSampleRate(JNIEnv *env, jobject thiz) { + return 4000; // SAMPLE_RATE_HZ_MIN (for API) +} + static jint android_media_AudioSystem_setAssistantUid(JNIEnv *env, jobject thiz, jint uid) { @@ -2810,14 +2819,18 @@ static const JNINativeMethod gEventHandlerMethods[] = { (void *)android_media_AudioSystem_eventHandlerFinalize}, }; -static const JNINativeMethod gGetFCC8Methods[] = { - {"native_get_FCC_8", "()I", (void *)android_media_AudioSystem_get_FCC_8}, +static const JNINativeMethod gFrameworkCapabilities[] = { + {"native_getMaxChannelCount", "()I", (void *)android_media_AudioSystem_getMaxChannelCount}, + {"native_getMaxSampleRate", "()I", (void *)android_media_AudioSystem_getMaxSampleRate}, + {"native_getMinSampleRate", "()I", (void *)android_media_AudioSystem_getMinSampleRate}, }; int register_android_media_AudioSystem(JNIEnv *env) { // This needs to be done before hooking up methods AudioTrackRoutingProxy (below) - RegisterMethodsOrDie(env, kClassPathName, gGetFCC8Methods, NELEM(gGetFCC8Methods)); + // as the calls are performed in the static initializer of AudioSystem. + RegisterMethodsOrDie(env, kClassPathName, gFrameworkCapabilities, + NELEM(gFrameworkCapabilities)); jclass arrayListClass = FindClassOrDie(env, "java/util/ArrayList"); gArrayListClass = MakeGlobalRefOrDie(env, arrayListClass); diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index 24f9abf6b814..ce847e8f70c5 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -43,7 +43,6 @@ #include "androidfw/ResourceUtils.h" #include "android_content_res_ApkAssets.h" -#include "android_util_AssetManager_private.h" #include "core_jni_helpers.h" #include "jni.h" #include "nativehelper/JNIPlatformHelp.h" @@ -574,8 +573,9 @@ static jlong NativeOpenXmlAsset(JNIEnv* env, jobject /*clazz*/, jlong ptr, jint const incfs::map_ptr<void> buffer = asset->getIncFsBuffer(true /* aligned */); const size_t length = asset->getLength(); if (!buffer.convert<uint8_t>().verify(length)) { - jniThrowException(env, kResourcesNotFound, kIOErrorMessage); - return 0; + jniThrowException(env, "java/io/FileNotFoundException", + "File not fully present due to incremental installation"); + return 0; } auto xml_tree = util::make_unique<ResXMLTree>(assetmanager->GetDynamicRefTableForCookie(cookie)); @@ -611,8 +611,9 @@ static jlong NativeOpenXmlAssetFd(JNIEnv* env, jobject /*clazz*/, jlong ptr, int const incfs::map_ptr<void> buffer = asset->getIncFsBuffer(true /* aligned */); const size_t length = asset->getLength(); if (!buffer.convert<uint8_t>().verify(length)) { - jniThrowException(env, kResourcesNotFound, kIOErrorMessage); - return 0; + jniThrowException(env, "java/io/FileNotFoundException", + "File not fully present due to incremental installation"); + return 0; } auto xml_tree = util::make_unique<ResXMLTree>(assetmanager->GetDynamicRefTableForCookie(cookie)); @@ -631,14 +632,12 @@ static jint NativeGetResourceValue(JNIEnv* env, jclass /*clazz*/, jlong ptr, jin auto value = assetmanager->GetResource(static_cast<uint32_t>(resid), false /*may_be_bag*/, static_cast<uint16_t>(density)); if (!value.has_value()) { - ThrowIfIOError(env, value); return ApkAssetsCookieToJavaCookie(kInvalidCookie); } if (resolve_references) { auto result = assetmanager->ResolveReference(value.value()); if (!result.has_value()) { - ThrowIfIOError(env, result); return ApkAssetsCookieToJavaCookie(kInvalidCookie); } } @@ -650,7 +649,6 @@ static jint NativeGetResourceBagValue(JNIEnv* env, jclass /*clazz*/, jlong ptr, ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto bag = assetmanager->GetBag(static_cast<uint32_t>(resid)); if (!bag.has_value()) { - ThrowIfIOError(env, bag); return ApkAssetsCookieToJavaCookie(kInvalidCookie); } @@ -669,7 +667,6 @@ static jint NativeGetResourceBagValue(JNIEnv* env, jclass /*clazz*/, jlong ptr, AssetManager2::SelectedValue attr_value(*bag, *entry); auto result = assetmanager->ResolveReference(attr_value); if (!result.has_value()) { - ThrowIfIOError(env, result); return ApkAssetsCookieToJavaCookie(kInvalidCookie); } return CopyValue(env, attr_value, typed_value); @@ -679,7 +676,6 @@ static jintArray NativeGetStyleAttributes(JNIEnv* env, jclass /*clazz*/, jlong p ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto bag_result = assetmanager->GetBag(static_cast<uint32_t>(resid)); if (!bag_result.has_value()) { - ThrowIfIOError(env, bag_result); return nullptr; } @@ -701,7 +697,6 @@ static jobjectArray NativeGetResourceStringArray(JNIEnv* env, jclass /*clazz*/, ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto bag_result = assetmanager->GetBag(static_cast<uint32_t>(resid)); if (!bag_result.has_value()) { - ThrowIfIOError(env, bag_result); return nullptr; } @@ -716,7 +711,6 @@ static jobjectArray NativeGetResourceStringArray(JNIEnv* env, jclass /*clazz*/, AssetManager2::SelectedValue attr_value(bag, bag->entries[i]); auto result = assetmanager->ResolveReference(attr_value); if (!result.has_value()) { - ThrowIfIOError(env, result); return nullptr; } @@ -724,22 +718,16 @@ static jobjectArray NativeGetResourceStringArray(JNIEnv* env, jclass /*clazz*/, const ApkAssets* apk_assets = assetmanager->GetApkAssets()[attr_value.cookie]; const ResStringPool* pool = apk_assets->GetLoadedArsc()->GetStringPool(); - jstring java_string = nullptr; - auto str_utf8 = pool->string8At(attr_value.data); - if (UNLIKELY(ThrowIfIOError(env, str_utf8))) { - return nullptr; - } - - if (str_utf8.has_value()) { - java_string = env->NewStringUTF(str_utf8->data()); + jstring java_string; + if (auto str_utf8 = pool->string8At(attr_value.data); str_utf8.has_value()) { + java_string = env->NewStringUTF(str_utf8->data()); } else { - auto str_utf16 = pool->stringAt(attr_value.data); - if (!str_utf16.has_value()) { - ThrowIfIOError(env, str_utf16); - return nullptr; - } - java_string = env->NewString(reinterpret_cast<const jchar*>(str_utf16->data()), - str_utf16->size()); + auto str_utf16 = pool->stringAt(attr_value.data); + if (!str_utf16.has_value()) { + return nullptr; + } + java_string = env->NewString(reinterpret_cast<const jchar*>(str_utf16->data()), + str_utf16->size()); } // Check for errors creating the strings (if malformed or no memory). @@ -762,7 +750,6 @@ static jintArray NativeGetResourceStringArrayInfo(JNIEnv* env, jclass /*clazz*/, ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto bag_result = assetmanager->GetBag(static_cast<uint32_t>(resid)); if (!bag_result.has_value()) { - ThrowIfIOError(env, bag_result); return nullptr; } @@ -782,7 +769,6 @@ static jintArray NativeGetResourceStringArrayInfo(JNIEnv* env, jclass /*clazz*/, auto result = assetmanager->ResolveReference(attr_value); if (!result.has_value()) { env->ReleasePrimitiveArrayCritical(array, buffer, JNI_ABORT); - ThrowIfIOError(env, result); return nullptr; } @@ -802,7 +788,6 @@ static jintArray NativeGetResourceIntArray(JNIEnv* env, jclass /*clazz*/, jlong ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto bag_result = assetmanager->GetBag(static_cast<uint32_t>(resid)); if (!bag_result.has_value()) { - ThrowIfIOError(env, bag_result); return nullptr; } @@ -822,7 +807,6 @@ static jintArray NativeGetResourceIntArray(JNIEnv* env, jclass /*clazz*/, jlong auto result = assetmanager->ResolveReference(attr_value); if (!result.has_value()) { env->ReleasePrimitiveArrayCritical(array, buffer, 0); - ThrowIfIOError(env, result); return nullptr; } @@ -839,7 +823,6 @@ static jint NativeGetResourceArraySize(JNIEnv* env, jclass /*clazz*/, jlong ptr, ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto bag = assetmanager->GetBag(static_cast<uint32_t>(resid)); if (!bag.has_value()) { - ThrowIfIOError(env, bag); return -1; } return static_cast<jint>((*bag)->entry_count); @@ -850,7 +833,6 @@ static jint NativeGetResourceArray(JNIEnv* env, jclass /*clazz*/, jlong ptr, jin ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto bag_result = assetmanager->GetBag(static_cast<uint32_t>(resid)); if (!bag_result.has_value()) { - ThrowIfIOError(env, bag_result); return -1; } @@ -877,7 +859,6 @@ static jint NativeGetResourceArray(JNIEnv* env, jclass /*clazz*/, jlong ptr, jin auto result = assetmanager->ResolveReference(attr_value); if (!result.has_value()) { env->ReleasePrimitiveArrayCritical(out_data, buffer, JNI_ABORT); - ThrowIfIOError(env, bag_result); return -1; } @@ -924,7 +905,6 @@ static jint NativeGetResourceIdentifier(JNIEnv* env, jclass /*clazz*/, jlong ptr ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto resid = assetmanager->GetResourceId(name_utf8.c_str(), type, package); if (!resid.has_value()) { - ThrowIfIOError(env, resid); return 0; } @@ -935,7 +915,6 @@ static jstring NativeGetResourceName(JNIEnv* env, jclass /*clazz*/, jlong ptr, j ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto name = assetmanager->GetResourceName(static_cast<uint32_t>(resid)); if (!name.has_value()) { - ThrowIfIOError(env, name); return nullptr; } @@ -947,7 +926,6 @@ static jstring NativeGetResourcePackageName(JNIEnv* env, jclass /*clazz*/, jlong ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto name = assetmanager->GetResourceName(static_cast<uint32_t>(resid)); if (!name.has_value()) { - ThrowIfIOError(env, name); return nullptr; } @@ -961,7 +939,6 @@ static jstring NativeGetResourceTypeName(JNIEnv* env, jclass /*clazz*/, jlong pt ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto name = assetmanager->GetResourceName(static_cast<uint32_t>(resid)); if (!name.has_value()) { - ThrowIfIOError(env, name); return nullptr; } @@ -977,7 +954,6 @@ static jstring NativeGetResourceEntryName(JNIEnv* env, jclass /*clazz*/, jlong p ScopedLock<AssetManager2> assetmanager(AssetManagerFromLong(ptr)); auto name = assetmanager->GetResourceName(static_cast<uint32_t>(resid)); if (!name.has_value()) { - ThrowIfIOError(env, name); return nullptr; } @@ -1051,7 +1027,6 @@ static jobjectArray NativeGetSizeConfigurations(JNIEnv* env, jclass /*clazz*/, j auto configurations = assetmanager->GetResourceConfigurations(true /*exclude_system*/, false /*exclude_mipmap*/); if (!configurations.has_value()) { - ThrowIfIOError(env, configurations); return nullptr; } @@ -1129,11 +1104,10 @@ static void NativeApplyStyle(JNIEnv* env, jclass /*clazz*/, jlong ptr, jlong the return; } - auto result = ApplyStyle(theme, xml_parser, static_cast<uint32_t>(def_style_attr), - static_cast<uint32_t>(def_style_resid), - reinterpret_cast<uint32_t*>(attrs), attrs_len, out_values, out_indices); + ApplyStyle(theme, xml_parser, static_cast<uint32_t>(def_style_attr), + static_cast<uint32_t>(def_style_resid), reinterpret_cast<uint32_t*>(attrs), attrs_len, + out_values, out_indices); env->ReleasePrimitiveArrayCritical(java_attrs, attrs, JNI_ABORT); - ThrowIfIOError(env, result); } static jboolean NativeResolveAttrs(JNIEnv* env, jclass /*clazz*/, jlong ptr, jlong theme_ptr, @@ -1210,11 +1184,7 @@ static jboolean NativeResolveAttrs(JNIEnv* env, jclass /*clazz*/, jlong ptr, jlo } env->ReleasePrimitiveArrayCritical(java_attrs, attrs, JNI_ABORT); - if (!result.has_value()) { - ThrowIfIOError(env, result); - return JNI_FALSE; - } - return JNI_TRUE; + return result.has_value() ? JNI_TRUE : JNI_FALSE; } static jboolean NativeRetrieveAttributes(JNIEnv* env, jclass /*clazz*/, jlong ptr, @@ -1266,11 +1236,7 @@ static jboolean NativeRetrieveAttributes(JNIEnv* env, jclass /*clazz*/, jlong pt env->ReleasePrimitiveArrayCritical(out_java_values, out_values, 0); env->ReleasePrimitiveArrayCritical(java_attrs, attrs, JNI_ABORT); - if (!result.has_value()) { - ThrowIfIOError(env, result); - return JNI_FALSE; - } - return JNI_TRUE; + return result.has_value() ? JNI_TRUE : JNI_FALSE; } static jlong NativeThemeCreate(JNIEnv* /*env*/, jclass /*clazz*/, jlong ptr) { @@ -1290,8 +1256,7 @@ static void NativeThemeApplyStyle(JNIEnv* env, jclass /*clazz*/, jlong ptr, jlon CHECK(theme->GetAssetManager() == &(*assetmanager)); (void) assetmanager; - auto result = theme->ApplyStyle(static_cast<uint32_t>(resid), force); - ThrowIfIOError(env, result); + theme->ApplyStyle(static_cast<uint32_t>(resid), force); // TODO(adamlesinski): Consider surfacing exception when result is failure. // CTS currently expects no exceptions from this method. @@ -1313,13 +1278,10 @@ static void NativeThemeCopy(JNIEnv* env, jclass /*clazz*/, jlong dst_asset_manag CHECK(dst_theme->GetAssetManager() == &(*dst_assetmanager)); (void) dst_assetmanager; - auto result = dst_theme->SetTo(*src_theme); - ThrowIfIOError(env, result); - return; + dst_theme->SetTo(*src_theme); + } else { + dst_theme->SetTo(*src_theme); } - - auto result = dst_theme->SetTo(*src_theme); - ThrowIfIOError(env, result); } static void NativeThemeClear(JNIEnv* /*env*/, jclass /*clazz*/, jlong theme_ptr) { @@ -1345,7 +1307,6 @@ static jint NativeThemeGetAttributeValue(JNIEnv* env, jclass /*clazz*/, jlong pt auto result = theme->GetAssetManager()->ResolveReference(*value); if (!result.has_value()) { - ThrowIfIOError(env, result); return ApkAssetsCookieToJavaCookie(kInvalidCookie); } return CopyValue(env, *value, typed_value); diff --git a/core/jni/android_util_AssetManager_private.h b/core/jni/android_util_AssetManager_private.h deleted file mode 100644 index 153509b98db5..000000000000 --- a/core/jni/android_util_AssetManager_private.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_UTIL_ASSETMANAGER_PRIVATE_H -#define ANDROID_UTIL_ASSETMANAGER_PRIVATE_H - -#include <optional> - -#include <androidfw/Errors.h> -#include <android-base/expected.h> - -#include "core_jni_helpers.h" -#include "jni.h" -#include "nativehelper/JNIHelp.h" - -namespace android { - -constexpr const char* kResourcesNotFound = "android/content/res/Resources$NotFoundException"; -constexpr const static char* kIOErrorMessage = "failed to read resources.arsc data"; - -template <typename T, typename E> -static bool ThrowIfIOError(JNIEnv* env, const base::expected<T, E>& result) { - if constexpr (std::is_same<NullOrIOError, E>::value) { - if (IsIOError(result)) { - jniThrowException(env, kResourcesNotFound, kIOErrorMessage); - return true; - } - return false; - } else { - if (!result.has_value()) { - static_assert(std::is_same<IOError, E>::value, "Unknown result error type"); - jniThrowException(env, kResourcesNotFound, kIOErrorMessage); - return true; - } - return false; - } -} - -} // namespace android - -#endif //ANDROID_UTIL_ASSETMANAGER_PRIVATE_H diff --git a/core/jni/android_util_StringBlock.cpp b/core/jni/android_util_StringBlock.cpp index 45f6b72b3727..d94e0841003f 100644 --- a/core/jni/android_util_StringBlock.cpp +++ b/core/jni/android_util_StringBlock.cpp @@ -17,7 +17,6 @@ #define LOG_TAG "StringBlock" -#include "android_util_AssetManager_private.h" #include "jni.h" #include <nativehelper/JNIHelp.h> #include <utils/misc.h> @@ -76,17 +75,12 @@ static jstring android_content_StringBlock_nativeGetString(JNIEnv* env, jobject return 0; } - auto str8 = osb->string8At(idx); - if (UNLIKELY(ThrowIfIOError(env, str8))) { - return 0; - } else if (str8.has_value()) { + if (auto str8 = osb->string8At(idx); str8.has_value()) { return env->NewStringUTF(str8->data()); } auto str = osb->stringAt(idx); - if (UNLIKELY(ThrowIfIOError(env, str))) { - return 0; - } else if (UNLIKELY(!str.has_value())) { + if (UNLIKELY(!str.has_value())) { jniThrowException(env, "java/lang/IndexOutOfBoundsException", NULL); return 0; } @@ -104,7 +98,6 @@ static jintArray android_content_StringBlock_nativeGetStyle(JNIEnv* env, jobject auto spans = osb->styleAt(idx); if (!spans.has_value()) { - ThrowIfIOError(env, spans); return NULL; } @@ -114,7 +107,6 @@ static jintArray android_content_StringBlock_nativeGetStyle(JNIEnv* env, jobject auto pos = *spans; while (true) { if (UNLIKELY(!pos)) { - jniThrowException(env, kResourcesNotFound, kIOErrorMessage); return NULL; } if (pos->name.index == ResStringPool_span::END) { diff --git a/core/jni/android_view_MotionEvent.cpp b/core/jni/android_view_MotionEvent.cpp index 5acbd98822e1..6971301cec32 100644 --- a/core/jni/android_view_MotionEvent.cpp +++ b/core/jni/android_view_MotionEvent.cpp @@ -578,6 +578,15 @@ static void android_view_MotionEvent_nativeTransform(JNIEnv* env, jclass clazz, event->transform(matrix); } +static void android_view_MotionEvent_nativeApplyTransform(JNIEnv* env, jclass clazz, + jlong nativePtr, jobject matrixObj) { + MotionEvent* event = reinterpret_cast<MotionEvent*>(nativePtr); + + std::array<float, 9> matrix; + AMatrix_getContents(env, matrixObj, matrix.data()); + event->applyTransform(matrix); +} + // ----------------- @CriticalNative ------------------------------ static jlong android_view_MotionEvent_nativeCopy(jlong destNativePtr, jlong sourceNativePtr, @@ -790,6 +799,8 @@ static const JNINativeMethod gMotionEventMethods[] = { {"nativeGetAxisValue", "(JIII)F", (void*)android_view_MotionEvent_nativeGetAxisValue}, {"nativeTransform", "(JLandroid/graphics/Matrix;)V", (void*)android_view_MotionEvent_nativeTransform}, + {"nativeApplyTransform", "(JLandroid/graphics/Matrix;)V", + (void*)android_view_MotionEvent_nativeApplyTransform}, // --------------- @CriticalNative ------------------ diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 27f82f1b52dd..d528428a0e83 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -626,12 +626,24 @@ static void nativeSetBlurRegions(JNIEnv* env, jclass clazz, jlong transactionObj } static void nativeSetStretchEffect(JNIEnv* env, jclass clazz, jlong transactionObj, - jlong nativeObject, jfloat left, jfloat top, jfloat right, - jfloat bottom, jfloat vecX, jfloat vecY, - jfloat maxStretchAmount) { + jlong nativeObject, jfloat width, jfloat height, + jfloat vecX, jfloat vecY, + jfloat maxStretchAmountX, jfloat maxStretchAmountY, + jfloat childRelativeLeft, jfloat childRelativeTop, + jfloat childRelativeRight, jfloat childRelativeBottom) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); - SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObject); - transaction->setStretchEffect(ctrl, left, top, right, bottom, vecX, vecY, maxStretchAmount); + auto* const ctrl = reinterpret_cast<SurfaceControl*>(nativeObject); + auto stretch = StretchEffect{ + .width = width, + .height = height, + .vectorX = vecX, + .vectorY = vecY, + .maxAmountX = maxStretchAmountX, + .maxAmountY = maxStretchAmountY, + .mappedChildBounds = FloatRect( + childRelativeLeft, childRelativeTop, childRelativeRight, childRelativeBottom) + }; + transaction->setStretchEffect(ctrl, stretch); } static void nativeSetSize(JNIEnv* env, jclass clazz, jlong transactionObj, @@ -1829,7 +1841,7 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetLayerStack }, {"nativeSetBlurRegions", "(JJ[[FI)V", (void*)nativeSetBlurRegions }, - {"nativeSetStretchEffect", "(JJFFFFFFF)V", + {"nativeSetStretchEffect", "(JJFFFFFFFFFF)V", (void*) nativeSetStretchEffect }, {"nativeSetShadowRadius", "(JJF)V", (void*)nativeSetShadowRadius }, diff --git a/core/proto/android/app/appexit_enums.proto b/core/proto/android/app/appexit_enums.proto deleted file mode 100644 index 491e1dc203b5..000000000000 --- a/core/proto/android/app/appexit_enums.proto +++ /dev/null @@ -1,240 +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. - */ - -syntax = "proto2"; -option java_multiple_files = true; - -package android.app; - -/** - * The reason code that why app process is killed. - */ -enum AppExitReasonCode { - /** - * Application process died due to unknown reason. - */ - REASON_UNKNOWN = 0; - - /** - * Application process exit normally by itself, for example, - * via {@link android.os.Process#exit}; {@link #status} will specify the exit code. - * - * <p>Applications should normally not do this, as the system has a better knowledge - * in terms of process management.</p> - */ - REASON_EXIT_SELF = 1; - - /** - * Application process died due to the result of an OS signal; for example, - * {@link android.os.Process#SIGNAL_KILL}; {@link #status} will specify the signum. - */ - REASON_SIGNALED = 2; - - /** - * Application process was killed by the system low memory killer, meaning the system was - * under memory pressure at the time of kill. - */ - REASON_LOW_MEMORY = 3; - - /** - * Application process died because of an unhandled exception in Java code. - */ - REASON_CRASH = 4; - - /** - * Application process died because it's crashed due to a native code crash. - */ - REASON_CRASH_NATIVE = 5; - - /** - * Application process was killed due to being unresponsive (ANR). - */ - REASON_ANR = 6; - - /** - * Application process was killed because it took too long to attach to the system - * during the start. - */ - REASON_INITIALIZATION_FAILURE = 7; - - /** - * Application process was killed because of initialization failure, - * for example, it took too long to attach to the system during the start, - * or there was an error during initialization. - */ - REASON_PERMISSION_CHANGE = 8; - - /** - * Application process was killed by the activity manager due to excessive resource usage. - */ - REASON_EXCESSIVE_RESOURCE_USAGE = 9; - - /** - * Application process was killed because of the user request, for example, - * user clicked the "Force stop" button of the application in the Settings, - * or swiped away the application from Recents. - */ - REASON_USER_REQUESTED = 10; - - /** - * Application process was killed, because the user they are running as on devices - * with mutlple users, was stopped. - */ - REASON_USER_STOPPED = 11; - - /** - * Application process was killed because its dependency was going away, for example, - * a stable content provider connection's client will be killed if the provider is killed. - */ - REASON_DEPENDENCY_DIED = 12; - - /** - * Application process was killed by the system for various other reasons, - * for example, the application package got disabled by the user; - * {@link #description} will specify the cause given by the system. - */ - REASON_OTHER = 13; -} - -/** - * The supplemental reason code that why app process is killed - */ -enum AppExitSubReasonCode { - /** - * Application process kills subReason is unknown. - */ - SUBREASON_UNKNOWN = 0; - - /** - * Application process was killed because user quit it on the "wait for debugger" dialog. - */ - SUBREASON_WAIT_FOR_DEBUGGER = 1; - - /** - * Application process was killed by the activity manager because there were too many cached - * processes. - */ - SUBREASON_TOO_MANY_CACHED = 2; - - /** - * Application process was killed by the activity manager because there were too many empty - * processes. - */ - SUBREASON_TOO_MANY_EMPTY = 3; - - /** - * Application process was killed by the activity manager because there were too many cached - * processes and this process had been in empty state for a long time. - */ - SUBREASON_TRIM_EMPTY = 4; - - /** - * Application process was killed by the activity manager because system was on - * memory pressure and this process took large amount of cached memory. - */ - SUBREASON_LARGE_CACHED = 5; - - /** - * Application process was killed by the activity manager because the system was on - * low memory pressure for a significant amount of time since last idle. - */ - SUBREASON_MEMORY_PRESSURE = 6; - - /** - * Application process was killed by the activity manager due to excessive CPU usage. - */ - SUBREASON_EXCESSIVE_CPU = 7; - - /** - * System update has done (so the system update process should be killed). - */ - SUBREASON_SYSTEM_UPDATE_DONE = 8; - - /** - * Kill all foreground services, for now it only occurs when enabling the quiet - * mode for the managed profile. - */ - SUBREASON_KILL_ALL_FG = 9; - - /** - * All background processes except certain ones were killed, for now it only occurs - * when the density of the default display is changed. - */ - SUBREASON_KILL_ALL_BG_EXCEPT = 10; - - /** - * The process associated with the UID was explicitly killed, for example, - * it could be because of permission changes. - */ - SUBREASON_KILL_UID = 11; - - /** - * The process was explicitly killed with its PID, typically because of - * the low memory for surfaces. - */ - SUBREASON_KILL_PID = 12; - - /** - * The start of the process was invalid. - */ - SUBREASON_INVALID_START = 13; - - /** - * The process was killed because it's in an invalid state, typically - * it's triggered from SHELL. - */ - SUBREASON_INVALID_STATE = 14; - - /** - * The process was killed when it's imperceptible to user, because it was - * in a bad state. - */ - SUBREASON_IMPERCEPTIBLE = 15; - - /** - * The process was killed because it's being moved out from LRU list. - */ - SUBREASON_REMOVE_LRU = 16; - - /** - * The process was killed because it's isolated and was in a cached state. - */ - SUBREASON_ISOLATED_NOT_NEEDED = 17; -} - -/** - * The relative importance level that the system places on a process. - * Keep sync with the definitions in - * {@link android.app.ActivityManager.RunningAppProcessInfo} - */ -enum Importance { - option allow_alias = true; - - IMPORTANCE_FOREGROUND = 100; - IMPORTANCE_FOREGROUND_SERVICE = 125; - IMPORTANCE_TOP_SLEEPING_PRE_28 = 150; - IMPORTANCE_VISIBLE = 200; - IMPORTANCE_PERCEPTIBLE_PRE_26 = 130; - IMPORTANCE_PERCEPTIBLE = 230; - IMPORTANCE_CANT_SAVE_STATE_PRE_26 = 170; - IMPORTANCE_SERVICE = 300; - IMPORTANCE_TOP_SLEEPING = 325; - IMPORTANCE_CANT_SAVE_STATE = 350; - IMPORTANCE_CACHED = 400; - IMPORTANCE_BACKGROUND = 400; - IMPORTANCE_EMPTY = 500; - IMPORTANCE_GONE = 1000; -} diff --git a/core/proto/android/app/appexitinfo.proto b/core/proto/android/app/appexitinfo.proto index cc3d367ab837..3abc462671a2 100644 --- a/core/proto/android/app/appexitinfo.proto +++ b/core/proto/android/app/appexitinfo.proto @@ -20,7 +20,7 @@ option java_multiple_files = true; package android.app; import "frameworks/base/core/proto/android/privacy.proto"; -import "frameworks/base/core/proto/android/app/appexit_enums.proto"; +import "frameworks/proto_logging/stats/enums/app/enums.proto"; /** * An android.app.ApplicationExitInfo object. diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 4b828ba4cb02..ffb8d1daac90 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -410,6 +410,8 @@ <protected-broadcast android:name="android.net.wifi.p2p.action.WIFI_P2P_PERSISTENT_GROUPS_CHANGED" /> <protected-broadcast android:name="android.net.conn.TETHER_STATE_CHANGED" /> <protected-broadcast android:name="android.net.conn.INET_CONDITION_ACTION" /> + <!-- This broadcast is no longer sent in S but it should stay protected to avoid third party + apps broadcasting this and confusing old system apps that may not have been updated. --> <protected-broadcast android:name="android.net.conn.NETWORK_CONDITIONS_MEASURED" /> <protected-broadcast android:name="android.net.ConnectivityService.action.PKT_CNT_SAMPLE_INTERVAL_ELAPSED" /> @@ -694,6 +696,8 @@ <protected-broadcast android:name="android.scheduling.action.REBOOT_READY" /> <protected-broadcast android:name="android.app.action.DEVICE_POLICY_CONSTANTS_CHANGED" /> + <protected-broadcast android:name="android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED" /> + <!-- ====================================================================== --> <!-- RUNTIME PERMISSIONS --> <!-- ====================================================================== --> diff --git a/core/res/remote_color_resources_res/values/colors.xml b/core/res/remote_color_resources_res/values/colors.xml index e4bcae43a0e5..aff3a9592645 100644 --- a/core/res/remote_color_resources_res/values/colors.xml +++ b/core/res/remote_color_resources_res/values/colors.xml @@ -2,6 +2,7 @@ <resources> <!-- Note: the values of the colors doesn't really matter (they will always be overwritten before used), but they help a lot debugging, to find out which color is where in the ARSC file. --> <color name="system_accent1_0">#ffffff</color> + <color name="system_accent1_10">#91fff4</color> <color name="system_accent1_50">#91fff4</color> <color name="system_accent1_100">#83f6e5</color> <color name="system_accent1_200">#65d9c9</color> @@ -14,6 +15,7 @@ <color name="system_accent1_900">#00271e</color> <color name="system_accent1_1000">#000000</color> <color name="system_accent2_0">#ffffff</color> + <color name="system_accent2_10">#ffffff</color> <color name="system_accent2_50">#91fff4</color> <color name="system_accent2_100">#83f6e5</color> <color name="system_accent2_200">#65d9c9</color> @@ -26,6 +28,7 @@ <color name="system_accent2_900">#00271e</color> <color name="system_accent2_1000">#000000</color> <color name="system_accent3_0">#ffffff</color> + <color name="system_accent3_10">#91fff4</color> <color name="system_accent3_50">#91fff4</color> <color name="system_accent3_100">#83f6e5</color> <color name="system_accent3_200">#65d9c9</color> @@ -38,6 +41,7 @@ <color name="system_accent3_900">#00271e</color> <color name="system_accent3_1000">#000000</color> <color name="system_neutral1_0">#ffffff</color> + <color name="system_neutral1_10">#f0f0f0</color> <color name="system_neutral1_50">#f0f0f0</color> <color name="system_neutral1_100">#e2e2e2</color> <color name="system_neutral1_200">#c6c6c6</color> @@ -50,6 +54,7 @@ <color name="system_neutral1_900">#1b1b1b</color> <color name="system_neutral1_1000">#000000</color> <color name="system_neutral2_0">#ffffff</color> + <color name="system_neutral2_10">#f0f0f0</color> <color name="system_neutral2_50">#f0f0f0</color> <color name="system_neutral2_100">#e2e2e2</color> <color name="system_neutral2_200">#c6c6c6</color> diff --git a/core/res/remote_color_resources_res/values/public.xml b/core/res/remote_color_resources_res/values/public.xml index 9616628ac693..4b0a89202ad1 100644 --- a/core/res/remote_color_resources_res/values/public.xml +++ b/core/res/remote_color_resources_res/values/public.xml @@ -2,6 +2,7 @@ <resources> <public-group type="color" first-id="0x0106001d"> <public name="system_accent1_0" /> + <public name="system_accent1_10" /> <public name="system_accent1_50" /> <public name="system_accent1_100" /> <public name="system_accent1_200" /> @@ -14,6 +15,7 @@ <public name="system_accent1_900" /> <public name="system_accent1_1000" /> <public name="system_accent2_0" /> + <public name="system_accent2_10" /> <public name="system_accent2_50" /> <public name="system_accent2_100" /> <public name="system_accent2_200" /> @@ -26,6 +28,7 @@ <public name="system_accent2_900" /> <public name="system_accent2_1000" /> <public name="system_accent3_0" /> + <public name="system_accent3_10" /> <public name="system_accent3_50" /> <public name="system_accent3_100" /> <public name="system_accent3_200" /> @@ -38,6 +41,7 @@ <public name="system_accent3_900" /> <public name="system_accent3_1000" /> <public name="system_neutral1_0" /> + <public name="system_neutral1_10" /> <public name="system_neutral1_50" /> <public name="system_neutral1_100" /> <public name="system_neutral1_200" /> @@ -50,6 +54,7 @@ <public name="system_neutral1_900" /> <public name="system_neutral1_1000" /> <public name="system_neutral2_0" /> + <public name="system_neutral2_10" /> <public name="system_neutral2_50" /> <public name="system_neutral2_100" /> <public name="system_neutral2_200" /> diff --git a/core/res/res/drawable/ic_accessibility_one_handed.xml b/core/res/res/drawable/ic_accessibility_one_handed.xml new file mode 100644 index 000000000000..0a469ba731ee --- /dev/null +++ b/core/res/res/drawable/ic_accessibility_one_handed.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> +<background android:drawable="@color/accessibility_feature_background" /> +<foreground> + <inset + android:drawable="@drawable/ic_accessibility_one_handed_foreground" + android:inset="@dimen/accessibility_icon_foreground_padding_ratio" /> +</foreground> +</adaptive-icon>
\ No newline at end of file diff --git a/core/res/res/drawable/ic_accessibility_one_handed_foreground.xml b/core/res/res/drawable/ic_accessibility_one_handed_foreground.xml new file mode 100644 index 000000000000..18e56187efb3 --- /dev/null +++ b/core/res/res/drawable/ic_accessibility_one_handed_foreground.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="18dp" + android:height="18dp" + android:viewportWidth="24" + android:viewportHeight="24"> + + <path android:fillColor="@android:color/white" + android:pathData="M4.64169 3C3.88567 3 3.27271 3.61296 3.27271 4.36898V18.4011C3.27271 19.154 3.88875 19.7701 4.64169 19.7701H12.5339C12.5339 19.7701 12.5425 18.0588 11.2324 18.0588H6.01067C5.44597 18.0588 4.98393 17.5968 4.98393 17.0321V5.73797C4.98393 5.17326 5.44597 4.71123 6.01067 4.71123H15.9358C16.5005 4.71123 16.9625 5.17326 16.9625 5.73797V9.84492C16.9625 10.9651 16.4899 12.5952 15.5936 13.2674L9.77538 9.16043C8.58505 10.425 8.88177 11.705 10.1176 12.9251L13.1978 16.0053C13.1978 16.0053 13.3231 17.4572 13.5401 18.0588C14.2034 19.8984 16.2781 20.7968 16.2781 20.7968H19.231H19.2967C20.0835 20.7968 20.7273 20.153 20.7273 19.3662V12.2543L18.9441 4.06781C18.7662 3.23718 18.4068 3 17.8729 3H4.64169Z"/> +</vector>
\ No newline at end of file diff --git a/core/res/res/layout/notification_template_conversation_icon_container.xml b/core/res/res/layout/notification_template_conversation_icon_container.xml index a88ff0d104a6..0438dc5b5c81 100644 --- a/core/res/res/layout/notification_template_conversation_icon_container.xml +++ b/core/res/res/layout/notification_template_conversation_icon_container.xml @@ -36,11 +36,14 @@ android:layout_gravity="top|center_horizontal" > - <!-- Big icon: 52x52, 12dp padding left + top, 16dp padding right --> + <!-- Big icon: 48x48, 12dp padding top, 16dp padding sides --> <com.android.internal.widget.CachingIconView android:id="@+id/conversation_icon" android:layout_width="@dimen/conversation_avatar_size" android:layout_height="@dimen/conversation_avatar_size" + android:layout_marginLeft="@dimen/conversation_badge_protrusion" + android:layout_marginRight="@dimen/conversation_badge_protrusion" + android:layout_marginBottom="@dimen/conversation_badge_protrusion" android:scaleType="centerCrop" android:importantForAccessibility="no" /> @@ -49,6 +52,9 @@ android:layout="@layout/conversation_face_pile_layout" android:layout_width="@dimen/conversation_avatar_size" android:layout_height="@dimen/conversation_avatar_size" + android:layout_marginLeft="@dimen/conversation_badge_protrusion" + android:layout_marginRight="@dimen/conversation_badge_protrusion" + android:layout_marginBottom="@dimen/conversation_badge_protrusion" android:id="@+id/conversation_face_pile" /> @@ -56,8 +62,7 @@ android:id="@+id/conversation_icon_badge" android:layout_width="@dimen/conversation_icon_size_badged" android:layout_height="@dimen/conversation_icon_size_badged" - android:layout_marginLeft="@dimen/conversation_badge_side_margin" - android:layout_marginTop="@dimen/conversation_badge_side_margin" + android:layout_gravity="end|bottom" android:clipChildren="false" android:clipToPadding="false" > diff --git a/core/res/res/layout/notification_template_material_messaging.xml b/core/res/res/layout/notification_template_material_messaging.xml index 3564f9755a5d..eb61ea45b4df 100644 --- a/core/res/res/layout/notification_template_material_messaging.xml +++ b/core/res/res/layout/notification_template_material_messaging.xml @@ -199,13 +199,11 @@ android:id="@+id/notification_action_list_margin_target" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="-20dp" android:clipChildren="false" android:orientation="vertical"> <include layout="@layout/notification_template_smart_reply_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/notification_content_margin" android:layout_marginStart="@dimen/notification_content_margin_start" android:layout_marginEnd="@dimen/notification_content_margin_end" /> <include layout="@layout/notification_material_action_list" /> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 42e520352f43..da2ea3e110ca 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teks na knipbord gekopieër."</string> <string name="copied" msgid="4675902854553014676">"Gekopieer"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het uit <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> geplak"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het uit knipbord geplak"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het teks geplak wat jy gekopieer het"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het \'n prent geplak wat jy gekopieer het"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> het inhoud geplak wat jy gekopieer het"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Berei tans <xliff:g id="APPNAME">%1$s</xliff:g> voor."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Begin programme."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Voltooi herlaai."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> loop"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tik om na die speletjie terug te keer"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Kies speletjie"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gebruik kortpad"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Kleuromkering"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Kleurkorreksie"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra donker"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Het volumesleutels ingehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aangeskakel."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Het volumesleutels ingehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> is afgeskakel"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Opgedateer deur jou administrateur"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Uitgevee deur jou administrateur"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Batterybespaarder skakel Donkertema aan en beperk of skakel agtergrondaktiwiteit, sommige visuele effekte en sekere kenmerke af.\n\n"<annotation id="url">"Kom meer te wete"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Batterybespaarder skakel Donkertema aan en beperk of skakel agtergrondaktiwiteit, sommige visuele effekte en sekere kenmerke af."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Databespaarder verhoed sommige programme om data in die agtergrond te stuur of te aanvaar om datagebruik te help verminder. \'n Program wat jy tans gebruik kan by data ingaan, maar sal dit dalk minder gereeld doen. Dit kan byvoorbeeld beteken dat prente nie wys voordat jy op hulle tik nie."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Skakel Databespaarder aan?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Skakel aan"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is nie nou onmiddellik beskikbaar nie. Dit word bestuur deur <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Kom meer te wete"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Hervat program"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Skakel werkprofiel aan?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Jou werkprogramme, kennisgewings, data en ander werkprofielkenmerke sal aangeskakel word"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Skakel aan"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Program is nie beskikbaar nie"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is nie op die oomblik beskikbaar nie."</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index a091b5d0e8d2..c1a8b1e47f34 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ፅሁፍ ወደ ቅንጥብ ሰሌዳ ተገልብጧል።"</string> <string name="copied" msgid="4675902854553014676">"ተቀድቷል"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ከ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ተለጥፏል"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ከቅንጣብ ሰሌዳ ተለጥፏል"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ጽሑፍ ለጥፏል"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ምስል ለጥፏል"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> እርስዎ የቀዱትን ይዘት ለጥፏል"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>ን ማዘጋጀት።"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"መተግበሪያዎችን በማስጀመር ላይ፡፡"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"አጨራረስ ማስነሻ፡፡"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> አሂድ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ወደ ጨዋታ ለመመለስ መታ ያድርጉ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ጨዋታ ይምረጡ"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"አቋራጭ ይጠቀሙ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ተቃራኒ ቀለም"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"የቀለም ማስተካከያ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ተጨማሪ ደብዛዛ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> በርቷል።"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ጠፍተዋል።"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"በእርስዎ አስተዳዳሪ ተዘምኗል"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"በእርስዎ አስተዳዳሪ ተሰርዟል"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"እሺ"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"የባትሪ ኃይል ቆጣቢ ጠቆር ያለ ገጽታን ያበራል እና የጀርባ እንቅስቃሴን፣ አንዳንድ ምስላዊ ተጽዕኖዎችን እና የተወሰኑ ባህሪያትን ይገድባል ወይም ያጠፋል።\n\n"<annotation id="url">"የበለጠ ለመረዳት"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"የባትሪ ኃይል ቆጣቢ ጠቆር ያለ ገጽታን ያበራል እና የጀርባ እንቅስቃሴን፣ አንዳንድ ምስላዊ ተጽዕኖዎችን እና የተወሰኑ ባህሪያትን ይገድባል ወይም ያጠፋል።"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"የውሂብ አጠቃቀም እንዲቀንስ ለማገዝ ውሂብ ቆጣቢ አንዳንድ መተግበሪያዎች ከበስተጀርባ ሆነው ውሂብ እንዳይልኩ ወይም እንዳይቀበሉ ይከለክላቸዋል። በአሁኑ ጊዜ እየተጠቀሙበት ያለ መተግበሪያ ውሂብ ሊደርስ ይችላል፣ ነገር ግን ባነሰ ተደጋጋሚነት ሊሆን ይችላል። ይሄ ማለት ለምሳሌ ምስሎችን መታ እስኪያደርጓቸው ድረስ ላይታዩ ይችላሉ ማለት ነው።"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ውሂብ ቆጣቢ ይጥፋ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"አብራ"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> አሁን ላይ አይገኝም። በ<xliff:g id="APP_NAME_1">%2$s</xliff:g> የሚተዳደር ነው።"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"የበለጠ ለመረዳት"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"መተግበሪያን ላፍታ እንዳይቆም አድርግ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"የስራ መገለጫ ይብራ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"የእርስዎ የስራ መተግበሪያዎች፣ ማሳወቂያዎች፣ ውሂብ እና ሌሎች የስራ መገለጫ ባህሪያት ይበራሉ"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"አብራ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"መተግበሪያ አይገኝም"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> አሁን አይገኝም።"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 68b0aba0e66c..c2be67cfcc02 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -1034,7 +1034,8 @@ <string name="text_copied" msgid="2531420577879738860">"تم نسخ النص إلى الحافظة."</string> <string name="copied" msgid="4675902854553014676">"تم النسخ."</string> <string name="pasted_from_app" msgid="5627698450808256545">"تم لصق محتوى في <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> من <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"تم لصق محتوى في <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> من الحافظة."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> النص الذي نسخته."</string> <string name="pasted_image" msgid="4729097394781491022">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> الصورة التي نسختها."</string> <string name="pasted_content" msgid="646276353060777131">"لصق تطبيق <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> المحتوى الذي نسخته."</string> @@ -1339,6 +1340,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"جارٍ تحضير <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"بدء التطبيقات."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"جارٍ إعادة التشغيل."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> يعمل"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"انقر للعودة إلى اللعبة"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"اختيار اللعبة"</string> @@ -1797,6 +1806,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استخدام الاختصار"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"قلب الألوان"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"تصحيح الألوان"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"زيادة تعتيم الشاشة"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم تفعيل <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم إيقاف <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1956,8 +1967,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"تم التحديث بواسطة المشرف"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"تم الحذف بواسطة المشرف"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"حسنًا"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"يؤدي استخدام خيار \"توفير شحن البطارية\" إلى تفعيل \"المظهر الداكن\" وتقييد أو إيقاف الأنشطة في الخلفية وبعض التأثيرات المرئية وميزات معيّنة.\n\n"<annotation id="url">"مزيد من المعلومات"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"يؤدي استخدام خيار \"توفير شحن البطارية\" إلى تفعيل \"المظهر الداكن\" وتقييد أو إيقاف الأنشطة في الخلفية وبعض التأثيرات المرئية وميزات معيّنة."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"للمساعدة في خفض استخدام البيانات، تمنع ميزة \"توفير البيانات\" بعض التطبيقات من إرسال البيانات وتلقّيها في الخلفية. يمكن للتطبيقات المتاحة لديك الآن استخدام البيانات، ولكن لا يمكنها الإكثار من ذلك. وهذا يعني أن الصور مثلاً لا تظهر حتى تنقر عليها."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"هل تريد تفعيل توفير البيانات؟"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"تفعيل"</string> @@ -2096,8 +2109,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"التطبيق <xliff:g id="APP_NAME_0">%1$s</xliff:g> غير متاح الآن، وهو مُدار بواسطة <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"مزيد من المعلومات"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"استئناف تشغيل التطبيق"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"هل تريد تفعيل الملف الشخصي للعمل؟"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"سيتم تفعيل تطبيقات العمل التي تستخدمها والإشعارات والبيانات وغيرها من ميزات الملف الشخصي للعمل"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"تفعيل"</string> <string name="app_blocked_title" msgid="7353262160455028160">"التطبيق غير متاح"</string> <string name="app_blocked_message" msgid="542972921087873023">"تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> غير متاح الآن."</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index ff07d9b7ad7b..fa5f8e464a26 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ক্লিপব\'র্ডলৈ বাৰ্তা প্ৰতিলিপি কৰা হ’ল।"</string> <string name="copied" msgid="4675902854553014676">"প্ৰতিলিপি কৰা হ’ল"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>ৰ পৰা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> পে’ষ্ট কৰা হৈছে"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ক্লিপব’ৰ্ডৰ পৰা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> পে’ষ্ট কৰা হৈছে"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা সমল পে’ষ্ট কৰিছে"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা এটা প্ৰতিচ্ছবি পে’ষ্ট কৰিছে"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>এ আপুনি প্ৰতিলিপি কৰা সমল পে’ষ্ট কৰিছে"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>সাজু কৰি থকা হৈছে।"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"আৰম্ভ হৈ থকা এপসমূহ।"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"বুট কাৰ্য সমাপ্ত কৰিছে।"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> চলি আছে"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"গেইমলৈ উভতি যাওক"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"গেইম বাছনি কৰক"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শ্বৰ্টকাট ব্যৱহাৰ কৰক"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ৰং বিপৰীতকৰণ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ৰং শুধৰণি"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"এক্সট্ৰা ডিম"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কীসমূহ ধৰি ৰাখক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অন কৰা হ\'ল।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধৰি ৰাখিছিল। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অফ কৰা হ\'ল।"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"আপোনাৰ প্ৰশাসকে আপেডট কৰিছে"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"আপোনাৰ প্ৰশাসকে মচিছে"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ঠিক আছে"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"বেটাৰী সঞ্চয়কাৰীয়ে গাঢ় ৰঙৰ থীম অন কৰে আৰু নেপথ্যৰ কাৰ্যকলাপ, কিছুমান ভিজুৱেল ইফেক্ট আৰু নিৰ্দিষ্ট কিছুমান সুবিধা সীমিত অথবা অফ কৰে।\n\n"<annotation id="url">"অধিক জানক"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"বেটাৰী সঞ্চয়কাৰীয়ে গাঢ় ৰঙৰ থীম অন কৰে আৰু নেপথ্যৰ কাৰ্যকলাপ, কিছুমান ভিজুৱেল ইফেক্ট আৰু নিৰ্দিষ্ট কিছুমান সুবিধা সীমিত অথবা অফ কৰে।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ডেটা ব্য়ৱহাৰৰ হ্ৰাস কৰিবলৈ ডেটা সঞ্চয়কাৰীয়ে কিছুমান এপক নেপথ্য়ত ডেটা প্ৰেৰণ বা সংগ্ৰহ কৰাত বাধা প্ৰদান কৰে। আপুনি বৰ্তমান ব্য়ৱহাৰ কৰি থকা এটা এপে ডেটা এক্সেছ কৰিব পাৰে, কিন্তু সঘনাই এক্সেছ কৰিব নোৱাৰিব পাৰে। ইয়াৰ অৰ্থ উদাহৰণস্বৰূপে এয়া হ\'ব পাৰে যে, আপুনি নিটিপা পর্যন্ত প্ৰতিচ্ছবিসমূহ দেখুওৱা নহ’ব।"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ডেটা সঞ্চয়কাৰী অন কৰিবনে?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"অন কৰক"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"এই মুহূৰ্তত <xliff:g id="APP_NAME_0">%1$s</xliff:g> উপলব্ধ নহয়। ইয়াক <xliff:g id="APP_NAME_1">%2$s</xliff:g>এ পৰিচালনা কৰে।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"অধিক জানক"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"এপ্ আনপজ কৰক"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"কৰ্মস্থানৰ প্ৰ\'ফাইল অন কৰিবনে?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"আপোনাৰ কৰ্মস্থানৰ এপসমূহ, জাননীসমূহ, ডেটা আৰু কৰ্মস্থানৰ প্ৰ\'ফাইলৰ অইন সুবিধাসমূহ অন কৰা হ\'ব"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"অন কৰক"</string> <string name="app_blocked_title" msgid="7353262160455028160">"এপ্টো উপলব্ধ নহয়"</string> <string name="app_blocked_message" msgid="542972921087873023">"এই মুহূৰ্তত <xliff:g id="APP_NAME">%1$s</xliff:g> উপলব্ধ নহয়।"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index ce42ecb77dbe..e8abac1f039c 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Mətn panoya kopyalandı."</string> <string name="copied" msgid="4675902854553014676">"Kopyalandı"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> tətbiqindən əlavə edilib"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> mübadilə buferindən əlavə edilib"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız mətni əlavə etdi"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız şəkli əlavə etdi"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kopyaladığınız kontenti əlavə etdi"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> proqramının hazırlanması."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Tətbiqlər başladılır."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Yükləmə başa çatır."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> çalışır"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Oyuna qayıtmaq üçün klikləyin"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Oyun seçin"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Qısayol İstifadə edin"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Rəng İnversiyası"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Rəng korreksiyası"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Əlavə qaraltma"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Səs səviyyəsi düymələrinə basıb saxlayın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktiv edildi."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Səs səviyyəsi düymələrinə basılaraq saxlanıb. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> deaktiv edilib."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Admin tərəfindən yeniləndi"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Admin tərəfindən silindi"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Enerjiyə Qənaət Qaranlıq temanı aktiv edir, arxa fondakı fəaliyyətlər, bəzi vizual effektlər və müəyyən funksiyaları məhdudlaşdırır və ya deaktiv edir.\n\n"<annotation id="url">"Ətraflı məlumat"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Enerjiyə Qənaət Qaranlıq temanı aktiv edir, arxa fondakı fəaliyyətlər, bəzi vizual effektlər və müəyyən funksiyaları məhdudlaşdırır və ya deaktiv edir."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Mobil interneti qənaətlə işlətmək məqsədilə Data Qanaəti bəzi tətbiqlərin fonda data göndərməsinin və qəbulunun qarşısını alır. Hazırda işlətdiyiniz tətbiq nisbətən az müntəzəmliklə data istifadə edə bilər. Örnək olaraq bu, o deməkdir ki, şəkil fayllarına toxunmadıqca onlar açılmayacaq."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Trafikə qənaət edilsin?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivləşdirin"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> hazırda əlçatan deyil. Bunu <xliff:g id="APP_NAME_1">%2$s</xliff:g> idarə edir."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Ətraflı məlumat"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Tətbiqi davam etdirin"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"İş profili aktiv edilsin?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"İş tətbiqləri, bildirişləri, data və digər iş profili funksiyaları aktiv ediləcək"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivləşdirin"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Tətbiq əlçatan deyil"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> hazırda əlçatan deyil."</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 3d47fcfda631..b682a1629404 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -1025,7 +1025,8 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst je kopiran u privremenu memoriju."</string> <string name="copied" msgid="4675902854553014676">"Kopirano je"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepila podatke iz aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> nalepila podatke iz privremene memorije"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepila tekst koji ste kopirali"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepila sliku koju ste kopirali"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacija<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je nalepila sadržaj koji ste kopirali"</string> @@ -1279,6 +1280,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Priprema se <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Pokretanje aplikacija."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Završavanje pokretanja."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Aplikacija <xliff:g id="APP">%1$s</xliff:g> je pokrenuta"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dodirnite da biste se vratili u igru"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Odaberite igru"</string> @@ -1731,6 +1740,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcija boja"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjeno"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string> @@ -1887,8 +1897,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Potvrdi"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizuelne efekte i određene funkcije.\n\n"<annotation id="url">"Saznajte više"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizuelne efekte i određene funkcije."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjila potrošnja podataka, Ušteda podataka sprečava neke aplikacije da šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može da pristupa podacima, ali će to činiti ređe. Na primer, slike se neće prikazivati dok ih ne dodirnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Želite da uključite Uštedu podataka?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string> @@ -2000,8 +2012,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno nije dostupna. <xliff:g id="APP_NAME_1">%2$s</xliff:g> upravlja dostupnošću."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Opozovi pauziranje aplikacije"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Da uključimo poslovni profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Uključiće se poslovne aplikacije, obaveštenja, podaci i druge funkcije poslovnog profila"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno nije dostupna."</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 13c222e15bc1..9f7fc35e3699 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Тэкст скапіраваны ў буфер абмену."</string> <string name="copied" msgid="4675902854553014676">"Скапіравана"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Праграма \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\" была ўстаўлена з праграмы \"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>\""</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Праграма \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\" была ўстаўлена з буфера абмену"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Скапіраваны вамі тэкст устаўлены праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string> <string name="pasted_image" msgid="4729097394781491022">"Скапіраваны вамі відарыс устаўлены праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string> <string name="pasted_content" msgid="646276353060777131">"Скапіраванае вамі змесціва ўстаўлена праграмай \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\""</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Падрыхтоўка <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Запуск прыкладанняў."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Завяршэнне загрузкі."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Прыкладанне \"<xliff:g id="APP">%1$s</xliff:g>\" запушчанае"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Націсніце, каб вярнуцца да гульні"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Выберыце гульню"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Выкарыстоўваць камбінацыю хуткага доступу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія колераў"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Карэкцыя колераў"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дадатковае памяншэнне яркасці"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Клавішы гучнасці ўтрымліваліся націснутымі. Уключана служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Клавішы гучнасці ўтрымліваліся націснутымі. Служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" выключана."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Абноўлены вашым адміністратарам"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Выдалены вашым адміністратарам"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ОК"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"У рэжыме эканоміі зараду ўключаецца цёмная тэма і выключаюцца ці абмяжоўваюцца дзеянні ў фонавым рэжыме, некаторыя візуальныя эфекты і пэўныя функцыі.\n\n"<annotation id="url">"Даведацца больш"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"У рэжыме эканоміі зараду ўключаецца цёмная тэма і выключаюцца ці абмяжоўваюцца дзеянні ў фонавым рэжыме, некаторыя візуальныя эфекты і пэўныя функцыі."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"У рэжыме \"Эканомія трафіка\" фонавая перадача для некаторых праграмам адключана. Праграма, якую вы зараз выкарыстоўваеце, можа атрымліваць доступ да даных, але радзей, чым звычайна. Напрыклад, відарысы могуць не загружацца, пакуль вы не націсніце на іх."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Уключыць Эканомію трафіка?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Уключыць"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Праграма \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" цяпер недаступная. Яна кіруецца праграмай \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\"."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Даведацца больш"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Скасаваць прыпыненне для праграмы"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Уключыць працоўны профіль?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Будуць уключаны вашы працоўныя праграмы, апавяшчэнні, даныя і іншыя функцыі працоўнага профілю"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Уключыць"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Праграма недаступная"</string> <string name="app_blocked_message" msgid="542972921087873023">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" цяпер недаступная."</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 9101727e9111..619dcb7e191a 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текстът е копиран в буферната памет."</string> <string name="copied" msgid="4675902854553014676">"Копирано"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави данни от <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави данни от буферната памет"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копиран от вас текст"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копирано от вас изображение"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> постави копирано от вас съдържание"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> се подготвя."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Приложенията се стартират."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Зареждането завършва."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> се изпълнява"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Докоснете, за да се върнете към играта"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Избиране на игра"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Използване на пряк път"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инвертиране на цветовете"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Коригиране на цветовете"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим за работа с една ръка"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Допълнително затъмняване"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е включена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е изключена."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Актуализирано от администратора ви"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Изтрито от администратора ви"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ОК"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Режимът за запазване на батерията включва тъмната тема и ограничава или изключва активността на заден план, някои визуални ефекти и определени функции.\n\n"<annotation id="url">"Научете повече"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Режимът за запазване на батерията включва тъмната тема и ограничава или изключва активността на заден план, някои визуални ефекти и определени функции."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"С цел намаляване на преноса на данни функцията за икономия на данни не позволява на някои приложения да изпращат или получават данни на заден план. Понастоящем използвано от вас приложение може да използва данни, но по-рядко. Това например може да означава, че изображенията не се показват, докато не ги докоснете."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Включване на „Икономия на данни“?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Включване"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"В момента няма достъп до <xliff:g id="APP_NAME_0">%1$s</xliff:g>. Това се управлява от <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Научете повече"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Отмяна на паузата за приложението"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Вкл. на служ. потр. профил?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Служебните ви приложения, известия и данни, както и другите функции на служебния потребителски профил ще бъдат включени"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Включване"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Приложението не е достъпно"</string> <string name="app_blocked_message" msgid="542972921087873023">"В момента няма достъп до <xliff:g id="APP_NAME">%1$s</xliff:g>."</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index a065f19e0b44..2999945c3e64 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ক্লিপবোর্ডে পাঠ্য অনুলিপি করা হয়েছে৷"</string> <string name="copied" msgid="4675902854553014676">"কপি করা হয়েছে"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> থেকে কপি করা ডেটা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-এ পেস্ট করা হয়েছে"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ক্লিপবোর্ডের ডেটা <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-এ পেস্ট করা হয়েছে"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"আপনার কপি করা টেক্সট <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string> <string name="pasted_image" msgid="4729097394781491022">"আপনার কপি করা ছবি <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string> <string name="pasted_content" msgid="646276353060777131">"আপনার কপি করা কন্টেন্ট <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> অ্যাপ পেস্ট করেছে"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> প্রস্তুত করা হচ্ছে৷"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"অ্যাপ্লিকেশানগুলি শুরু করা হচ্ছে৷"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"চালু করা সম্পূর্ণ হচ্ছে৷"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> চলছে"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"গেমে ফিরে আসতে ট্যাপ করুন"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"গেম বেছে নিন"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শর্টকাট ব্যবহার করুন"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"রঙ উল্টানো"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"রঙ সংশোধন"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"অতিরিক্ত কম আলো"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> চালু করা হয়েছে।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> বন্ধ করা হয়েছে।"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"আপনার প্রশাসক আপডেট করেছেন"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"আপনার প্রশাসক মুছে দিয়েছেন"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ঠিক আছে"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ব্যাটারি সেভার ডার্ক থিম চালু করে এবং ব্যাকগ্রাউন্ড অ্যাক্টিভিটি, কিছু ভিজ্যুয়াল এফেক্ট ও নির্দিষ্ট ফিচারের ব্যবহার সীমিত করে বা বন্ধ করে দেয়।\n\n"<annotation id="url">"আরও জানুন"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ব্যাটারি সেভার ডার্ক থিম চালু করে এবং ব্যাকগ্রাউন্ড অ্যাক্টিভিটি, কিছু ভিজ্যুয়াল এফেক্ট ও নির্দিষ্ট ফিচারের ব্যবহার সীমিত করে বা বন্ধ করে দেয়।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ডেটার ব্যবহার কমাতে সহায়তা করার জন্য, ডেটা সেভার ব্যাকগ্রাউন্ডে কিছু অ্যাপ্লিকেশনকে ডেটা পাঠাতে বা গ্রহণ করতে বাধা দেয়৷ আপনি বর্তমানে এমন একটি অ্যাপ্লিকেশন ব্যবহার করছেন যেটি ডেটা অ্যাক্সেস করতে পারে, তবে সেটি কমই করে৷ এর ফলে যা হতে পারে, উদাহরণস্বরূপ, আপনি ছবির উপর ট্যাপ না করা পর্যন্ত সেগুলি দেখানো হবে না৷"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ডেটা সেভার চালু করবেন?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"চালু করুন"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> এখন উপলভ্য নয়। এই অ্যাপটিকে <xliff:g id="APP_NAME_1">%2$s</xliff:g> অ্যাপ ম্যানেজ করে।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"আরও জানুন"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"অ্যাপ আবার চালু করুন"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"অফিস প্রোফাইল চালু করবেন?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"আপনার অফিস অ্যাপ, বিজ্ঞপ্তি, ডেটা এবং অফিস প্রোফাইলের অন্যান্য বৈশিষ্ট্য চালু করা হবে"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"চালু করুন"</string> <string name="app_blocked_title" msgid="7353262160455028160">"অ্যাপ পাওয়া যাচ্ছে না"</string> <string name="app_blocked_message" msgid="542972921087873023">"এই মুহূর্তে <xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপ পাওয়া যাচ্ছে না।"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index ac455c4653a7..96cec5a6c0f5 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -1025,7 +1025,8 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međumemoriju."</string> <string name="copied" msgid="4675902854553014676">"Kopirano"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepljena iz aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepljena iz međumemorije"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopirani tekst"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopiranu sliku"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je zalijepila kopirani sadržaj"</string> @@ -1279,6 +1280,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Pripremanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Pokretanje aplikacija."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Pokretanje pri kraju."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Pokrenuta je aplikacija <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dodirnite za povratak u igru"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Odaberite igru"</string> @@ -1731,6 +1740,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Ispravka boja"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjeno"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string> @@ -1887,8 +1897,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao je vaš administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao je vaš administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Uredu"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i neke funkcije.\n\n"<annotation id="url">"Saznajte više"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Ušteda baterije uključuje Tamnu temu i ograničava ili isključuje aktivnost u pozadini, određene vizuelne efekte i neke funkcije."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Radi smanjenja prijenosa podataka, Ušteda podataka sprečava da neke aplikacije šalju ili primaju podatke u pozadini. Aplikacija koju trenutno koristite može pristupiti podacima, ali će to činiti rjeđe. Naprimjer, to može značiti da se slike ne prikazuju dok ih ne dodirnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Uključiti Uštedu podataka?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string> @@ -2000,8 +2012,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno nije dostupna. Ovim upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Ponovo aktiviraj aplikaciju"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Uključiti radni profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Uključit će se poslovne aplikacije, obavještenja, podaci i druge funkcije radnog profila"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno nije dostupna."</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index c37d77f78182..77b791176479 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Text copiat al Porta-retalls."</string> <string name="copied" msgid="4675902854553014676">"S\'ha copiat"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat dades de: <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat dades del porta-retalls"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat text que has copiat"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat una imatge que has copiat"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha enganxat contingut que has copiat"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"S\'està preparant <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"S\'estan iniciant les aplicacions."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"S\'està finalitzant l\'actualització."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> s\'està executant"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toca per tornar al joc"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Tria el joc"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilitza la drecera"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversió de colors"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correcció de color"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuació extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S\'han mantingut premudes les tecles de volum. S\'ha activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S\'han mantingut premudes les tecles de volum. S\'ha desactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualitzat per l\'administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Suprimit per l\'administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"D\'acord"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Estalvi de bateria activa el tema fosc i limita o desactiva l\'activitat en segon pla, alguns efectes visuals i determinades funcions.\n\n"<annotation id="url">"Més informació"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Estalvi de bateria activa el tema fosc i limita o desactiva l\'activitat en segon pla, alguns efectes visuals i determinades funcions."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Per reduir l\'ús de dades, la funció Economitzador de dades evita que determinades aplicacions enviïn o rebin dades en segon pla. L\'aplicació que estiguis fent servir podrà accedir a les dades, però menys sovint. Això vol dir, per exemple, que les imatges no es mostraran fins que no les toquis."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activar l\'Economitzador de dades?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activa"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no està disponible en aquests moments. Aquesta opció es gestiona a <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Més informació"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Reactiva l\'aplicació"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activar el perfil de treball?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"S\'activaran les teves aplicacions de treball, les notificacions, les dades i altres funcions del perfil de treball"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activa"</string> <string name="app_blocked_title" msgid="7353262160455028160">"L\'aplicació no està disponible"</string> <string name="app_blocked_message" msgid="542972921087873023">"Ara mateix, <xliff:g id="APP_NAME">%1$s</xliff:g> no està disponible."</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index bfcc0206cbb1..7e40710289e0 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Text byl zkopírován do schránky."</string> <string name="copied" msgid="4675902854553014676">"Zkopírováno"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila data z aplikace <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila data ze schránky"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný text"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný obrázek"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikace <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vložila zkopírovaný obsah"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Příprava aplikace <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Spouštění aplikací."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Dokončování inicializace."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Běží aplikace <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Klepnutím se vrátíte do hry"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Vyberte hru"</string> @@ -1753,6 +1762,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použít zkratku"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Převrácení barev"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Oprava barev"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jedné ruky"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Velmi tmavé"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> byla vypnuta."</string> @@ -1910,8 +1920,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Aktualizováno administrátorem"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Smazáno administrátorem"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Spořič baterie zapíná tmavý motiv a omezuje či vypíná aktivitu na pozadí, některé vizuální efekty a některé funkce.\n\n"<annotation id="url">"Další informace"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Spořič baterie zapíná tmavý motiv a omezuje či vypíná aktivitu na pozadí, některé vizuální efekty a některé funkce."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Z důvodu snížení využití dat brání spořič dat některým aplikacím v odesílání nebo příjmu dat na pozadí. Aplikace, kterou právě používáte, data přenášet může, ale může tak činit méně často. V důsledku toho se například obrázky nemusejí zobrazit, dokud na ně neklepnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Chcete zapnout Spořič dat?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Zapnout"</string> @@ -2032,8 +2044,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikace <xliff:g id="APP_NAME_0">%1$s</xliff:g> momentálně není dostupná. Tato předvolba se spravuje v aplikaci <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Další informace"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Zrušit pozastavení aplikace"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Zapnout pracovní profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Vaše pracovní aplikace, oznámení, data a ostatní funkce pracovního účtu budou zapnuty"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Zapnout"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikace není k dispozici"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> v tuto chvíli není k dispozici."</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 7e25a6345c34..697071c81385 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teksten er kopieret til udklipsholderen."</string> <string name="copied" msgid="4675902854553014676">"Kopieret"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold fra <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold fra udklipsholderen"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte tekst, som du har kopieret"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte et billede, som du har kopieret"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> indsatte indhold, som du har kopieret"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Åbner dine apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Gennemfører start."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> er i gang"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tryk for at vende tilbage til spillet"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Vælg et spil"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Brug genvej"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ombytning af farver"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Farvekorrigering"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dæmpet belysning"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er aktiveret."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er deaktiveret."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Opdateret af din administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Slettet af din administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Batterisparefunktion aktiverer Mørkt tema og begrænser eller deaktiverer aktivitet i baggrunden, nogle visuelle effekter og visse funktioner.\n\n"<annotation id="url">"Få flere oplysninger"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Batterisparefunktion aktiverer Mørkt tema og begrænser eller deaktiverer aktivitet i baggrunden, nogle visuelle effekter og visse funktioner."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Datasparefunktionen forhindrer nogle apps i at sende eller modtage data i baggrunden for at reducere dataforbruget. En app, der er i brug, kan få adgang til data, men gør det måske ikke så ofte. Dette kan f.eks. betyde, at billeder ikke vises, før du trykker på dem."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vil du aktivere Datasparefunktion?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivér"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ikke tilgængelig lige nu. Dette administreres af <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Få flere oplysninger"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Afslut pause for app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vil du aktivere din arbejdsprofil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Dine arbejdsapps, notifikationer, data og andre funktioner på din arbejdsprofil aktiveres"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Slå til"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Appen er ikke tilgængelig"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ikke tilgængelig lige nu."</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index d277a80fe440..8575a1dca26a 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -228,7 +228,7 @@ <string name="reboot_to_update_prepare" msgid="6978842143587422365">"Aktualisierung wird vorbereitet…"</string> <string name="reboot_to_update_package" msgid="4644104795527534811">"Updatepaket wird verarbeitet…"</string> <string name="reboot_to_update_reboot" msgid="4474726009984452312">"Neustart…"</string> - <string name="reboot_to_reset_title" msgid="2226229680017882787">"Auf Werkszustand zurücksetzen"</string> + <string name="reboot_to_reset_title" msgid="2226229680017882787">"Auf Werkseinstellungen zurücksetzen"</string> <string name="reboot_to_reset_message" msgid="3347690497972074356">"Neustart…"</string> <string name="shutdown_progress" msgid="5017145516412657345">"Wird heruntergefahren..."</string> <string name="shutdown_confirm" product="tablet" msgid="2872769463279602432">"Dein Tablet wird heruntergefahren."</string> @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Text in Zwischenablage kopiert."</string> <string name="copied" msgid="4675902854553014676">"Kopiert"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat etwas von <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> eingefügt"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat etwas aus der Zwischenablage eingefügt"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat einen von dir kopierten Text eingefügt"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat ein von dir kopiertes Bild eingefügt"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> hat den von dir kopierten Inhalt eingefügt"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> wird vorbereitet"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Apps werden gestartet..."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Start wird abgeschlossen..."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> läuft"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tippe, um zum Spiel zurückzukehren"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Spiel wählen"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Verknüpfung verwenden"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Farbumkehr"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Farbkorrektur"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradunkel"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist aktiviert."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist deaktiviert."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Von deinem Administrator aktualisiert"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Von deinem Administrator gelöscht"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und bestimmte Funktionen ein oder deaktiviert sie.\n\n"<annotation id="url">"Weitere Informationen"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und bestimmte Funktionen ein oder deaktiviert sie."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Der Datensparmodus verhindert zum einen, dass manche Apps im Hintergrund Daten senden oder empfangen, sodass weniger Daten verbraucht werden. Zum anderen werden die Datenzugriffe der gerade aktiven App eingeschränkt, was z. B. dazu führen kann, dass Bilder erst angetippt werden müssen, bevor sie sichtbar werden."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Datensparmodus aktivieren?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivieren"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ist momentan nicht verfügbar. Dies wird über die App \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\" verwaltet."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Weitere Informationen"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"App-Pausierung aufheben"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Arbeitsprofil aktivieren?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Deine geschäftlichen Apps, Benachrichtigungen, Daten und andere Funktionen des Arbeitsprofils werden aktiviert"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivieren"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App ist nicht verfügbar"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ist derzeit nicht verfügbar."</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 39c8dbc16196..d807093e7fb0 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Το κείμενο αντιγράφηκε στο πρόχειρο."</string> <string name="copied" msgid="4675902854553014676">"Αντιγράφηκε"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> έκανε επικόλληση από την εφαρμογή <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> έκανε επικόλληση από το πρόχειρο"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε το κείμενο που αντιγράψατε"</string> <string name="pasted_image" msgid="4729097394781491022">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε την εικόνα που αντιγράψατε"</string> <string name="pasted_content" msgid="646276353060777131">"Η εφαρμογή <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> επικόλλησε περιεχόμενο που αντιγράψατε"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Προετοιμασία <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Έναρξη εφαρμογών."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Ολοκλήρωση εκκίνησης."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Η εφαρμογή <xliff:g id="APP">%1$s</xliff:g> εκτελείται"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Πατήστε για να επιστρέψετε στο παιχνίδι"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Επιλέξτε παιχνίδι"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Χρήση συντόμευσης"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Αντιστροφή χρωμάτων"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Διόρθωση χρωμάτων"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Επιπλέον μείωση φωτεινότητας"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ενεργοποιήθηκε."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>: απενεργοποιημένο"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ενημερώθηκε από τον διαχειριστή σας"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Διαγράφηκε από τον διαχειριστή σας"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Η Εξοικονόμηση μπαταρίας ενεργοποιεί το Σκούρο θέμα και περιορίζει ή απενεργοποιεί τη δραστηριότητα στο παρασκήνιο, ορισμένα οπτικά εφέ και συγκεκριμένες λειτουργίες.\n\n"<annotation id="url">"Μάθετε περισσότερα"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Η Εξοικονόμηση μπαταρίας ενεργοποιεί το Σκούρο θέμα και περιορίζει ή απενεργοποιεί τη δραστηριότητα στο παρασκήνιο, ορισμένα οπτικά εφέ και συγκεκριμένες λειτουργίες."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Προκειμένου να μειωθεί η χρήση δεδομένων, η Εξοικονόμηση δεδομένων αποτρέπει την αποστολή ή λήψη δεδομένων από ορισμένες εφαρμογές στο παρασκήνιο. Μια εφαρμογή που χρησιμοποιείτε αυτήν τη στιγμή μπορεί να χρησιμοποιήσει δεδομένα αλλά με μικρότερη συχνότητα. Για παράδειγμα, οι εικόνες μπορεί να μην εμφανίζονται μέχρι να τις πατήσετε."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Ενεργ.Εξοικονόμησης δεδομένων;"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ενεργοποίηση"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Η εφαρμογή <xliff:g id="APP_NAME_0">%1$s</xliff:g> δεν είναι διαθέσιμη αυτήν τη στιγμή. Η διαχείριση πραγματοποιείται από την εφαρμογή <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Μάθετε περισσότερα"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Κατάργηση παύσης εφαρμογής"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ενεργοποίηση προφίλ εργασίας;"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Οι εφαρμογές, οι ειδοποιήσεις και τα δεδομένα εργασίας σας, καθώς και άλλες λειτουργίες του προφίλ εργασίας, θα ενεργοποιηθούν"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ενεργοποίηση"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Η εφαρμογή δεν είναι διαθέσιμη"</string> <string name="app_blocked_message" msgid="542972921087873023">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν είναι διαθέσιμη αυτήν τη στιγμή."</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index f8627fcff5ca..2246e95e2832 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features.\n\n"<annotation id="url">"Learn more"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections.\n\n"<annotation id="url">"Learn more"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you\'re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index d569b46db64c..33c6d71883a2 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features.\n\n"<annotation id="url">"Learn more"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections.\n\n"<annotation id="url">"Learn more"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you\'re currently using can access data, but may do so less frequently. This may mean, for example, that images don\'t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 6024d983cb73..a08ad1d8a1cc 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Colour correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features.\n\n"<annotation id="url">"Learn more"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections.\n\n"<annotation id="url">"Learn more"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app that you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index fd4d6f89fbae..44eba8940526 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text that you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image that you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content that you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Color correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features.\n\n"<annotation id="url">"Learn more"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections.\n\n"<annotation id="url">"Learn more"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app that you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index 43c951e22e5b..c9f62e1f7efa 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Text copied to clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copied"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from clipboard"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted from your clipboard"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted text you copied"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted an image you copied"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pasted content you copied"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparing <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starting apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finishing boot."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Turn off screen?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"While setting up your fingerprint, you pressed the Power button.\n\nThis usually turns off your screen."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Turn off"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Cancel"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> running"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Color Inversion"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Color Correction"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-Handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Updated by your admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Deleted by your admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, and certain features.\n\n"<annotation id="url">"Learn more"</annotation>""</string> - <string name="battery_saver_description" msgid="5693741424234005958">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, and certain features."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features, and some network connections.\n\n"<annotation id="url">"Learn more"</annotation>""</string> + <string name="battery_saver_description" msgid="8518809702138617167">"Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features, and some network connections."</string> <string name="data_saver_description" msgid="4995164271550590517">"To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Turn on Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Turn on"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available right now. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data, and other work profile features will be turned on"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Turn on work apps?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Get access to your work apps and notifications"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string> diff --git a/core/res/res/values-es-rMX/donottranslate-cldr.xml b/core/res/res/values-es-rMX/donottranslate-cldr.xml new file mode 100755 index 000000000000..db438f22208f --- /dev/null +++ b/core/res/res/values-es-rMX/donottranslate-cldr.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<resources xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <string name="month_day_year">%-e %B %Y</string> + <string name="time_of_day">%H:%M:%S</string> + <string name="date_and_time">%-e %b %Y, %H:%M:%S</string> + <string name="date_time">%1$s, %2$s</string> +</resources> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index f57eb3b0e9b6..146df87185f2 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado en el portapapeles."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegó contenido de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegó contenido del portapapeles"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió a texto del portapapeles"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió a una imagen del portapapeles"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> accedió al contenido del portapapeles"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando aplicaciones"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finalizando el inicio"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> en ejecución"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Presiona para volver al juego"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Elige un juego"</string> @@ -1354,8 +1363,8 @@ <string name="no_permissions" msgid="5729199278862516390">"No se requieren permisos"</string> <string name="perm_costs_money" msgid="749054595022779685">"esto puede costarte dinero"</string> <string name="dlg_ok" msgid="5103447663504839312">"Aceptar"</string> - <string name="usb_charging_notification_title" msgid="1674124518282666955">"Cargando dispositivo mediante USB"</string> - <string name="usb_supplying_notification_title" msgid="5378546632408101811">"Cargando el dispositivo conectado mediante USB"</string> + <string name="usb_charging_notification_title" msgid="1674124518282666955">"Cargando dispositivo por USB"</string> + <string name="usb_supplying_notification_title" msgid="5378546632408101811">"Cargando por USB el dispositivo conectado"</string> <string name="usb_mtp_notification_title" msgid="1065989144124499810">"Se activó la transferencia de archivos mediante USB"</string> <string name="usb_ptp_notification_title" msgid="5043437571863443281">"Se activó el modo PTP mediante USB"</string> <string name="usb_tether_notification_title" msgid="8828527870612663771">"Se activó la conexión mediante dispositivo móvil por USB"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar acceso directo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de color"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo de una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Como mantuviste presionadas las teclas de volumen, se activó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Se presionaron las teclas de volumen. Se desactivó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Tu administrador actualizó este paquete"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Tu administrador borró este paquete"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"El Ahorro de batería activa el Tema oscuro y desactiva o restringe la actividad en segundo plano, algunos efectos visuales y otras funciones determinadas.\n\n"<annotation id="url">"Más información"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"El Ahorro de batería activa el Tema oscuro y desactiva o restringe la actividad en segundo plano, algunos efectos visuales y otras funciones determinadas."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Para reducir el uso de datos, el modo Ahorro de datos evita que algunas apps envíen y reciban datos en segundo plano. La app que estés usando podrá acceder a los datos, pero con menor frecuencia. De esta forma, por ejemplo, las imágenes no se mostrarán hasta que las presiones."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"¿Deseas activar Ahorro de datos?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no está disponible en este momento. Esta opción se administra en <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Más información"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Reanudar app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"¿Activar el perfil de trabajo?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Se activarán las apps de trabajo, los datos, las notificaciones y otras funciones del perfil de trabajo"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"La app no está disponible"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> no está disponible en este momento."</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 6a891470b02a..abcb4320b3b1 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -248,7 +248,7 @@ <string name="global_action_power_options" msgid="1185286119330160073">"Encender o apagar"</string> <string name="global_action_restart" msgid="4678451019561687074">"Reiniciar"</string> <string name="global_action_emergency" msgid="1387617624177105088">"Emergencia"</string> - <string name="global_action_bug_report" msgid="5127867163044170003">"Informe de error"</string> + <string name="global_action_bug_report" msgid="5127867163044170003">"Informe de errores"</string> <string name="global_action_logout" msgid="6093581310002476511">"Finalizar sesión"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"Captura de pantalla"</string> <string name="bugreport_title" msgid="8549990811777373050">"Informar de un error"</string> @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado al portapapeles."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido del portapapeles"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado texto que has copiado"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado una imagen que has copiado"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha pegado contenido que has copiado"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando aplicaciones"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finalizando inicio..."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> en ejecución"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toca para volver al juego"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Elegir juego"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar acceso directo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de color"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Al mantener pulsadas las teclas de volumen, se ha activado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Se han mantenido pulsadas las teclas de volumen. Se ha desactivado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizado por el administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado por el administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y ciertas funciones.\n\n"<annotation id="url">"Más información"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y ciertas funciones."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Ahorro de datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que puede reducir el uso de datos. Una aplicación que estés usando de forma activa puede acceder a los datos, aunque con menos frecuencia. Esto significa que es posible que, por ejemplo, algunas imágenes no se muestren hasta que las toques."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"¿Activar Ahorro de datos?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no está disponible en este momento. Esta opción se administra en <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Más información"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anular pausa de aplicación"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"¿Activar perfil de trabajo?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Tus aplicaciones, notificaciones, datos y otras funciones del perfil de trabajo se activarán"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"La aplicación no está disponible"</string> <string name="app_blocked_message" msgid="542972921087873023">"En estos momentos, <xliff:g id="APP_NAME">%1$s</xliff:g> no está disponible."</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index be46874eb5ed..dc56e12bd6ea 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Lõikelauale kopeeritud tekst."</string> <string name="copied" msgid="4675902854553014676">"Kopeeritud"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis rakendusest <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis lõikelaualt"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud teksti"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud pildi"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> kleepis teie kopeeritud sisu"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Rakenduse <xliff:g id="APPNAME">%1$s</xliff:g> ettevalmistamine."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Rakenduste käivitamine."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Käivitamise lõpuleviimine."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> töötab"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Puudutage mängu naasmiseks"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Valige mäng"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kasuta otseteed"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Värvide ümberpööramine"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Värvide korrigeerimine"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Eriti tume"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati sisse."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati välja."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administraator on seda värskendanud"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administraator on selle kustutanud"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Akusäästja lülitab sisse tumeda teema ja lülitab välja taustategevused, mõned visuaalsed efektid ja teatud funktsioonid või piirab neid.\n\n"<annotation id="url">"Lisateave"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Akusäästja lülitab sisse tumeda teema ja lülitab välja taustategevused, mõned visuaalsed efektid ja teatud funktsioonid või piirab neid."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Andmekasutuse vähendamiseks keelab andmemahu säästja mõne rakenduse puhul andmete taustal saatmise ja vastuvõtmise. Rakendus, mida praegu kasutate, pääseb andmesidele juurde, kuid võib seda teha väiksema sagedusega. Seetõttu võidakse näiteks pildid kuvada alles siis, kui neid puudutate."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Lülitada andmemahu säästja sisse?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Lülita sisse"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> pole praegu saadaval. Seda haldab rakendus <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Lisateave"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Jätka rakendust"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Kas lülitada tööprofiil sisse?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Teie töörakendused, märguanded, andmed ja muud tööprofiili funktsioonid lülitatakse sisse"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Lülita sisse"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Rakendus ei ole saadaval"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei ole praegu saadaval."</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index d1c71c5dcd18..679b491bc8af 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -346,7 +346,7 @@ <string name="permlab_statusBarService" msgid="2523421018081437981">"bihurtu egoera-barra"</string> <string name="permdesc_statusBarService" msgid="6652917399085712557">"Egoera-barra izatea baimentzen die aplikazioei."</string> <string name="permlab_expandStatusBar" msgid="1184232794782141698">"zabaldu/tolestu egoera-barra"</string> - <string name="permdesc_expandStatusBar" msgid="7180756900448498536">"Egoera-barra zabaltzeko edo tolesteko aukera ematen die aplikazioei."</string> + <string name="permdesc_expandStatusBar" msgid="7180756900448498536">"Egoera-barra zabaltzeko edo tolesteko baimena ematen die aplikazioei."</string> <string name="permlab_fullScreenIntent" msgid="4310888199502509104">"blokeatutako gailu batean jakinarazpenak pantaila osoko jarduera gisa bistaratzea"</string> <string name="permdesc_fullScreenIntent" msgid="1100721419406643997">"Blokeatutako gailu batean jakinarazpenak pantaila osoko jarduera gisa bistaratzeko baimena ematen die aplikazioei"</string> <string name="permlab_install_shortcut" msgid="7451554307502256221">"instalatu lasterbideak"</string> @@ -444,13 +444,13 @@ <string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"atzitu kokapena atzeko planoan"</string> <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikazioak kokapena atzi dezake, baita aplikazioa erabiltzen ari ez zarenean ere."</string> <string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"aldatu audio-ezarpenak"</string> - <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Audio-ezarpen orokorrak aldatzeko baimena ematen dio; besteak beste, bolumena eta irteerarako zer bozgorailu erabiltzen den."</string> + <string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Audio-ezarpen orokorrak aldatzeko baimena ematen die aplikazioei; besteak beste, bolumena eta irteerarako zer bozgorailu erabiltzen den."</string> <string name="permlab_recordAudio" msgid="1208457423054219147">"grabatu audioa"</string> <string name="permdesc_recordAudio" msgid="5857246765327514062">"Aplikazioak abian den bitartean erabil dezake mikrofonoa audioa grabatzeko."</string> <string name="permlab_recordBackgroundAudio" msgid="5891032812308878254">"Audioa grabatu atzeko planoan."</string> <string name="permdesc_recordBackgroundAudio" msgid="1992623135737407516">"Aplikazioak edonoiz erabil dezake mikrofonoa audioa grabatzeko."</string> <string name="permlab_sim_communication" msgid="176788115994050692">"bidali aginduak SIM txartelera"</string> - <string name="permdesc_sim_communication" msgid="4179799296415957960">"SIM txartelera aginduak bidaltzeko aukera ematen die aplikazioei. Oso arriskutsua da."</string> + <string name="permdesc_sim_communication" msgid="4179799296415957960">"SIM txartelera aginduak bidaltzeko baimena ematen die aplikazioei. Oso arriskutsua da."</string> <string name="permlab_activityRecognition" msgid="1782303296053990884">"hauteman jarduera fisikoa"</string> <string name="permdesc_activityRecognition" msgid="8667484762991357519">"Aplikazioak jarduera fisikoa hauteman dezake."</string> <string name="permlab_camera" msgid="6320282492904119413">"atera argazkiak eta grabatu bideoak"</string> @@ -462,7 +462,7 @@ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"eman jakinarazpenak jasotzeko baimena aplikazioari edo zerbitzuari kamerak ireki edo ixten direnean."</string> <string name="permdesc_cameraOpenCloseListener" msgid="2002636131008772908">"Kamera ireki edo itxi dela (eta zer aplikaziorekin) dioten jakinarazpenak jaso ditzake aplikazio honek."</string> <string name="permlab_vibrate" msgid="8596800035791962017">"kontrolatu dardara"</string> - <string name="permdesc_vibrate" msgid="8733343234582083721">"Bibragailua kontrolatzeko aukera ematen die aplikazioei."</string> + <string name="permdesc_vibrate" msgid="8733343234582083721">"Bibragailua kontrolatzeko baimena ematen die aplikazioei."</string> <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dardara-egoera atzitzeko baimena ematen die aplikazioei."</string> <string name="permlab_callPhone" msgid="1798582257194643320">"deitu zuzenean telefono-zenbakietara"</string> <string name="permdesc_callPhone" msgid="5439809516131609109">"Telefono-zenbakietara zuk esku hartu gabe deitzeko baimena ematen die aplikazioei. Horrela, ustekabeko gastuak edo deiak eragin daitezke. Asmo txarreko aplikazioek erabil dezakete zuk berretsi gabeko deiak eginda gastuak eragiteko."</string> @@ -489,9 +489,9 @@ <string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Android TV gailua inaktibo ezartzea eragozteko baimena ematen die aplikazioei."</string> <string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Telefonoa inaktibo ezartzea galaraztea baimentzen die aplikazioei."</string> <string name="permlab_transmitIr" msgid="8077196086358004010">"transmititu infragorriak"</string> - <string name="permdesc_transmitIr" product="tablet" msgid="5884738958581810253">"Tabletaren infragorri-igorlea erabiltzeko aukera ematen die aplikazioei."</string> + <string name="permdesc_transmitIr" product="tablet" msgid="5884738958581810253">"Tabletaren infragorri-igorlea erabiltzeko baimena ematen die aplikazioei."</string> <string name="permdesc_transmitIr" product="tv" msgid="3278506969529173281">"Android TV gailuaren infragorri-igorlea erabiltzeko baimena ematen die aplikazioei."</string> - <string name="permdesc_transmitIr" product="default" msgid="8484193849295581808">"Telefonoaren infragorri-igorlea erabiltzeko aukera ematen die aplikazioei."</string> + <string name="permdesc_transmitIr" product="default" msgid="8484193849295581808">"Telefonoaren infragorri-igorlea erabiltzeko baimena ematen die aplikazioei."</string> <string name="permlab_setWallpaper" msgid="6959514622698794511">"ezarri horma-papera"</string> <string name="permdesc_setWallpaper" msgid="2973996714129021397">"Sistemaren horma-papera aldatzeko baimena ematen die aplikazioei."</string> <string name="permlab_setWallpaperHints" msgid="1153485176642032714">"doitu horma-paperaren tamaina"</string> @@ -543,13 +543,13 @@ <string name="permlab_uwb_ranging" msgid="8141915781475770665">"banda ultrazabala darabilten inguruko gailuen arteko distantzia erlatiboa zehaztu"</string> <string name="permdesc_uwb_ranging" msgid="2519723069604307055">"Banda ultrazabala darabilten inguruko gailuen arteko distantzia erlatiboa zehazteko baimena ematen dio aplikazioari"</string> <string name="permlab_preferredPaymentInfo" msgid="5274423844767445054">"NFC bidezko ordainketa-zerbitzu lehenetsiari buruzko informazioa"</string> - <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"Aplikazioari baimena ematen dio NFC bidezko ordainketa-zerbitzu lehenetsiari buruzko informazioa jasotzeko, hala nola erregistratutako laguntzaileak eta ibilbidearen helmuga."</string> + <string name="permdesc_preferredPaymentInfo" msgid="8583552469807294967">"NFC bidezko ordainketa-zerbitzu lehenetsiari buruzko informazioa jasotzeko baimena ematen die aplikazioei, hala nola erregistratutako laguntzaileak eta ibilbidearen helmuga."</string> <string name="permlab_nfc" msgid="1904455246837674977">"kontrolatu Near Field Communication komunikazioa"</string> <string name="permdesc_nfc" msgid="8352737680695296741">"Near Field Communication (NFC) etiketekin, txartelekin eta irakurgailuekin komunikatzea baimentzen die aplikazioei."</string> <string name="permlab_disableKeyguard" msgid="3605253559020928505">"desgaitu pantailaren blokeoa"</string> <string name="permdesc_disableKeyguard" msgid="3223710003098573038">"Teklen blokeoa eta erlazionatutako pasahitz-segurtasuna desgaitzeko baimena ematen die aplikazioei. Adibidez, telefonoak teklen blokeoa desgaitzen du telefono-deiak jasotzen dituenean, eta berriro gaitzen du deiak amaitzean."</string> <string name="permlab_requestPasswordComplexity" msgid="1808977190557794109">"eskatu pantailaren blokeoa konplexua izatea"</string> - <string name="permdesc_requestPasswordComplexity" msgid="1130556896836258567">"Pantailaren blokeoaren konplexutasun-maila (handia, ertaina, txikia edo bat ere ez) jakiteko aukera ematen dio aplikazioari. Informazio horrekin, pantailaren blokeoaren luzera-barruti edo mota posiblea ondoriozta liteke. Halaber, pantailaren blokeoa maila jakin batera igotzeko iradoki diezaieke aplikazioak erabiltzaileei, baina horri ez ikusi egin eta aplikazioa erabiltzen jarraitzeko aukera dute erabiltzaileek. Kontuan izan pantailaren blokeoa ez dela gordetzen testu arrunt gisa; beraz, aplikazioak ez du jakingo pasahitz zehatza zein den."</string> + <string name="permdesc_requestPasswordComplexity" msgid="1130556896836258567">"Pantailaren blokeoaren konplexutasun-maila (handia, ertaina, txikia edo bat ere ez) jakiteko baimena ematen die aplikazioei. Informazio horrekin, pantailaren blokeoaren luzera-barruti edo mota posiblea ondoriozta liteke. Halaber, pantailaren blokeoa maila jakin batera igotzeko iradoki diezaiekete aplikazioek erabiltzaileei, baina horri ez ikusi egin eta aplikazioak erabiltzen jarraitzeko aukera dute erabiltzaileek. Kontuan izan pantailaren blokeoa ez dela gordetzen testu arrunt gisa; beraz, aplikazioek ez dute jakingo pasahitz zehatza zein den."</string> <string name="permlab_useBiometric" msgid="6314741124749633786">"erabili hardware biometrikoa"</string> <string name="permdesc_useBiometric" msgid="7502858732677143410">"Autentifikatzeko hardware biometrikoa erabiltzeko baimena ematen die aplikazioei."</string> <string name="permlab_manageFingerprint" msgid="7432667156322821178">"kudeatu hatz-marken hardwarea"</string> @@ -680,7 +680,7 @@ <string name="permlab_connection_manager" msgid="3179365584691166915">"kudeatu telekomunikabideekiko konexioak"</string> <string name="permdesc_connection_manager" msgid="1426093604238937733">"Telekomunikabideekiko konexioak kudeatzea baimentzen die aplikazioei."</string> <string name="permlab_bind_incall_service" msgid="5990625112603493016">"erabili pantaila deiak abian direnean"</string> - <string name="permdesc_bind_incall_service" msgid="4124917526967765162">"Erabiltzaileak deiaren pantaila noiz eta nola ikusten duen kontrolatzeko aukera ematen die aplikazioei."</string> + <string name="permdesc_bind_incall_service" msgid="4124917526967765162">"Erabiltzaileak deiaren pantaila noiz eta nola ikusten duen kontrolatzeko baimena ematen die aplikazioei."</string> <string name="permlab_bind_connection_service" msgid="5409268245525024736">"jardun interakzioan telefono-zerbitzuekin"</string> <string name="permdesc_bind_connection_service" msgid="6261796725253264518">"Deiak egiteko eta jasotzeko telefonia-zerbitzuekin interakzioan aritzea baimentzen die aplikazioei."</string> <string name="permlab_control_incall_experience" msgid="6436863486094352987">"eskaini erabiltzaileentzako aukerak deiak abian direnean"</string> @@ -692,7 +692,7 @@ <string name="permlab_modifyNetworkAccounting" msgid="7448790834938749041">"aldatu sare-erabileraren kalkuluak"</string> <string name="permdesc_modifyNetworkAccounting" msgid="5076042642247205390">"Aplikazioen sare-erabilera kalkulatzeko modua aldatzeko baimena ematen die aplikazioei. Aplikazio normalek ez lukete beharko."</string> <string name="permlab_accessNotifications" msgid="7130360248191984741">"atzitu jakinarazpenak"</string> - <string name="permdesc_accessNotifications" msgid="761730149268789668">"Jakinarazpenak berreskuratu, aztertu eta garbitzeko aukera ematen die aplikazioei, beste aplikazioek argitaratutako jakinarazpenak barne."</string> + <string name="permdesc_accessNotifications" msgid="761730149268789668">"Jakinarazpenak berreskuratu, aztertu eta garbitzeko baimena ematen die aplikazioei, beste aplikazioek argitaratutako jakinarazpenak barne."</string> <string name="permlab_bindNotificationListenerService" msgid="5848096702733262458">"lotu jakinarazpen-hautemaile bati"</string> <string name="permdesc_bindNotificationListenerService" msgid="4970553694467137126">"Jakinarazpen-hautemaile baten goi-mailako interfazera lotzeko aukera ematen dio titularrari. Aplikazio normalek ez dute baimen hau behar."</string> <string name="permlab_bindConditionProviderService" msgid="5245421224814878483">"lotu baldintza-hornitzaileen zerbitzuei"</string> @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Testua arbelean kopiatu da."</string> <string name="copied" msgid="4675902854553014676">"Kopiatu da"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> aplikaziotik itsatsi da <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Arbeletik itsatsi da <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun testua itsatsi du"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun irudia itsatsi du"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> aplikazioak kopiatu duzun edukia itsatsi du"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> prestatzen."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Aplikazioak abiarazten."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Bertsio-berritzea amaitzen."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> abian da"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Sakatu jokora itzultzeko"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Aukeratu joko bat"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Erabili lasterbidea"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Koloreen alderantzikatzea"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Koloreen zuzenketa"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Are ilunago"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktibatu egin da."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desaktibatu egin da."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administratzaileak eguneratu du"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administratzaileak ezabatu du"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Ados"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Bateria-aurrezleak gai iluna aktibatzen du, eta murriztu edo desaktibatu egiten ditu atzeko planoko jarduerak, zenbait efektu bisual eta eginbide jakin batzuk.\n\n"<annotation id="url">"Lortu informazio gehiago"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Bateria-aurrezleak gai iluna aktibatzen du, eta murriztu edo desaktibatu egiten ditu atzeko planoko jarduerak, zenbait efektu bisual eta eginbide jakin batzuk."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Datuen erabilera murrizteko, atzeko planoan datuak bidaltzea eta jasotzea galarazten die datu-aurrezleak aplikazio batzuei. Une honetan erabiltzen ari zaren aplikazio batek datuak atzitu ahal izango ditu, baina baliteke maiztasun txikiagoarekin atzitzea. Horrela, adibidez, baliteke irudiak ez erakustea haiek sakatu arte."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Datu-aurrezlea aktibatu nahi duzu?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktibatu"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ez dago erabilgarri une honetan. Haren erabilgarritasuna <xliff:g id="APP_NAME_1">%2$s</xliff:g> aplikazioak kudeatzen du."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Lortu informazio gehiago"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Kendu pausaldia"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Laneko profila aktibatu?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Laneko aplikazioak, jakinarazpenak, datuak eta laneko profileko bestelako eginbideak aktibatuko dira"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktibatu"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikazioa ez dago erabilgarri"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ez dago erabilgarri une honetan."</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index e8002593f828..68c5b0d15e5d 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"متن در بریدهدان کپی شد."</string> <string name="copied" msgid="4675902854553014676">"کپی شد"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> جایگذاری کرد"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> از بریدهدان جایگذاری کرد"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نوشتاری را که کپی کردید جایگذاری کرد"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> تصویری را که کپی کردید جایگذاری کرد"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> محتوایی را که کپی کردید جایگذاری کرد"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"آمادهسازی <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"درحال آغاز کردن برنامهها."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"درحال اتمام راهاندازی."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> در حال اجرا"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"برای برگشت به بازی، ضربه بزنید"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"انتخاب بازی"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استفاده از میانبر"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"وارونگی رنگ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"تصحیح رنگ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"بسیار کمنور"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> روشن شد."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> خاموش شد."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"توسط سرپرست سیستم بهروزرسانی شد"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"توسط سرپرست سیستم حذف شد"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"تأیید"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"«بهینهسازی باتری» «طرح زمینه تیره» را روشن میکند و فعالیت پسزمینه، برخی از جلوههای بصری، و ویژگیهایی خاص را محدود یا خاموش میکند.\n\n"<annotation id="url">"بیشتر بدانید"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"«بهینهسازی باتری» «طرح زمینه تیره» را روشن میکند و فعالیت پسزمینه، برخی از جلوههای بصری، و ویژگیهایی خاص را محدود یا خاموش میکند."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"برای کمک به کاهش مصرف داده، «صرفهجویی داده» از ارسال و دریافت داده در پسزمینه در بعضی برنامهها جلوگیری میکند. برنامهای که درحالحاضر استفاده میکنید میتواند به دادهها دسترسی داشته باشد اما دفعات دسترسی آن محدود است. این میتواند به این معنی باشد که، برای مثال، تصاویر تازمانیکه روی آنها ضربه نزنید نشان داده نمیشوند."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"«صرفهجویی داده» روشن شود؟"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"روشن کردن"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> درحالحاضر در دسترس نیست. <xliff:g id="APP_NAME_1">%2$s</xliff:g> آن را مدیریت میکند."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"بیشتر بدانید"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"لغو توقف موقت برنامه"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"نمایه کاری روشن شود؟"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"برنامهها، اعلانها، دادهها، و سایر ویژگیهای نمایه کاری شما روشن خواهد شد"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"روشن کردن"</string> <string name="app_blocked_title" msgid="7353262160455028160">"برنامه در دسترس نیست"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> درحالحاضر در دسترس نیست."</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index b82c0fdc5120..270d594a4646 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teksti kopioitu leikepöydälle."</string> <string name="copied" msgid="4675902854553014676">"Kopioitu"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> liitetty täältä: <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> liitetty leikepöydältä"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi tekstin"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi kuvan"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> on liittänyt kopioimasi sisällön"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Valmistellaan: <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Käynnistetään sovelluksia."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Viimeistellään päivitystä."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> käynnissä"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Palaa peliin napauttamalla"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Valitse peli"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Käytä pikanäppäintä"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Käänteiset värit"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Värinkorjaus"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Erittäin himmeä"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin päälle."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin pois päältä."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Järjestelmänvalvoja päivitti tämän."</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Järjestelmänvalvoja poisti tämän."</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Virransäästö laittaa tumman teeman päälle ja laittaa pois päältä tai rajoittaa taustatoimintoja, joitakin visuaalisia tehosteita ja tiettyjä muita ominaisuuksia.\n\n"<annotation id="url">"Lue lisää"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Virransäästö laittaa tumman teeman päälle ja laittaa pois päältä tai rajoittaa taustatoimintoja, joitakin visuaalisia tehosteita ja tiettyjä muita ominaisuuksia."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Data Saver estää joitakin sovelluksia lähettämästä tai vastaanottamasta tietoja taustalla, jotta datan käyttöä voidaan vähentää. Käytössäsi oleva sovellus voi yhä käyttää dataa, mutta se saattaa tehdä niin tavallista harvemmin. Tämä voi tarkoittaa esimerkiksi sitä, että kuva ladataan vasta, kun kosketat sitä."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Otetaanko Data Saver käyttöön?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ota käyttöön"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ei ole juuri nyt saatavilla. Tästä vastaa <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Lue lisää"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Peru keskeytys"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Otetaanko työprofiili käyttöön?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Työsovellukset, ‑ilmoitukset, ‑tiedot ja muut työprofiiliominaisuudet otetaan käyttöön"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ota käyttöön"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Sovellus ei ole käytettävissä"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei ole nyt käytettävissä."</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 595775073cc0..d717f5bfc3d4 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Le texte a été copié dans le presse-papiers."</string> <string name="copied" msgid="4675902854553014676">"Copié"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé à partir de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé à partir du presse-papiers"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé du texte que vous avez copié"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé une image que vous avez copiée"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé le contenu que vous avez copié"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Lancement des applications…"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finalisation de la mise à jour."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> en cours d\'exécution"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Touchez pour revenir au jeu"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choisissez un jeu"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correction des couleurs"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Réduction supplémentaire de la luminosité"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume maintenues enfoncées. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume maintenues enfoncées. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Mise à jour par votre administrateur"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Supprimé par votre administrateur"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"La fonctionnalité Économiseur de pile active le thème sombre et limite ou désactive l\'activité en arrière-plan, certains effets visuels et d\'autres fonctionnalités.\n\n"<annotation id="url">"En savoir plus"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"La fonctionnalité Économiseur de pile active le thème sombre et limite ou désactive l\'activité en arrière-plan, certains effets visuels et d\'autres fonctionnalités."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Pour aider à diminuer l\'utilisation des données, la fonctionnalité Économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Une application que vous utilisez actuellement peut accéder à des données, mais peut le faire moins souvent. Cela peut signifier, par exemple, que les images ne s\'affichent pas jusqu\'à ce que vous les touchiez."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"L\'application <xliff:g id="APP_NAME_0">%1$s</xliff:g> n\'est pas accessible pour le moment. Ceci est géré par <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"En savoir plus"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Réactiver l\'application"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activer le profil professionnel?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Vos applications professionnelles, vos notifications, vos données et les autres fonctionnalités de profil professionnel seront activées"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activer"</string> <string name="app_blocked_title" msgid="7353262160455028160">"L\'application n\'est pas accessible"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas accessible pour le moment."</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 62267ac69d97..ee6e9349ba4d 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Le texte a été copié dans le presse-papier."</string> <string name="copied" msgid="4675902854553014676">"Copie effectuée"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé depuis <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> collé depuis le presse-papiers"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé du texte que vous avez copié"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé une image que vous avez copiée"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a collé le contenu que vous avez copié"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Préparation de <xliff:g id="APPNAME">%1$s</xliff:g> en cours…"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Lancement des applications…"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Finalisation de la mise à jour."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> en cours d\'exécution"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Appuyez pour revenir au jeu"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choisir un jeu"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correction des couleurs"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Encore moins lumineux"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Mis à jour par votre administrateur"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Supprimé par votre administrateur"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan et certains effets visuels et fonctionnalités.\n\n"<annotation id="url">"En savoir plus"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan et certains effets visuels et fonctionnalités."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation des données, l\'Économiseur de données empêche certaines applis d\'envoyer ou de recevoir des données en arrière-plan. Les applis que vous utiliserez pourront toujours accéder aux données, mais le feront moins fréquemment. Par exemple, les images pourront ne pas s\'afficher tant que vous n\'aurez pas appuyé pas dessus."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"L\'application <xliff:g id="APP_NAME_0">%1$s</xliff:g> n\'est pas disponible pour le moment. Cette suspension est gérée par l\'application <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"En savoir plus"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Débloquer l\'application"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activer le profil pro. ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Vos applications professionnelles, notifications, données et d\'autres fonctionnalités de votre profil professionnel seront activées"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activer"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Application non disponible"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas disponible pour le moment."</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index 1a15ea267aa6..4bb6aa6ed54b 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"O texto copiouse no portapapeis."</string> <string name="copied" msgid="4675902854553014676">"Copiuse"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido procedente de <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido procedente do portapapeis"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou texto que copiaches"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou unha imaxe que copiaches"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> pegou contido que copiaches"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando aplicacións."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Está finalizando o arranque"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> está en execución"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toca para volver ao xogo"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Escolle un xogo"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atallo"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de cor"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corrección de cor"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo dunha soa man"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume premidas. Activouse o servizo <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Desactivouse <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizado polo teu administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado polo teu administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Coa función Aforro de batería actívase o tema escuro e restrínxense ou desactívanse a actividade en segundo plano, algúns efectos visuais e determinadas funcións.\n\n"<annotation id="url">"Máis información"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Coa función Aforro de batería actívase o tema escuro e restrínxense ou desactívanse a actividade en segundo plano, algúns efectos visuais e determinadas funcións."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Para contribuír a reducir o uso de datos, o aforro de datos impide que algunhas aplicacións envíen ou reciban datos en segundo plano. Cando esteas utilizando unha aplicación, esta poderá acceder aos datos, pero é posible que o faga con menos frecuencia. Por exemplo, poida que as imaxes non se mostren ata que as toques."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Queres activar o aforro de datos?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"A aplicación <xliff:g id="APP_NAME_0">%1$s</xliff:g> non está dispoñible neste momento. A dispoñibilidade está xestionada por <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Máis información"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Volver activar aplicación"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activar o perfil de traballo?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Activaranse as túas aplicacións de traballo, as notificacións, os datos e outras funcións do perfil de traballo"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"A aplicación non está dispoñible"</string> <string name="app_blocked_message" msgid="542972921087873023">"A aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> non está dispoñible neste momento."</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index b7ecc0eb4676..4f32f29941fe 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ક્લિપબોર્ડ પર ટેક્સ્ટ કૉપિ કરી."</string> <string name="copied" msgid="4675902854553014676">"કૉપિ કરેલ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>માંથી કૉપિ કરાયેલો ડેટા <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>માં પેસ્ટ કરવામાં આવ્યો"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ક્લિપબોર્ડ ડેટાને <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>માં પેસ્ટ કર્યો"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલી ટેક્સ્ટ પેસ્ટ કરાઈ"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલી છબી પેસ્ટ કરાઈ"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> દ્વારા તમે કૉપિ કરેલું કન્ટેન્ટ પેસ્ટ કરાયું"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> તૈયાર કરી રહ્યું છે."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ઍપ્લિકેશનો શરૂ કરી રહ્યાં છે."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"બૂટ સમાપ્ત કરી રહ્યાં છે."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ચાલુ છે"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ગેમ પર પાછા આવવા માટે ટૅપ કરો"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ગેમ પસંદ કરો"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"શૉર્ટકટનો ઉપયોગ કરો"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"વિપરીત રંગમાં બદલવું"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"રંગ સુધારણા"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"એક્સ્ટ્રા ડિમ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ચાલુ કરી."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> બંધ કરી."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"તમારા વ્યવસ્થાપક દ્વારા અપડેટ કરવામાં આવેલ છે"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"તમારા વ્યવસ્થાપક દ્વારા કાઢી નાખવામાં આવેલ છે"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ઓકે"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"બૅટરી સેવર ઘેરી થીમની સુવિધા ચાલુ કરે છે અને બૅકગ્રાઉન્ડમાં થતી પ્રવૃત્તિ, કેટલીક વિઝ્યુઅલ ઇફેક્ટ અને કેટલીક સુવિધાઓને મર્યાદિત કે બંધ કરે છે.\n\n"<annotation id="url">"વધુ જાણો"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"બૅટરી સેવર ઘેરી થીમની સુવિધા ચાલુ કરે છે અને બૅકગ્રાઉન્ડમાં થતી પ્રવૃત્તિ, કેટલીક વિઝ્યુઅલ ઇફેક્ટ અને કેટલીક સુવિધાઓને મર્યાદિત કે બંધ કરે છે."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ડેટા વપરાશને ઘટાડવામાં સહાય માટે, ડેટા સેવર કેટલીક ઍપને બૅકગ્રાઉન્ડમાં ડેટા મોકલવા અથવા પ્રાપ્ત કરવાથી અટકાવે છે. તમે હાલમાં ઉપયોગ કરી રહ્યાં છો તે ઍપ ડેટાને ઍક્સેસ કરી શકે છે, પરંતુ તે આ ક્યારેક જ કરી શકે છે. આનો અર્થ એ હોઈ શકે છે, ઉદાહરણ તરીકે, છબીઓ ત્યાં સુધી પ્રદર્શિત થશે નહીં જ્યાં સુધી તમે તેને ટૅપ નહીં કરો."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ડેટા સેવર ચાલુ કરીએ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ચાલુ કરો"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> હમણાં ઉપલબ્ધ નથી. આને <xliff:g id="APP_NAME_1">%2$s</xliff:g> દ્વારા મેનેજ કરવામાં આવે છે."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"વધુ જાણો"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ઍપ ફરી શરૂ કરો"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ઑફિસની પ્રોફાઇલ ચાલુ કરીએ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"તમારી ઑફિસ માટેની ઍપ, નોટિફિકેશન, ડેટા અને અન્ય ઑફિસની પ્રોફાઇલ સુવિધાઓ ચાલુ કરવામાં આવશે"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ચાલુ કરો"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ઍપ ઉપલબ્ધ નથી"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> હાલમાં ઉપલબ્ધ નથી."</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 25280763d684..20da0ac5819e 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"लेख को क्लिपबोर्ड पर कॉपी किया गया."</string> <string name="copied" msgid="4675902854553014676">"कॉपी किया गया"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> से कॉपी किए गए डेटा को <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> में चिपकाया गया है"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"क्लिपबोर्ड के डेटा को <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> में चिपकाया गया है"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपका कॉपी किया हुआ टेक्स्ट चिपका दिया है"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपकी कॉपी की हुई इमेज चिपका दी है"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने आपका कॉपी किया हुआ कॉन्टेंट चिपका दिया है"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> तैयार हो रहा है."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ऐप्स प्रारंभ होने वाले हैं"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"बूट खत्म हो रहा है."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> चल रही है"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"गेम पर वापस जाने के लिए टैप करें"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"गेम चुनें"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट का उपयोग करें"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रंग बदलने की सुविधा"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रंग में सुधार करने की सुविधा"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को चालू कर दिया गया."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को बंद कर दिया गया."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"आपके व्यवस्थापक ने अपडेट किया है"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"आपके व्यवस्थापक ने हटा दिया है"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ठीक है"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"बैटरी सेवर, गहरे रंग वाली थीम को चालू कर देता है. साथ ही, यह बैकग्राउंड में चल रही गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और कुछ खास सुविधाएं इस्तेमाल करने से रोकता है या इन्हें बंद कर देता है.\n\n"<annotation id="url">"ज़्यादा जानें"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"बैटरी सेवर, गहरे रंग वाली थीम को चालू कर देता है. साथ ही, यह बैकग्राउंड में चल रही गतिविधि, कुछ विज़ुअल इफ़ेक्ट, और कुछ खास सुविधाओं के इस्तेमाल को रोकता है या इन्हें बंद कर देता है."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"डेटा खर्च को कम करने के लिए, डेटा बचाने की सेटिंग कुछ ऐप्लिकेशन को बैकग्राउंड में डेटा भेजने या डेटा पाने से रोकती है. फ़िलहाल, आप जिस ऐप्लिकेशन का इस्तेमाल कर रहे हैं वह डेटा ऐक्सेस कर सकता है, लेकिन ऐसा कभी-कभी ही हो पाएगा. उदाहरण के लिए, इमेज तब तक दिखाई नहीं देंगी जब तक कि आप उन पर टैप नहीं करते."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"डेटा बचाने की सेटिंग चालू करें?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"चालू करें"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"फ़िलहाल <xliff:g id="APP_NAME_0">%1$s</xliff:g> उपलब्ध नहीं है. इसे <xliff:g id="APP_NAME_1">%2$s</xliff:g> के ज़रिए प्रबंधित किया जाता है."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ज़्यादा जानें"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ऐप्लिकेशन पर लगी रोक हटाएं"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"वर्क प्रोफ़ाइल चालू करें?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"आपके काम से जुड़े ऐप्लिकेशन, सूचनाएं, डेटा और वर्क प्रोफ़ाइल से जुड़ी दूसरी सुविधाएं चालू हो जाएंगी"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"चालू करें"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ऐप्लिकेशन उपलब्ध नहीं है"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> इस समय उपलब्ध नहीं है."</string> @@ -2288,5 +2303,5 @@ <string name="view_and_control_notification_title" msgid="4300765399209912240">"ऐक्सेस से जुड़ी सेटिंग देखें"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> आपकी स्क्रीन को देख सकता है और कंट्रोल कर सकता है. ऐक्सेस की समीक्षा करने के लिए टैप करें."</string> <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"<xliff:g id="MESSAGE">%1$s</xliff:g> का अनुवाद किया गया."</string> - <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"मैसेज का <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> से <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> अनुवाद में किया गया."</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"मैसेज का <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> से <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> में अनुवाद किया गया."</string> </resources> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index c223cc17178a..be2307bedf96 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1025,7 +1025,8 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst kopiran u međuspremnik."</string> <string name="copied" msgid="4675902854553014676">"Kopirano"</string> <string name="pasted_from_app" msgid="5627698450808256545">"U aplikaciji <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepljen je sadržaj aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"U aplikaciji <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepljen je sadržaj međuspremnika"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je tekst koji ste kopirali"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je sliku koju ste kopirali"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> zalijepila je ono što ste kopirali"</string> @@ -1279,6 +1280,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Pripremanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Pokretanje aplikacija."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Završetak inicijalizacije."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Izvodi se <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dodirnite za povratak na igru"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Odabir igre"</string> @@ -1731,6 +1740,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Upotrijebi prečac"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcija boja"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Još tamnije"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za glasnoću. Uključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za glasnoću. Isključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1887,8 +1897,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ažurirao administrator"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisao administrator"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"U redu"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Štednja baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizualne efekte i određene značajke.\n\n"<annotation id="url">"Saznajte više"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Štednja baterije uključuje tamnu temu i ograničava ili isključuje aktivnosti u pozadini, neke vizualne efekte i određene značajke."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Da bi se smanjio podatkovni promet, značajka Štednja podatkovnog prometa onemogućuje nekim aplikacijama slanje ili primanje podataka u pozadini. Aplikacija koju trenutačno upotrebljavate može pristupiti podacima, no možda će to činiti rjeđe. To može značiti da se, na primjer, slike neće prikazivati dok ih ne dodirnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Uključiti Štednju podatkovnog prometa?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Uključi"</string> @@ -2000,8 +2012,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutačno nije dostupna. Ovime upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Prekini pauzu aplikacije"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Želite li uključiti poslovni profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Uključit će se vaše poslovne aplikacije, obavijesti, podaci i druge značajke poslovnog profila"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutačno nije dostupna."</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 61eed9585cb9..c57d555cecea 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"A szöveg bemásolva a vágólapra."</string> <string name="copied" msgid="4675902854553014676">"Átmásolva"</string> <string name="pasted_from_app" msgid="5627698450808256545">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> tartalmat másolt vágólapra a(z) <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> appból"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a vágólapon lévő tartalmat"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt szöveget"</string> <string name="pasted_image" msgid="4729097394781491022">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt képet"</string> <string name="pasted_content" msgid="646276353060777131">"A(z) <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> beillesztette a másolt tartalmat"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"A(z) <xliff:g id="APPNAME">%1$s</xliff:g> előkészítése."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Kezdő alkalmazások."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Rendszerindítás befejezése."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> fut"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Koppintson ide a játékhoz való visszatéréshez"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Játék kiválasztása"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Billentyűparancs használata"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Színek invertálása"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Színkorrekció"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extrasötét"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> bekapcsolva."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kikapcsolva."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"A rendszergazda által frissítve"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"A rendszergazda által törölve"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Az Akkumulátorkímélő mód bekapcsolja a Sötét témát, valamint korlátozza vagy kikapcsolja a háttérbeli tevékenységeket, egyes vizuális effekteket és bizonyos funkciókat.\n\n"<annotation id="url">"További információ"</annotation>"."</string> - <string name="battery_saver_description" msgid="5693741424234005958">"Az Akkumulátorkímélő mód bekapcsolja a Sötét témát, valamint korlátozza vagy kikapcsolja a háttérbeli tevékenységeket, egyes vizuális effekteket és bizonyos funkciókat."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Az adatforgalom csökkentése érdekében az Adatforgalom-csökkentő megakadályozza, hogy egyes alkalmazások adatokat küldjenek vagy fogadjanak a háttérben. Az Ön által jelenleg használt alkalmazások hozzáférhetnek az adatokhoz, de csak ritkábban. Ez például azt jelentheti, hogy a képek csak rákoppintás után jelennek meg."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Bekapcsolja az Adatforgalom-csökkentőt?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Bekapcsolás"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"A(z) <xliff:g id="APP_NAME_0">%1$s</xliff:g> alkalmazás jelenleg nem áll rendelkezésre. Ezt a(z) <xliff:g id="APP_NAME_1">%2$s</xliff:g> kezeli."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"További információ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Alkalmazás szüneteltetésének feloldása"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Bekapcsolja a munkaprofilt?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"A munkahelyi alkalmazások, értesítések, adatok és a munkaprofilhoz tartozó egyéb funkciók be lesznek kapcsolva"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Bekapcsolás"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Az alkalmazás nem hozzáférhető"</string> <string name="app_blocked_message" msgid="542972921087873023">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> jelenleg nem hozzáférhető."</string> @@ -2288,5 +2303,5 @@ <string name="view_and_control_notification_title" msgid="4300765399209912240">"Ellenőrizze a hozzáférési beállításokat"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"A(z) <xliff:g id="SERVICE_NAME">%s</xliff:g> megtekintheti és irányíthatja képernyőjét. Koppintson az áttekintéshez."</string> <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"A következő lefordítása sikeresen megtörtént: <xliff:g id="MESSAGE">%1$s</xliff:g>."</string> - <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"Az üzenet <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> nyelvről <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> nyelvűre való lefordítása sikeresen megtörtént."</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"Sikerült lefordítani az üzenetet <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> nyelvről <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> nyelvre."</string> </resources> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index d345ece5837c..988010bcb1eb 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -321,7 +321,7 @@ <string name="permgroupdesc_camera" msgid="7585150538459320326">"լուսանկարել և տեսագրել"</string> <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Մոտակա սարքեր"</string> <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"հայտնաբերել մոտակա սարքերը և միանալ դրանց"</string> - <string name="permgrouplab_calllog" msgid="7926834372073550288">"Զանգերի մատյան"</string> + <string name="permgrouplab_calllog" msgid="7926834372073550288">"Կանչերի ցուցակ"</string> <string name="permgroupdesc_calllog" msgid="2026996642917801803">"հեռախոսազանգերի մատյանի դիտում և գրանցում"</string> <string name="permgrouplab_phone" msgid="570318944091926620">"Հեռախոս"</string> <string name="permgroupdesc_phone" msgid="270048070781478204">"կատարել զանգեր և կառավարել զանգերը"</string> @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Տեքստը պատճենված է սեղմատախտակին:"</string> <string name="copied" msgid="4675902854553014676">"Պատճենվեց"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տվյալներ տեղադրեց <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> հավելվածից"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տվյալներ տեղադրեց սեղմատախտակից"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած տեքստը"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած պատկերը"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> հավելվածը տեղադրեց ձեր պատճենած բովանդակությունը"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> հավելվածը պատրաստվում է:"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Հավելվածները մեկնարկում են:"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Բեռնումն ավարտվում է:"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g>-ն աշխատում է"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Հպեք՝ խաղին վերադառնալու համար"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Ընտրեք խաղ"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Օգտագործել դյուրանցումը"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Գունաշրջում"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Գունաշտկում"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Հավելյալ խամրեցում"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը միացավ։"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունն անջատվեց։"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Թարմացվել է ձեր ադմինիստրատորի կողմից"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Ջնջվել է ձեր ադմինիստրատորի կողմից"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Եղավ"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"«Մարտկոցի տնտեսում» գործառույթը միացնում է մուգ թեման և անջատում կամ սահմանափակում է աշխատանքը ֆոնային ռեժիմում, որոշ վիզուալ էֆեկտներ և այլ գործառույթներ։\n\n"<annotation id="url">"Իմանալ ավելին"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"«Մարտկոցի տնտեսում» գործառույթը միացնում է մուգ թեման և անջատում կամ սահմանափակում է աշխատանքը ֆոնային ռեժիմում, որոշ վիզուալ էֆեկտներ և այլ գործառույթներ։"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Թրաֆիկի տնտեսման ռեժիմում որոշ հավելվածների համար տվյալների ֆոնային փոխանցումն անջատված է։ Հավելվածը, որն օգտագործում եք, կարող է տվյալներ փոխանցել և ստանալ, սակայն ոչ այնքան հաճախ: Օրինակ՝ պատկերները կցուցադրվեն միայն դրանց վրա սեղմելուց հետո։"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Միացնե՞լ թրաֆիկի տնտեսումը"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Միացնել"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> հավելվածը հասանելի չէ։ Դրա աշխատանքը սահմանափակում է <xliff:g id="APP_NAME_1">%2$s</xliff:g> հավելվածը։"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Մանրամասն"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Չեղարկել դադարեցումը"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Միացնե՞լ աշխատանքային պրոֆիլը"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Ձեր աշխատանքային հավելվածները, ծանուցումները, տվյալները և աշխատանքային պրոֆիլի մյուս գործառույթները կմիացվեն։"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Միացնել"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Հավելվածը հասանելի չէ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածն այս պահին հասանելի չէ։"</string> @@ -2287,6 +2302,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Հավելվածի բրենդային պատկեր"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Ստուգեք մուտքի կարգավորումները"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ծառայությունը կարող է դիտել և կառավարել ձեր էկրանի բովանդակությունը։ Հպեք՝ մանրամասներն իմանալու համար։"</string> - <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"«<xliff:g id="MESSAGE">%1$s</xliff:g>» հաղորդագրությունը թարգմանվել է"</string> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"«<xliff:g id="MESSAGE">%1$s</xliff:g>» հաղորդագրությունը թարգմանված է։"</string> <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"Հաղորդագրությունը <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g>ից թարգմանվել է <xliff:g id="TO_LANGUAGE">%2$s</xliff:g>։"</string> </resources> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 34747646ab3e..0c653a1aa33f 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teks disalin ke papan klip."</string> <string name="copied" msgid="4675902854553014676">"Disalin"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditempelkan dari <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditempelkan dari papan klip"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan teks yang Anda salin"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan gambar yang Anda salin"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> menempelkan konten yang Anda salin"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Menyiapkan <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Memulai aplikasi."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Menyelesaikan boot."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> sedang berjalan"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Ketuk untuk kembali ke game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Pilih game"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversi Warna"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Koreksi Warna"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra redup"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> diaktifkan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dinonaktifkan."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Diupdate oleh admin Anda"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dihapus oleh admin Anda"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Oke"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Penghemat Baterai mengaktifkan Tema gelap dan membatasi atau menonaktifkan aktivitas latar belakang, beberapa efek visual, dan fitur tertentu.\n\n"<annotation id="url">"Pelajari lebih lanjut"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Penghemat Baterai mengaktifkan Tema gelap dan membatasi atau menonaktifkan aktivitas latar belakang, beberapa efek visual, dan fitur tertentu."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Untuk membantu mengurangi penggunaan data, Penghemat Data mencegah beberapa aplikasi mengirim atau menerima data di latar belakang. Aplikasi yang sedang digunakan dapat mengakses data, tetapi frekuensinya agak lebih jarang. Misalnya saja, gambar hanya akan ditampilkan setelah diketuk."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Aktifkan Penghemat Data?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktifkan"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> saat ini tidak tersedia. Aplikasi ini dikelola oleh <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Pelajari lebih lanjut"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Batalkan jeda aplikasi"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Aktifkan profil kerja?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikasi kerja, notifikasi, data, dan fitur profil kerja lainnya akan diaktifkan"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktifkan"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikasi tidak tersedia"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak tersedia saat ini."</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index ba9264877c76..f4055cebd59e 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Texti afritaður á klippiborð."</string> <string name="copied" msgid="4675902854553014676">"Afritað"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límt úr <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límt af klippiborði."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi texta sem þú afritaðir"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi mynd sem þú afritaðir"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> límdi efni sem þú afritaðir"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Undirbýr <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Ræsir forrit."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Lýkur ræsingu."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> er í gangi"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Ýttu til að fara aftur í leik"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Velja leik"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Nota flýtileið"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Umsnúningur lita"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Litaleiðrétting"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mjög dökkt"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Hljóðstyrkstökkum haldið inni. Kveikt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Hljóðstyrkstökkum haldið inni. Slökkt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Kerfisstjóri uppfærði"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Kerfisstjóri eyddi"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Í lagi"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Rafhlöðusparnaður kveikir á dökku þema og dregur úr eða slekkur á bakgrunnsvirkni, sumum myndáhrifum og tilteknum eiginleikum.\n\n"<annotation id="url">"Nánar"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Rafhlöðusparnaður kveikir á dökku þema og dregur úr eða slekkur á bakgrunnsvirkni, sumum myndáhrifum og tilteknum eiginleikum."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Gagnasparnaður getur hjálpað til við að draga úr gagnanotkun með því að hindra forrit í að senda eða sækja gögn í bakgrunni. Forrit sem er í notkun getur náð í gögn, en gerir það kannski sjaldnar. Niðurstaðan getur verið að myndir eru ekki birtar fyrr en þú ýtir á þær, svo dæmi sé tekið."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Kveikja á gagnasparnaði?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Kveikja"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ekki í boði eins og er. Þessu er stjórnað með <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Nánari upplýsingar"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Halda áfram að nota"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Kveikja á vinnusniði?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Kveikt verður á vinnuforritum, tilkynningum, gögnum og öðrum eiginleikum vinnusniðsins"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Kveikja"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Forrit er ekki tiltækt"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ekki tiltækt núna."</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 87069eed8103..35980c3752ee 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Testo copiato negli appunti."</string> <string name="copied" msgid="4675902854553014676">"Copia eseguita"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Dati dell\'app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> incollati dall\'app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Dati dell\'app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> incollati dagli appunti"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato il testo che hai copiato"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato un\'immagine che hai copiato"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ha incollato i contenuti che hai copiato"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> in preparazione."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Avvio app."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Conclusione dell\'avvio."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> in esecuzione"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tocca per tornare al gioco"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Scegli gioco"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usa scorciatoia"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversione dei colori"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correzione del colore"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Attenuazione extra"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> attivato."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> disattivato."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Aggiornato dall\'amministratore"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminato dall\'amministratore"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"La funzionalità Risparmio energetico attiva il tema scuro e limita o disattiva le attività in background, alcuni effetti visivi e funzionalità.\n\n"<annotation id="url">"Scopri di più"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"La funzionalità Risparmio energetico attiva il tema scuro e limita o disattiva le attività in background, alcuni effetti visivi e funzionalità."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Per contribuire a ridurre l\'utilizzo dei dati, la funzione Risparmio dati impedisce ad alcune app di inviare o ricevere dati in background. Un\'app in uso può accedere ai dati, ma potrebbe farlo con meno frequenza. Esempio: le immagini non vengono visualizzate finché non le tocchi."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Attivare Risparmio dati?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Attiva"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> non è al momento disponibile. Viene gestita tramite <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Scopri di più"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Riattiva app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Attivare il profilo di lavoro?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Le tue app di lavoro, le notifiche, i dati e altri elementi del profilo di lavoro saranno attivati."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Attiva"</string> <string name="app_blocked_title" msgid="7353262160455028160">"L\'app non è disponibile"</string> <string name="app_blocked_message" msgid="542972921087873023">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> non è al momento disponibile."</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index dd96815dc551..9f705fb854fb 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"הטקסט הועתק ללוח."</string> <string name="copied" msgid="4675902854553014676">"ההעתקה בוצעה"</string> <string name="pasted_from_app" msgid="5627698450808256545">"האפליקציה <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> הודבקה מ-<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"האפליקציה <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> הודבקה מהלוח"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"טקסט שהעתקת הודבק על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_image" msgid="4729097394781491022">"תמונה שהעתקת הודבקה על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_content" msgid="646276353060777131">"התוכן שהעתקת הודבק על ידי <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"המערכת מכינה את <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"מתבצעת הפעלה של אפליקציות."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"תהליך האתחול בשלבי סיום."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"האפליקציה <xliff:g id="APP">%1$s</xliff:g> פועלת"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"יש להקיש כדי לחזור למשחק"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"בחירת משחק"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"שימוש בקיצור הדרך"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"היפוך צבעים"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"תיקון צבעים"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"מעומעם במיוחד"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הופעל."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הושבת."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"עודכנה על ידי מנהל המערכת"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"נמחקה על ידי מנהל המערכת"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"אישור"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"התכונה \'חיסכון בסוללה\' מפעילה עיצוב כהה ומגבילה או מכבה את הפעילות ברקע, חלק מהאפקטים החזותיים ותכונות מסוימות.\n\n"<annotation id="url">"מידע נוסף"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"התכונה \'חיסכון בסוללה\' מפעילה עיצוב כהה ומגבילה או מכבה את הפעילות ברקע, חלק מהאפקטים החזותיים ותכונות מסוימות."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"כדי לסייע בהפחתת השימוש בנתונים, חוסך הנתונים (Data Saver) מונע מאפליקציות מסוימות לשלוח או לקבל נתונים ברקע. אפליקציות שבהן נעשה שימוש כרגע יכולות לגשת לנתונים, אבל בתדירות נמוכה יותר. המשמעות היא, למשל, שתמונות יוצגו רק לאחר שמקישים עליהן."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"להפעיל את חוסך הנתונים?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"הפעלה"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"האפליקציה <xliff:g id="APP_NAME_0">%1$s</xliff:g> לא זמינה כרגע. אפשר לנהל זאת באפליקציה <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"מידע נוסף"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ביטול ההשהיה של האפליקציה"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"להפעיל את פרופיל העבודה?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"אפליקציות העבודה, התראות, נתונים ותכונות נוספות של פרופיל העבודה יופעלו"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"הפעלה"</string> <string name="app_blocked_title" msgid="7353262160455028160">"האפליקציה לא זמינה"</string> <string name="app_blocked_message" msgid="542972921087873023">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> לא זמינה בשלב זה."</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index f5a04dbf8ddc..5a7eba3a2afa 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"テキストをクリップボードにコピーしました。"</string> <string name="copied" msgid="4675902854553014676">"コピーしました"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> から <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> に貼り付けました"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"クリップボードから <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> に貼り付けました"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内のテキストを貼り付けました"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内の画像を貼り付けました"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> がクリップボード内のコンテンツを貼り付けました"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>をペア設定しています。"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"アプリを起動しています。"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ブートを終了しています。"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g>を実行中"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"タップするとゲームに戻ります"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ゲームの選択"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ショートカットを使用"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色反転"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色補正"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"さらに輝度を下げる"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が ON になりました。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が OFF になりました。"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"管理者により更新されています"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"管理者により削除されています"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"バッテリー セーバーを有効にすると、ダークテーマが ON になり、バックグラウンド アクティビティ、一部の視覚効果、特定の機能が制限されるか OFF になります。\n\n"<annotation id="url">"詳細"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"バッテリー セーバーを有効にすると、ダークテーマが ON になり、バックグラウンド アクティビティ、一部の視覚効果、特定の機能が制限されるか OFF になります。"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"データセーバーは、一部のアプリによるバックグラウンドでのデータ送受信を停止することでデータ使用量を抑制します。使用中のアプリからデータを送受信することはできますが、その頻度は低くなる場合があります。この影響として、たとえば画像はタップしないと表示されないようになります。"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"データセーバーを ON にしますか?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ON にする"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"現在、<xliff:g id="APP_NAME_0">%1$s</xliff:g> は使用できません。このアプリの使用は [<xliff:g id="APP_NAME_1">%2$s</xliff:g>] で管理されています。"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"詳細"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"アプリの一時停止を解除"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"仕事用プロファイルを ON にしますか?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"仕事用のアプリ、通知、データなど、仕事用プロファイルの機能が ON になります"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ON にする"</string> <string name="app_blocked_title" msgid="7353262160455028160">"アプリの利用不可"</string> <string name="app_blocked_message" msgid="542972921087873023">"現在 <xliff:g id="APP_NAME">%1$s</xliff:g> はご利用になれません。"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 13b06f695a88..8a9547b0f615 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ტექსტი დაკოპირებულია გაცვლის ბუფერში."</string> <string name="copied" msgid="4675902854553014676">"დაკოპირდა"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-დან <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>-ში ჩასმული"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მა ჩასვა გაცვლის ბუფერიდან"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული ტექსტი"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული სურათი"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>-მ(ა) ჩასვა თქვენ მიერ დაკოპირებული კონტენტი"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"ემზადება <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"აპების ჩართვა"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ჩატვირთვის დასასრული."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> გაშვებულია"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"შეეხეთ თამაშში დასაბრუნებლად"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"აირჩიეთ თამაში"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"მალსახმობის გამოყენება"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ფერთა ინვერსია"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ფერთა კორექცია"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"დამატებითი დაბინდვა"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ჩართულია."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> გამორთულია."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"განახლებულია თქვენი ადმინისტრატორის მიერ"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"წაიშალა თქვენი ადმინისტრატორის მიერ"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"კარგი"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ბატარეის დამზოგი ჩართავს მუქ თემას და შეზღუდავს ან გამორთავს ფონურ აქტივობას, ზოგიერთ ვიზუალურ ეფექტსა და გარკვეულ ფუნქციებს.\n\n"<annotation id="url">"შეიტყვეთ მეტი"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ბატარეის დამზოგი ჩართავს მუქ თემას და შეზღუდავს ან გამორთავს ფონურ აქტივობას, ზოგიერთ ვიზუალურ ეფექტსა და გარკვეულ ფუნქციებს."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"მობილური ინტერნეტის მოხმარების შემცირების მიზნით, მონაცემთა დამზოგველი ზოგიერთ აპს ფონურ რეჟიმში მონაცემთა გაგზავნასა და მიღებას შეუზღუდავს. თქვენ მიერ ამჟამად გამოყენებული აპი მაინც შეძლებს მობილურ ინტერნეტზე წვდომას, თუმცა ამას ნაკლები სიხშირით განახორციელებს. ეს ნიშნავს, რომ, მაგალითად, სურათები არ გამოჩნდება მანამ, სანამ მათ საგანგებოდ არ შეეხებით."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ჩაირთოს მონაცემთა დამზოგველი?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ჩართვა"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ამჟამად მიუწვდომელია. ის იმართება <xliff:g id="APP_NAME_1">%2$s</xliff:g>-ის მიერ."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"შეიტყვეთ მეტი"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"აპის დაპაუზების გაუქმება"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ჩაირთოს სამსახურის პროფილი?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"თქვენი სამსახურის აპები, შეტყობინებები, მონაცემები და სამსახურის პროფილის ყველა სხვა ფუნქცია ჩაირთვება"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ჩართვა"</string> <string name="app_blocked_title" msgid="7353262160455028160">"აპი მიუწვდომელია"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ამჟამად მიუწვდომელია."</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index c8fb7e3bf610..e7485454ee5c 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Мәтін ақпарат алмастыру қорына сақталды."</string> <string name="copied" msgid="4675902854553014676">"Көшірілді"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> қолданбасынан <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> қолданбасына қойылды."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Буферден <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> қолданбасына қойылды."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген мәтінді қойды."</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген суретті қойды."</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> сіз көшірген мазмұнды қойды."</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> дайындалуда."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Қолданбалар іске қосылуда."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Қосуды аяқтауда."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> қосылған"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Ойынды жалғастыру үшін түртіңіз"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Ойынды таңдаңыз"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Төте жолды пайдалану"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Түс инверсиясы"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Түсті түзету"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Экранды қарайту"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Пайдаланушы дыбыс деңгейі пернелерін басып ұстап тұрды. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> қосулы."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дыбыс деңгейі пернелерін басып тұрған соң, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өшірілді."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Әкімші жаңартқан"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Әкімші жойған"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Жарайды"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Батареяны үнемдеу режимі қараңғы тақырыпты іске қосады және фондық әрекеттерге, кейбір визуалдық әсерлер мен белгілі бір функцияларға шектеу қояды немесе оларды өшіреді.\n\n"<annotation id="url">"Толығырақ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Батареяны үнемдеу режимі қараңғы тақырыпты іске қосады және фондық әрекеттерге, кейбір визуалдық әсерлер мен белгілі бір функцияларға шектеу қояды немесе оларды өшіреді."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Дерек шығынын азайту үшін Трафикті үнемдеу режимінде кейбір қолданбаларға деректі фондық режимде жіберуге және алуға тыйым салынады. Ашық тұрған қолданба деректі шектеулі шамада пайдаланады (мысалы, кескіндер оларды түрткенге дейін көрсетілмейді)."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Трафикті үнемдеу режимі қосылсын ба?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Қосу"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> дәл қазір қолжетімді емес. Ол <xliff:g id="APP_NAME_1">%2$s</xliff:g> арқылы басқарылады."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Толығырақ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Қолданбаны қайта қосу"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Жұмыс профилі қосылсын ба?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Жұмыс қолданбалары, хабарландырулар, деректер және жұмыс профилінің басқа да мүмкіндіктері қосылады."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Қосу"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Қолданба қолжетімді емес"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> қазір қолжетімді емес."</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index e00bed0f0164..ea6d6de404a7 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"បានចម្លងអត្ថបទទៅក្ដារតម្បៀតខ្ទាស់។"</string> <string name="copied" msgid="4675902854553014676">"បានចម្លង"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលពី <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលពីឃ្លីបបត"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលអត្ថបទដែលអ្នកបានចម្លង"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលរូបភាពដែលអ្នកបានចម្លង"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> បានដាក់ចូលខ្លឹមសារដែលអ្នកបានចម្លង"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"កំពុងរៀបចំ <xliff:g id="APPNAME">%1$s</xliff:g>។"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ចាប់ផ្ដើមកម្មវិធី។"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"បញ្ចប់ការចាប់ផ្ដើម។"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> កំពុងដំណើរការ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ចុចដើម្បីត្រឡប់ទៅហ្គេមវិញ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ជ្រើសរើសហ្គេម"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ប្រើប្រាស់ផ្លូវកាត់"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"បញ្ច្រាសពណ៌"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ការកែពណ៌"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ពន្លឺតិចខ្លាំង"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបិទ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"ធ្វើបច្ចុប្បន្នភាពដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"លុបដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"យល់ព្រម"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"មុខងារសន្សំថ្មបើករចនាប័ទ្មងងឹត និងដាក់កំហិត ឬបិទសកម្មភាពផ្ទៃខាងក្រោយ ឥទ្ធិពលរូបភាពមួយចំនួន និងមុខងារជាក់លាក់។\n\n"<annotation id="url">"ស្វែងយល់បន្ថែម"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"មុខងារសន្សំថ្មបើករចនាប័ទ្មងងឹត និងដាក់កំហិត ឬបិទសកម្មភាពផ្ទៃខាងក្រោយ ឥទ្ធិពលរូបភាពមួយចំនួន និងមុខងារជាក់លាក់។"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ដើម្បីជួយកាត់បន្ថយការប្រើប្រាស់ទិន្នន័យ កម្មវិធីសន្សំសំចៃទិន្នន័យរារាំងកម្មវិធីមួយចំនួនមិនឲ្យបញ្ជូន ឬទទួលទិន្នន័យនៅផ្ទៃខាងក្រោយទេ។ កម្មវិធីដែលអ្នកកំពុងប្រើនាពេលបច្ចុប្បន្នអាចចូលប្រើប្រាស់ទិន្នន័យបាន ប៉ុន្តែអាចនឹងមិនញឹកញាប់ដូចមុនទេ។ ឧទាហរណ៍ រូបភាពមិនបង្ហាញទេ លុះត្រាតែអ្នកប៉ះរូបភាពទាំងនោះ។"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"បើកកម្មវិធីសន្សំសំចៃទិន្នន័យ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"បើក"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> មិនអាចប្រើបានទេនៅពេលនេះ។ វាស្ថិតក្រោមការគ្រប់គ្រងរបស់ <xliff:g id="APP_NAME_1">%2$s</xliff:g> ។"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ស្វែងយល់បន្ថែម"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ឈប់ផ្អាកកម្មវិធី"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"បើកកម្រងព័ត៌មានការងារ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"កម្មវិធីការងារ ការជូនដំណឹង ទិន្នន័យ និងមុខងារកម្រងព័ត៌មានការងារផ្សេងទៀតរបស់អ្នកនឹងត្រូវបានបើក"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"បើក"</string> <string name="app_blocked_title" msgid="7353262160455028160">"មិនអាចប្រើកម្មវិធីនេះបានទេ"</string> <string name="app_blocked_message" msgid="542972921087873023">"មិនអាចប្រើ <xliff:g id="APP_NAME">%1$s</xliff:g> នៅពេលនេះបានទេ។"</string> @@ -2287,8 +2302,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"រូបភាពផ្សព្វផ្សាយម៉ាកកម្មវិធី"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"ពិនិត្យមើលការកំណត់សិទ្ធិចូលប្រើ"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> អាចមើល និងគ្រប់គ្រងអេក្រង់របស់អ្នកបាន។ សូមចុច ដើម្បីពិនិត្យមើល។"</string> - <!-- no translation found for ui_translation_accessibility_translated_text (3197547218178944544) --> - <skip /> - <!-- no translation found for ui_translation_accessibility_translation_finished (3057830947610088465) --> - <skip /> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"បានបកប្រែ <xliff:g id="MESSAGE">%1$s</xliff:g>។"</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"បានបកប្រែសារពីភាសា<xliff:g id="FROM_LANGUAGE">%1$s</xliff:g>ទៅភាសា<xliff:g id="TO_LANGUAGE">%2$s</xliff:g>។"</string> </resources> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 7ac785bd60f7..126e1f45913b 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ಪಠ್ಯವನ್ನು ಕ್ಲಿಪ್ಬೋರ್ಡ್ಗೆ ನಕಲಿಸಲಾಗಿದೆ."</string> <string name="copied" msgid="4675902854553014676">"ನಕಲಿಸಲಾಗಿದೆ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ಅನ್ನು <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ಅನ್ನು ಕ್ಲಿಪ್ಬೋರ್ಡ್ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"ನೀವು ನಕಲಿಸಿರುವ ಪಠ್ಯವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> <string name="pasted_image" msgid="4729097394781491022">"ನೀವು ನಕಲಿಸಿರುವ ಚಿತ್ರವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> <string name="pasted_content" msgid="646276353060777131">"ನೀವು ನಕಲಿಸಿರುವ ವಿಷಯವನ್ನು <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ನಿಂದ ಅಂಟಿಸಲಾಗಿದೆ"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> ಸಿದ್ಧಪಡಿಸಲಾಗುತ್ತಿದೆ."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ಬೂಟ್ ಪೂರ್ಣಗೊಳಿಸಲಾಗುತ್ತಿದೆ."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ರನ್ ಆಗುತ್ತಿದೆ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ಆಟಕ್ಕೆ ಹಿಂತಿರುಗಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ಆಟವನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ಬಣ್ಣ ವಿಲೋಮ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ಬಣ್ಣ ತಿದ್ದುಪಡಿ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ಇನ್ನಷ್ಟು ಮಬ್ಬು"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳಿ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಲಾಗಿದೆ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ಅಪ್ಡೇಟ್ ಮಾಡಲ್ಪಟ್ಟಿದೆ"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ಅಳಿಸಿದ್ದಾರೆ"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ಸರಿ"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ, ಕೆಲವು ವಿಷುವಲ್ ಎಫೆಕ್ಟ್ಗಳು, ಮತ್ತು ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ ಅಥವಾ ಆಫ್ ಮಾಡುತ್ತದೆ.\n\n"<annotation id="url">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ಬ್ಯಾಟರಿ ಸೇವರ್ ಡಾರ್ಕ್ ಥೀಮ್ ಅನ್ನು ಆನ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಚಟುವಟಿಕೆ, ಕೆಲವು ವಿಷುವಲ್ ಎಫೆಕ್ಟ್ಗಳು, ಮತ್ತು ಕೆಲವು ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮಿತಿಗೊಳಿಸುತ್ತದೆ ಅಥವಾ ಆಫ್ ಮಾಡುತ್ತದೆ."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ಡೇಟಾ ಬಳಕೆ ಕಡಿಮೆ ಮಾಡುವ ನಿಟ್ಟಿನಲ್ಲಿ, ಡೇಟಾ ಸೇವರ್ ಕೆಲವು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಡೇಟಾ ಕಳುಹಿಸುವುದನ್ನು ಅಥವಾ ಸ್ವೀಕರಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ. ನೀವು ಪ್ರಸ್ತುತ ಬಳಸುತ್ತಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು ಆದರೆ ಪದೇ ಪದೇ ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಇದರರ್ಥ, ಉದಾಹರಣೆಗೆ, ನೀವು ಅವುಗಳನ್ನು ಟ್ಯಾಪ್ ಮಾಡುವವರೆಗೆ ಆ ಚಿತ್ರಗಳು ಕಾಣಿಸಿಕೊಳ್ಳುವುದಿಲ್ಲ."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ಡೇಟಾ ಸೇವರ್ ಆನ್ ಮಾಡಬೇಕೇ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ಆನ್ ಮಾಡಿ"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ಅಪ್ಲಿಕೇಶನ್ ಸದ್ಯಕ್ಕೆ ಲಭ್ಯವಿಲ್ಲ. ಇದನ್ನು <xliff:g id="APP_NAME_1">%2$s</xliff:g> ನಲ್ಲಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ಆ್ಯಪ್ ವಿರಾಮ ನಿಲ್ಲಿಸಿ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಆನ್ ಮಾಡುವುದೇ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ನಿಮ್ಮ ಕೆಲಸದ ಅಪ್ಲಿಕೇಶನ್ಗಳು, ಅಧಿಸೂಚನೆಗಳು, ಡೇಟಾ ಮತ್ತು ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ನ ಇತರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಆನ್ ಮಾಡಲಾಗುತ್ತದೆ"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ಆನ್ ಮಾಡಿ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ಆ್ಯಪ್ ಲಭ್ಯವಿಲ್ಲ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಇದೀಗ ಲಭ್ಯವಿಲ್ಲ."</string> @@ -2287,8 +2302,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"ಅಪ್ಲಿಕೇಶನ್ ಬ್ರ್ಯಾಂಡಿಂಗ್ ಚಿತ್ರ"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"ಪ್ರವೇಶ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಅನ್ನು ವೀಕ್ಷಿಸಬಹುದು ಮತ್ತು ನಿಯಂತ್ರಿಸಬಹುದು. ಪರಿಶೀಲಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string> - <!-- no translation found for ui_translation_accessibility_translated_text (3197547218178944544) --> - <skip /> - <!-- no translation found for ui_translation_accessibility_translation_finished (3057830947610088465) --> - <skip /> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"<xliff:g id="MESSAGE">%1$s</xliff:g> ಅನ್ನು ಅನುವಾದಿಸಲಾಗಿದೆ."</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"<xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> ಭಾಷೆಯಿಂದ <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> ಭಾಷೆಗೆ ಸಂದೇಶವನ್ನು ಅನುವಾದಿಸಲಾಗಿದೆ."</string> </resources> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index b33ef6b24324..c74eae72d925 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"텍스트가 클립보드에 복사되었습니다."</string> <string name="copied" msgid="4675902854553014676">"복사 완료"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 앱이 <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> 앱에서 복사하여 붙여넣음"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 앱이 클립보드에서 복사하여 붙여넣음"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 텍스트를 붙여넣음"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 이미지를 붙여넣음"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>에서 복사한 콘텐츠를 붙여넣음"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> 준비 중..."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"앱을 시작하는 중입니다."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"부팅 완료"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> 실행 중"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"게임으로 돌아가려면 탭하세요."</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"게임 선택"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"단축키 사용"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"색상 반전"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"색상 보정"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"더 어둡게"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 설정되었습니다."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 중지되었습니다."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"관리자에 의해 업데이트되었습니다."</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"관리자에 의해 삭제되었습니다."</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"확인"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"절전 모드는 어두운 테마를 사용 설정하고 백그라운드 활동, 일부 시각 효과, 특정 기능을 제한하거나 사용 중지합니다.\n\n"<annotation id="url">"자세히 알아보기"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"절전 모드는 어두운 테마를 사용 설정하고 백그라운드 활동, 일부 시각 효과, 특정 기능을 제한하거나 사용 중지합니다."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"데이터 사용량을 줄이기 위해 데이터 절약 모드는 일부 앱이 백그라운드에서 데이터를 전송하거나 수신하지 못하도록 합니다. 현재 사용 중인 앱에서 데이터에 액세스할 수 있지만 빈도가 줄어듭니다. 예를 들면, 이미지를 탭하기 전에는 이미지가 표시되지 않습니다."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"데이터 절약 모드를 사용 설정하시겠습니까?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"사용 설정"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>은(는) 현재 사용할 수 없습니다. <xliff:g id="APP_NAME_1">%2$s</xliff:g>에서 관리하는 앱입니다."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"자세히 알아보기"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"앱 일시중지 해제"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"직장 프로필을 사용 설정하시겠어요?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"직장 앱, 알림, 데이터 및 기타 직장 프로필 기능이 사용 설정됩니다."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"사용 설정"</string> <string name="app_blocked_title" msgid="7353262160455028160">"앱을 사용할 수 없습니다"</string> <string name="app_blocked_message" msgid="542972921087873023">"현재 <xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 사용할 수 없습니다."</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 60daccf43acf..a60bdd582f17 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текст алмашуу буферине көчүрүлдү."</string> <string name="copied" msgid="4675902854553014676">"Көчүрүлдү"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> колдонмосунан чапталды"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> алмашуу буферинен чапталды"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн текст чапталды"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн сүрөт чапталды"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: көчүрүлгөн мазмун чапталды"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> даярдалууда."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Колдонмолорду иштетип баштоо"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Жүктөлүүдө"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> иштеп жатат"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Оюнга кайтуу үчүн таптаңыз"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Оюн тандоо"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Кыска жолду колдонуу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Түстү инверсиялоо"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Түсүн тууралоо"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Кошумча караңгылатуу"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> күйгүзүлдү."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өчүрүлдү."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Администраторуңуз жаңыртып койгон"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Администраторуңуз жок кылып салган"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ЖАРАЙТ"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Батареяны үнөмдөгүч режиминде Караңгы тема күйгүзүлүп, фондогу аракеттер, айрым визуалдык эффекттер жана белгилүү бир функциялар чектелип же өчүрүлөт.\n\n"<annotation id="url">"Кеңири маалымат"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Батареяны үнөмдөгүч режиминде Караңгы тема күйгүзүлүп, фондогу аракеттер, айрым визуалдык эффекттер жана белгилүү бир функциялар чектелип же өчүрүлөт."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Трафикти үнөмдөө режиминде айрым колдонмолор маалыматтарды фондо өткөрө алышпайт. Учурда сиз пайдаланып жаткан колдонмо маалыматтарды жөнөтүп/ала алат, бирок адаттагыдан азыраак өткөргөндүктөн, анын айрым функциялары талаптагыдай иштебей коюшу мүмкүн. Мисалы, сүрөттөр басылмайынча жүктөлбөйт."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Трафикти үнөмдөө режимин иштетесизби?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Күйгүзүү"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> колдонмосу учурда жеткиликсиз. Анын жеткиликтүүлүгү <xliff:g id="APP_NAME_1">%2$s</xliff:g> тарабынан башкарылат."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Кеңири маалымат"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Колдонмону иштетүү"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Жумуш профили күйгүзүлсүнбү?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Жумуш колдонмолоруңуз, билдирмелериңиз, дайын-даректериңиз жана жумуш профилинин башка функциялары күйгүзүлөт."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Күйгүзүү"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Колдонмо учурда жеткиликсиз"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> учурда жеткиликсиз"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index e53048c044f6..b0782ab357d2 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ສຳເນົາຂໍ້ຄວາມໃສ່ຄລິບບອດແລ້ວ."</string> <string name="copied" msgid="4675902854553014676">"ສຳເນົາແລ້ວ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"ວາງ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ຈາກ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ແລ້ວ"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ວາງ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ຈາກຄລິບບອດແລ້ວ"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງຂໍ້ຄວາມທີ່ທ່ານສຳເນົາແລ້ວ"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງຮູບທີ່ທ່ານສຳເນົາແລ້ວ"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ວາງເນື້ອຫາທີ່ທ່ານສຳເນົາແລ້ວ"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"ກຳລັງກຽມ <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ກຳລັງເປີດແອັບຯ."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ກຳລັງສຳເລັດການເປີດລະບົບ."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ກຳລັງເຮັດວຽກ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tap to return to game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Choose game"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ໃຊ້ປຸ່ມລັດ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ການປີ້ນສີ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ການແກ້ໄຂຄ່າສີ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ຫຼຸດແສງເປັນພິເສດ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ເປີດໃຊ້ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ແລ້ວ."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ປິດ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ໄວ້ແລ້ວ."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"ຖືກອັບໂຫລດໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"ຖືກລຶບອອກໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ຕົກລົງ"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ຕົວປະຢັດແບັດເຕີຣີຈະເປີດໃຊ້ຮູບແບບສີສັນມືດ ແລະ ຈຳກັດ ຫຼື ປິດການເຄື່ອນໄຫວໃນພື້ນຫຼັງ, ເອັບເຟັກທາງພາບຈຳນວນໜຶ່ງ ແລະ ຄຸນສົມບັດບາງຢ່າງ.\n\n"<annotation id="url">"ສຶກສາເພີ່ມເຕີມ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ຕົວປະຢັດແບັດເຕີຣີຈະເປີດໃຊ້ຮູບແບບສີສັນມືດ ແລະ ຈຳກັດ ຫຼື ປິດການເຄື່ອນໄຫວໃນພື້ນຫຼັງ, ເອັບເຟັກທາງພາບຈຳນວນໜຶ່ງ ແລະ ຄຸນສົມບັດບາງຢ່າງ."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ເພື່ອຊ່ວຍຫຼຸດຜ່ອນການນຳໃຊ້ຂໍ້ມູນ, ຕົວປະຢັດອິນເຕີເນັດຈະປ້ອງກັນບໍ່ໃຫ້ບາງແອັບສົ່ງ ຫຼື ຮັບຂໍ້ມູນໃນພື້ນຫຼັງ. ແອັບໃດໜຶ່ງທີ່ທ່ານກຳລັງໃຊ້ຢູ່ຈະສາມາດເຂົ້າເຖິງຂໍ້ມູນໄດ້ ແຕ່ອາດເຂົ້າເຖິງໄດ້ຖີ່ໜ້ອຍລົງ. ນີ້ອາດໝາຍຄວາມວ່າ ຮູບພາບຕ່າງໆອາດບໍ່ສະແດງຈົນກວ່າທ່ານຈະແຕະໃສ່ກ່ອນ."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ເປີດຕົວປະຢັດອິນເຕີເນັດບໍ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ເປີດໃຊ້"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ບໍ່ສາມາດໃຊ້ໄດ້ໃນຕອນນີ້. ມັນຖືກຈັດການໂດຍ <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ສຶກສາເພີ່ມເຕີມ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ຍົກເລີກການຢຸດແອັບຊົ່ວຄາວ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ເປີດໃຊ້ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກບໍ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ແອັບວຽກຂອງທ່ານ, ການແຈ້ງເຕືອນ, ຂໍ້ມູນ ແລະ ຄຸນສົມບັດໂປຣໄຟລ໌ວຽກຈະຖືກເປີດໃຊ້"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ເປີດ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ແອັບບໍ່ສາມາດໃຊ້ໄດ້"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ສາມາດໃຊ້ໄດ້ໃນຕອນນີ້."</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index c3919c102e0a..4497d9a11bf1 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Tekstas nukopijuotas į iškarpinę."</string> <string name="copied" msgid="4675902854553014676">"Nukopijuota"</string> <string name="pasted_from_app" msgid="5627698450808256545">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijuota iš „<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>“"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijuota iš iškarpinės"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą tekstą"</string> <string name="pasted_image" msgid="4729097394781491022">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą vaizdą"</string> <string name="pasted_content" msgid="646276353060777131">"„<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>“ įklijavo jūsų nukopijuotą turinį"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Ruošiama „<xliff:g id="APPNAME">%1$s</xliff:g>“."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Paleidžiamos programos."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Užbaigiamas paleidimas."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Vykdoma „<xliff:g id="APP">%1$s</xliff:g>“"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Palieskite, kad grįžtumėte į žaidimą"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Pasirinkite žaidimą"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Naudoti spartųjį klavišą"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Spalvų inversija"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Spalvų taisymas"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Itin blanku"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ įjungta."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ išjungta."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atnaujino administratorius"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Ištrynė administratorius"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Gerai"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Akumuliatoriaus tausojimo priemonė įjungia tamsiąją temą ir apriboja arba išjungia veiklą fone, kai kuriuos vaizdinius efektus bei tam tikras funkcijas.\n\n"<annotation id="url">"Sužinokite daugiau"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Akumuliatoriaus tausojimo priemonė įjungia tamsiąją temą ir apriboja arba išjungia veiklą fone, kai kuriuos vaizdinius efektus bei tam tikras funkcijas."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Kad padėtų sumažinti duomenų naudojimą, Duomenų taupymo priemonė neleidžia kai kurioms programoms siųsti ar gauti duomenų fone. Šiuo metu naudojama programa gali pasiekti duomenis, bet tai bus daroma rečiau. Tai gali reikšti, kad, pvz., vaizdai nebus pateikiami, jei jų nepaliesite."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Įj. Duomenų taupymo priemonę?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Įjungti"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Programa „<xliff:g id="APP_NAME_0">%1$s</xliff:g>“ šiuo metu nepasiekiama. Tai tvarkoma naudojant programą „<xliff:g id="APP_NAME_1">%2$s</xliff:g>“."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Sužinoti daugiau"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Atšaukti programos pristabdymą"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Įjungti darbo profilį?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Darbo programos, pranešimai, duomenys ir kitos darbo profilio funkcijos bus išjungtos"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Įjungti"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Programa nepasiekiama."</string> <string name="app_blocked_message" msgid="542972921087873023">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ šiuo metu nepasiekiama."</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 6bc4356eb5c7..dbbf427400c0 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1025,7 +1025,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teksts ir kopēts uz starpliktuvi."</string> <string name="copied" msgid="4675902854553014676">"Nokopēts"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Lietotnē <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> tika ielīmēti dati no lietotnes <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Lietotnē <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> tika ielīmēti dati no starpliktuves."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto tekstu"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto attēlu"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ielīmēja jūsu nokopēto saturu"</string> @@ -1279,6 +1280,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Notiek lietotnes <xliff:g id="APPNAME">%1$s</xliff:g> sagatavošana."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Notiek lietotņu palaišana."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Tiek pabeigta sāknēšana."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> darbojas"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Pieskarieties, lai atgrieztos spēlē"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Spēles izvēlēšanās"</string> @@ -1731,6 +1740,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Izmantot saīsni"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Krāsu inversija"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Krāsu korekcija"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Papildu aptumšošana"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika ieslēgts."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika izslēgts."</string> @@ -1887,8 +1898,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atjaunināja administrators"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dzēsa administrators"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Labi"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Akumulatora enerģijas taupīšanas režīmā tiek ieslēgts tumšais motīvs, kā arī tiek ierobežotas vai izslēgtas darbības fonā, daži vizuālie efekti un funkcijas.\n\n"<annotation id="url">"Uzzināt vairāk"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Akumulatora enerģijas taupīšanas režīmā tiek ieslēgts tumšais motīvs, kā arī tiek ierobežotas vai izslēgtas darbības fonā, daži vizuālie efekti un funkcijas."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Lai samazinātu datu lietojumu, datu lietojuma samazinātājs neļauj dažām lietotnēm fonā nosūtīt vai saņemt datus. Lietotne, kuru pašlaik izmantojat, var piekļūt datiem, bet, iespējams, piekļūs tiem retāk (piemēram, attēli tiks parādīti tikai tad, kad tiem pieskarsieties)."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vai ieslēgt datu lietojuma samazinātāju?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ieslēgt"</string> @@ -2000,8 +2013,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> pašlaik nav pieejama. Šo darbību pārvalda <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Uzzināt vairāk"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Atsākt lietotnes darbību"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vai ieslēgt darba profilu?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Tiks ieslēgtas jūsu darba lietotnes, paziņojumi, dati un citas darba profila funkcijas."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ieslēgt"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Lietotne nav pieejama"</string> <string name="app_blocked_message" msgid="542972921087873023">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> pašlaik nav pieejama."</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index 648ca8cd3c43..618f8d614173 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текстот е копиран на таблата со исечоци."</string> <string name="copied" msgid="4675902854553014676">"Копирано"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> залепи од <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> залепи од привремената меморија"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> го залепи текстот што го копиравте"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ја залепи сликата што ја копиравте"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ги залепи содржините што ги копиравте"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Се подготвува <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Се стартуваат апликациите."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Подигањето завршува."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> работи"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Допрете за да се вратите во играта"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Избор на игра"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи кратенка"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија на бои"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекција на бои"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнително затемнување"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е вклучена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е исклучена."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ажурирано од администраторот"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Избришано од администраторот"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Во ред"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"„Штедачот на батерија“ ја вклучува темната тема и ги ограничува или исклучува активноста во заднина, некои визуелни ефекти и одредени функции.\n\n"<annotation id="url">"Дознајте повеќе"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"„Штедачот на батерија“ ја вклучува темната тема и ги ограничува или исклучува активноста во заднина, некои визуелни ефекти и одредени функции."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"За да се намали користењето интернет, „Штедачот на интернет“ спречува дел од апликациите да испраќаат или да примаат податоци во заднина. Одредена апликација што ја користите ќе може да користи интернет, но можеби тоа ќе го прави поретко. Ова значи, на пример, дека сликите нема да се прикажуваат додека не ги допрете."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Да се вклучи „Штедач на интернет“?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Вклучи"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Апликацијата <xliff:g id="APP_NAME_0">%1$s</xliff:g> не е достапна во моментов. Со ова управува <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Дознај повеќе"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Прекини ја паузата"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Да се вклучи работниот профил?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Вашите работни апликации, известувања, податоци и други функции на работниот профил ќе бидат вклучени"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Вклучи"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Апликацијата не е достапна"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> не е достапна во моментов."</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 8d4217d62663..5448be5a495e 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ടെക്സ്റ്റ് ക്ലിപ്ബോർഡിലേക്ക് പകർത്തി."</string> <string name="copied" msgid="4675902854553014676">"പകർത്തി"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> എന്നതിൽ നിന്ന് <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ഒട്ടിച്ചു"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ക്ലിപ്ബോർഡിൽ നിന്ന് <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ഒട്ടിച്ചു"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ടെക്സ്റ്റ് ഒട്ടിച്ചു"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ഒരു ചിത്രം ഒട്ടിച്ചു"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> നിങ്ങൾ പകർത്തിയ ഉള്ളടക്കം ഒട്ടിച്ചു"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> തയ്യാറാക്കുന്നു."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"അപ്ലിക്കേഷനുകൾ ആരംഭിക്കുന്നു."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ബൂട്ട് ചെയ്യൽ പൂർത്തിയാകുന്നു."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> പ്രവർത്തിക്കുന്നു"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ഗെയിമിലേക്ക് മടങ്ങാൻ ടാപ്പ് ചെയ്യുക"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ഗെയിം തിരഞ്ഞെടുക്കുക"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"കുറുക്കുവഴി ഉപയോഗിക്കുക"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"വർണ്ണ വിപര്യയം"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"നിറം ക്രമീകരിക്കൽ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"കൂടുതൽ ഡിം ചെയ്യൽ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"വോളിയം കീകൾ പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓണാക്കി."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"വോളിയം കീകൾ അമർത്തിപ്പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓഫാക്കി."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"നിങ്ങളുടെ അഡ്മിൻ അപ്ഡേറ്റ് ചെയ്യുന്നത്"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"നിങ്ങളുടെ അഡ്മിൻ ഇല്ലാതാക്കുന്നത്"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ശരി"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ബാറ്ററി ലാഭിക്കൽ ഡാർക്ക് തീം ഓണാക്കുന്നു, കൂടാതെ പശ്ചാത്തല ആക്റ്റിവിറ്റി, ചില വിഷ്വൽ ഇഫക്റ്റുകൾ, ചില ഫീച്ചറുകൾ എന്നിവ പരിമിതപ്പെടുത്തുകയോ ഓഫാക്കുകയോ ചെയ്യുന്നു.\n\n"<annotation id="url">"കൂടുതലറിയുക"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ബാറ്ററി ലാഭിക്കൽ ഡാർക്ക് തീം ഓണാക്കുന്നു, കൂടാതെ പശ്ചാത്തല ആക്റ്റിവിറ്റി, ചില വിഷ്വൽ ഇഫക്റ്റുകൾ, ചില ഫീച്ചറുകൾ എന്നിവ പരിമിതപ്പെടുത്തുകയോ ഓഫാക്കുകയോ ചെയ്യുന്നു."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ഡാറ്റാ ഉപയോഗം കുറയ്ക്കാൻ സഹായിക്കുന്നതിനായി പശ്ചാത്തലത്തിൽ ഡാറ്റ അയയ്ക്കുകയോ സ്വീകരിക്കുകയോ ചെയ്യുന്നതിൽ നിന്ന് ചില ആപ്പുകളെ ഡാറ്റാ സേവർ തടയുന്നു. നിങ്ങൾ നിലവിൽ ഉപയോഗിക്കുന്ന ഒരു ആപ്പിന് ഡാറ്റ ആക്സസ് ചെയ്യാനാകും, എന്നാൽ വല്ലപ്പോഴും മാത്രമെ സംഭവിക്കുന്നുള്ളു. ഇതിനർത്ഥം, ഉദാഹരണമായി നിങ്ങൾ ടാപ്പ് ചെയ്യുന്നത് വരെ ചിത്രങ്ങൾ പ്രദർശിപ്പിക്കുകയില്ല എന്നാണ്."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ഡാറ്റ സേവർ ഓണാക്കണോ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ഓണാക്കുക"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ഇപ്പോൾ ലഭ്യമല്ല. <xliff:g id="APP_NAME_1">%2$s</xliff:g> ആണ് ഇത് മാനേജ് ചെയ്യുന്നത്."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"കൂടുതലറിയുക"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ആപ്പ് പുനഃരാംഭിക്കുക"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ഔദ്യോഗിക പ്രൊഫൈൽ ഓണാക്കണോ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾ, അറിയിപ്പുകൾ, ഡാറ്റ, മറ്റ് ഔദ്യോഗിക പ്രൊഫൈൽ ഫീച്ചറുകൾ എന്നിവ ഓണാക്കും"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ഓണാക്കുക"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ആപ്പ് ലഭ്യമല്ല"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ഇപ്പോൾ ലഭ്യമല്ല."</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 27c52d2322cb..5d411bd35e57 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текст хуулагдав."</string> <string name="copied" msgid="4675902854553014676">"Хуулсан"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>-с буулгасан <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Түр санах ойгоос буулгасан <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан текстийг буулгасан"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан зургийг буулгасан"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> таны хуулсан контентыг буулгасан"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Бэлдэж байна <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Апп-г эхлүүлж байна."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Эхлэлийг дуусгаж байна."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ажиллаж байна"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Тоглоом руу буцахын тулд товших"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Тоглоом сонгох"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Товчлол ашиглах"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Өнгө хувиргалт"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Өнгөний засвар"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Хэт бүүдгэр"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаалаа."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г унтраалаа."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Таны админ шинэчилсэн"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Таны админ устгасан"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ОК"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Батарей хэмнэгч нь Бараан загварыг асааж, дэвсгэрийн үйл ажиллагаа, зарим визуал эффект болон тодорхой онцлогуудийг хязгаарлаж эсвэл унтраана.\n\n"<annotation id="url">"Нэмэлт мэдээлэл авах"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Батарей хэмнэгч нь Бараан загварыг асааж, дэвсгэрийн үйл ажиллагаа, зарим визуал эффект болон тодорхой онцлогуудийг хязгаарлаж эсвэл унтраана."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Дата ашиглалтыг багасгахын тулд дата хэмнэгч нь ар талд ажиллаж буй зарим апп-н өгөгдлийг илгээх болон авахаас сэргийлдэг. Таны одоогийн ашиглаж буй апп нь өгөгдөлд хандах боломжтой хэдий ч тогтмол хандахгүй. Энэ нь жишээлбэл зургийг товших хүртэл харагдахгүй гэсэн үг юм."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Дата хэмнэгчийг асаах уу?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Асаах"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> одоогоор боломжгүй байна. Үүнийг <xliff:g id="APP_NAME_1">%2$s</xliff:g>-р удирддаг."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Дэлгэрэнгүй үзэх"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Аппыг түр зогсоохоо болих"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ажлын профайлыг асаах уу?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Таны ажлын апп, мэдэгдэл, өгөгдөл болон бусад ажлын профайлын онцлогийг асаана"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Асаах"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Апп боломжгүй байна"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> яг одоо боломжгүй байна."</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 82b7093448ca..2e8d6f523c8e 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"मजकूर क्लिपबोर्डवर कॉपी केला."</string> <string name="copied" msgid="4675902854553014676">"कॉपी केले"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> वरून <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> पेस्ट केले"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"क्लिपबोर्डवरून <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> पेस्ट केले"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"तुम्ही कॉपी केलेला मजकूर <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केला"</string> <string name="pasted_image" msgid="4729097394781491022">"तुम्ही कॉपी केलेली इमेज <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केली"</string> <string name="pasted_content" msgid="646276353060777131">"तुम्ही कॉपी केलेला आशय <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ने पेस्ट केला"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> तयार करत आहे."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"अॅप्स सुरू करत आहे."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"बूट समाप्त होत आहे."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"रन होणारे <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"गेमवर परत जाण्यासाठी टॅप करा"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"गेम निवडा"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट वापरा"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रंगांची उलटापालट"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रंग सुधारणा"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"आणखी डिम"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सुरू केला आहे."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> बंद केले आहे."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"आपल्या प्रशासकाने अपडेट केले"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"आपल्या प्रशासकाने हटवले"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ओके"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"बॅटरी सेव्हर गडद थीम सुरू करते आणि बॅकग्राउंड ॲक्टिव्हिटी, काही व्हिज्युअल इफेक्ट व ठरावीक वैशिष्ट्ये मर्यादित किंवा बंद करते.\n\n"<annotation id="url">"अधिक जाणून घ्या"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"बॅटरी सेव्हर गडद थीम सुरू करते आणि बॅकग्राउंड ॲक्टिव्हिटी, काही व्हिज्युअल इफेक्ट व ठरावीक वैशिष्ट्ये मर्यादित किंवा बंद करते."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"डेटाचा वापर कमी करण्यात मदत करण्यासाठी काही अॅप्सना बॅकग्राउंडमध्ये डेटा पाठवण्यास किंवा मिळवण्यास डेटा सर्व्हर प्रतिबंध करतो. तुम्ही सध्या वापरत असलेले अॅप डेटा अॅक्सेस करू शकते, पण तसे खूप कमी वेळा होते. याचाच अर्थ असा की, तुम्ही इमेजवर टॅप करेपर्यंत त्या डिस्प्ले होणार नाहीत असे होऊ शकते."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"डेटा सेव्हर सुरू करायचे?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"सुरू करा"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> आत्ता उपलब्ध नाही. हे <xliff:g id="APP_NAME_1">%2$s</xliff:g> कडून व्यवस्थापित केले जाते."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"अधिक जाणून घ्या"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"अॅप उघडा"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"कार्य प्रोफाइल सुरू ठेवायची?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"तुमची कार्य अॅप्स, सूचना, डेटा आणि अन्य कार्य प्रोफाइल वैशिष्ट्ये सुरू केली जातील"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"सुरू करा"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ॲप उपलब्ध नाही"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> आता उपलब्ध नाही."</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index c84a5667d43f..f937404dd11e 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teks disalin ke papan keratan"</string> <string name="copied" msgid="4675902854553014676">"Disalin"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditampalkan daripada <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ditampalkan daripada papan keratan"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal teks yang anda salin"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal imej yang anda salin"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> telah menampal kandungan yang anda salin"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Menyediakan <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Memulakan apl."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"But akhir."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> dijalankan"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Ketik untuk kembali ke permainan"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Pilih permainan"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Penyongsangan Warna"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Pembetulan Warna"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Amat malap"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dihidupkan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dimatikan."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Dikemas kini oleh pentadbir anda"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Dipadamkan oleh pentadbir anda"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Penjimat Bateri menghidupkan tema Gelap dan mengehadkan atau mematikan aktiviti latar, sesetengah kesan visual dan ciri tertentu.\n\n"<annotation id="url">"Ketahui lebih lanjut"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Penjimat Bateri menghidupkan tema Gelap dan mengehadkan atau mematikan aktiviti latar, sesetengah kesan visual dan ciri tertentu."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Untuk membantu penggunaan data dikurangkan, Penjimat Data menghalang sesetengah apl daripada menghantar atau menerima data di latar. Apl yang sedang digunakan boleh mengakses data tetapi mungkin tidak secara kerap. Perkara ini mungkin bermaksud bahawa imej tidak dipaparkan sehingga anda mengetik pada imej itu, contohnya."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Hidupkan Penjimat Data?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Hidupkan"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> tidak tersedia sekarang. Ini diurus oleh <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Ketahui lebih lanjut"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Nyahjeda apl"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Hidupkan profil kerja?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Apl kerja, pemberitahuan, data dan ciri profil kerja anda yang lain akan dihidupkan"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Hidupkan"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Apl tidak tersedia"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak tersedia sekarang."</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 0affc3d4c78e..e7f5ea0ffa4e 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"clipboardထံ စာသားအားကူးယူမည်"</string> <string name="copied" msgid="4675902854553014676">"မိတ္တူကူးပြီးပါပြီ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> မှ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> သို့ ကူးထည့်ထားသည်"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ကလစ်ဘုတ်မှ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> သို့ ကူးထည့်ထားသည်"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော စာသားကို ထည့်လိုက်သည်"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော ပုံကို ထည့်လိုက်သည်"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> က သင်မိတ္တူကူးထားသော အကြောင်းအရာကို ထည့်လိုက်သည်"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> အားပြင်ဆင်နေသည်။"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"အက်ပ်များကို စတင်နေ"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"လုပ်ငန်းစနစ်ထည့်သွင်း၍ ပြန်လည်စတင်ရန် ပြီးပါပြီ"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> က အလုပ်လုပ်နေသည်"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ဂိမ်းသို့ ပြန်သွားရန် တို့ပါ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ဂိမ်းကို ရွေးခြင်း"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ဖြတ်လမ်းလင့်ခ်ကို သုံးရန်"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"အရောင် ပြောင်းပြန်လှန်ခြင်း"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"အရောင်ပြင်ဆင်ခြင်း"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ပိုမှိန်ခြင်း"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ဖွင့်လိုက်သည်။"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ပိတ်လိုက်သည်။"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"သင်၏ စီမံခန့်ခွဲသူက အပ်ဒိတ်လုပ်ထားသည်"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"သင်၏ စီမံခန့်ခွဲသူက ဖျက်လိုက်ပါပြီ"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"‘ဘက်ထရီ အားထိန်း’ က ‘မှောင်သည့် အပြင်အဆင်’ ကို ဖွင့်ပြီး နောက်ခံလုပ်ဆောင်ချက်၊ ပြသမှုဆိုင်ရာ အထူးပြုလုပ်ချက်အချို့နှင့် ဝန်ဆောင်မှုအချို့ကို ကန့်သတ်သည် သို့မဟုတ် ပိတ်သည်။\n\n"<annotation id="url">"ပိုမိုလေ့လာရန်"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"‘ဘက်ထရီ အားထိန်း’ က ‘မှောင်သည့် အပြင်အဆင်’ ကို ဖွင့်ပြီး နောက်ခံလုပ်ဆောင်ချက်၊ ပြသမှုဆိုင်ရာ အထူးပြုလုပ်ချက်အချို့နှင့် ဝန်ဆောင်မှုအချို့ကို ကန့်သတ်သည် သို့မဟုတ် ပိတ်သည်။"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ဒေတာအသုံးလျှော့ချနိုင်ရန်အတွက် အက်ပ်များကို နောက်ခံတွင် ဒေတာပို့ခြင်းနှင့် လက်ခံခြင်းမပြုရန် \'ဒေတာချွေတာမှု\' စနစ်က တားဆီးထားပါသည်။ ယခုအက်ပ်ဖြင့် ဒေတာအသုံးပြုနိုင်သော်လည်း အကြိမ်လျှော့၍သုံးရပါမည်။ ဥပမာ၊ သင်က မတို့မချင်း ပုံများပေါ်လာမည် မဟုတ်ပါ။"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ဒေတာချွေတာမှုစနစ် ဖွင့်မလား။"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ဖွင့်ပါ"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ကို လောလောဆယ် မရနိုင်ပါ။ ၎င်းကို <xliff:g id="APP_NAME_1">%2$s</xliff:g> က စီမံထားပါသည်။"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ပိုမိုလေ့လာရန်"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"အက်ပ်ကို ခဏမရပ်တော့ရန်"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"အလုပ်ပရိုဖိုင် ဖွင့်လိုသလား။"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"သင်၏ အလုပ်အက်ပ်၊ အကြောင်းကြားချက်၊ ဒေတာနှင့် အခြားအလုပ်ပရိုဖိုင် ဝန်ဆောင်မှုများကို ဖွင့်လိုက်ပါမည်"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ဖွင့်ပါ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"အက်ပ်ကို မရနိုင်ပါ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို ယခု မရနိုင်ပါ။"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index b5f24eaf6b5b..fd96a2a8088a 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Kopierte tekst til utklippstavlen."</string> <string name="copied" msgid="4675902854553014676">"Kopiert"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn fra <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn fra utklippstavlen"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn tekst du kopierte"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn et bilde du kopierte"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> limte inn innhold du kopierte"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Forbereder <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Starter apper."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Ferdigstiller oppstart."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> kjører"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Trykk for å gå tilbake til spillet"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Velg et spill"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Bruk snarveien"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Fargeinvertering"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Fargekorrigering"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dimmet"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått av."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Oppdatert av administratoren din"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Slettet av administratoren din"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Batterisparing slår på mørkt tema og begrenser eller slår av bakgrunnsaktivitet, enkelte visuelle effekter og noen funksjoner.\n\n"<annotation id="url">"Finn ut mer"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Batterisparing slår på mørkt tema og begrenser eller slår av bakgrunnsaktivitet, enkelte visuelle effekter og noen funksjoner."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Datasparing hindrer noen apper fra å sende og motta data i bakgrunnen, for å redusere dataforbruket. Aktive apper kan bruke data, men kanskje ikke så mye som ellers – for eksempel vises ikke bilder før du trykker på dem."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vil du slå på Datasparing?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Slå på"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ikke tilgjengelig akkurat nå. Dette administreres av <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Finn ut mer"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Opphev pause for appen"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vil du slå på jobbprofilen?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Jobbappene dine samt varsler, data og andre funksjoner i jobbprofilen din blir slått på"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Slå på"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Appen er ikke tilgjengelig"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ikke tilgjengelig for øyeblikket."</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index 330147d6a131..d986f2ce1c56 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"क्लिपबोर्डमा प्रतिलिप गरिएको पाठ।"</string> <string name="copied" msgid="4675902854553014676">"प्रतिलिपि गरियो"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> मा रहेको डेटा कपी गरी <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> मा पेस्ट गरियो"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"क्लिपबोर्डमा रहेको डेटा कपी गरी <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> मा पेस्ट गरियो"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको टेक्स्ट पेस्ट गरेको छ"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको एउटा फोटो पेस्ट गरेको छ"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ले तपाईंले कपी गरेको सामग्री पेस्ट गरेको छ"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> तयारी गर्दै।"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"सुरुवात एपहरू।"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"बुट पुरा हुँदै।"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> चलिरहेको छ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"खेलमा फर्कन ट्याप गर्नुहोस्"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"खेल छनौट गर्नुहोस्"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"सर्टकट प्रयोग गर्नुहोस्"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"रङ्ग उल्टाउने सुविधा"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"रङ्ग सच्याउने सुविधा"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"अझै मधुरो"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अन भयो।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अफ भयो।"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"तपाईंका प्रशासकले अद्यावधिक गर्नुभएको"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"तपाईंका प्रशासकले मेट्नुभएको"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ठिक छ"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ब्याट्री सेभरले अँध्यारो थिम अन गर्छ र ब्याकग्राउन्डमा हुने क्रियाकलाप, केही भिजुअल इफेक्ट र निश्चित सुविधाहरू अफ गर्छ वा सीमित रूपमा मात्र चल्न दिन्छ।\n\n"<annotation id="url">"थप जान्नुहोस्"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ब्याट्री सेभरले अँध्यारो थिम अन गर्छ र ब्याकग्राउन्डमा हुने क्रियाकलाप, केही भिजुअल इफेक्ट र निश्चित सुविधाहरू अफ गर्छ वा सीमित रूपमा मात्र चल्न दिन्छ।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"डेटा सेभरले डेटा खपत कम गर्न केही एपहरूलाई ब्याकग्राउन्डमा डेटा पठाउन वा प्राप्त गर्न दिँदैन। तपाईंले अहिले प्रयोग गरिरहनुभएको एपले सीमित रूपमा मात्र डेटा चलाउन पाउँछ। उदाहरणका लागि, तपाईंले फोटोमा ट्याप गर्नुभयो भने मात्र फोटो देखिन्छ नत्र देखिँदैन।"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"डेटा सेभर अन गर्ने हो?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"सक्रिय गर्नुहोस्"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> अहिले उपलब्ध छैन। यो <xliff:g id="APP_NAME_1">%2$s</xliff:g> द्वारा व्यवस्थित छ।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"थप जान्नुहोस्"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"एपको पज हटाउनुहोस्"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"कार्य प्रोफाइल सक्रिय गर्ने?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"तपाईंका कार्यसम्बन्धी एप, सूचना, डेटा र कार्य प्रोफाइलका अन्य सुविधाहरू सक्रिय गरिने छन्"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"सक्रिय गर्नुहोस्"</string> <string name="app_blocked_title" msgid="7353262160455028160">"एप उपलब्ध छैन"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> अहिले उपलब्ध छैन।"</string> @@ -2287,8 +2302,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"एपको ब्रान्डिङ फोटो"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"भ्यु र नियन्त्रणसम्बन्धी सेटिङ जाँच्नुहोस्"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> तपाईंको स्क्रिन हेर्न र नियन्त्रण गर्न सक्छ। सेटिङ मिलाउन ट्याप गर्नुहोस्।"</string> - <!-- no translation found for ui_translation_accessibility_translated_text (3197547218178944544) --> - <skip /> - <!-- no translation found for ui_translation_accessibility_translation_finished (3057830947610088465) --> - <skip /> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"<xliff:g id="MESSAGE">%1$s</xliff:g> अनुवाद गरिएको छ।"</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"म्यासेज <xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> भाषाबाट <xliff:g id="TO_LANGUAGE">%2$s</xliff:g> भाषामा अनुवाद गरिएको छ।"</string> </resources> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 29d9ee5b75f2..b7fc042abcc7 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst naar klembord gekopieerd."</string> <string name="copied" msgid="4675902854553014676">"Gekopieerd"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> geplakt vanuit <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> geplakt vanaf het klembord"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft door jou gekopieerde tekst geplakt"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft een door jou gekopieerde afbeelding geplakt"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> heeft door jou gekopieerde content geplakt"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> voorbereiden."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Apps starten."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Opstarten afronden."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> wordt uitgevoerd"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Tik om terug te keren naar de game"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Game kiezen"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sneltoets gebruiken"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Kleurinversie"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Kleurcorrectie"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra gedimd"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat aan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat uit."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Geüpdatet door je beheerder"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Verwijderd door je beheerder"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Met Batterijbesparing wordt het donkere thema aangezet en worden achtergrondactiviteit, sommige visuele effecten en bepaalde functies beperkt of uitgezet.\n\n"<annotation id="url">"Meer informatie"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Met Batterijbesparing wordt het donkere thema aangezet en worden achtergrondactiviteit, sommige visuele effecten en bepaalde functies beperkt of uitgezet."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Databesparing beperkt het datagebruik door te voorkomen dat sommige apps gegevens sturen of ontvangen op de achtergrond. De apps die je open hebt, kunnen nog steeds data verbruiken, maar doen dit minder vaak. Afbeeldingen worden dan bijvoorbeeld niet weergegeven totdat je erop tikt."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Databesparing aanzetten?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aanzetten"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is nu niet beschikbaar. Dit wordt beheerd door <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Meer info"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"App niet meer onderbreken"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Werkprofiel aanzetten?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Je werk-apps, meldingen, gegevens en andere functies van je werkprofiel worden uitgezet"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aanzetten"</string> <string name="app_blocked_title" msgid="7353262160455028160">"App is niet beschikbaar"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is momenteel niet beschikbaar."</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index cdd9f52aa322..4574847f8017 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ଟେକ୍ସଟ୍ କ୍ଲିପବୋର୍ଡକୁ କପୀ ହୋଇଯାଇଛି"</string> <string name="copied" msgid="4675902854553014676">"କପି କରାଗଲା"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>ରୁ ପେଷ୍ଟ କରିଛି"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> କ୍ଲିପବୋର୍ଡରୁ ପେଷ୍ଟ କରିଛି"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"ଆପଣ କପି କରିଥିବା ଟେକ୍ସଟକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string> <string name="pasted_image" msgid="4729097394781491022">"ଆପଣ କପି କରିଥିବା ଏକ ଛବିକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string> <string name="pasted_content" msgid="646276353060777131">"ଆପଣ କପି କରିଥିବା ବିଷୟବସ୍ତୁକୁ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ପେଷ୍ଟ କରିଛି"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> ପ୍ରସ୍ତୁତ କରାଯାଉଛି।"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ଆପ୍ ଆରମ୍ଭ କରାଯାଉଛି।"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ବୁଟ୍ ସମାପ୍ତ କରୁଛି।"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ଚାଲୁଛି"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ଗେମ୍କୁ ଫେରିଆସିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ଗେମ୍ ଚୟନ କରନ୍ତୁ"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ଶର୍ଟକଟ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ରଙ୍ଗ ବଦଳାଇବାର ସୁବିଧା"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ରଙ୍ଗ ସଂଶୋଧନ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ଅତିରିକ୍ତ ଡିମ୍"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ଚାଲୁ ହୋଇଛି।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ବନ୍ଦ ହୋଇଛି।"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"ଆପଣଙ୍କ ଆଡମିନ୍ ଅପଡେଟ୍ କରିଛନ୍ତି"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"ଆପଣଙ୍କ ଆଡମିନ୍ ଡିଲିଟ୍ କରିଛନ୍ତି"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ଠିକ୍ ଅଛି"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ବ୍ୟାଟେରୀ ସେଭର୍ ଗାଢ଼ା ଥିମକୁ ଚାଲୁ କରେ ଏବଂ ପୃଷ୍ଠପଟ କାର୍ଯ୍ୟକଳାପ, କିଛି ଭିଜୁଆଲ୍ ଇଫେକ୍ଟ ଏବଂ କିଛି ଫିଚରଗୁଡ଼ିକୁ ସୀମିତ କିମ୍ବା ବନ୍ଦ କରେ।\n\n"<annotation id="url">"ଅଧିକ ଜାଣନ୍ତୁ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ବ୍ୟାଟେରୀ ସେଭର୍ ଗାଢ଼ା ଥିମକୁ ଚାଲୁ କରେ ଏବଂ ପୃଷ୍ଠପଟ କାର୍ଯ୍ୟକଳାପ, କିଛି ଭିଜୁଆଲ୍ ଇଫେକ୍ଟ ଏବଂ କିଛି ଫିଚରଗୁଡ଼ିକୁ ସୀମିତ କିମ୍ବା ବନ୍ଦ କରେ।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ଡାଟା ବ୍ୟବହାର କମ୍ କରିବାରେ ସାହାଯ୍ୟ କରିବାକୁ, ଡାଟା ସେଭର୍ ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡରେ ଡାଟା ପଠାଇବା କିମ୍ବା ପ୍ରାପ୍ତ କରିବାକୁ କିଛି ଆପ୍କୁ ବାରଣ କରେ। ଆପଣ ବର୍ତ୍ତମାନ ବ୍ୟବହାର କରୁଥିବା ଆପ୍, ଡାଟା ଆକ୍ସେସ୍ କରିପାରେ, କିନ୍ତୁ ଏହା କମ୍ ଥର କରିପାରେ। ଏହାର ଅର୍ଥ ହୋଇପାରେ ଯେମିତି ଆପଣ ଇମେଜଗୁଡ଼ିକୁ ଟାପ୍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ସେଗୁଡ଼ିକ ଡିସପ୍ଲେ ହୁଏ ନାହିଁ।"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ଡାଟା ସେଭର୍ ଚାଲୁ କରିବେ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ଚାଲୁ କରନ୍ତୁ"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"ବର୍ତ୍ତମାନ <xliff:g id="APP_NAME_0">%1$s</xliff:g> ଉପଲବ୍ଧ ନାହିଁ। ଏହା <xliff:g id="APP_NAME_1">%2$s</xliff:g> ଦ୍ଵାରା ପରିଚାଳିତ ହେଉଛି।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ଅଧିକ ଜାଣନ୍ତୁ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ଆପ୍ ଅନପଜ୍ କରନ୍ତୁ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ୱାର୍କ ପ୍ରୋଫାଇଲ୍କୁ ଚାଲୁ କରିବେ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ଆପଣଙ୍କର କାର୍ଯ୍ୟସ୍ଥଳୀ ଆପ୍, ବିଜ୍ଞପ୍ତି, ଡାଟା ଓ ଅନ୍ୟ ୱାର୍କ ପ୍ରୋଫାଇଲ୍ଗୁଡ଼ିକ ଚାଲୁ ହୋଇଯିବ"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ଚାଲୁ କରନ୍ତୁ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ଆପ୍ ଉପଲବ୍ଧ ନାହିଁ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବର୍ତ୍ତମାନ ଉପଲବ୍ଧ ନାହିଁ।"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index afd9c0c12496..72fe31466015 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"ਟੈਕਸਟ ਕਲਿਪਬੋਰਡ ਤੇ ਕਾਪੀ ਕੀਤਾ।"</string> <string name="copied" msgid="4675902854553014676">"ਕਾਪੀ ਕੀਤੀ ਗਈ"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ਤੋਂ ਕਾਪੀ ਕੀਤੇ ਡਾਟੇ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਵਿੱਚ ਪੇਸਟ ਕੀਤਾ ਗਿਆ"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"ਕਲਿੱਪਬੋਰਡ ਦੇ ਡਾਟੇ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਵਿੱਚ ਪੇਸਟ ਕੀਤਾ ਗਿਆ"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੀ ਗਈ ਲਿਖਤ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string> <string name="pasted_image" msgid="4729097394781491022">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੇ ਗਏ ਚਿੱਤਰ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string> <string name="pasted_content" msgid="646276353060777131">"ਤੁਹਾਡੇ ਵੱਲੋਂ ਕਾਪੀ ਕੀਤੀ ਗਈ ਸਮੱਗਰੀ ਨੂੰ <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ਨੇ ਪੇਸਟ ਕੀਤਾ"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> ਤਿਆਰ ਕਰ ਰਿਹਾ ਹੈ।"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ਐਪਸ ਚਾਲੂ ਕਰ ਰਿਹਾ ਹੈ।"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ਬੂਟ ਪੂਰਾ ਕਰ ਰਿਹਾ ਹੈ।"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ਚੱਲ ਰਿਹਾ ਹੈ"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ਗੇਮ \'ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ ਟੈਪ ਕਰੋ"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ਗੇਮ ਚੁਣੋ"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"ਰੰਗ ਪਲਟਨਾ"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"ਰੰਗ ਸੁਧਾਈ"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ਜ਼ਿਆਦਾ ਘੱਟ ਚਮਕ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਅੱਪਡੇਟ ਕੀਤਾ ਗਿਆ"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਮਿਟਾਇਆ ਗਿਆ"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ਠੀਕ ਹੈ"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"ਬੈਟਰੀ ਸੇਵਰ ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ ਅਤੇ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ, ਕੁਝ ਦ੍ਰਿਸ਼ਟੀਗਤ ਪ੍ਰਭਾਵਾਂ ਅਤੇ ਕੁਝ ਖਾਸ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸੀਮਤ ਜਾਂ ਬੰਦ ਕਰਦਾ ਹੈ।\n\n"<annotation id="url">"ਹੋਰ ਜਾਣੋ"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"ਬੈਟਰੀ ਸੇਵਰ ਗੂੜ੍ਹੇ ਥੀਮ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ ਅਤੇ ਬੈਕਗ੍ਰਾਊਂਡ ਸਰਗਰਮੀ, ਕੁਝ ਦ੍ਰਿਸ਼ਟੀਗਤ ਪ੍ਰਭਾਵਾਂ ਅਤੇ ਕੁਝ ਖਾਸ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨੂੰ ਸੀਮਤ ਜਾਂ ਬੰਦ ਕਰਦਾ ਹੈ।"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ਡਾਟਾ ਵਰਤੋਂ ਘਟਾਉਣ ਵਿੱਚ ਮਦਦ ਲਈ, ਡਾਟਾ ਸੇਵਰ ਕੁਝ ਐਪਾਂ ਨੂੰ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਡਾਟਾ ਭੇਜਣ ਜਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਤੁਹਾਡੇ ਵੱਲੋਂ ਵਰਤਮਾਨ ਤੌਰ \'ਤੇ ਵਰਤੀ ਜਾ ਰਹੀ ਐਪ ਡਾਟਾ \'ਤੇ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ, ਪਰ ਉਹ ਇੰਝ ਕਦੇ-ਕਦਾਈਂ ਕਰ ਸਕਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਇਸ ਦਾ ਮਤਲਬ ਇਹ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਚਿੱਤਰ ਤਦ ਤੱਕ ਨਹੀਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕੀਤੇ ਜਾਂਦੇ, ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਉਹਨਾਂ \'ਤੇ ਟੈਪ ਨਹੀਂ ਕਰਦੇ।"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ਕੀ ਡਾਟਾ ਸੇਵਰ ਚਾਲੂ ਕਰਨਾ ਹੈ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ਚਾਲੂ ਕਰੋ"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ਐਪ ਫਿਲਹਾਲ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਇਸਦਾ ਪ੍ਰਬੰਧਨ <xliff:g id="APP_NAME_1">%2$s</xliff:g> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ਹੋਰ ਜਾਣੋ"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ਐਪ ਤੋਂ ਰੋਕ ਹਟਾਓ"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ਕੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਚਾਲੂ ਕਰਨਾ ਹੈ?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ, ਸੂਚਨਾਵਾਂ, ਡਾਟਾ ਅਤੇ ਹੋਰ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਚਾਲੂ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ਚਾਲੂ ਕਰੋ"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ ਇਸ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 61516580df32..c7f35d56b4df 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Tekst został skopiowany do schowka."</string> <string name="copied" msgid="4675902854553014676">"Skopiowano"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła dane z aplikacji <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła dane ze schowka"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowany tekst"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowany obraz"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacja <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> wkleiła skopiowane treści"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Przygotowuję aplikację <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Uruchamianie aplikacji."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Kończenie uruchamiania."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Działa <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Kliknij, by wrócić do gry"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Wybierz grę"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Użyj skrótu"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Odwrócenie kolorów"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korekcja kolorów"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatkowe przyciemnienie"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została włączona."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została wyłączona."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Zaktualizowany przez administratora"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Usunięty przez administratora"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Oszczędzanie baterii uruchamia ciemny motyw oraz wyłącza lub ogranicza aktywność w tle, niektóre efekty wizualne i wybrane funkcje.\n\n"<annotation id="url">"Więcej informacji"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Oszczędzanie baterii uruchamia ciemny motyw oraz wyłącza lub ogranicza aktywność w tle, niektóre efekty wizualne i wybrane funkcje."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Oszczędzanie danych uniemożliwia niektórym aplikacjom wysyłanie i odbieranie danych w tle, zmniejszając w ten sposób ich użycie. Aplikacja, z której w tej chwili korzystasz, może uzyskiwać dostęp do danych, ale rzadziej. Może to powodować, że obrazy będą się wyświetlać dopiero po kliknięciu."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Włączyć Oszczędzanie danych?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Włącz"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacja <xliff:g id="APP_NAME_0">%1$s</xliff:g> nie jest teraz dostępna. Zarządza tym aplikacja <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Więcej informacji"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Wznów działanie aplikacji"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Włączyć profil służbowy?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikacje służbowe, powiadomienia, dane i inne funkcje profilu służbowego zostaną włączone"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Włącz"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacja jest niedostępna"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest obecnie niedostępna."</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index cb1ee4800e72..e5e9be45050e 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Dados do app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Dados da área de transferência colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto copiado"</string> <string name="pasted_image" msgid="4729097394781491022">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem copiada"</string> <string name="pasted_content" msgid="646276353060777131">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo copiado"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Concluindo a inicialização."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toque para voltar ao jogo"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Escolha o jogo"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção de cor"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Excluído pelo seu administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos específicos.\n\n"<annotation id="url">"Saiba mais"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos específicos."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando no momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não sejam exibidas até que você toque nelas."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Ativar \"Economia de dados\"?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"O app <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível no momento. Isso é gerenciado pelo app <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Seus apps, notificações, dados e outros recursos do perfil de trabalho serão ativados"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"O app não está disponível"</string> <string name="app_blocked_message" msgid="542972921087873023">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível no momento."</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index a00f9381b089..cb00dce57612 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou da app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou da área de transferência"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto que copiou"</string> <string name="pasted_image" msgid="4729097394781491022">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem que copiou"</string> <string name="pasted_content" msgid="646276353060777131">"A app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo que copiou"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"A preparar o <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"A iniciar aplicações"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"A concluir o arranque."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toque para regressar ao jogo."</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Selecionar jogo"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção da cor"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu gestor"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Eliminado pelo seu gestor"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"A Poupança de bateria ativa o tema escuro e limita ou desativa a atividade em segundo plano, alguns efeitos visuais e determinadas funcionalidades.\n\n"<annotation id="url">"Saiba mais"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"A Poupança de bateria ativa o tema escuro e limita ou desativa a atividade em segundo plano, alguns efeitos visuais e determinadas funcionalidades."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir a utilização de dados, a Poupança de dados impede que algumas aplicações enviem ou recebam dados em segundo plano. Uma determinada app que esteja a utilizar atualmente pode aceder aos dados, mas é possível que o faça com menos frequência. Isto pode significar, por exemplo, que as imagens não são apresentadas até que toque nas mesmas."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Pretende ativar a Poupança de dados?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"A app <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível neste momento. A app <xliff:g id="APP_NAME_1">%2$s</xliff:g> gere esta definição."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"As apps de trabalho, as notificações, os dados e outras funcionalidades do perfil de trabalho serão desativados"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"A app não está disponível"</string> <string name="app_blocked_message" msgid="542972921087873023">"De momento, a app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível."</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index cb1ee4800e72..e5e9be45050e 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Texto copiado para a área de transferência."</string> <string name="copied" msgid="4675902854553014676">"Copiado"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Dados do app <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Dados da área de transferência colados no app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o texto copiado"</string> <string name="pasted_image" msgid="4729097394781491022">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou uma imagem copiada"</string> <string name="pasted_content" msgid="646276353060777131">"O app <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> colou o conteúdo copiado"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Preparando <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Iniciando apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Concluindo a inicialização."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> em execução"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Toque para voltar ao jogo"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Escolha o jogo"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção de cor"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Atualizado pelo seu administrador"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Excluído pelo seu administrador"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos específicos.\n\n"<annotation id="url">"Saiba mais"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"A Economia de bateria ativa o tema escuro e limita ou desativa as atividades em segundo plano, alguns efeitos visuais e recursos específicos."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Para ajudar a reduzir o uso de dados, a Economia de dados impede que alguns apps enviem ou recebam dados em segundo plano. Um app que você esteja usando no momento pode acessar dados, mas com menos frequência. Isso pode fazer com que imagens não sejam exibidas até que você toque nelas."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Ativar \"Economia de dados\"?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Ativar"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"O app <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível no momento. Isso é gerenciado pelo app <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Seus apps, notificações, dados e outros recursos do perfil de trabalho serão ativados"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string> <string name="app_blocked_title" msgid="7353262160455028160">"O app não está disponível"</string> <string name="app_blocked_message" msgid="542972921087873023">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível no momento."</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 3ae21c05ac16..022e1cad8374 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1025,7 +1025,8 @@ <string name="text_copied" msgid="2531420577879738860">"Text copiat în clipboard."</string> <string name="copied" msgid="4675902854553014676">"Copiat"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat date din <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat date din clipboard"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat textul copiat"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat o imagine copiată"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> a inserat conținutul copiat"</string> @@ -1279,6 +1280,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Se pregătește <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Se pornesc aplicațiile."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Se finalizează pornirea."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Rulează <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Atingeți pentru a reveni la joc"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Alegeți jocul"</string> @@ -1731,6 +1740,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizați comanda rapidă"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversarea culorilor"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Corecția culorii"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Luminozitate redusă suplimentar"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S-au apăsat lung tastele de volum. S-a activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S-au apăsat lung tastele de volum. S-a dezactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1887,8 +1898,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Actualizat de administratorul dvs."</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Șters de administratorul dvs."</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Economisirea bateriei activează tema întunecată și dezactivează sau restricționează activitatea în fundal, unele efecte vizuale și alte funcții.\n\n"<annotation id="url">"Aflați mai multe"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Economisirea bateriei activează tema întunecată și dezactivează sau restricționează activitatea în fundal, unele efecte vizuale și alte funcții."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Pentru a contribui la reducerea utilizării de date, Economizorul de date împiedică unele aplicații să trimită sau să primească date în fundal. O aplicație pe care o folosiți poate accesa datele, însă mai rar. Aceasta poate însemna, de exemplu, că imaginile se afișează numai după ce le atingeți."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activați Economizorul de date?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activați"</string> @@ -2000,8 +2013,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Momentan, aplicația <xliff:g id="APP_NAME_0">%1$s</xliff:g> nu este disponibilă. Aceasta este gestionată de <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Aflați mai multe"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anulați întreruperea aplicației"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Activați profilul de serviciu?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Se vor activa aplicațiile dvs. de serviciu, notificările, datele și alte funcții ale profilului de serviciu"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Activați"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplicația nu este disponibilă"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu este disponibilă momentan."</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 591881cd485d..86a0c0d9a8f7 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текст скопирован в буфер обмена."</string> <string name="copied" msgid="4675902854553014676">"Скопировано"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Данные из приложения \"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>\" вставлены в приложение \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\"."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Данные из буфера обмена вставлены в приложение \"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>\"."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированный текст вставлен"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированное изображение вставлено"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>: скопированный контент вставлен"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Подготовка приложения \"<xliff:g id="APPNAME">%1$s</xliff:g>\"..."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Запуск приложений."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Окончание загрузки..."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Приложение <xliff:g id="APP">%1$s</xliff:g> запущено"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Нажмите, чтобы вернуться в игру."</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Выберите игру"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Использовать быстрое включение"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверсия цветов"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Коррекция цвета"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнительное уменьшение яркости"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" включена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" отключена."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Обновлено администратором"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Удалено администратором"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ОК"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"В режиме энергосбережения включается тёмная тема, ограничиваются или отключаются фоновые процессы, некоторые визуальные эффекты и определенные функции.\n\n"<annotation id="url">"Подробнее…"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"В режиме энергосбережения включается тёмная тема, ограничиваются или отключаются фоновые процессы, некоторые визуальные эффекты и определенные функции."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"В режиме экономии трафика фоновая передача данных для некоторых приложений отключена. Приложение, которым вы пользуетесь, может получать и отправлять данные, но реже, чем обычно. Например, изображения могут не загружаться, пока вы не нажмете на них."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Включить экономию трафика?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Включить"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Приложение \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" недоступно. Его работу ограничивает приложение \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\"."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Подробнее"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Возобновить работу приложения"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Включить рабочий профиль?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Будут включены корпоративные приложения, уведомления, данные и другие функции рабочего профиля."</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Включить"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Приложение недоступно"</string> <string name="app_blocked_message" msgid="542972921087873023">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" сейчас недоступно."</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 244b0df87fb8..cd2561a4be99 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"පෙළ පසුරු පුවරුවට පිටපත් කරන ලදි."</string> <string name="copied" msgid="4675902854553014676">"පිටපත් කළා"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> වෙතින් අලවන ලදි"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> පසුරු පුවරුව වෙතින් අලවන ලදි"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ පෙළ ඇලවීය"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ රූපයක් ඇලවීය"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ඔබ පිටපත් කළ අන්තර්ගතය ඇලවීය"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> සූදානම් කරමින්."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"යෙදුම් ආරම්භ කරමින්."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"ඇරඹුම අවසාන කරමින්."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ධාවනය වෙමින්"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"ක්රීඩාව වෙත ආපසු යාමට තට්ටු කරන්න"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"ක්රීඩාව තෝරන්න"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"කෙටිමඟ භාවිතා කරන්න"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"වර්ණ අපවර්තනය"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"වර්ණ නිවැරදි කිරීම"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"තවත් අඳුරු"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාත්මකයි."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාවිරහිතයි."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"ඔබගේ පරිපාලක මඟින් යාවත්කාලීන කර ඇත"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"ඔබගේ පරිපාලක මඟින් මකා දමා ඇත"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"හරි"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"බැටරි සුරැකුම අඳුරු තේමාව ක්රියාත්මක කර පසුබිම් ක්රියාකාරකම්, සමහර දෘශ්ය ප්රයෝග සහ යම් විශේෂාංග ක්රියාවිරහිත හෝ සීමා කරයි.\n\n"<annotation id="url">"තව දැන ගන්න"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"බැටරි සුරැකුම අඳුරු තේමාව ක්රියාත්මක කර පසුබිම් ක්රියාකාරකම්, සමහර දෘශ්ය ප්රයෝග සහ යම් විශේෂාංග ක්රියාවිරහිත හෝ සීමා කරයි."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"දත්ත භාවිතය අඩු කිරීමට උදවු වීමට, දත්ත සුරැකුම සමහර යෙදුම් පසුබිමින් දත්ත යැවීම සහ ලබා ගැනීම වළක්වයි. ඔබ දැනට භාවිත කරන යෙදුමකට දත්ත වෙත පිවිසීමට හැකිය, නමුත් එසේ කරන්නේ කලාතුරකින් විය හැකිය. මෙයින් අදහස් වන්නේ, උදාහරණයක් ලෙස, එම රූප ඔබ ඒවාට තට්ටු කරන තෙක් සංදර්ශනය නොවන බවය."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"දත්ත සුරැකුම ක්රියාත්මක කරන්නද?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ක්රියාත්මක කරන්න"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> මේ අවස්ථාවේදී ලබා ගත නොහැකිය. මෙය <xliff:g id="APP_NAME_1">%2$s</xliff:g> මගින් කළමනාකරණය කෙරේ."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"තව දැන ගන්න"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"යෙදුම විරාම කිරීම ඉවත් කරන්න"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"කාර්යාල පැතිකඩ ක්රියාත්මක කරන්නද?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ඔබගේ වැඩ යෙදුම්, දැනුම්දීම්, දත්ත සහ වෙනත් කාර්යාල පැතිකඩ විශේෂාංග ක්රියාත්මක කරනු ඇත"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ක්රියාත්මක කරන්න"</string> <string name="app_blocked_title" msgid="7353262160455028160">"යෙදුම ලබා ගත නොහැකිය"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> මේ දැන් ලබා ගත නොහැකිය."</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 3410fccd03b6..90f4f06611de 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Text bol skopírovaný do schránky."</string> <string name="copied" msgid="4675902854553014676">"Skopírované"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila údaje z aplikácie <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila údaje zo schránky"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila text, ktorý ste skopírovali"</string> <string name="pasted_image" msgid="4729097394781491022">"Aplik. <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila obrázok, ktorý ste skopírovali"</string> <string name="pasted_content" msgid="646276353060777131">"Aplikácia <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> prilepila obsah, ktorý ste skopírovali"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Pripravuje sa aplikácia <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Prebieha spúšťanie aplikácií."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Prebieha dokončovanie spúšťania."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Spustená aplikácia: <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Klepnutím prejdete späť do hry"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Vyberte hru"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použiť skratku"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzia farieb"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Úprava farieb"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Veľmi tmavé"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vypnutá."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Aktualizoval správca"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Odstránil správca"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Šetrič batérie zapne tmavý motív a obmedzí alebo vypne aktivitu na pozadí, niektoré vizuálne efekty a určité funkcie.\n\n"<annotation id="url">"Ďalšie informácie"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Šetrič batérie zapne tmavý motív a obmedzí alebo vypne aktivitu na pozadí, niektoré vizuálne efekty a určité funkcie."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"S cieľom znížiť spotrebu dát bráni šetrič dát niektorým aplikáciám odosielať alebo prijímať dáta na pozadí. Aplikácia, ktorú práve používate, môže využívať dáta, ale možno to bude robiť menej často. Môže to napríklad znamenať, že sa obrázky zobrazia, až keď na ne klepnete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Chcete zapnúť šetrič dát?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Zapnúť"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikácia <xliff:g id="APP_NAME_0">%1$s</xliff:g> nie je momentálne k dispozícii. Spravuje to aplikácia <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Ďalšie informácie"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Znova spustiť aplikáciu"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Zapnúť pracovný profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Pracovné aplikácie, upozornenia, dáta a ďalšie funkcie pracovného profilu sa zapnú"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Zapnúť"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikácia nie je dostupná"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> nie je teraz dostupná."</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index f4c2cd3f4c39..7dce14894c39 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Besedilo, kopirano v odložišče."</string> <string name="copied" msgid="4675902854553014676">"Kopirano"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila iz aplikacije <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>."</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila iz odložišča."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila besedilo iz odložišča."</string> <string name="pasted_image" msgid="4729097394781491022">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila sliko iz odložišča."</string> <string name="pasted_content" msgid="646276353060777131">"Aplikacija <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> je prilepila vsebino iz odložišča."</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Pripravljanje aplikacije <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Zagon aplikacij."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Dokončevanje zagona."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> se izvaja"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Dotaknite se za vrnitev v igro"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Izberite igro"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Uporabi bližnjico"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija barv"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Popravljanje barv"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Zelo zatemnjeno"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vklopljena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je izklopljena."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Posodobil skrbnik"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Izbrisal skrbnik"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"V redu"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Varčevanje z energijo baterije vklopi temno temo ter omeji ali izklopi dejavnost v ozadju, nekatere vizualne učinke in določene funkcije.\n\n"<annotation id="url">"Več o tem"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Varčevanje z energijo baterije vklopi temno temo ter omeji ali izklopi dejavnost v ozadju, nekatere vizualne učinke in določene funkcije."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Zaradi zmanjševanja prenesene količine podatkov funkcija varčevanja s podatki nekaterim aplikacijam preprečuje, da bi v ozadju pošiljale ali prejemale podatke. Aplikacija, ki jo trenutno uporabljate, lahko prenaša podatke, vendar to morda počne manj pogosto. To na primer pomeni, da se slike ne prikažejo, dokler se jih ne dotaknete."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vklop varčevanja s podatki?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Vklopi"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno ni na voljo. To upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Več o tem"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Prekliči začasno zaustavitev aplikacije"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Želite vklopiti delovni profil?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Vklopili boste svoje delovne aplikacije, obvestila, podatke in druge funkcije delovnega profila"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Vklop"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija ni na voljo"</string> <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno ni na voljo."</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 56afd6020944..f9dff5f18838 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Teksti u kopjua në kujtesën e fragmenteve."</string> <string name="copied" msgid="4675902854553014676">"U kopjua"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> u ngjit nga <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> u ngjit nga kujtesa e fragmenteve"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një tekst që kopjove"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një imazh që kopjove"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ngjiti një përmbajtje që kopjove"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Po përgatit <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Aplikacionet e fillimit."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Po përfundon nisjen."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> është në punë"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Trokit për t\'u kthyer te loja"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Zgjidh një lojë"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Përdor shkurtoren"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Anasjellja e ngjyrës"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Korrigjimi i ngjyrës"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Shumë më i zbehtë"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tastet e volumit të mbajtura shtypur. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> i aktivizuar."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tastet e volumit të mbajtura shtypur. U çaktivizua \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Përditësuar nga administratori"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Fshirë nga administratori"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Në rregull"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"\"Kursyesi i baterisë\" aktivizon \"Temën e errët\" dhe kufizon ose çaktivizon aktivitetin në sfond, disa efekte vizuale dhe veçori të caktuara.\n\n"<annotation id="url">"Mëso më shumë"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"\"Kursyesi i baterisë\" aktivizon \"Temën e errët\" dhe kufizon ose çaktivizon aktivitetin në sfond, disa efekte vizuale dhe veçori të caktuara."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Për të ndihmuar në reduktimin e përdorimit të të dhënave, \"Kursyesi i të dhënave\" pengon që disa aplikacione të dërgojnë apo të marrin të dhëna në sfond. Një aplikacion që po përdor aktualisht mund të ketë qasje te të dhënat, por këtë mund ta bëjë më rrallë. Kjo mund të nënkuptojë, për shembull, se imazhet nuk shfaqen kur troket mbi to."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Të aktivizohet \"Kursyesi i të dhënave\"?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivizo"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> nuk ofrohet në këtë moment. Kjo menaxhohet nga <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Mëso më shumë"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anulo pauzën për aplikacionin"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Të aktivizohet profili i punës?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikacionet e punës, njoftimet, të dhënat e tua dhe funksionet e tjera të profilit të punës do të aktivizohen"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivizo"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacioni nuk ofrohet"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk ofrohet për momentin."</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 0c083b093e99..ee7cbb7db3cc 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1025,7 +1025,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текст је копиран у привремену меморију."</string> <string name="copied" msgid="4675902854553014676">"Копирано је"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила податке из апликације <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> налепила податке из привремене меморије"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила текст који сте копирали"</string> <string name="pasted_image" msgid="4729097394781491022">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила слику коју сте копирали"</string> <string name="pasted_content" msgid="646276353060777131">"Апликација<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> је налепила садржај који сте копирали"</string> @@ -1279,6 +1280,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Припрема се <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Покретање апликација."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Завршавање покретања."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Апликација <xliff:g id="APP">%1$s</xliff:g> је покренута"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Додирните да бисте се вратили у игру"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Одаберите игру"</string> @@ -1731,6 +1740,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи пречицу"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија боја"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекција боја"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим једном руком"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додатно затамњено"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је укључена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је искључена."</string> @@ -1887,8 +1897,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Ажурирао је администратор"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Избрисао је администратор"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Потврди"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Уштеда батерије укључује Тамну тему и ограничава или искључује активности у позадини, неке визуелне ефекте и одређене функције.\n\n"<annotation id="url">"Сазнајте више"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Уштеда батерије укључује Тамну тему и ограничава или искључује активности у позадини, неке визуелне ефекте и одређене функције."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Да би се смањила потрошња података, Уштеда података спречава неке апликације да шаљу или примају податке у позадини. Апликација коју тренутно користите може да приступа подацима, али ће то чинити ређе. На пример, слике се неће приказивати док их не додирнете."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Желите да укључите Уштеду података?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Укључи"</string> @@ -2000,8 +2012,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Апликација <xliff:g id="APP_NAME_0">%1$s</xliff:g> тренутно није доступна. <xliff:g id="APP_NAME_1">%2$s</xliff:g> управља доступношћу."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Сазнајте више"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Опозови паузирање апликације"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Да укључимо пословни профил?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Укључиће се пословне апликације, обавештења, подаци и друге функције пословног профила"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Укључи"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Апликација није доступна"</string> <string name="app_blocked_message" msgid="542972921087873023">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> тренутно није доступна."</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index cd21511fa23a..05aa23e25f89 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Text har kopierats till urklipp."</string> <string name="copied" msgid="4675902854553014676">"Kopierat"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in från <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in från urklipp"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in text som du kopierade"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in en bild som du kopierade"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> klistrade in innehåll som du kopierade"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> förbereds."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Appar startas."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Uppgraderingen är klar."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> körs"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Återgå till spelet genom att trycka här"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Välj spel"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Använd kortkommandot"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inverterade färger"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Färgkorrigering"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradimmat"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har aktiverats."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har inaktiverats."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administratören uppdaterade paketet"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administratören raderade paketet"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Batterisparläget aktiverar mörkt tema och begränsar eller inaktiverar bakgrundsaktivitet, vissa visuella effekter och vissa funktioner.\n\n"<annotation id="url">"Läs mer"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Batterisparläget aktiverar mörkt tema och begränsar eller inaktiverar bakgrundsaktivitet, vissa visuella effekter och vissa funktioner."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Med Databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vill du aktivera Databesparing?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivera"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> är inte tillgänglig just nu. Detta hanteras av <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Läs mer"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Återuppta app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vill du aktivera jobbprofilen?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Jobbappar, aviseringar, data och andra funktioner i jobbprofilen aktiveras"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivera"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Appen är inte tillgänglig"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> är inte tillgängligt just nu."</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 9b91ad54b14d..cf224927cad1 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -26,7 +26,7 @@ <string name="gigabyteShort" msgid="7515809460261287991">"GB"</string> <string name="terabyteShort" msgid="1822367128583886496">"TB"</string> <string name="petabyteShort" msgid="5651571254228534832">"PB"</string> - <string name="fileSizeSuffix" msgid="4233671691980131257">"<xliff:g id="NUMBER">%1$s</xliff:g> <xliff:g id="UNIT">%2$s</xliff:g>"</string> + <string name="fileSizeSuffix" msgid="4233671691980131257">"<xliff:g id="UNIT">%2$s</xliff:g> <xliff:g id="NUMBER">%1$s</xliff:g>"</string> <string name="untitled" msgid="3381766946944136678">"<Haina jina>"</string> <string name="emptyPhoneNumber" msgid="5812172618020360048">"(Hakuna nambari ya simu)"</string> <string name="unknownName" msgid="7078697621109055330">"Isiyojulikana"</string> @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Maandishi yamenakiliwa kwenye ubao wa kunakili."</string> <string name="copied" msgid="4675902854553014676">"Umenakili"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika kutoka <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika kutoka ubao wa kunakili"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika maandishi uliyonakili"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika picha uliyonakili"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> imebandika maudhui uliyonakili"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Inaandaa <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Programu zinaanza"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Inamaliza kuwasha."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> inaendelea"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Gusa ili urudi kwenye mchezo"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Chagua mchezo"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tumia Njia ya Mkato"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ugeuzaji rangi"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Usahihishaji wa rangi"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Kipunguza mwangaza zaidi"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Vitufe vya sauti vilivyoshikiliwa. Umewasha <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Vitufe vya sauti vimeshikiliwa. Umezima <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Imesasishwa na msimamizi wako"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Imefutwa na msimamizi wako"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Sawa"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Kiokoa Betri huwasha Mandhari meusi na kudhibiti au kuzima shughuli za chinichini, baadhi ya madoido yanayoonekana na vipengele fulani.\n\n"<annotation id="url">"Pata maelezo zaidi"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Kiokoa Betri huwasha Mandhari meusi na kudhibiti au kuzima shughuli za chinichini, baadhi ya madoido yanayoonekana na vipengele fulani."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Ili kusaidia kupunguza matumizi ya data, Kiokoa Data huzuia baadhi ya programu kupokea na kutuma data chinichini. Programu ambayo unatumia sasa inaweza kufikia data, lakini si kila wakati. Kwa mfano, haitaonyesha picha hadi utakapozifungua."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Ungependa Kuwasha Kiokoa Data?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Washa"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> haipatikani kwa sasa. Inasimamiwa na <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Pata maelezo zaidi"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Acha kusimamisha programu"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ungependa kuwasha wasifu wa kazini?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Hatua hii itawasha data, arifa, programu za kazini na vipengele vingine vya wasifu wa kazini"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Washa"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Programu haipatikani"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> haipatikani hivi sasa."</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index f923be6a4c81..7d853eece02f 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"உரை கிளிப்போர்டிற்கு நகலெடுக்கப்பட்டது."</string> <string name="copied" msgid="4675902854553014676">"நகலெடுக்கப்பட்டது"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ஆப்ஸிலிருந்து <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஒட்டப்பட்டது"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"கிளிப்போர்டிலிருந்து <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஒட்டப்பட்டது"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"நீங்கள் நகலெடுத்த உரையை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string> <string name="pasted_image" msgid="4729097394781491022">"நீங்கள் நகலெடுத்த படத்தை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string> <string name="pasted_content" msgid="646276353060777131">"நீங்கள் நகலெடுத்த உள்ளடக்கத்தை <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ஆப்ஸ் ஒட்டியது"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>ஐத் தயார்செய்கிறது."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ஆப்ஸ் தொடங்கப்படுகின்றன."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"துவக்குதலை முடிக்கிறது."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> இயங்குகிறது"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"கேமிற்குச் செல்ல, தட்டவும்"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"கேமைத் தேர்வுசெய்க"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ஷார்ட்கட்டைப் பயன்படுத்து"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"நிற நேரெதிர் மாற்றம்"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"நிறத் திருத்தம்"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"மிகக் குறைவான வெளிச்சம்"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆன் செய்யப்பட்டது."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆஃப் செய்யப்பட்டது."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"உங்கள் நிர்வாகி புதுப்பித்துள்ளார்"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"உங்கள் நிர்வாகி நீக்கியுள்ளார்"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"சரி"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"பேட்டரி சேமிப்பான் டார்க் தீமை ஆன் செய்யும். பின்னணிச் செயல்பாடு, சில விஷுவல் எஃபெக்ட்கள் மற்றும் குறிப்பிட்ட அம்சங்களைக் கட்டுப்படுத்தும் அல்லது ஆஃப் செய்யும்.\n\n"<annotation id="url">"மேலும் அறிக"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"பேட்டரி சேமிப்பான் டார்க் தீமை ஆன் செய்யும். பின்னணிச் செயல்பாடு, சில விஷுவல் எஃபெக்ட்கள் மற்றும் குறிப்பிட்ட அம்சங்களைக் கட்டுப்படுத்தும் அல்லது ஆஃப் செய்யும்."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"டேட்டா உபயோகத்தைக் குறைப்பதற்கு உதவ, பின்புலத்தில் டேட்டாவை அனுப்புவது அல்லது பெறுவதிலிருந்து சில ஆப்ஸை டேட்டா சேமிப்பான் தடுக்கும். தற்போது பயன்படுத்தும் ஆப்ஸானது எப்போதாவது டேட்டாவை அணுகலாம். எடுத்துக்காட்டாக, படங்களை நீங்கள் தட்டும் வரை அவை காட்டப்படாது."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"டேட்டா சேமிப்பானை இயக்கவா?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"இயக்கு"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"இப்போது <xliff:g id="APP_NAME_0">%1$s</xliff:g> ஆப்ஸை உபயோகிக்க இயலாது. இதை <xliff:g id="APP_NAME_1">%2$s</xliff:g> நிர்வகிக்கிறது."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"மேலும் அறிக"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ஆப்ஸ் இயக்கு"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"பணிச் சுயவிவரத்தை ஆன் செய்யவா?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"பணி ஆப்ஸ், அறிவிப்புகள், தரவு மற்றும் பிற பணிச் சுயவிவர அம்சங்கள் ஆன் செய்யப்படும்"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"இயக்கு"</string> <string name="app_blocked_title" msgid="7353262160455028160">"இந்த ஆப்ஸ் இப்போது கிடைப்பதில்லை"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் இப்போது கிடைப்பதில்லை."</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index e1998ddf0dfe..13b3e2cd9d9e 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"వచనం క్లిప్బోర్డ్కు కాపీ చేయబడింది."</string> <string name="copied" msgid="4675902854553014676">"కాపీ చేయబడింది"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> నుండి పేస్ట్ చేయబడింది"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> క్లిప్బోర్డ్ నుండి పేస్ట్ చేయబడింది"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన టెక్స్ట్ను పేస్ట్ చేసింది"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన ఇమేజ్ను పేస్ట్ చేసింది"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> మీరు కాపీ చేసిన కంటెంట్ను పేస్ట్ చేసింది"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g>ని సిద్ధం చేస్తోంది."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"అనువర్తనాలను ప్రారంభిస్తోంది."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"బూట్ను ముగిస్తోంది."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> అమలవుతోంది"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"గేమ్కి తిరిగి రావడానికి నొక్కండి"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"గేమ్ను ఎంచుకోండి"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"సత్వరమార్గాన్ని ఉపయోగించు"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"కలర్ మార్పిడి"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"కలర్ సరిచేయడం"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"కాంతిని మరింత డిమ్ చేయడం"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆన్ చేయబడింది"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆఫ్ చేయబడింది"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"మీ నిర్వాహకులు నవీకరించారు"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"మీ నిర్వాహకులు తొలగించారు"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"సరే"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"బ్యాటరీ సేవర్ ముదురు రంగు రూపాన్ని ఆన్ చేసి, బ్యాక్గ్రౌండ్ యాక్టివిటీ, కొన్ని విజువల్ ఎఫెక్ట్లు, నిర్దిష్ట ఫీచర్లను పరిమితం చేస్తుంది లేదా ఆఫ్ చేస్తుంది.\n\n"<annotation id="url">"మరింత తెలుసుకోండి"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"బ్యాటరీ సేవర్ ముదురు రంగు రూపాన్ని ఆన్ చేసి, బ్యాక్గ్రౌండ్ యాక్టివిటీ, కొన్ని విజువల్ ఎఫెక్ట్లు, నిర్దిష్ట ఫీచర్లను పరిమితం చేస్తుంది లేదా ఆఫ్ చేస్తుంది."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"డేటా వినియోగాన్ని తగ్గించడంలో డేటా సేవర్ సహాయకరంగా ఉంటుంది. బ్యాక్గ్రౌండ్లో కొన్ని యాప్లు డేటాను పంపకుండా లేదా స్వీకరించకుండా నిరోధిస్తుంది. మీరు ప్రస్తుతం ఉపయోగిస్తోన్న యాప్, డేటాను యాక్సెస్ చేయగలదు. కానీ తక్కువ సార్లు మాత్రమే అలా చేయవచ్చు. ఉదాహరణకు, మీరు నొక్కే వరకు ఫోటోలు ప్రదర్శించబడవు."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"డేటా సేవర్ను ఆన్ చేయాలా?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ఆన్ చేయి"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ప్రస్తుతం అందుబాటులో లేదు. ఇది <xliff:g id="APP_NAME_1">%2$s</xliff:g> ద్వారా నిర్వహించబడుతుంది."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"మరింత తెలుసుకోండి"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"యాప్పై వున్న పాజ్ను తొలగించండి"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"ఆఫీస్ ప్రొఫైల్ను ఆన్ చేయాలా?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"మీ ఆఫీస్ యాప్లు, నోటిఫికేషన్లు, డేటాతో పాటు ఇతర ఆఫీస్ ప్రొఫైల్ ఫీచర్లు ఆన్ అవుతాయి"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"ఆన్ చేయి"</string> <string name="app_blocked_title" msgid="7353262160455028160">"యాప్ అందుబాటులో లేదు"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ప్రస్తుతం అందుబాటులో లేదు."</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index a83f9c250b1e..8df5d3a49dfe 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"คัดลอกข้อความไปยังคลิปบอร์ด"</string> <string name="copied" msgid="4675902854553014676">"คัดลอกแล้ว"</string> <string name="pasted_from_app" msgid="5627698450808256545">"วาง <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> จาก <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> แล้ว"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"วาง <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> จากคลิปบอร์ดแล้ว"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางข้อความที่คุณคัดลอก"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางรูปภาพที่คุณคัดลอก"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> วางเนื้อหาที่คุณคัดลอก"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"กำลังเตรียม <xliff:g id="APPNAME">%1$s</xliff:g>"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"กำลังเริ่มต้นแอปพลิเคชัน"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"เสร็จสิ้นการบูต"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> กำลังทำงาน"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"แตะเพื่อกลับไปที่เกม"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"เลือกเกม"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ใช้ทางลัด"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"การกลับสี"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"การแก้สี"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"หรี่แสงเพิ่มเติม"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว เปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว ปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"อัปเดตโดยผู้ดูแลระบบ"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"ลบโดยผู้ดูแลระบบ"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ตกลง"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"โหมดประหยัดแบตเตอรี่จะเปิดใช้ธีมมืดและจำกัดหรือปิดกิจกรรมในเบื้องหลัง เอฟเฟกต์ภาพบางอย่าง และฟีเจอร์บางส่วน\n\n"<annotation id="url">"ดูข้อมูลเพิ่มเติม"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"โหมดประหยัดแบตเตอรี่จะเปิดใช้ธีมมืดและจำกัดหรือปิดกิจกรรมในเบื้องหลัง เอฟเฟกต์ภาพบางอย่าง และฟีเจอร์บางส่วน"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"เพื่อช่วยลดปริมาณการใช้อินเทอร์เน็ต โปรแกรมประหยัดอินเทอร์เน็ตจะช่วยป้องกันไม่ให้บางแอปส่งหรือรับข้อมูลโดยการใช้อินเทอร์เน็ตอยู่เบื้องหลัง แอปที่คุณกำลังใช้งานสามารถเข้าถึงอินเทอร์เน็ตได้ แต่อาจไม่บ่อยเท่าเดิม ตัวอย่างเช่น ภาพต่างๆ จะไม่แสดงจนกว่าคุณจะแตะที่ภาพเหล่านั้น"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"เปิดการประหยัดอินเทอร์เน็ตไหม"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"เปิด"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"เปิด <xliff:g id="APP_NAME_0">%1$s</xliff:g> ไม่ได้ในขณะนี้ แอปนี้จัดการโดย <xliff:g id="APP_NAME_1">%2$s</xliff:g>"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"ดูข้อมูลเพิ่มเติม"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ยกเลิกการหยุดแอปชั่วคราว"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"เปิดโปรไฟล์งานไหม"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"ระบบจะเปิดแอปงาน การแจ้งเตือน ข้อมูล และฟีเจอร์อื่นๆ ในโปรไฟล์งาน"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"เปิด"</string> <string name="app_blocked_title" msgid="7353262160455028160">"แอปไม่พร้อมใช้งาน"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่พร้อมใช้งานในขณะนี้"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 145177da9384..e26ce1c94ef9 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Nakopya ang teksto sa clipboard."</string> <string name="copied" msgid="4675902854553014676">"Nakopya"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Na-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> mula sa <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Na-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> mula sa clipboard"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng text na nakopya mo"</string> <string name="pasted_image" msgid="4729097394781491022">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng larawang nakopya mo"</string> <string name="pasted_content" msgid="646276353060777131">"Nag-paste ang <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> ng content na nakopya mo"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Ihinahanda ang <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Sinisimulan ang apps."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Pagtatapos ng pag-boot."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Tumatakbo ang <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Mag-tap upang bumalik sa laro"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Pumili ng laro"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gamitin ang Shortcut"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Pag-invert ng Kulay"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Pagwawasto ng Kulay"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pinindot nang matagal ang volume keys. Na-on ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pinindot nang matagal ang volume keys. Na-off ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Na-update ng iyong admin"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Na-delete ng iyong admin"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Ino-on ng Pantipid ng Baterya ang Madilim na tema at nililimitahan o ino-off nito ang aktibidad sa background, ilang visual effect, at ilang partikular na feature.\n\n"<annotation id="url">"Matuto pa"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Ino-on ng Pantipid ng Baterya ang Madilim na tema at nililimitahan o ino-off nito ang aktibidad sa background, ilang visual effect, at ilang partikular na feature."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Upang makatulong na mabawasan ang paggamit ng data, pinipigilan ng Data Saver ang ilang app na magpadala o makatanggap ng data sa background. Maaaring mag-access ng data ang isang app na ginagamit mo sa kasalukuyan, ngunit mas bihira na nito magagawa iyon. Halimbawa, maaaring hindi lumabas ang mga larawan hangga\'t hindi mo nata-tap ang mga ito."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"I-on ang Data Saver?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"I-on"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Hindi available ang <xliff:g id="APP_NAME_0">%1$s</xliff:g> sa ngayon. Pinamamahalaan ito ng <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Matuto pa"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"I-unpause ang app"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"I-on ang profile sa trabaho?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Mao-on ang iyong mga app sa trabaho, notification, data, at iba pang feature sa profile sa trabaho"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"I-on"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Hindi available ang app"</string> <string name="app_blocked_message" msgid="542972921087873023">"Hindi available sa ngayon ang <xliff:g id="APP_NAME">%1$s</xliff:g>."</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 8f455dd2e401..9c4a4d4b9679 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Metin panoya kopyalandı."</string> <string name="copied" msgid="4675902854553014676">"Kopyalandı"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> uygulaması <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> kaynağından yapıştırdı"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, panodan yapıştırıldı."</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız metni yapıştırdı"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız resmi yapıştırdı"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>, kopyaladığınız içeriği yapıştırdı"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> hazırlanıyor."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Uygulamalar başlatılıyor"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Açılış tamamlanıyor."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> çalışıyor"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Oyuna geri dönmek için dokunun"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Oyun seçin"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kısayolu Kullan"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Rengi Ters Çevirme"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Renk Düzeltme"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra loş"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> açıldı."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kapatıldı."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Yöneticiniz tarafından güncellendi"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Yöneticiniz tarafından silindi"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"Tamam"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Pil Tasarrufu özelliği Koyu temayı açıp arka plan etkinliğini, bazı görsel efektleri ve belirli özellikleri sınırlandırır ya da kapatır.\n\n"<annotation id="url">"Daha fazla bilgi"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Pil Tasarrufu özelliği Koyu temayı açıp arka plan etkinliğini, bazı görsel efektleri ve belirli özellikleri sınırlandırır ya da kapatır."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Veri kullanımını azaltmaya yardımcı olması için Veri Tasarrufu, bazı uygulamaların arka planda veri göndermesini veya almasını engeller. Kullanmakta olduğunuz bir uygulama veri bağlantısına erişebilir, ancak bunu daha seyrek yapabilir. Bu durumda örneğin, siz resimlere dokunmadan resimler görüntülenmez."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Veri Tasarrufu açılsın mı?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aç"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> uygulaması şu anda kullanılamıyor. Uygulamanın kullanım durumu <xliff:g id="APP_NAME_1">%2$s</xliff:g> tarafından yönetiliyor."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Daha fazla bilgi"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Uygulamanın duraklatmasını kaldır"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"İş profili açılsın mı?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"İş uygulamalarınız, bildirimleriniz, verileriniz ve diğer iş profili özellikleriniz açılacak"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Aç"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Uygulama kullanılamıyor"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulaması şu anda kullanılamıyor."</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 3eee1bc9f410..bfac2642471b 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1028,7 +1028,8 @@ <string name="text_copied" msgid="2531420577879738860">"Текст скопійов. в буф. обм."</string> <string name="copied" msgid="4675902854553014676">"Скопійовано"</string> <string name="pasted_from_app" msgid="5627698450808256545">"Дані з додатка <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> вставлено в <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Дані з буфера обміну вставлено в <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"Скопійований текст вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_image" msgid="4729097394781491022">"Скопійоване зображення вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> <string name="pasted_content" msgid="646276353060777131">"Скопійований контент вставлено в додатку <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>"</string> @@ -1299,6 +1300,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Підготовка додатка <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Запуск програм."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Завершення завантаження."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"Працює <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Торкніться, щоб повернутися в гру"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Виберіть гру"</string> @@ -1753,6 +1762,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Використовувати ярлик"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія кольорів"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Корекція кольорів"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додаткове зменшення яскравості"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> увімкнено."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> вимкнено."</string> @@ -1910,8 +1921,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Оновлено адміністратором"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Видалено адміністратором"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ОК"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"У режимі енергозбереження вмикається темна тема й обмежуються чи вимикаються фонова робота додатків, деякі візуальні ефекти та певні функції.\n\n"<annotation id="url">"Докладніше"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"У режимі енергозбереження вмикається темна тему й обмежуються чи вимикаються фонова робота додатків, деякі візуальні ефекти та певні функції."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Щоб зменшити використання трафіку, функція \"Заощадження трафіку\" не дозволяє деяким додаткам надсилати чи отримувати дані у фоновому режимі. Поточний додаток зможе отримувати доступ до таких даних, але рідше. Наприклад, зображення не відображатиметься, доки ви не торкнетеся його."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Увімкнути заощадження трафіку?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Увімкнути"</string> @@ -2032,8 +2045,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"Додаток <xliff:g id="APP_NAME_0">%1$s</xliff:g> зараз недоступний. Керує додаток <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Докладніше"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Відновити доступ до додатка"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Увімкнути робочий профіль?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Додатки, сповіщення, дані й інші функції робочого профілю буде ввімкнено"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Увімкнути"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Додаток недоступний"</string> <string name="app_blocked_message" msgid="542972921087873023">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> зараз недоступний."</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 6d99dfb4563c..fedb557fe6f6 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"متن کو کلپ بورڈ پر کاپی کیا گیا۔"</string> <string name="copied" msgid="4675902854553014676">"کاپی ہو گیا"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> سے <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> میں پیسٹ کیا گیا"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"کلپ بورڈ سے <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> میں پیسٹ کیا گیا"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کا کاپی کردہ ٹیکسٹ پیسٹ کر دیا"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کی کاپی کردہ ایک تصویر پیسٹ کر دی"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> نے آپ کا کاپی کردہ مواد پیسٹ کر دیا"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> تیار ہو رہی ہے۔"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"ایپس شروع ہو رہی ہیں۔"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"بوٹ مکمل ہو رہا ہے۔"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> چل رہی ہے"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"گیم پر واپس جانے کے لیے تھپتھپائیں"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"گیم کا انتخاب کریں"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"شارٹ کٹ استعمال کریں"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"رنگوں کی تقلیب"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"رنگ کی تصحیح"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"اضافی دھندلا"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آن ہے۔"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آف ہے۔"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"آپ کے منتظم کے ذریعے اپ ڈیٹ کیا گیا"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"آپ کے منتظم کے ذریعے حذف کیا گیا"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"ٹھیک ہے"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"بیٹری سیور گہری تھیم کو آن کرتی ہے اور پس منظر کی سرگرمی، کچھ بصری اثرات اور کچھ مخصوص خصوصیات کو محدود یا آف کرتی ہے۔\n\n"<annotation id="url">"مزید جانیں"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"بیٹری سیور گہری تھیم کو آن کرتی ہے اور پس منظر کی سرگرمی، کچھ بصری اثرات اور کچھ مخصوص خصوصیات کو محدود یا آف کرتی ہے۔"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"ڈیٹا کے استعمال کو کم کرنے میں مدد کیلئے، ڈیٹا سیور پس منظر میں کچھ ایپس کو ڈیٹا بھیجنے یا موصول کرنے سے روکتی ہے۔ آپ جو ایپ فی الحال استعمال کر رہے ہیں وہ ڈیٹا تک رسائی کر سکتی ہے مگر ہو سکتا ہے ایسا اکثر نہ ہو۔ اس کا مطلب مثال کے طور پر یہ ہو سکتا ہے کہ تصاویر تھپتھپانے تک ظاہر نہ ہوں۔"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"ڈیٹا سیور آن کریں؟"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"آن کریں"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ابھی دستیاب نہیں ہے۔ یہ <xliff:g id="APP_NAME_1">%2$s</xliff:g> کے زیر انتظام ہے۔"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"مزید جانیں"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ایپ کو غیر موقوف کریں"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"دفتری پروفائل آن کریں؟"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"آپ کی دفتری ایپس، اطلاعات، ڈیٹا اور دفتری پروفائل کی دیگر خصوصیات آن کر دی جائیں گی"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"آن کریں"</string> <string name="app_blocked_title" msgid="7353262160455028160">"ایپ دستیاب نہیں ہے"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ابھی دستیاب نہیں ہے۔"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index f5558140e26e..8320aafc100a 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -1022,7 +1022,7 @@ <string name="text_copied" msgid="2531420577879738860">"Matn klipboardga nusxa olindi."</string> <string name="copied" msgid="4675902854553014676">"Nusxalandi"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> ilovasidan <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> joylandi"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"Vaqtincha xotiradan <xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> joylandi"</string> + <string name="pasted_from_clipboard" msgid="7355790625710831847">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> vaqtinchalik xotiradan joylandi"</string> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan matnni joyladi"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan rasmni joyladi"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> siz nusxa olgan kontentni joyladi"</string> @@ -1259,6 +1259,10 @@ <string name="android_preparing_apk" msgid="589736917792300956">"<xliff:g id="APPNAME">%1$s</xliff:g> tayyorlanmoqda."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Ilovalar ishga tushirilmoqda."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Tizimni yuklashni tugatish."</string> + <string name="fp_enrollment_powerbutton_intent_title" msgid="3385634173366119903">"Ekran oʻchirilsinmi?"</string> + <string name="fp_enrollment_powerbutton_intent_message" msgid="6582149052513682522">"Barmoq izini sozlayotganda Quvvat tugmasini bosdingiz.\n\nBunda odatda ekran oʻchib qoladi."</string> + <string name="fp_enrollment_powerbutton_intent_positive_button" msgid="5963520983910436791">"Oʻchirish"</string> + <string name="fp_enrollment_powerbutton_intent_negative_button" msgid="6465764183480190748">"Bekor qilish"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> ishlamoqda"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"O‘yinga qaytish uchun bosing"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"O‘yinni tanlang"</string> @@ -1709,6 +1713,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tezkor ishga tushirishdan foydalanish"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ranglarni akslantirish"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Ranglarni tuzatish"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Ixcham rejim"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Juda xira"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> yoqildi."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> faolsizlantirildi."</string> @@ -1864,8 +1869,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Administrator tomonidan yangilangan"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Administrator tomonidan o‘chirilgan"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Quvvat tejash tungi mavzuni yoqadi va orqa fondagi harakatlar, ayrim vizual effektlar va ayrim funksiyalarni cheklaydi yoki oʻchiradi.\n\n"<annotation id="url">"Batafsil"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Quvvat tejash tungi mavzuni yoqadi va orqa fondagi harakatlar, ayrim vizual effektlar va ayrim funksiyalarni cheklaydi yoki oʻchiradi."</string> + <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Quvvat tejash funksiyasi Tungi mavzuni va cheklovlarni yoqadi va fondagi harakatlar, vizual effektlar, ayrim funksiyalar va tarmoq aloqalari kabi boshqa funksiyalarni faolsizlantiradi yoki cheklaydi.\n\n"<annotation id="url">"Batafsil"</annotation></string> + <string name="battery_saver_description" msgid="8518809702138617167">"Quvvat tejash funksiyasi Tungi mavzuni va cheklovlarni yoqadi va fondagi harakatlar, vizual effektlar, ayrim funksiyalar va tarmoq aloqalari kabi boshqa funksiyalarni faolsizlantiradi yoki cheklaydi."</string> <string name="data_saver_description" msgid="4995164271550590517">"Trafik tejash rejimida ayrim ilovalar uchun orqa fonda internetdan foydalanish imkoniyati cheklanadi. Siz ishlatayotgan ilova zaruratga qarab internet-trafik sarflashi mumkin, biroq cheklangan miqdorda. Masalan, rasmlar ustiga bosmaguningizcha ular yuklanmaydi."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Trafik tejash yoqilsinmi?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Yoqish"</string> @@ -1968,8 +1973,8 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ishlamayapti. Uning ishlashini <xliff:g id="APP_NAME_1">%2$s</xliff:g> cheklamoqda."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Batafsil"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Ilovani pauzadan chiqarish"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Ish profili yoqilsinmi?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Ishga oid ilovalar, bildirishnomalar, ma’lumotlar va boshqa ish profili imkoniyatlari yoqiladi"</string> + <string name="work_mode_off_title" msgid="961171256005852058">"Ishga oid ilovalar yoqilsinmi?"</string> + <string name="work_mode_off_message" msgid="7319580997683623309">"Ishga oid ilovalaringiz va bildirishnomalarga ruxsat oling"</string> <string name="work_mode_turn_on" msgid="3662561662475962285">"Yoqish"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Ilova ishlamayapti"</string> <string name="app_blocked_message" msgid="542972921087873023">"Ayni vaqtda <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi ishlamayapti."</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index f20f6966d9ae..9ddb3a6f3160 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Đã sao chép văn bản vào bảng nhớ tạm thời."</string> <string name="copied" msgid="4675902854553014676">"Đã sao chép"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán dữ liệu từ <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán dữ liệu từ bảng nhớ tạm"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán văn bản mà bạn sao chép"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán một hình ảnh mà bạn sao chép"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> đã dán nội dung mà bạn sao chép"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Đang chuẩn bị <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Khởi động ứng dụng."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Hoàn tất khởi động."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> đang hoạt động"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Nhấn để quay lại trò chơi"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Chọn trò chơi"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sử dụng phím tắt"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Đảo màu"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Chỉnh màu"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Siêu tối"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã bật."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã tắt."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Do quản trị viên của bạn cập nhật"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Do quản trị viên của bạn xóa"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Tính năng Tiết kiệm pin sẽ bật Giao diện tối, đồng thời hạn chế hoặc tắt hoạt động chạy trong nền, một số hiệu ứng hình ảnh và các tính năng nhất định.\n\n"<annotation id="url">"Tìm hiểu thêm"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Tính năng Tiết kiệm pin sẽ bật Giao diện tối, đồng thời hạn chế hoặc tắt hoạt động chạy trong nền, một số hiệu ứng hình ảnh và các tính năng nhất định."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Để giúp giảm mức sử dụng dữ liệu, Trình tiết kiệm dữ liệu sẽ chặn một số ứng dụng gửi hoặc nhận dữ liệu trong nền. Ứng dụng mà bạn hiện sử dụng có thể dùng dữ liệu nhưng tần suất sẽ giảm. Ví dụ: hình ảnh sẽ không hiển thị cho đến khi bạn nhấn vào hình ảnh đó."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Bật Trình tiết kiệm dữ liệu?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Bật"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> hiện không sử dụng được. Chính sách này do <xliff:g id="APP_NAME_1">%2$s</xliff:g> quản lý."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Tìm hiểu thêm"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Mở lại ứng dụng"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Bạn muốn bật hồ sơ công việc?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Các ứng dụng công việc, thông báo, dữ liệu và các tính năng khác của hồ sơ công việc sẽ được bật"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Bật"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Ứng dụng này không dùng được"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> hiện không dùng được."</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 3122053aca0b..69a3c061e0d6 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"文本已复制到剪贴板。"</string> <string name="copied" msgid="4675902854553014676">"已复制"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴从<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>复制的内容"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴剪贴板中的内容"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的文字"</string> <string name="pasted_image" msgid="4729097394781491022">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的图片"</string> <string name="pasted_content" msgid="646276353060777131">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>已粘贴您复制的内容"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"正在准备升级<xliff:g id="APPNAME">%1$s</xliff:g>。"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"正在启动应用。"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"即将完成启动。"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g>正在运行"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"点按即可返回游戏"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"选择游戏"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快捷方式"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"颜色反转"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"极暗"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已开启。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已关闭。"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"已由您的管理员更新"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"已由您的管理员删除"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"确定"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"在省电模式下,系统会启用深色主题,并限制或关闭后台活动、部分视觉效果和某些功能。\n\n"<annotation id="url">"了解详情"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"在省电模式下,系统会启用深色主题,并限制或关闭后台活动、部分视觉效果和某些功能。"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"为了减少流量消耗,流量节省程序会阻止某些应用在后台收发数据。您当前使用的应用可以收发数据,但频率可能会降低。举例而言,这可能意味着图片只有在您点按之后才会显示。"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"要开启流量节省程序吗?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"开启"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>目前无法使用。该应用是由<xliff:g id="APP_NAME_1">%2$s</xliff:g>所管理。"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"了解详情"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暂停应用"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"要开启工作资料吗?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"您的工作应用、通知、数据及其他工作资料功能将会开启"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"开启"</string> <string name="app_blocked_title" msgid="7353262160455028160">"应用无法使用"</string> <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g>目前无法使用。"</string> @@ -2287,8 +2302,6 @@ <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"应用品牌图片"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"查看权限设置"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g>可以查看和控制您的屏幕。点按即可查看。"</string> - <!-- no translation found for ui_translation_accessibility_translated_text (3197547218178944544) --> - <skip /> - <!-- no translation found for ui_translation_accessibility_translation_finished (3057830947610088465) --> - <skip /> + <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"已翻译“<xliff:g id="MESSAGE">%1$s</xliff:g>”。"</string> + <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"已将消息内容从<xliff:g id="FROM_LANGUAGE">%1$s</xliff:g>翻译成<xliff:g id="TO_LANGUAGE">%2$s</xliff:g>。"</string> </resources> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 3a54e4a55678..993b1bc4d1e7 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"文字已複製到剪貼簿。"</string> <string name="copied" msgid="4675902854553014676">"已複製"</string> <string name="pasted_from_app" msgid="5627698450808256545">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 已貼上從 <xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g> 複製的資料"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> 已貼上剪貼簿中的資料"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"您複製的文字已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> <string name="pasted_image" msgid="4729097394781491022">"您複製的圖片已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> <string name="pasted_content" msgid="646276353060777131">"您複製的內容已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"正在準備 <xliff:g id="APPNAME">%1$s</xliff:g>。"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"正在啟動應用程式。"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"啟動完成。"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"正在執行 <xliff:g id="APP">%1$s</xliff:g>"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"輕按即可返回遊戲"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"選擇遊戲"</string> @@ -1709,6 +1718,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快速鍵"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> + <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已開啟。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已關閉。"</string> @@ -1864,8 +1874,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"已由您的管理員更新"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"已由您的管理員刪除"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"好"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"「省電模式」會開啟深色主題背景,並限制或關閉背景活動、部分視覺效果和特定功能。\n\n"<annotation id="url">"瞭解詳情"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"「省電模式」會開啟深色主題背景,並限制或關閉背景活動、部分視覺效果和特定功能。"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"「數據節省模式」可防止部分應用程式在背景收發資料,以節省數據用量。您正在使用的應用程式可存取資料,但次數可能會減少。例如,圖片可能需要輕按才會顯示。"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"要開啟「數據節省模式」嗎?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"開啟"</string> @@ -1968,8 +1980,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"目前無法使用 <xliff:g id="APP_NAME_0">%1$s</xliff:g>。此應用程式是由「<xliff:g id="APP_NAME_1">%2$s</xliff:g>」管理。"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"瞭解詳情"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暫停應用程式"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"要開啟工作設定檔嗎?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"系統將開啟您的工作應用程式、通知、資料和其他工作設定檔功能"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"開啟"</string> <string name="app_blocked_title" msgid="7353262160455028160">"無法使用應用程式"</string> <string name="app_blocked_message" msgid="542972921087873023">"目前無法使用「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 8f5f36cc3f68..19408c2f45f3 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"文字已複製到剪貼簿。"</string> <string name="copied" msgid="4675902854553014676">"已複製"</string> <string name="pasted_from_app" msgid="5627698450808256545">"「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」已貼上從「<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>」複製的資料"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」已貼上剪貼簿中的資料"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"你複製的文字已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> <string name="pasted_image" msgid="4729097394781491022">"你複製的圖片已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> <string name="pasted_content" msgid="646276353060777131">"你複製的內容已貼到「<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g>」"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"正在準備升級「<xliff:g id="APPNAME">%1$s</xliff:g>」。"</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"正在啟動應用程式。"</string> <string name="android_upgrading_complete" msgid="409800058018374746">"啟動完成。"</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> 執行中"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"輕觸即可返回遊戲"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"選擇遊戲"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用捷徑"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"色彩校正"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已開啟。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已關閉。"</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"已由你的管理員更新"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"已由你的管理員刪除"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"確定"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"省電模式會開啟深色主題,並限制或關閉背景活動、某些視覺效果和特定功能。\n\n"<annotation id="url">"瞭解詳情"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"省電模式會開啟深色主題,並限制或關閉背景活動、某些視覺效果和特定功能。"</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"「數據節省模式」可防止部分應用程式在背景收發資料,以節省數據用量。你目前使用的應用程式可以存取資料,但存取頻率可能不如平時高。舉例來說,圖片可能不會自動顯示,在你輕觸後才會顯示。"</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"要開啟數據節省模式嗎?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"開啟"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"目前無法使用「<xliff:g id="APP_NAME_0">%1$s</xliff:g>」。這項設定是由「<xliff:g id="APP_NAME_1">%2$s</xliff:g>」管理。"</string> <string name="app_suspended_more_details" msgid="211260942831587014">"瞭解詳情"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暫停應用程式"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"要開啟工作資料夾嗎?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"系統將開啟你的工作應用程式、通知、資料和其他工作資料夾功能"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"開啟"</string> <string name="app_blocked_title" msgid="7353262160455028160">"應用程式無法使用"</string> <string name="app_blocked_message" msgid="542972921087873023">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」目前無法使用。"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 3fd96d11dd43..67da660f329f 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1022,7 +1022,8 @@ <string name="text_copied" msgid="2531420577879738860">"Umbhalo ukopishwe ebhodini lokunamathisela."</string> <string name="copied" msgid="4675902854553014676">"Kukopishiwe"</string> <string name="pasted_from_app" msgid="5627698450808256545">"I-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> inamathiselwe kusuka ku-<xliff:g id="SOURCE_APP_NAME">%2$s</xliff:g>"</string> - <string name="pasted_from_clipboard" msgid="6295556725844421812">"I-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> inamathiselwe kusuka ebhodini yokunamathisela"</string> + <!-- no translation found for pasted_from_clipboard (7355790625710831847) --> + <skip /> <string name="pasted_text" msgid="4298871641549173733">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele umbhalo owukopishile"</string> <string name="pasted_image" msgid="4729097394781491022">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele isithombe osikopishile"</string> <string name="pasted_content" msgid="646276353060777131">"U-<xliff:g id="PASTING_APP_NAME">%1$s</xliff:g> unamathisele okuqukethwe okukopishile"</string> @@ -1259,6 +1260,14 @@ <string name="android_preparing_apk" msgid="589736917792300956">"Ukulungisela i-<xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"Qalisa izinhlelo zokusebenza."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"Qedela ukuqala kabusha."</string> + <!-- no translation found for fp_enrollment_powerbutton_intent_title (3385634173366119903) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_message (6582149052513682522) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_positive_button (5963520983910436791) --> + <skip /> + <!-- no translation found for fp_enrollment_powerbutton_intent_negative_button (6465764183480190748) --> + <skip /> <string name="heavy_weight_notification" msgid="8382784283600329576">"<xliff:g id="APP">%1$s</xliff:g> iyasebenza"</string> <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"Thepha ukuze ubuyele emuva kwigeyimu"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"Khetha igeyimu"</string> @@ -1709,6 +1718,8 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sebenzisa isinqamuleli"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Ukuguqulwa kombala"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Ukulungiswa kombala"</string> + <!-- no translation found for one_handed_mode_feature_name (2334330034828094891) --> + <skip /> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ukufiphaza okwengeziwe"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivuliwe."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivaliwe."</string> @@ -1864,8 +1875,10 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Kubuyekezwe umlawuli wakho"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Kususwe umlawuli wakho"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"KULUNGILE"</string> - <string name="battery_saver_description_with_learn_more" msgid="750683025714899363">"Isilondolozi Sebhethri sivula Itimu emnyama futhi silinganise noma sivale umsebenzi ongemuva, imiphumela ethile yokubuka, nezakhi ezithile.\n\n"<annotation id="url">"Funda kabanzi"</annotation></string> - <string name="battery_saver_description" msgid="5693741424234005958">"Isilondolozi Sebhethri sivula itimu emnyama futhi silinganise noma sivale umsebenzi ongemuva, imiphumela ethile yokubuka, nezakhi ezithile."</string> + <!-- no translation found for battery_saver_description_with_learn_more (4877297130366222145) --> + <skip /> + <!-- no translation found for battery_saver_description (8518809702138617167) --> + <skip /> <string name="data_saver_description" msgid="4995164271550590517">"Ukusiza ukwehlisa ukusetshenziswa kwedatha, iseva yedatha igwema ezinye izinhlelo zokusebenza ukuthi zithumele noma zamukele idatha ngasemuva. Uhlelo lokusebenza olisebenzisa okwamanje lingafinyelela idatha, kodwa lingenza kanjalo kancane. Lokhu kungachaza, isibonelo, ukuthi izithombe azibonisi uze uzithephe."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vula iseva yedatha?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Vula"</string> @@ -1968,8 +1981,10 @@ <string name="app_suspended_default_message" msgid="6451215678552004172">"I-<xliff:g id="APP_NAME_0">%1$s</xliff:g> ayitholakali okwamanje. Lokhu kuphethwe i-<xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string> <string name="app_suspended_more_details" msgid="211260942831587014">"Funda kabanzi"</string> <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Susa ukuphumuza uhlelo lokusebenza"</string> - <string name="work_mode_off_title" msgid="5503291976647976560">"Vula iphrofayela yomsebenzi?"</string> - <string name="work_mode_off_message" msgid="8417484421098563803">"Izinhlelo zakho zokusebenza zomsebenzi, izaziso, idatha, nezinye izici zephrofayela yomsebenzi kuzovulwa"</string> + <!-- no translation found for work_mode_off_title (961171256005852058) --> + <skip /> + <!-- no translation found for work_mode_off_message (7319580997683623309) --> + <skip /> <string name="work_mode_turn_on" msgid="3662561662475962285">"Vula"</string> <string name="app_blocked_title" msgid="7353262160455028160">"Uhlelo lokusebenza alutholakali"</string> <string name="app_blocked_message" msgid="542972921087873023">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayitholakali khona manje."</string> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 9f3d80c2ab82..c5f4fd1a898a 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1949,7 +1949,10 @@ <!-- Applications can set this attribute to an xml resource within their app where they specified the rules determining which files and directories can be copied from the device - as part of backup or transfer operations. --> + as part of backup or transfer operations. + + See the <a href="{@docRoot}about/versions/12/backup-restore">Changes in backup and restore</a> + document for the format of the XML file.--> <attr name="dataExtractionRules" format="reference"/> </declare-styleable> diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml index 36168e7bd937..f71088f417a4 100644 --- a/core/res/res/values/colors.xml +++ b/core/res/res/values/colors.xml @@ -246,6 +246,9 @@ <!-- Lightest shade of the accent color used by the system. White. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_accent1_0">#ffffff</color> + <!-- Shade of the accent system color at 99% lightness. + This value can be overlaid at runtime by OverlayManager RROs. --> + <color name="system_accent1_10">#F1FFFC</color> <!-- Shade of the accent system color at 95% lightness. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_accent1_50">#9CFFF2</color> @@ -283,6 +286,9 @@ <!-- Lightest shade of the secondary accent color used by the system. White. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_accent2_0">#ffffff</color> + <!-- Shade of the secondary accent system color at 99% lightness. + This value can be overlaid at runtime by OverlayManager RROs. --> + <color name="system_accent2_10">#F0FFFC</color> <!-- Shade of the secondary accent system color at 95% lightness. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_accent2_50">#CDFAF1</color> @@ -320,6 +326,9 @@ <!-- Lightest shade of the tertiary accent color used by the system. White. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_accent3_0">#ffffff</color> + <!-- Shade of the tertiary accent system color at 99% lightness. + This value can be overlaid at runtime by OverlayManager RROs. --> + <color name="system_accent3_10">#FFFBFF</color> <!-- Shade of the tertiary accent system color at 95% lightness. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_accent3_50">#F9EAFF</color> @@ -357,6 +366,9 @@ <!-- Lightest shade of the neutral color used by the system. White. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_neutral1_0">#ffffff</color> + <!-- Shade of the neutral system color at 99% lightness. + This value can be overlaid at runtime by OverlayManager RROs. --> + <color name="system_neutral1_10">#fbfbfb</color> <!-- Shade of the neutral system color at 95% lightness. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_neutral1_50">#f0f0f0</color> @@ -394,6 +406,9 @@ <!-- Lightest shade of the secondary neutral color used by the system. White. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_neutral2_0">#ffffff</color> + <!-- Shade of the secondary neutral system color at 99% lightness. + This value can be overlaid at runtime by OverlayManager RROs. --> + <color name="system_neutral2_10">#fbfbfb</color> <!-- Shade of the secondary neutral system color at 95% lightness. This value can be overlaid at runtime by OverlayManager RROs. --> <color name="system_neutral2_50">#f0f0f0</color> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 5ebfae518ead..aa0d23bf3385 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -3552,6 +3552,9 @@ --> <integer name="config_largeScreenSmallestScreenWidthDp">600</integer> + <!-- True if the device is using leagacy split. --> + <bool name="config_useLegacySplit">true</bool> + <!-- True if the device supports running activities on secondary displays. --> <bool name="config_supportsMultiDisplay">true</bool> diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 6be6167fba30..4f90a174fef7 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -776,8 +776,8 @@ <dimen name="conversation_expand_button_height">88dp</dimen> <!-- this is the margin between the Conversation image and the content --> <dimen name="conversation_image_start_margin">12dp</dimen> - <!-- Side margins of the conversation badge in relation to the conversation icon --> - <dimen name="conversation_badge_side_margin">32dp</dimen> + <!-- amount the badge sticks out from the conversation avatar --> + <dimen name="conversation_badge_protrusion">4dp</dimen> <!-- size of the notification badge when applied to the conversation icon --> <dimen name="conversation_icon_size_badged">20dp</dimen> <!-- size of the conversation avatar in an expanded group --> @@ -786,10 +786,10 @@ <dimen name="conversation_face_pile_avatar_size">32dp</dimen> <!-- size of the face pile icons when the group is expanded --> <dimen name="conversation_face_pile_avatar_size_group_expanded">@dimen/conversation_face_pile_avatar_size</dimen> - <!-- Side margins of the conversation badge in relation to the conversation icon when the group is expanded--> - <dimen name="conversation_badge_side_margin_group_expanded">@dimen/conversation_badge_side_margin</dimen> - <!-- Side margins of the conversation badge in relation to the conversation icon when the group is expanded--> - <dimen name="conversation_badge_side_margin_group_expanded_face_pile">@dimen/conversation_badge_side_margin</dimen> + <!-- amount the badge sticks out from the conversation avatar when the group is expanded --> + <dimen name="conversation_badge_protrusion_group_expanded">@dimen/conversation_badge_protrusion</dimen> + <!-- amount the badge sticks out from the conversation face pile when the group is expanded --> + <dimen name="conversation_badge_protrusion_group_expanded_face_pile">@dimen/conversation_badge_protrusion</dimen> <!-- The width of the protection of the face pile layout--> <dimen name="conversation_face_pile_protection_width">2dp</dimen> <!-- The width of the protection of the face pile layout when expanded--> @@ -809,8 +809,8 @@ <!-- The top padding of the conversation icon container when the avatar is small--> <dimen name="conversation_icon_container_top_padding_small_avatar">8dp</dimen> - <!-- The padding of the conversation header when expanded. This is calculated from the expand button size + notification_content_margin_end --> - <dimen name="conversation_header_expanded_padding_end">38dp</dimen> + <!-- The padding of the conversation header when expanded. This is calculated from the expand button size (56dp) - notification_content_margin_end (16dp) --> + <dimen name="conversation_header_expanded_padding_end">40dp</dimen> <!-- extra padding at the start of the icons when not conversations to keep them horizontally aligned with the notification icon --> <dimen name="messaging_layout_icon_padding_start">4dp</dimen> @@ -936,7 +936,7 @@ <dimen name="system_app_widget_background_radius">16dp</dimen> <!-- System-provided radius for inner views on app widgets. The resolved value of this resource may change at runtime. --> <dimen name="system_app_widget_inner_radius">8dp</dimen> - <!-- System-provided padding for inner views on app widgets. The resolved value of this resource may change at runtime. --> - <dimen name="system_app_widget_internal_padding">16dp</dimen> + <!-- System-provided padding for inner views on app widgets. The resolved value of this resource may change at runtime. @removed --> + <dimen name="__removed_system_app_widget_internal_padding">16dp</dimen> </resources> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 482b112c0444..500a9dae6554 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3111,6 +3111,7 @@ <!-- Material design dynamic system palette:--> <!-- Neutral colors for background and text --> <public name="system_neutral1_0" /> + <public name="system_neutral1_10" /> <public name="system_neutral1_50" /> <public name="system_neutral1_100" /> <public name="system_neutral1_200" /> @@ -3123,6 +3124,7 @@ <public name="system_neutral1_900" /> <public name="system_neutral1_1000" /> <public name="system_neutral2_0" /> + <public name="system_neutral2_10" /> <public name="system_neutral2_50" /> <public name="system_neutral2_100" /> <public name="system_neutral2_200" /> @@ -3136,6 +3138,7 @@ <public name="system_neutral2_1000" /> <!-- Accent colors, for buttons and UI decorations --> <public name="system_accent1_0" /> + <public name="system_accent1_10" /> <public name="system_accent1_50" /> <public name="system_accent1_100" /> <public name="system_accent1_200" /> @@ -3148,6 +3151,7 @@ <public name="system_accent1_900" /> <public name="system_accent1_1000" /> <public name="system_accent2_0" /> + <public name="system_accent2_10" /> <public name="system_accent2_50" /> <public name="system_accent2_100" /> <public name="system_accent2_200" /> @@ -3160,6 +3164,7 @@ <public name="system_accent2_900" /> <public name="system_accent2_1000" /> <public name="system_accent3_0" /> + <public name="system_accent3_10" /> <public name="system_accent3_50" /> <public name="system_accent3_100" /> <public name="system_accent3_200" /> @@ -3179,7 +3184,7 @@ <!-- System-provided dimensions for app widgets. --> <public name="system_app_widget_background_radius" /> <public name="system_app_widget_inner_radius" /> - <public name="system_app_widget_internal_padding" /> + <public name="__removed_system_app_widget_internal_padding" /> </staging-public-group> <staging-public-group type="bool" first-id="0x01110007"> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index 270b98ebebe3..b836c4c9734c 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -2836,7 +2836,7 @@ <string name="pasted_from_app"><xliff:g id="pasting_app_name" example="Gmail">%1$s</xliff:g> pasted from <xliff:g id="source_app_name" example="Chrome">%2$s</xliff:g></string> <!-- Displayed to the user to inform them that an app has accessed clipboard data (pasted as in "copy and paste") [CHAR LIMIT=50] --> - <string name="pasted_from_clipboard"><xliff:g id="pasting_app_name" example="Gmail">%1$s</xliff:g> pasted from clipboard</string> + <string name="pasted_from_clipboard"><xliff:g id="pasting_app_name" example="Gmail">%1$s</xliff:g> pasted from your clipboard</string> <!-- Displayed to the user to inform them that an app has accessed text from clipboard (pasted as in "copy and paste") [CHAR LIMIT=50] --> <string name="pasted_text"><xliff:g id="pasting_app_name" example="Gmail">%1$s</xliff:g> pasted text you copied</string> @@ -3390,6 +3390,23 @@ <!-- [CHAR LIMIT=NONE] Message to show in upgrading dialog when the bulk of the upgrade work is done. --> <string name="android_upgrading_complete">Finishing boot.</string> + <!-- [CHAR LIMIT=40] Title of dialog shown to confirm device going to sleep if the power button + is pressed during fingerprint enrollment. --> + <string name="fp_enrollment_powerbutton_intent_title">Turn off screen?</string> + + <!-- [CHAR LIMIT=NONE] Message of dialog shown to confirm device going to sleep if the power + button is pressed during fingerprint enrollment. --> + <string name="fp_enrollment_powerbutton_intent_message">While setting up your fingerprint, you + pressed the Power button.\n\nThis usually turns off your screen.</string> + + <!-- [CHAR LIMIT=20] Positive button of dialog shown to confirm device going to sleep if the + power button is pressed during fingerprint enrollment. --> + <string name="fp_enrollment_powerbutton_intent_positive_button">Turn off</string> + + <!-- [CHAR LIMIT=20] Negative button of dialog shown to confirm device going to sleep if the + power button is pressed during fingerprint enrollment. --> + <string name="fp_enrollment_powerbutton_intent_negative_button">Cancel</string> + <!-- Notification text to tell the user that a heavy-weight application is running. --> <string name="heavy_weight_notification"><xliff:g id="app">%1$s</xliff:g> running</string> @@ -4636,6 +4653,9 @@ shown in the warning dialog about the accessibility shortcut. --> <string name="color_correction_feature_name">Color Correction</string> + <!-- Title of One Handed Mode feature, shown in the system gestures of the accessibility shortcut. [CHAR LIMIT=none] --> + <string name="one_handed_mode_feature_name">One-Handed mode</string> + <!-- Title of Reduce Brightness feature, shown in the warning dialog about the accessibility shortcut. [CHAR LIMIT=none] --> <string name="reduce_bright_colors_feature_name">Extra dim</string> @@ -5007,10 +5027,10 @@ <string name="confirm_battery_saver">OK</string> <!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, with a "learn more" link. --> - <string name="battery_saver_description_with_learn_more">Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, and certain features.\n\n<annotation id="url">Learn more</annotation></string> + <string name="battery_saver_description_with_learn_more">Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features, and some network connections.\n\n<annotation id="url">Learn more</annotation></string> <!-- [CHAR_LIMIT=NONE] Battery saver: Feature description, without a "learn more" link. --> - <string name="battery_saver_description">Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, and certain features.</string> + <string name="battery_saver_description">Battery Saver turns on Dark theme and limits or turns off background activity, some visual effects, certain features, and some network connections.</string> <!-- [CHAR_LIMIT=NONE] Data saver: Feature description --> <string name="data_saver_description">To help reduce data usage, Data Saver prevents some apps from sending or receiving data in the background. An app you’re currently using can access data, but may do so less frequently. This may mean, for example, that images don’t display until you tap them.</string> @@ -5237,10 +5257,10 @@ <!-- Title of the button to unsuspend a suspended app immediately [CHAR LIMIT=50]--> <string name="app_suspended_unsuspend_message">Unpause app</string> - <!-- Title of a dialog. The string is asking if the user wants to turn on their work profile, which contains work apps that are managed by their employer. "Work" is an adjective. [CHAR LIMIT=30] --> - <string name="work_mode_off_title">Turn on work profile?</string> - <!-- Text in a dialog. This string describes what will happen if a user decides to turn on their work profile. "Work profile" is used as an adjective. [CHAR LIMIT=NONE] --> - <string name="work_mode_off_message">Your work apps, notifications, data, and other work profile features will be turned on</string> + <!-- Title of a dialog. This text is confirming that the user wants to turn on access to their work apps, which the user had previously paused. "Work" is an adjective. [CHAR LIMIT=30] --> + <string name="work_mode_off_title">Turn on work apps?</string> + <!-- Text in a dialog. This text is confirming that the user wants to turn on access to their work apps and notifications, which the user had previously paused. "Work" is an adjective. [CHAR LIMIT=NONE] --> + <string name="work_mode_off_message">Get access to your work apps and notifications</string> <!-- Title for button to turn on work profile. [CHAR LIMIT=NONE] --> <string name="work_mode_turn_on">Turn on</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 3fec918f7ac0..d8620a706fe2 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -396,6 +396,7 @@ <java-symbol type="integer" name="config_respectsActivityMinWidthHeightMultiWindow" /> <java-symbol type="dimen" name="config_minPercentageMultiWindowSupportWidth" /> <java-symbol type="integer" name="config_largeScreenSmallestScreenWidthDp" /> + <java-symbol type="bool" name="config_useLegacySplit" /> <java-symbol type="bool" name="config_noHomeScreen" /> <java-symbol type="bool" name="config_supportsSystemDecorsOnSecondaryDisplays" /> <java-symbol type="bool" name="config_supportsInsecureLockScreen" /> @@ -1813,6 +1814,10 @@ <java-symbol type="string" name="bugreport_status" /> <java-symbol type="string" name="bugreport_title" /> <java-symbol type="string" name="faceunlock_multiple_failures" /> + <java-symbol type="string" name="fp_enrollment_powerbutton_intent_title" /> + <java-symbol type="string" name="fp_enrollment_powerbutton_intent_message" /> + <java-symbol type="string" name="fp_enrollment_powerbutton_intent_positive_button" /> + <java-symbol type="string" name="fp_enrollment_powerbutton_intent_negative_button" /> <java-symbol type="string" name="global_actions" /> <java-symbol type="string" name="global_action_power_off" /> <java-symbol type="string" name="global_action_power_options" /> @@ -3409,9 +3414,12 @@ <java-symbol type="drawable" name="ic_accessibility_color_correction" /> <java-symbol type="drawable" name="ic_accessibility_magnification" /> <java-symbol type="drawable" name="ic_accessibility_reduce_bright_colors" /> + <java-symbol type="drawable" name="ic_accessibility_one_handed" /> <java-symbol type="string" name="reduce_bright_colors_feature_name" /> + <java-symbol type="string" name="one_handed_mode_feature_name" /> + <!-- com.android.internal.widget.RecyclerView --> <java-symbol type="id" name="item_touch_helper_previous_elevation"/> <java-symbol type="dimen" name="item_touch_helper_max_drag_scroll_per_frame"/> @@ -4076,15 +4084,15 @@ <java-symbol type="id" name="conversation_image_message_container" /> <java-symbol type="id" name="conversation_icon_container" /> <java-symbol type="dimen" name="messaging_group_singleline_sender_padding_end" /> - <java-symbol type="dimen" name="conversation_badge_side_margin" /> + <java-symbol type="dimen" name="conversation_badge_protrusion" /> <java-symbol type="dimen" name="conversation_avatar_size" /> <java-symbol type="dimen" name="conversation_avatar_size_group_expanded" /> <java-symbol type="dimen" name="conversation_face_pile_avatar_size" /> <java-symbol type="dimen" name="conversation_face_pile_avatar_size_group_expanded" /> <java-symbol type="dimen" name="conversation_face_pile_protection_width" /> <java-symbol type="dimen" name="conversation_face_pile_protection_width_expanded" /> - <java-symbol type="dimen" name="conversation_badge_side_margin_group_expanded" /> - <java-symbol type="dimen" name="conversation_badge_side_margin_group_expanded_face_pile" /> + <java-symbol type="dimen" name="conversation_badge_protrusion_group_expanded" /> + <java-symbol type="dimen" name="conversation_badge_protrusion_group_expanded_face_pile" /> <java-symbol type="dimen" name="conversation_content_start" /> <java-symbol type="dimen" name="expanded_group_conversation_message_padding" /> <java-symbol type="dimen" name="messaging_layout_icon_padding_start" /> diff --git a/core/tests/coretests/src/com/android/internal/os/BinderDeathDispatcherTest.java b/core/tests/coretests/src/com/android/internal/os/BinderDeathDispatcherTest.java index 942045c8bf35..83103333f68b 100644 --- a/core/tests/coretests/src/com/android/internal/os/BinderDeathDispatcherTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BinderDeathDispatcherTest.java @@ -17,6 +17,7 @@ package com.android.internal.os; 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.reset; import static org.mockito.Mockito.times; @@ -31,14 +32,14 @@ import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ShellCallback; +import androidx.test.filters.SmallTest; +import androidx.test.runner.AndroidJUnit4; + import org.junit.Test; import org.junit.runner.RunWith; import java.io.FileDescriptor; -import androidx.test.filters.SmallTest; -import androidx.test.runner.AndroidJUnit4; - @SmallTest @RunWith(AndroidJUnit4.class) public class BinderDeathDispatcherTest { @@ -120,7 +121,7 @@ public class BinderDeathDispatcherTest { public void die() { isAlive = false; if (mRecipient != null) { - mRecipient.binderDied(); + mRecipient.binderDied(this); } mRecipient = null; } @@ -227,33 +228,33 @@ public class BinderDeathDispatcherTest { // Kill the targets. t1.die(); - verify(r1, times(1)).binderDied(); - verify(r2, times(1)).binderDied(); - verify(r3, times(1)).binderDied(); - verify(r4, times(0)).binderDied(); - verify(r5, times(0)).binderDied(); + verify(r1, times(1)).binderDied(t1); + verify(r2, times(1)).binderDied(t1); + verify(r3, times(1)).binderDied(t1); + verify(r4, times(0)).binderDied(any()); + verify(r5, times(0)).binderDied(any()); assertThat(d.getTargetsForTest().size()).isEqualTo(2); reset(r1, r2, r3, r4, r5); t2.die(); - verify(r1, times(1)).binderDied(); - verify(r2, times(0)).binderDied(); - verify(r3, times(0)).binderDied(); - verify(r4, times(0)).binderDied(); - verify(r5, times(0)).binderDied(); + verify(r1, times(1)).binderDied(t2); + verify(r2, times(0)).binderDied(any()); + verify(r3, times(0)).binderDied(any()); + verify(r4, times(0)).binderDied(any()); + verify(r5, times(0)).binderDied(any()); assertThat(d.getTargetsForTest().size()).isEqualTo(1); reset(r1, r2, r3, r4, r5); t3.die(); - verify(r1, times(0)).binderDied(); - verify(r2, times(0)).binderDied(); - verify(r3, times(1)).binderDied(); - verify(r4, times(0)).binderDied(); - verify(r5, times(1)).binderDied(); + verify(r1, times(0)).binderDied(any()); + verify(r2, times(0)).binderDied(any()); + verify(r3, times(1)).binderDied(t3); + verify(r4, times(0)).binderDied(any()); + verify(r5, times(1)).binderDied(t3); assertThat(d.getTargetsForTest().size()).isEqualTo(0); @@ -262,4 +263,27 @@ public class BinderDeathDispatcherTest { assertThat(d.getTargetsForTest().size()).isEqualTo(0); } + + @Test + public void duplicateRegistrations() { + BinderDeathDispatcher<MyTarget> d = new BinderDeathDispatcher<>(); + + MyTarget t1 = new MyTarget(); + + DeathRecipient r1 = mock(DeathRecipient.class); + DeathRecipient r2 = mock(DeathRecipient.class); + + for (int i = 0; i < 5; i++) { + assertThat(d.linkToDeath(t1, r1)).isEqualTo(1); + } + assertThat(d.linkToDeath(t1, r2)).isEqualTo(2); + + t1.die(); + verify(r1, times(1)).binderDied(t1); + verify(r2, times(1)).binderDied(t1); + + d.unlinkToDeath(t1, r1); + d.unlinkToDeath(t1, r2); + assertThat(d.getTargetsForTest()).isEmpty(); + } } diff --git a/core/tests/coretests/src/com/android/internal/os/BinderLatencyObserverTest.java b/core/tests/coretests/src/com/android/internal/os/BinderLatencyObserverTest.java index 4157f5e72871..5af7376dc132 100644 --- a/core/tests/coretests/src/com/android/internal/os/BinderLatencyObserverTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BinderLatencyObserverTest.java @@ -41,6 +41,7 @@ import org.junit.runner.RunWith; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.Random; @SmallTest @@ -71,9 +72,9 @@ public class BinderLatencyObserverTest { ArrayMap<LatencyDims, int[]> latencyHistograms = blo.getLatencyHistograms(); assertEquals(2, latencyHistograms.keySet().size()); - assertThat(latencyHistograms.get(new LatencyDims(binder.getClass(), 1))) + assertThat(latencyHistograms.get(LatencyDims.create(binder.getClass(), 1))) .asList().containsExactly(2, 0, 1, 0, 0).inOrder(); - assertThat(latencyHistograms.get(new LatencyDims(binder.getClass(), 2))) + assertThat(latencyHistograms.get(LatencyDims.create(binder.getClass(), 2))) .asList().containsExactly(0, 0, 0, 0, 2).inOrder(); } @@ -115,7 +116,7 @@ public class BinderLatencyObserverTest { // The long call should be capped to maxint (to not overflow) and placed in the last bucket. assertThat(blo.getLatencyHistograms() - .get(new LatencyDims(binder.getClass(), 1))) + .get(LatencyDims.create(binder.getClass(), 1))) .asList().containsExactly(0, 0, 0, 0, 1) .inOrder(); } @@ -132,7 +133,7 @@ public class BinderLatencyObserverTest { blo.setElapsedTime(2); blo.callEnded(callSession); - LatencyDims dims = new LatencyDims(binder.getClass(), 1); + LatencyDims dims = LatencyDims.create(binder.getClass(), 1); // Fill the buckets with maxint. Arrays.fill(blo.getLatencyHistograms().get(dims), Integer.MAX_VALUE); assertThat(blo.getLatencyHistograms().get(dims)) @@ -240,6 +241,61 @@ public class BinderLatencyObserverTest { .inOrder(); } + @Test + public void testSharding() { + TestBinderLatencyObserver blo = new TestBinderLatencyObserver(); + blo.setShardingModulo(2); + blo.setHistogramBucketsParams(5, 5, 1.125f); + + Binder binder = new Binder(); + CallSession callSession = new CallSession(); + callSession.binderClass = binder.getClass(); + callSession.transactionCode = 1; + blo.setElapsedTime(2); + blo.callEnded(callSession); + callSession.transactionCode = 2; + blo.setElapsedTime(4); + blo.callEnded(callSession); + callSession.transactionCode = 3; + blo.setElapsedTime(2); + blo.callEnded(callSession); + callSession.transactionCode = 4; + blo.setElapsedTime(4); + blo.callEnded(callSession); + + ArrayMap<LatencyDims, int[]> latencyHistograms = blo.getLatencyHistograms(); + Iterator<LatencyDims> iterator = latencyHistograms.keySet().iterator(); + LatencyDims dims; + + // Hash codes are not consistent per device and not mockable so the test needs to consider + // whether the hashCode of LatencyDims is odd or even and test accordingly. + if (LatencyDims.create(binder.getClass(), 0).hashCode() % 2 == 0) { + assertEquals(2, latencyHistograms.size()); + dims = iterator.next(); + assertEquals(binder.getClass(), dims.getBinderClass()); + assertEquals(1, dims.getTransactionCode()); + assertThat(latencyHistograms.get(dims)).asList().containsExactly(1, 0, 0, 0, 0) + .inOrder(); + dims = iterator.next(); + assertEquals(binder.getClass(), dims.getBinderClass()); + assertEquals(3, dims.getTransactionCode()); + assertThat(latencyHistograms.get(dims)).asList().containsExactly(1, 0, 0, 0, 0) + .inOrder(); + } else { + assertEquals(2, latencyHistograms.size()); + dims = iterator.next(); + assertEquals(binder.getClass(), dims.getBinderClass()); + assertEquals(2, dims.getTransactionCode()); + assertThat(latencyHistograms.get(dims)).asList().containsExactly(1, 0, 0, 0, 0) + .inOrder(); + dims = iterator.next(); + assertEquals(binder.getClass(), dims.getBinderClass()); + assertEquals(4, dims.getTransactionCode()); + assertThat(latencyHistograms.get(dims)).asList().containsExactly(1, 0, 0, 0, 0) + .inOrder(); + } + } + public static class TestBinderLatencyObserver extends BinderLatencyObserver { private long mElapsedTime = 0; private ArrayList<String> mWrittenAtoms; @@ -259,6 +315,10 @@ public class BinderLatencyObserverTest { public int nextInt() { return mCallCount++; } + + public int nextInt(int x) { + return 1; + } }; } }, diff --git a/core/tests/utiltests/src/com/android/internal/util/StringPoolTest.java b/core/tests/utiltests/src/com/android/internal/util/StringPoolTest.java new file mode 100644 index 000000000000..f67fd516fcf6 --- /dev/null +++ b/core/tests/utiltests/src/com/android/internal/util/StringPoolTest.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2010 The Android Open 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.internal.util; + +import android.test.AndroidTestCase; +import android.test.suitebuilder.annotation.SmallTest; + +@SmallTest +public final class StringPoolTest extends AndroidTestCase { + + public void testStringPool() { + StringPool stringPool = new StringPool(); + String bcd = stringPool.get(new char[] { 'a', 'b', 'c', 'd', 'e' }, 1, 3); + assertEquals("bcd", bcd); + assertSame(bcd, stringPool.get(new char[] { 'a', 'b', 'c', 'd', 'e' }, 1, 3)); + } + + public void testHashCollision() { + StringPool stringPool = new StringPool(); + char[] a = { (char) 1, (char) 0 }; + char[] b = { (char) 0, (char) 31 }; + assertEquals(new String(a).hashCode(), new String(b).hashCode()); + + String aString = stringPool.get(a, 0, 2); + assertEquals(new String(a), aString); + String bString = stringPool.get(b, 0, 2); + assertEquals(new String(b), bString); + assertSame(bString, stringPool.get(b, 0, 2)); + assertNotSame(aString, stringPool.get(a, 0, 2)); + } +} diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index e1a0f64913a8..545a5641b932 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -570,4 +570,8 @@ applications that come with the platform <privapp-permissions package="com.android.bips"> <permission name="android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON"/> </privapp-permissions> + + <privapp-permissions package="com.android.calllogbackup"> + <permission name="com.android.voicemail.permission.READ_VOICEMAIL"/> + </privapp-permissions> </permissions> diff --git a/graphics/java/android/graphics/RecordingCanvas.java b/graphics/java/android/graphics/RecordingCanvas.java index e9e58c6213bf..a5184f28dbc1 100644 --- a/graphics/java/android/graphics/RecordingCanvas.java +++ b/graphics/java/android/graphics/RecordingCanvas.java @@ -16,6 +16,7 @@ package android.graphics; +import android.annotation.ColorInt; import android.annotation.NonNull; import android.os.SystemProperties; import android.util.Pools.SynchronizedPool; @@ -227,11 +228,11 @@ public final class RecordingCanvas extends BaseRecordingCanvas { public void drawRipple(CanvasProperty<Float> cx, CanvasProperty<Float> cy, CanvasProperty<Float> radius, CanvasProperty<Paint> paint, CanvasProperty<Float> progress, CanvasProperty<Float> turbulencePhase, - RuntimeShader shader) { + @ColorInt int color, RuntimeShader shader) { nDrawRipple(mNativeCanvasWrapper, cx.getNativeContainer(), cy.getNativeContainer(), radius.getNativeContainer(), paint.getNativeContainer(), progress.getNativeContainer(), turbulencePhase.getNativeContainer(), - shader.getNativeShaderBuilder()); + color, shader.getNativeShaderBuilder()); } /** @@ -292,7 +293,7 @@ public final class RecordingCanvas extends BaseRecordingCanvas { long propCy, long propRadius, long propPaint); @CriticalNative private static native void nDrawRipple(long renderer, long propCx, long propCy, long propRadius, - long propPaint, long propProgress, long turbulencePhase, long runtimeEffect); + long propPaint, long propProgress, long turbulencePhase, int color, long runtimeEffect); @CriticalNative private static native void nDrawRoundRect(long renderer, long propLeft, long propTop, long propRight, long propBottom, long propRx, long propRy, long propPaint); diff --git a/graphics/java/android/graphics/RenderNode.java b/graphics/java/android/graphics/RenderNode.java index 6fcd8d09a770..01fd231d011f 100644 --- a/graphics/java/android/graphics/RenderNode.java +++ b/graphics/java/android/graphics/RenderNode.java @@ -280,8 +280,10 @@ public final class RenderNode { * * @hide */ - default void applyStretch(long frameNumber, float left, float top, float right, - float bottom, float vecX, float vecY, float maxStretch) { } + default void applyStretch(long frameNumber, float width, float height, + float vecX, float vecY, + float maxStretchX, float maxStretchY, float childRelativeLeft, + float childRelativeTop, float childRelativeRight, float childRelativeBottom) { } /** * Called by native on RenderThread to notify that the view is no longer in the @@ -326,10 +328,13 @@ public final class RenderNode { } @Override - public void applyStretch(long frameNumber, float left, float top, float right, float bottom, - float vecX, float vecY, float maxStretch) { + public void applyStretch(long frameNumber, float width, float height, + float vecX, float vecY, float maxStretchX, float maxStretchY, float childRelativeLeft, + float childRelativeTop, float childRelativeRight, float childRelativeBottom) { for (PositionUpdateListener pul : mListeners) { - pul.applyStretch(frameNumber, left, top, right, bottom, vecX, vecY, maxStretch); + pul.applyStretch(frameNumber, width, height, vecX, vecY, maxStretchX, + maxStretchY, childRelativeLeft, childRelativeTop, childRelativeRight, + childRelativeBottom); } } } @@ -719,19 +724,15 @@ public final class RenderNode { } /** @hide */ - public boolean stretch(float left, float top, float right, float bottom, - float vecX, float vecY, float maxStretchAmountX, float maxStretchAmountY) { + public boolean stretch(float vecX, float vecY, + float maxStretchAmountX, float maxStretchAmountY) { if (Float.isInfinite(vecX) || Float.isNaN(vecX)) { throw new IllegalArgumentException("vecX must be a finite, non-NaN value " + vecX); } if (Float.isInfinite(vecY) || Float.isNaN(vecY)) { throw new IllegalArgumentException("vecY must be a finite, non-NaN value " + vecY); } - if (top >= bottom || left >= right) { - throw new IllegalArgumentException( - "Stretch region must not be empty, got " - + new RectF(left, top, right, bottom).toString()); - } + if (maxStretchAmountX <= 0.0f) { throw new IllegalArgumentException( "The max horizontal stretch amount must be >0, got " + maxStretchAmountX); @@ -742,10 +743,6 @@ public final class RenderNode { } return nStretch( mNativeRenderNode, - left, - top, - right, - bottom, vecX, vecY, maxStretchAmountX, @@ -1701,8 +1698,8 @@ public final class RenderNode { private static native boolean nClearStretch(long renderNode); @CriticalNative - private static native boolean nStretch(long renderNode, float left, float top, float right, - float bottom, float vecX, float vecY, float maxStretchX, float maxStretchY); + private static native boolean nStretch(long renderNode, float vecX, float vecY, + float maxStretchX, float maxStretchY); @CriticalNative private static native boolean nHasShadow(long renderNode); diff --git a/graphics/java/android/graphics/drawable/Icon.java b/graphics/java/android/graphics/drawable/Icon.java index cff7dccac296..a03931bfab24 100644 --- a/graphics/java/android/graphics/drawable/Icon.java +++ b/graphics/java/android/graphics/drawable/Icon.java @@ -369,7 +369,9 @@ public final class Icon implements Parcelable { final PackageManager pm = context.getPackageManager(); try { ApplicationInfo ai = pm.getApplicationInfo( - resPackage, PackageManager.MATCH_UNINSTALLED_PACKAGES); + resPackage, + PackageManager.MATCH_UNINSTALLED_PACKAGES + | PackageManager.GET_SHARED_LIBRARY_FILES); if (ai != null) { mObj1 = pm.getResourcesForApplication(ai); } else { diff --git a/graphics/java/android/graphics/drawable/RippleAnimationSession.java b/graphics/java/android/graphics/drawable/RippleAnimationSession.java index 60f73b5e0090..ee867ddd5915 100644 --- a/graphics/java/android/graphics/drawable/RippleAnimationSession.java +++ b/graphics/java/android/graphics/drawable/RippleAnimationSession.java @@ -19,6 +19,7 @@ package android.graphics.drawable; import android.animation.Animator; import android.animation.TimeInterpolator; import android.animation.ValueAnimator; +import android.annotation.ColorInt; import android.annotation.NonNull; import android.annotation.Nullable; import android.graphics.Canvas; @@ -211,6 +212,7 @@ public final class RippleAnimationSession { CanvasProperty.createFloat(mProperties.getNoisePhase()), CanvasProperty.createPaint(mProperties.getPaint()), CanvasProperty.createFloat(mProperties.getProgress()), + mProperties.getColor(), mProperties.getShader()); } return mCanvasProperties; @@ -250,11 +252,12 @@ public final class RippleAnimationSession { private final FloatType mNoisePhase; private final PaintType mPaint; private final RippleShader mShader; + private final @ColorInt int mColor; private FloatType mX; private FloatType mY; AnimationProperties(FloatType x, FloatType y, FloatType maxRadius, FloatType noisePhase, - PaintType paint, FloatType progress, RippleShader shader) { + PaintType paint, FloatType progress, @ColorInt int color, RippleShader shader) { mY = y; mX = x; mMaxRadius = maxRadius; @@ -262,6 +265,7 @@ public final class RippleAnimationSession { mPaint = paint; mShader = shader; mProgress = progress; + mColor = color; } FloatType getProgress() { @@ -296,5 +300,9 @@ public final class RippleAnimationSession { FloatType getNoisePhase() { return mNoisePhase; } + + @ColorInt int getColor() { + return mColor; + } } } diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index 24d7780f5473..518fceb60049 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -864,6 +864,10 @@ public class RippleDrawable extends LayerDrawable { boolean shouldExit = mExitingAnimation; mRippleActive = false; mExitingAnimation = false; + if (mRunningAnimations.size() > 0 && !shouldAnimate) { + // update paint when view is invalidated + getRipplePaint(); + } drawContent(canvas); drawPatternedBackground(canvas, cx, cy); if (shouldAnimate && mRunningAnimations.size() <= MAX_RIPPLES) { @@ -901,7 +905,7 @@ public class RippleDrawable extends LayerDrawable { yProp = p.getY(); } can.drawRipple(xProp, yProp, p.getMaxRadius(), p.getPaint(), - p.getProgress(), p.getNoisePhase(), p.getShader()); + p.getProgress(), p.getNoisePhase(), p.getColor(), p.getShader()); } else { RippleAnimationSession.AnimationProperties<Float, Paint> p = s.getProperties(); @@ -974,7 +978,7 @@ public class RippleDrawable extends LayerDrawable { shader.setRadius(radius); shader.setProgress(.0f); properties = new RippleAnimationSession.AnimationProperties<>( - cx, cy, radius, 0f, p, 0f, shader); + cx, cy, radius, 0f, p, 0f, color, shader); if (mMaskShader == null) { shader.setShader(null); } else { diff --git a/graphics/java/android/graphics/drawable/RippleShader.java b/graphics/java/android/graphics/drawable/RippleShader.java index 2b4d5b45a009..d00492cedb38 100644 --- a/graphics/java/android/graphics/drawable/RippleShader.java +++ b/graphics/java/android/graphics/drawable/RippleShader.java @@ -113,10 +113,11 @@ final class RippleShader extends RuntimeShader { + " float sparkle = sparkles(densityUv, in_noisePhase) * ring * alpha " + "* turbulence;\n" + " float fade = min(fadeIn, 1. - fadeOutRipple);\n" - + " vec4 circle = in_color * (softCircle(p, center, in_maxRadius " - + " * scaleIn, 0.2) * fade);\n" + + " float circleAlpha = softCircle(p, center, in_maxRadius * scaleIn, 0.2) * fade;\n" + + " vec3 color = mix(in_color.rgb, in_sparkleColor.rgb, sparkle);\n" + " float mask = in_hasMask == 1. ? sample(in_shader, p).a > 0. ? 1. : 0. : 1.;\n" - + " return mix(circle, in_sparkleColor, sparkle) * mask;\n" + + " float a = (in_color.a * circleAlpha + in_sparkleColor.a * sparkle) * mask;\n" + + " return vec4(color * a, a);\n" + "}"; private static final String SHADER = SHADER_UNIFORMS + SHADER_LIB + SHADER_MAIN; private static final double PI_ROTATE_RIGHT = Math.PI * 0.0078125; diff --git a/keystore/java/android/security/keystore/AttestationUtils.java b/keystore/java/android/security/keystore/AttestationUtils.java index 66d842ec5614..4da2a28fffc3 100644 --- a/keystore/java/android/security/keystore/AttestationUtils.java +++ b/keystore/java/android/security/keystore/AttestationUtils.java @@ -260,6 +260,11 @@ public abstract class AttestationUtils { } catch (SecurityException e) { throw e; } catch (Exception e) { + // If a DeviceIdAttestationException was previously wrapped with some other type, + // let's throw the original exception instead of wrapping it yet again. + if (e.getCause() instanceof DeviceIdAttestationException) { + throw (DeviceIdAttestationException) e.getCause(); + } throw new DeviceIdAttestationException("Unable to perform attestation", e); } } diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml index 90c4d51b995a..fd13fecb7bb3 100644 --- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml +++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml @@ -58,7 +58,7 @@ <string name="bubble_accessibility_action_move_bottom_right" msgid="2107626346109206352">"Ubicar abajo a la derecha"</string> <string name="bubbles_app_settings" msgid="3617224938701566416">"Configuración de <xliff:g id="NOTIFICATION_TITLE">%1$s</xliff:g>"</string> <string name="bubble_dismiss_text" msgid="8816558050659478158">"Descartar burbuja"</string> - <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"No mostrar la conversación en burbujas"</string> + <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"No mostrar la conversación en burbuja"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"Chat con burbujas"</string> <string name="bubbles_user_education_description" msgid="4215862563054175407">"Las conversaciones nuevas aparecen como elementos flotantes o burbujas. Presiona para abrir la burbuja. Arrástrala para moverla."</string> <string name="bubbles_user_education_manage_title" msgid="7042699946735628035">"Controla las burbujas"</string> diff --git a/libs/WindowManager/Shell/res/values/config.xml b/libs/WindowManager/Shell/res/values/config.xml index e8757b5d96f4..bbbbe6987adf 100644 --- a/libs/WindowManager/Shell/res/values/config.xml +++ b/libs/WindowManager/Shell/res/values/config.xml @@ -52,9 +52,12 @@ when the PIP menu is shown in center. --> <string translatable="false" name="pip_menu_bounds">"596 280 1324 690"</string> - <!-- Animation duration when exit starting window: icon going away --> - <integer name="starting_window_icon_exit_anim_duration">166</integer> + <!-- Animation duration when exit starting window: fade out icon --> + <integer name="starting_window_app_reveal_icon_fade_out_duration">133</integer> <!-- Animation duration when exit starting window: reveal app --> - <integer name="starting_window_app_reveal_anim_duration">333</integer> + <integer name="starting_window_app_reveal_anim_delay">83</integer> + + <!-- Animation duration when exit starting window: reveal app --> + <integer name="starting_window_app_reveal_anim_duration">266</integer> </resources> diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java index ae7ab528ed0a..ce57638f16f4 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedController.java @@ -135,6 +135,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController> } }; + private final ContentObserver mActivatedObserver; private final ContentObserver mEnabledObserver; private final ContentObserver mTimeoutObserver; private final ContentObserver mTaskChangeExitObserver; @@ -170,11 +171,13 @@ public class OneHandedController implements RemoteCallable<OneHandedController> @Override public void onStartFinished(Rect bounds) { mState.setState(STATE_ACTIVE); + notifyShortcutState(STATE_ACTIVE); } @Override public void onStopFinished(Rect bounds) { mState.setState(STATE_NONE); + notifyShortcutState(STATE_NONE); } }; @@ -287,6 +290,7 @@ public class OneHandedController implements RemoteCallable<OneHandedController> context.getContentResolver(), mUserId); mTimeoutHandler = timeoutHandler; + mActivatedObserver = getObserver(this::onActivatedActionChanged); mEnabledObserver = getObserver(this::onEnabledSettingChanged); mTimeoutObserver = getObserver(this::onTimeoutSettingChanged); mTaskChangeExitObserver = getObserver(this::onTaskChangeExitSettingChanged); @@ -348,6 +352,12 @@ public class OneHandedController implements RemoteCallable<OneHandedController> } @VisibleForTesting + void notifyShortcutState(@OneHandedState.State int state) { + mOneHandedSettingsUtil.setOneHandedModeActivated( + mContext.getContentResolver(), state == STATE_ACTIVE ? 1 : 0, mUserId); + } + + @VisibleForTesting void startOneHanded() { if (isLockedDisabled()) { Slog.d(TAG, "Temporary lock disabled"); @@ -416,6 +426,9 @@ public class OneHandedController implements RemoteCallable<OneHandedController> } private void registerSettingObservers(int newUserId) { + mOneHandedSettingsUtil.registerSettingsKeyObserver( + Settings.Secure.ONE_HANDED_MODE_ACTIVATED, + mContext.getContentResolver(), mActivatedObserver, newUserId); mOneHandedSettingsUtil.registerSettingsKeyObserver(Settings.Secure.ONE_HANDED_MODE_ENABLED, mContext.getContentResolver(), mEnabledObserver, newUserId); mOneHandedSettingsUtil.registerSettingsKeyObserver(Settings.Secure.ONE_HANDED_MODE_TIMEOUT, @@ -466,6 +479,26 @@ public class OneHandedController implements RemoteCallable<OneHandedController> } @VisibleForTesting + void onActivatedActionChanged() { + if (mState.isTransitioning() || !isOneHandedEnabled()) { + return; + } + + final boolean isActivated = mState.getState() == STATE_ACTIVE; + final boolean requestActivated = mOneHandedSettingsUtil.getOneHandedModeActivated( + mContext.getContentResolver(), mUserId); + // When gesture trigger action, we will update settings and introduce observer callback + // again, then the following logic will just ignore the second redundant callback. + if (isActivated ^ requestActivated) { + if (requestActivated) { + startOneHanded(); + } else { + stopOneHanded(); + } + } + } + + @VisibleForTesting void onEnabledSettingChanged() { final boolean enabled = mOneHandedSettingsUtil.getSettingsOneHandedModeEnabled( mContext.getContentResolver(), mUserId); @@ -544,6 +577,11 @@ public class OneHandedController implements RemoteCallable<OneHandedController> return mLockedDisabled; } + @VisibleForTesting + boolean isOneHandedEnabled() { + return mIsOneHandedEnabled; + } + private void updateOneHandedEnabled() { if (mState.getState() == STATE_ENTERING || mState.getState() == STATE_ACTIVE) { mMainExecutor.execute(() -> stopOneHanded()); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java index 2ab51f3f1313..bb68224b0a87 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/onehanded/OneHandedSettingsUtil.java @@ -131,8 +131,28 @@ public final class OneHandedSettingsUtil { * Returns whether swipe bottom to notification gesture enabled or not. */ public boolean getSettingsSwipeToNotificationEnabled(ContentResolver resolver, int userId) { - return Settings.Secure.getInt(resolver, - Settings.Secure.SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, 0 /* Default OFF */) == 1; + return Settings.Secure.getIntForUser(resolver, + Settings.Secure.SWIPE_BOTTOM_TO_NOTIFICATION_ENABLED, 0, userId) == 1; + } + + /** + * Sets one handed activated or not to notify state for shortcut + * + * @return activated or not + */ + public boolean getOneHandedModeActivated(ContentResolver resolver, int userId) { + return Settings.Secure.getIntForUser(resolver, + Settings.Secure.ONE_HANDED_MODE_ACTIVATED, 0, userId) == 1; + } + + /** + * Sets one handed activated or not to notify state for shortcut + * + * @return activated or not + */ + public boolean setOneHandedModeActivated(ContentResolver resolver, int state, int userId) { + return Settings.Secure.putIntForUser(resolver, + Settings.Secure.ONE_HANDED_MODE_ACTIVATED, state, userId); } void dump(PrintWriter pw, String prefix, ContentResolver resolver, @@ -145,6 +165,8 @@ public final class OneHandedSettingsUtil { pw.println(getSettingsOneHandedModeTimeout(resolver, userId)); pw.print(innerPrefix + "tapsAppToExit="); pw.println(getSettingsTapsAppToExit(resolver, userId)); + pw.print(innerPrefix + "shortcutActivated="); + pw.println(getOneHandedModeActivated(resolver, userId)); } public OneHandedSettingsUtil() { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index f7160e55012c..4be9e758bf9b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -55,6 +55,7 @@ import android.window.TransitionRequestInfo; import android.window.WindowContainerTransaction; +import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.RootTaskDisplayAreaOrganizer; @@ -110,6 +111,11 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, private final SplitScreenTransitions mSplitTransitions; private boolean mExitSplitScreenOnHide = true; + // TODO(b/187041611): remove this flag after totally deprecated legacy split + /** Whether the device is supporting legacy split or not. */ + private boolean mUseLegacySplit; + + @SplitScreen.StageType int mDismissTop = NO_DISMISS; private final Runnable mOnTransitionAnimationComplete = () -> { // If still playing, let it finish. @@ -334,10 +340,17 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, private void onStageRootTaskAppeared(StageListenerImpl stageListener) { if (mMainStageListener.mHasRootTask && mSideStageListener.mHasRootTask) { + mUseLegacySplit = mContext.getResources().getBoolean(R.bool.config_useLegacySplit); final WindowContainerTransaction wct = new WindowContainerTransaction(); // Make the stages adjacent to each other so they occlude what's behind them. wct.setAdjacentRoots(mMainStage.mRootTaskInfo.token, mSideStage.mRootTaskInfo.token); - wct.setLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token); + + // Only sets side stage as launch-adjacent-flag-root when the device is not using legacy + // split to prevent new split behavior confusing users. + if (!mUseLegacySplit) { + wct.setLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token); + } + mTaskOrganizer.applyTransaction(wct); } } @@ -347,7 +360,11 @@ class StageCoordinator implements SplitLayout.LayoutChangeListener, final WindowContainerTransaction wct = new WindowContainerTransaction(); // Deactivate the main stage if it no longer has a root task. mMainStage.deactivate(wct); - wct.clearLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token); + + if (!mUseLegacySplit) { + wct.clearLaunchAdjacentFlagRoot(mSideStage.mRootTaskInfo.token); + } + mTaskOrganizer.applyTransaction(wct); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java index 5bc2afd11fe8..c303a33afc78 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java @@ -15,10 +15,12 @@ */ package com.android.wm.shell.startingsurface; +import static android.view.Choreographer.CALLBACK_COMMIT; import static android.view.View.GONE; import android.animation.Animator; import android.animation.ValueAnimator; +import android.content.Context; import android.graphics.BlendMode; import android.graphics.Canvas; import android.graphics.Color; @@ -28,20 +30,20 @@ import android.graphics.Point; import android.graphics.RadialGradient; import android.graphics.Rect; import android.graphics.Shader; +import android.util.MathUtils; import android.util.Slog; +import android.view.Choreographer; import android.view.SurfaceControl; +import android.view.SyncRtSurfaceTransactionApplier; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; -import android.view.animation.AlphaAnimation; -import android.view.animation.Animation; -import android.view.animation.AnimationSet; import android.view.animation.Interpolator; import android.view.animation.PathInterpolator; -import android.view.animation.Transformation; -import android.view.animation.TranslateYAnimation; import android.window.SplashScreenView; +import com.android.wm.shell.R; +import com.android.wm.shell.animation.Interpolators; import com.android.wm.shell.common.TransactionPool; /** @@ -53,86 +55,80 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { private static final boolean DEBUG_EXIT_ANIMATION_BLEND = false; private static final String TAG = StartingSurfaceDrawer.TAG; - private static final Interpolator ICON_EXIT_INTERPOLATOR = new PathInterpolator(1f, 0f, 1f, 1f); - private static final Interpolator APP_EXIT_INTERPOLATOR = new PathInterpolator(0f, 0f, 0f, 1f); + private static final Interpolator ICON_INTERPOLATOR = new PathInterpolator(0.15f, 0f, 1f, 1f); + private static final Interpolator MASK_RADIUS_INTERPOLATOR = + new PathInterpolator(0f, 0f, 0.4f, 1f); + private static final Interpolator SHIFT_UP_INTERPOLATOR = new PathInterpolator(0f, 0f, 0f, 1f); - private static final int EXTRA_REVEAL_DELAY = 133; - private final Matrix mTmpTransform = new Matrix(); - private final float[] mTmpFloat9 = new float[9]; - private SurfaceControl mFirstWindowSurface; + private final SurfaceControl mFirstWindowSurface; private final Rect mFirstWindowFrame = new Rect(); private final SplashScreenView mSplashScreenView; private final int mMainWindowShiftLength; - private final int mIconShiftLength; - private final int mAppDuration; - private final int mIconDuration; + private final int mIconFadeOutDuration; + private final int mAppRevealDelay; + private final int mAppRevealDuration; + private final int mAnimationDuration; + private final float mIconStartAlpha; private final TransactionPool mTransactionPool; private ValueAnimator mMainAnimator; - private Animation mShiftUpAnimation; - private AnimationSet mIconAnimationSet; + private ShiftUpAnimation mShiftUpAnimation; + private RadialVanishAnimation mRadialVanishAnimation; private Runnable mFinishCallback; - SplashScreenExitAnimation(SplashScreenView view, SurfaceControl leash, Rect frame, - int appDuration, int iconDuration, int mainWindowShiftLength, int iconShiftLength, - TransactionPool pool, Runnable handleFinish) { + SplashScreenExitAnimation(Context context, SplashScreenView view, SurfaceControl leash, + Rect frame, int mainWindowShiftLength, TransactionPool pool, Runnable handleFinish) { mSplashScreenView = view; mFirstWindowSurface = leash; if (frame != null) { mFirstWindowFrame.set(frame); } - mAppDuration = appDuration; - mIconDuration = iconDuration; + + View iconView = view.getIconView(); + if (iconView == null) { + mIconFadeOutDuration = 0; + mIconStartAlpha = 0; + mAppRevealDelay = 0; + } else { + iconView.setLayerType(View.LAYER_TYPE_HARDWARE, null); + mIconFadeOutDuration = context.getResources().getInteger( + R.integer.starting_window_app_reveal_icon_fade_out_duration); + mAppRevealDelay = context.getResources().getInteger( + R.integer.starting_window_app_reveal_anim_delay); + mIconStartAlpha = iconView.getAlpha(); + } + mAppRevealDuration = context.getResources().getInteger( + R.integer.starting_window_app_reveal_anim_duration); + mAnimationDuration = Math.max(mIconFadeOutDuration, mAppRevealDelay + mAppRevealDuration); mMainWindowShiftLength = mainWindowShiftLength; - mIconShiftLength = iconShiftLength; mFinishCallback = handleFinish; mTransactionPool = pool; } - void prepareAnimations() { - prepareRevealAnimation(); - prepareShiftAnimation(); - } - void startAnimations() { - if (mIconAnimationSet != null) { - mIconAnimationSet.start(); - } - if (mMainAnimator != null) { - mMainAnimator.start(); - } - if (mShiftUpAnimation != null) { - mShiftUpAnimation.start(); - } + mMainAnimator = createAnimator(); + mMainAnimator.start(); } - // reveal splash screen, shift up main window - private void prepareRevealAnimation() { - // splash screen - mMainAnimator = ValueAnimator.ofFloat(0f, 1f); - mMainAnimator.setDuration(mAppDuration); - mMainAnimator.setInterpolator(APP_EXIT_INTERPOLATOR); - mMainAnimator.addListener(this); - - final int startDelay = mIconDuration + EXTRA_REVEAL_DELAY; - final float transparentRatio = 0.95f; + // fade out icon, reveal app, shift up main window + private ValueAnimator createAnimator() { + // reveal app + final float transparentRatio = 0.8f; final int globalHeight = mSplashScreenView.getHeight(); final int verticalCircleCenter = 0; final int finalVerticalLength = globalHeight - verticalCircleCenter; final int halfWidth = mSplashScreenView.getWidth() / 2; final int endRadius = (int) (0.5 + (1f / transparentRatio * (int) Math.sqrt(finalVerticalLength * finalVerticalLength + halfWidth * halfWidth))); - final RadialVanishAnimation radialVanishAnimation = new RadialVanishAnimation( - mSplashScreenView, mMainAnimator); - radialVanishAnimation.setCircleCenter(halfWidth, verticalCircleCenter); - radialVanishAnimation.setRadius(0/* initRadius */, endRadius); - final int[] colors = {Color.TRANSPARENT, Color.TRANSPARENT, Color.WHITE}; + final int[] colors = {Color.WHITE, Color.WHITE, Color.TRANSPARENT}; final float[] stops = {0f, transparentRatio, 1f}; - radialVanishAnimation.setRadialPaintParam(colors, stops); - radialVanishAnimation.setReady(); - mMainAnimator.setStartDelay(startDelay); - if (mFirstWindowSurface != null) { + mRadialVanishAnimation = new RadialVanishAnimation(mSplashScreenView); + mRadialVanishAnimation.setCircleCenter(halfWidth, verticalCircleCenter); + mRadialVanishAnimation.setRadius(0 /* initRadius */, endRadius); + mRadialVanishAnimation.setRadialPaintParam(colors, stops); + + if (mFirstWindowSurface != null && mFirstWindowSurface.isValid()) { // shift up main window View occludeHoleView = new View(mSplashScreenView.getContext()); if (DEBUG_EXIT_ANIMATION_BLEND) { @@ -144,82 +140,48 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { WindowManager.LayoutParams.MATCH_PARENT, mMainWindowShiftLength); mSplashScreenView.addView(occludeHoleView, params); - mShiftUpAnimation = new ShiftUpAnimation(0, -mMainWindowShiftLength); - mShiftUpAnimation.setDuration(mAppDuration); - mShiftUpAnimation.setInterpolator(APP_EXIT_INTERPOLATOR); - mShiftUpAnimation.setStartOffset(startDelay); - - occludeHoleView.setAnimation(mShiftUpAnimation); + mShiftUpAnimation = new ShiftUpAnimation(0, -mMainWindowShiftLength, occludeHoleView); } - } - // shift down icon and branding view - private void prepareShiftAnimation() { - final View iconView = mSplashScreenView.getIconView(); - if (iconView == null) { - return; - } - if (mIconShiftLength > 0) { - mIconAnimationSet = new AnimationSet(true /* shareInterpolator */); - if (DEBUG_EXIT_ANIMATION) { - Slog.v(TAG, "first exit animation, shift length: " + mIconShiftLength); - } - mIconAnimationSet.addAnimation(new TranslateYAnimation(0, mIconShiftLength)); - mIconAnimationSet.addAnimation(new AlphaAnimation(1, 0)); - mIconAnimationSet.setAnimationListener(new Animation.AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { - - } - - @Override - public void onAnimationEnd(Animation animation) { - if (DEBUG_EXIT_ANIMATION) { - Slog.v(TAG, "first exit animation finished"); - } - iconView.post(() -> iconView.setVisibility(GONE)); - } - - @Override - public void onAnimationRepeat(Animation animation) { - // ignore - } - }); - mIconAnimationSet.setDuration(mIconDuration); - mIconAnimationSet.setInterpolator(ICON_EXIT_INTERPOLATOR); - iconView.setAnimation(mIconAnimationSet); - final View brandingView = mSplashScreenView.getBrandingView(); - if (brandingView != null) { - brandingView.setAnimation(mIconAnimationSet); - } - } + ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f); + animator.setDuration(mAnimationDuration); + animator.setInterpolator(Interpolators.LINEAR); + animator.addListener(this); + animator.addUpdateListener(a -> onAnimationProgress((float) a.getAnimatedValue())); + return animator; } private static class RadialVanishAnimation extends View { - private SplashScreenView mView; + private final SplashScreenView mView; private int mInitRadius; private int mFinishRadius; - private boolean mReady; private final Point mCircleCenter = new Point(); private final Matrix mVanishMatrix = new Matrix(); private final Paint mVanishPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - RadialVanishAnimation(SplashScreenView target, ValueAnimator animator) { + RadialVanishAnimation(SplashScreenView target) { super(target.getContext()); mView = target; - animator.addUpdateListener((animation) -> { - if (mVanishPaint.getShader() == null) { - return; - } - final float value = (float) animation.getAnimatedValue(); - final float scale = (mFinishRadius - mInitRadius) * value + mInitRadius; - mVanishMatrix.setScale(scale, scale); - mVanishMatrix.postTranslate(mCircleCenter.x, mCircleCenter.y); - mVanishPaint.getShader().setLocalMatrix(mVanishMatrix); - mView.postInvalidate(); - }); mView.addView(this); + mVanishPaint.setAlpha(0); + } + + void onAnimationProgress(float linearProgress) { + if (mVanishPaint.getShader() == null) { + return; + } + + final float radiusProgress = MASK_RADIUS_INTERPOLATOR.getInterpolation(linearProgress); + final float alphaProgress = Interpolators.ALPHA_OUT.getInterpolation(linearProgress); + final float scale = mInitRadius + (mFinishRadius - mInitRadius) * radiusProgress; + + mVanishMatrix.setScale(scale, scale); + mVanishMatrix.postTranslate(mCircleCenter.x, mCircleCenter.y); + mVanishPaint.getShader().setLocalMatrix(mVanishMatrix); + mVanishPaint.setAlpha(Math.round(0xFF * alphaProgress)); + + postInvalidate(); } void setRadius(int initRadius, int finishRadius) { @@ -244,45 +206,80 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { new RadialGradient(0, 0, 1, colors, stops, Shader.TileMode.CLAMP); mVanishPaint.setShader(rShader); if (!DEBUG_EXIT_ANIMATION_BLEND) { - mVanishPaint.setBlendMode(BlendMode.MODULATE); + // We blend the reveal gradient with the splash screen using DST_OUT so that the + // splash screen is fully visible when radius = 0 (or gradient opacity is 0) and + // fully invisible when radius = finishRadius AND gradient opacity is 1. + mVanishPaint.setBlendMode(BlendMode.DST_OUT); } } - void setReady() { - mReady = true; - } - @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); - if (mReady) { - canvas.drawRect(0, 0, mView.getWidth(), mView.getHeight(), mVanishPaint); - } + canvas.drawRect(0, 0, mView.getWidth(), mView.getHeight(), mVanishPaint); } } - private final class ShiftUpAnimation extends TranslateYAnimation { - ShiftUpAnimation(float fromYDelta, float toYDelta) { - super(fromYDelta, toYDelta); + private final class ShiftUpAnimation { + private final float mFromYDelta; + private final float mToYDelta; + private final View mOccludeHoleView; + private final SyncRtSurfaceTransactionApplier mApplier; + private final Matrix mTmpTransform = new Matrix(); + + ShiftUpAnimation(float fromYDelta, float toYDelta, View occludeHoleView) { + mFromYDelta = fromYDelta; + mToYDelta = toYDelta; + mOccludeHoleView = occludeHoleView; + mApplier = new SyncRtSurfaceTransactionApplier(occludeHoleView); } - @Override - protected void applyTransformation(float interpolatedTime, Transformation t) { - super.applyTransformation(interpolatedTime, t); - - if (mFirstWindowSurface == null) { + void onAnimationProgress(float linearProgress) { + if (mFirstWindowSurface == null || !mFirstWindowSurface.isValid()) { return; } - mTmpTransform.set(t.getMatrix()); + + final float progress = SHIFT_UP_INTERPOLATOR.getInterpolation(linearProgress); + final float dy = mFromYDelta + (mToYDelta - mFromYDelta) * progress; + + mOccludeHoleView.setTranslationY(dy); + mTmpTransform.setTranslate(0 /* dx */, dy); + + // set the vsyncId to ensure the transaction doesn't get applied too early. final SurfaceControl.Transaction tx = mTransactionPool.acquire(); + tx.setFrameTimelineVsync(Choreographer.getSfInstance().getVsyncId()); mTmpTransform.postTranslate(mFirstWindowFrame.left, mFirstWindowFrame.top + mMainWindowShiftLength); - tx.setMatrix(mFirstWindowSurface, mTmpTransform, mTmpFloat9); - // TODO set the vsyncId to ensure the transaction doesn't get applied too early. - // Additionally, do you want to have this synchronized with your view animations? - // If so, you'll need to use SyncRtSurfaceTransactionApplier - tx.apply(); + + SyncRtSurfaceTransactionApplier.SurfaceParams + params = new SyncRtSurfaceTransactionApplier.SurfaceParams + .Builder(mFirstWindowSurface) + .withMatrix(mTmpTransform) + .withMergeTransaction(tx) + .build(); + mApplier.scheduleApply(params); + + mTransactionPool.release(tx); + } + + void finish() { + if (mFirstWindowSurface == null || !mFirstWindowSurface.isValid()) { + return; + } + final SurfaceControl.Transaction tx = mTransactionPool.acquire(); + tx.setFrameTimelineVsync(Choreographer.getSfInstance().getVsyncId()); + + SyncRtSurfaceTransactionApplier.SurfaceParams + params = new SyncRtSurfaceTransactionApplier.SurfaceParams + .Builder(mFirstWindowSurface) + .withWindowCrop(null) + .withMergeTransaction(tx) + .build(); + mApplier.scheduleApply(params); mTransactionPool.release(tx); + + Choreographer.getSfInstance().postCallback(CALLBACK_COMMIT, + mFirstWindowSurface::release, null); } } @@ -297,12 +294,8 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { mFinishCallback = null; } }); - if (mFirstWindowSurface != null) { - final SurfaceControl.Transaction tx = mTransactionPool.acquire(); - tx.setWindowCrop(mFirstWindowSurface, null); - tx.apply(); - mFirstWindowSurface.release(); - mFirstWindowSurface = null; + if (mShiftUpAnimation != null) { + mShiftUpAnimation.finish(); } } @@ -325,4 +318,32 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { public void onAnimationRepeat(Animator animation) { // ignore } + + private void onAnimationProgress(float linearProgress) { + View iconView = mSplashScreenView.getIconView(); + if (iconView != null) { + final float iconProgress = ICON_INTERPOLATOR.getInterpolation( + getProgress(linearProgress, 0 /* delay */, mIconFadeOutDuration)); + iconView.setAlpha(mIconStartAlpha * (1 - iconProgress)); + } + + final float revealLinearProgress = getProgress(linearProgress, mAppRevealDelay, + mAppRevealDuration); + + if (mRadialVanishAnimation != null) { + mRadialVanishAnimation.onAnimationProgress(revealLinearProgress); + } + + if (mShiftUpAnimation != null) { + mShiftUpAnimation.onAnimationProgress(revealLinearProgress); + } + } + + private float getProgress(float linearProgress, long delay, long duration) { + return MathUtils.constrain( + (linearProgress * (mAnimationDuration) - delay) / duration, + 0.0f, + 1.0f + ); + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java index 1d3a60b8193d..fd6f0ad99e66 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java @@ -34,7 +34,6 @@ import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; -import android.os.Build; import android.os.Handler; import android.os.HandlerThread; import android.os.Trace; @@ -75,21 +74,14 @@ public class SplashscreenContentDrawer { private int mDefaultIconSize; private int mBrandingImageWidth; private int mBrandingImageHeight; - private final int mAppRevealDuration; - private final int mIconExitDuration; private int mMainWindowShiftLength; - private int mIconNormalExitDistance; - private int mIconEarlyExitDistance; private final TransactionPool mTransactionPool; private final SplashScreenWindowAttrs mTmpAttrs = new SplashScreenWindowAttrs(); private final Handler mSplashscreenWorkerHandler; - SplashscreenContentDrawer(Context context, int iconExitAnimDuration, int appRevealAnimDuration, - TransactionPool pool) { + SplashscreenContentDrawer(Context context, TransactionPool pool) { mContext = context; mIconProvider = new IconProvider(context); - mAppRevealDuration = appRevealAnimDuration; - mIconExitDuration = iconExitAnimDuration; mTransactionPool = pool; // Initialize Splashscreen worker thread @@ -112,18 +104,14 @@ public class SplashscreenContentDrawer { * @param consumer Receiving the SplashScreenView object, which will also be executed * on splash screen thread. Note that the view can be null if failed. */ - void createContentView(Context context, boolean emptyView, int splashScreenResId, - ActivityInfo info, int taskId, Consumer<SplashScreenView> consumer) { + void createContentView(Context context, boolean emptyView, ActivityInfo info, int taskId, + Consumer<SplashScreenView> consumer) { mSplashscreenWorkerHandler.post(() -> { SplashScreenView contentView; try { - contentView = SplashscreenContentDrawer.makeSplashscreenContent( - context, splashScreenResId); - if (contentView == null) { - Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "makeSplashScreenContentView"); - contentView = makeSplashScreenContentView(context, info, emptyView); - Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); - } + Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "makeSplashScreenContentView"); + contentView = makeSplashScreenContentView(context, info, emptyView); + Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } catch (RuntimeException e) { Slog.w(TAG, "failed creating starting window content at taskId: " + taskId, e); @@ -144,10 +132,6 @@ public class SplashscreenContentDrawer { com.android.wm.shell.R.dimen.starting_surface_brand_image_height); mMainWindowShiftLength = mContext.getResources().getDimensionPixelSize( com.android.wm.shell.R.dimen.starting_surface_exit_animation_window_shift_length); - mIconNormalExitDistance = mContext.getResources().getDimensionPixelSize( - com.android.wm.shell.R.dimen.starting_surface_normal_exit_icon_distance); - mIconEarlyExitDistance = mContext.getResources().getDimensionPixelSize( - com.android.wm.shell.R.dimen.starting_surface_early_exit_icon_distance); } private int getSystemBGColor() { @@ -250,7 +234,7 @@ public class SplashscreenContentDrawer { private SplashScreenView mCachedResult; private int mThemeColor; private Drawable mFinalIconDrawable; - private float mScale = 1f; + private int mFinalIconSize = mIconSize; StartingWindowViewBuilder setWindowBGColor(@ColorInt int background) { mThemeColor = background; @@ -287,48 +271,46 @@ public class SplashscreenContentDrawer { Drawable iconDrawable; final int animationDuration; - final int iconSize; if (mEmptyView) { // empty splash screen case animationDuration = 0; - iconSize = 0; + mFinalIconSize = 0; } else if (mTmpAttrs.mReplaceIcon != null) { // replaced icon, don't process iconDrawable = mTmpAttrs.mReplaceIcon; animationDuration = mTmpAttrs.mAnimationDuration; - createIconDrawable(iconDrawable, mIconSize); - iconSize = mIconSize; + createIconDrawable(iconDrawable); } else { - final float iconScale = (float) mIconSize / (float) mDefaultIconSize; - iconDrawable = mIconProvider.getIcon(mActivityInfo); + final float iconScale = (float) mIconSize / (float) mDefaultIconSize; + final int densityDpi = mContext.getResources().getDisplayMetrics().densityDpi; + final int scaledIconDpi = (int) (0.5f + iconScale * densityDpi); + iconDrawable = mIconProvider.getIcon(mActivityInfo, scaledIconDpi); if (iconDrawable == null) { iconDrawable = mContext.getPackageManager().getDefaultActivityIcon(); } - if (!processAdaptiveIcon(iconDrawable, iconScale)) { + if (!processAdaptiveIcon(iconDrawable)) { if (DEBUG) { Slog.d(TAG, "The icon is not an AdaptiveIconDrawable"); } // TODO process legacy icon(bitmap) - final Drawable tempIcon = loadIconByDensity(iconDrawable, iconScale); - createIconDrawable(tempIcon, mIconSize); + createIconDrawable(iconDrawable); } animationDuration = 0; - iconSize = (int) (0.5 + mIconSize * mScale); } - mCachedResult = fillViewWithIcon(iconSize, mFinalIconDrawable, animationDuration); + mCachedResult = fillViewWithIcon(mFinalIconSize, mFinalIconDrawable, animationDuration); mBuildComplete = true; return mCachedResult; } - private void createIconDrawable(Drawable iconDrawable, int iconSize) { + private void createIconDrawable(Drawable iconDrawable) { mFinalIconDrawable = SplashscreenIconDrawableFactory.makeIconDrawable( mTmpAttrs.mIconBgColor != Color.TRANSPARENT ? mTmpAttrs.mIconBgColor : mThemeColor, - iconDrawable, iconSize, mSplashscreenWorkerHandler); + iconDrawable, mFinalIconSize, mSplashscreenWorkerHandler); } - private boolean processAdaptiveIcon(Drawable iconDrawable, float iconScale) { + private boolean processAdaptiveIcon(Drawable iconDrawable) { if (!(iconDrawable instanceof AdaptiveIconDrawable)) { return false; } @@ -339,7 +321,7 @@ public class SplashscreenContentDrawer { final DrawableColorTester backIconTester = new DrawableColorTester(adaptiveIconDrawable.getBackground()); - Drawable iconForeground = adaptiveIconDrawable.getForeground(); + final Drawable iconForeground = adaptiveIconDrawable.getForeground(); final DrawableColorTester foreIconTester = new DrawableColorTester(iconForeground, true /* filterTransparent */); @@ -378,35 +360,20 @@ public class SplashscreenContentDrawer { final float noBgScale = foreIconTester.nonTransparentRatio() < ENLARGE_FOREGROUND_ICON_THRESHOLD ? NO_BACKGROUND_SCALE : 1f; - final Drawable tempIcon = loadIconByDensity(iconDrawable, iconScale * noBgScale); - if (tempIcon instanceof AdaptiveIconDrawable) { - mScale = noBgScale; - iconForeground = ((AdaptiveIconDrawable) tempIcon).getForeground(); - } // Using AdaptiveIconDrawable here can help keep the shape consistent with the // current settings. - final int iconSize = (int) (0.5f + mIconSize * mScale); - createIconDrawable(iconForeground, iconSize); + mFinalIconSize = (int) (0.5f + mIconSize * noBgScale); + createIconDrawable(iconForeground); } else { if (DEBUG) { Slog.d(TAG, "makeSplashScreenContentView: draw whole icon"); } - final Drawable tempIcon = loadIconByDensity(iconDrawable, iconScale); - createIconDrawable(tempIcon, mIconSize); + createIconDrawable(iconDrawable); } Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); return true; } - private Drawable loadIconByDensity(Drawable baseDrawable, float scale) { - if (scale == 1 && baseDrawable != null) { - return baseDrawable; - } - final int densityDpi = mContext.getResources().getDisplayMetrics().densityDpi; - final int updateDpi = (int) (0.5f + scale * densityDpi); - return mIconProvider.getIcon(mActivityInfo, updateDpi); - } - private SplashScreenView fillViewWithIcon(int iconSize, Drawable iconDrawable, int animationDuration) { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "fillViewWithIcon"); @@ -428,6 +395,7 @@ public class SplashscreenContentDrawer { } if (mEmptyView) { splashScreenView.setNotCopyable(); + splashScreenView.setRevealAnimationSupported(false); } splashScreenView.makeSystemUIColorsTransparent(); Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); @@ -478,30 +446,6 @@ public class SplashscreenContentDrawer { return root < 0.1; } - private static SplashScreenView makeSplashscreenContent(Context ctx, - int splashscreenContentResId) { - // doesn't support windowSplashscreenContent after S - // TODO add an allowlist to skip some packages if needed - final int targetSdkVersion = ctx.getApplicationInfo().targetSdkVersion; - if (DEBUG) { - Slog.d(TAG, "target sdk for package: " + targetSdkVersion); - } - if (targetSdkVersion >= Build.VERSION_CODES.S) { - return null; - } - if (splashscreenContentResId == 0) { - return null; - } - final Drawable drawable = ctx.getDrawable(splashscreenContentResId); - if (drawable == null) { - return null; - } - SplashScreenView view = new SplashScreenView(ctx); - view.setNotCopyable(); - view.setBackground(drawable); - return view; - } - private static class DrawableColorTester { private final ColorTester mColorChecker; @@ -724,12 +668,9 @@ public class SplashscreenContentDrawer { * Create and play the default exit animation for splash screen view. */ void applyExitAnimation(SplashScreenView view, SurfaceControl leash, - Rect frame, boolean isEarlyExit, Runnable finishCallback) { - final SplashScreenExitAnimation animation = new SplashScreenExitAnimation(view, leash, - frame, mAppRevealDuration, mIconExitDuration, mMainWindowShiftLength, - isEarlyExit ? mIconEarlyExitDistance : mIconNormalExitDistance, mTransactionPool, - finishCallback); - animation.prepareAnimations(); + Rect frame, Runnable finishCallback) { + final SplashScreenExitAnimation animation = new SplashScreenExitAnimation(mContext, view, + leash, frame, mMainWindowShiftLength, mTransactionPool, finishCallback); animation.startAnimations(); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java index 6d3eeae43a96..8fa2236f7fa1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java @@ -35,7 +35,7 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.os.IBinder; -import android.os.SystemClock; +import android.os.SystemProperties; import android.os.UserHandle; import android.util.Slog; import android.util.SparseArray; @@ -106,6 +106,8 @@ public class StartingSurfaceDrawer { private final SplashscreenContentDrawer mSplashscreenContentDrawer; private Choreographer mChoreographer; + private static final boolean DEBUG_ENABLE_REVEAL_ANIMATION = + SystemProperties.getBoolean("persist.debug.enable_reveal_animation", false); /** * @param splashScreenExecutor The thread used to control add and remove starting window. */ @@ -114,12 +116,7 @@ public class StartingSurfaceDrawer { mContext = context; mDisplayManager = mContext.getSystemService(DisplayManager.class); mSplashScreenExecutor = splashScreenExecutor; - final int iconExitAnimDuration = context.getResources().getInteger( - com.android.wm.shell.R.integer.starting_window_icon_exit_anim_duration); - final int appRevealAnimDuration = context.getResources().getInteger( - com.android.wm.shell.R.integer.starting_window_app_reveal_anim_duration); - mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, iconExitAnimDuration, - appRevealAnimDuration, pool); + mSplashscreenContentDrawer = new SplashscreenContentDrawer(mContext, pool); mSplashScreenExecutor.execute(() -> mChoreographer = Choreographer.getInstance()); } @@ -233,12 +230,8 @@ public class StartingSurfaceDrawer { windowFlags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED; final boolean[] showWallpaper = new boolean[1]; - final int[] splashscreenContentResId = new int[1]; - getWindowResFromContext(context, a -> { - splashscreenContentResId[0] = - a.getResourceId(R.styleable.Window_windowSplashscreenContent, 0); - showWallpaper[0] = a.getBoolean(R.styleable.Window_windowShowWallpaper, false); - }); + getWindowResFromContext(context, a -> + showWallpaper[0] = a.getBoolean(R.styleable.Window_windowShowWallpaper, false)); if (showWallpaper[0]) { windowFlags |= WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER; } @@ -339,8 +332,8 @@ public class StartingSurfaceDrawer { record.setSplashScreenView(contentView); } }; - mSplashscreenContentDrawer.createContentView(context, emptyView, - splashscreenContentResId[0], activityInfo, taskId, viewSupplier::setView); + mSplashscreenContentDrawer.createContentView(context, emptyView, activityInfo, taskId, + viewSupplier::setView); try { final View view = win.getDecorView(); @@ -471,20 +464,24 @@ public class StartingSurfaceDrawer { if (DEBUG_SPLASH_SCREEN) { Slog.v(TAG, "Removing splash screen window for task: " + taskId); } - if (record.mContentView != null) { - if (leash != null || playRevealAnimation) { - mSplashscreenContentDrawer.applyExitAnimation(record.mContentView, - leash, frame, record.isEarlyExit(), - () -> removeWindowInner(record.mDecorView, true)); + if (record.mContentView != null + && record.mContentView.isRevealAnimationSupported()) { + if (playRevealAnimation) { + if (DEBUG_ENABLE_REVEAL_ANIMATION) { + mSplashscreenContentDrawer.applyExitAnimation(record.mContentView, + leash, frame, + () -> removeWindowInner(record.mDecorView, true)); + } else { + // using the default exit animation from framework + removeWindowInner(record.mDecorView, false); + } } else { - // TODO(183004107) Always hide decorView when playRevealAnimation is enabled - // from TaskOrganizerController#removeStartingWindow - // the SplashScreenView has been copied to client, skip default exit - // animation - removeWindowInner(record.mDecorView, false); + // the SplashScreenView has been copied to client, hide the view to skip + // default exit animation + removeWindowInner(record.mDecorView, true); } } else { - // no animation will be applied + // this is a blank splash screen, don't apply reveal animation removeWindowInner(record.mDecorView, false); } } @@ -518,12 +515,10 @@ public class StartingSurfaceDrawer { * Record the view or surface for a starting window. */ private static class StartingWindowRecord { - private static final long EARLY_START_MINIMUM_TIME_MS = 250; private final View mDecorView; private final TaskSnapshotWindow mTaskSnapshotWindow; private SplashScreenView mContentView; private boolean mSetSplashScreen; - private long mContentCreateTime; StartingWindowRecord(View decorView, TaskSnapshotWindow taskSnapshotWindow) { mDecorView = decorView; @@ -535,12 +530,7 @@ public class StartingSurfaceDrawer { return; } mContentView = splashScreenView; - mContentCreateTime = SystemClock.uptimeMillis(); mSetSplashScreen = true; } - - boolean isEarlyExit() { - return SystemClock.uptimeMillis() - mContentCreateTime < EARLY_START_MINIMUM_TIME_MS; - } } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java index c1282c9d7b12..99342f02463a 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/onehanded/OneHandedControllerTest.java @@ -16,7 +16,9 @@ package com.android.wm.shell.onehanded; +import static com.android.wm.shell.onehanded.OneHandedState.STATE_ACTIVE; import static com.android.wm.shell.onehanded.OneHandedState.STATE_ENTERING; +import static com.android.wm.shell.onehanded.OneHandedState.STATE_EXITING; import static com.android.wm.shell.onehanded.OneHandedState.STATE_NONE; import static com.google.common.truth.Truth.assertThat; @@ -360,4 +362,71 @@ public class OneHandedControllerTest extends OneHandedTestCase { verify(mMockGestureHandler).onGestureEnabled(isOneHandedEnabled); } + + @Test + public void testStateActive_shortcutRequestActivate_skipActions() { + when(mSpiedTransitionState.getState()).thenReturn(STATE_ACTIVE); + when(mSpiedTransitionState.isTransitioning()).thenReturn(false); + when(mMockSettingsUitl.getOneHandedModeActivated(any(), anyInt())).thenReturn(true); + mSpiedOneHandedController.onActivatedActionChanged(); + + verify(mSpiedOneHandedController, never()).startOneHanded(); + verify(mSpiedOneHandedController, never()).stopOneHanded(); + } + + @Test + public void testStateNotActive_shortcutRequestInActivate_skipAction() { + when(mSpiedTransitionState.getState()).thenReturn(STATE_NONE); + when(mSpiedTransitionState.isTransitioning()).thenReturn(false); + when(mMockSettingsUitl.getOneHandedModeActivated(any(), anyInt())).thenReturn(false); + mSpiedOneHandedController.onActivatedActionChanged(); + + verify(mSpiedOneHandedController, never()).startOneHanded(); + verify(mSpiedOneHandedController, never()).stopOneHanded(); + } + + @Test + public void testStateNotActive_shortcutRequestActivate_doAction() { + when(mSpiedTransitionState.getState()).thenReturn(STATE_NONE); + when(mSpiedTransitionState.isTransitioning()).thenReturn(false); + when(mMockSettingsUitl.getOneHandedModeActivated(any(), anyInt())).thenReturn(true); + mSpiedOneHandedController.onActivatedActionChanged(); + + verify(mSpiedOneHandedController).startOneHanded(); + verify(mSpiedOneHandedController, never()).stopOneHanded(); + } + + @Test + public void testEnteringTransition_shortcutRequestActivate_skipActions() { + when(mSpiedTransitionState.getState()).thenReturn(STATE_ENTERING); + when(mSpiedTransitionState.isTransitioning()).thenReturn(true); + when(mMockSettingsUitl.getOneHandedModeActivated(any(), anyInt())).thenReturn(true); + mSpiedOneHandedController.onActivatedActionChanged(); + + verify(mSpiedOneHandedController, never()).startOneHanded(); + verify(mSpiedOneHandedController, never()).stopOneHanded(); + } + + @Test + public void testExitingTransition_shortcutRequestActivate_skipActions() { + when(mSpiedTransitionState.getState()).thenReturn(STATE_EXITING); + when(mSpiedTransitionState.isTransitioning()).thenReturn(true); + when(mMockSettingsUitl.getOneHandedModeActivated(any(), anyInt())).thenReturn(true); + mSpiedOneHandedController.onActivatedActionChanged(); + + verify(mSpiedOneHandedController, never()).startOneHanded(); + verify(mSpiedOneHandedController, never()).stopOneHanded(); + } + + @Test + public void testOneHandedDisabled_shortcutEnabled_skipActions() { + when(mSpiedOneHandedController.isOneHandedEnabled()).thenReturn(false); + when(mSpiedTransitionState.getState()).thenReturn(STATE_NONE); + when(mSpiedTransitionState.isTransitioning()).thenReturn(false); + when(mMockSettingsUitl.getOneHandedModeActivated(any(), anyInt())).thenReturn(true); + mSpiedOneHandedController.onActivatedActionChanged(); + + verify(mSpiedOneHandedController, never()).startOneHanded(); + verify(mSpiedOneHandedController, never()).stopOneHanded(); + } } diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp index f2c48bb8d2bc..02123090e1c4 100644 --- a/libs/hwui/Android.bp +++ b/libs/hwui/Android.bp @@ -467,6 +467,7 @@ cc_defaults { "pipeline/skia/HolePunch.cpp", "pipeline/skia/SkiaDisplayList.cpp", "pipeline/skia/SkiaRecordingCanvas.cpp", + "pipeline/skia/StretchMask.cpp", "pipeline/skia/RenderNodeDrawable.cpp", "pipeline/skia/ReorderBarrierDrawables.cpp", "pipeline/skia/TransformCanvas.cpp", diff --git a/libs/hwui/CanvasTransform.cpp b/libs/hwui/CanvasTransform.cpp index 9d03ce5252a3..d0d24a8738f4 100644 --- a/libs/hwui/CanvasTransform.cpp +++ b/libs/hwui/CanvasTransform.cpp @@ -31,7 +31,7 @@ namespace android::uirenderer { -static SkColor makeLight(SkColor color) { +SkColor makeLight(SkColor color) { Lab lab = sRGBToLab(color); float invertedL = std::min(110 - lab.L, 100.0f); if (invertedL > lab.L) { @@ -42,7 +42,7 @@ static SkColor makeLight(SkColor color) { } } -static SkColor makeDark(SkColor color) { +SkColor makeDark(SkColor color) { Lab lab = sRGBToLab(color); float invertedL = std::min(110 - lab.L, 100.0f); if (invertedL < lab.L) { @@ -53,7 +53,7 @@ static SkColor makeDark(SkColor color) { } } -static SkColor transformColor(ColorTransform transform, SkColor color) { +SkColor transformColor(ColorTransform transform, SkColor color) { switch (transform) { case ColorTransform::Light: return makeLight(color); @@ -64,6 +64,17 @@ static SkColor transformColor(ColorTransform transform, SkColor color) { } } +SkColor transformColorInverse(ColorTransform transform, SkColor color) { + switch (transform) { + case ColorTransform::Dark: + return makeLight(color); + case ColorTransform::Light: + return makeDark(color); + default: + return color; + } +} + static void applyColorTransform(ColorTransform transform, SkPaint& paint) { if (transform == ColorTransform::None) return; diff --git a/libs/hwui/CanvasTransform.h b/libs/hwui/CanvasTransform.h index e723d645e05e..c46a2d369974 100644 --- a/libs/hwui/CanvasTransform.h +++ b/libs/hwui/CanvasTransform.h @@ -42,4 +42,7 @@ bool transformPaint(ColorTransform transform, SkPaint* paint); bool transformPaint(ColorTransform transform, SkPaint* paint, BitmapPalette palette); +SkColor transformColor(ColorTransform transform, SkColor color); +SkColor transformColorInverse(ColorTransform transform, SkColor color); + } // namespace android::uirenderer;
\ No newline at end of file diff --git a/libs/hwui/DamageAccumulator.cpp b/libs/hwui/DamageAccumulator.cpp index 0bf948006ea0..a1642339190a 100644 --- a/libs/hwui/DamageAccumulator.cpp +++ b/libs/hwui/DamageAccumulator.cpp @@ -150,9 +150,19 @@ static inline void applyMatrix(const SkMatrix* transform, SkRect* rect) { } } +static inline void applyMatrix(const SkMatrix& transform, SkRect* rect) { + return applyMatrix(&transform, rect); +} + static inline void mapRect(const RenderProperties& props, const SkRect& in, SkRect* out) { if (in.isEmpty()) return; SkRect temp(in); + if (Properties::stretchEffectBehavior == StretchEffectBehavior::LinearScale) { + const StretchEffect& stretch = props.layerProperties().getStretchEffect(); + if (!stretch.isEmpty()) { + applyMatrix(stretch.makeLinearStretch(props.getWidth(), props.getHeight()), &temp); + } + } applyMatrix(props.getTransformMatrix(), &temp); if (props.getStaticMatrix()) { applyMatrix(props.getStaticMatrix(), &temp); @@ -197,6 +207,27 @@ static void applyTransforms(DirtyStack* frame, DirtyStack* end) { } } +static void computeTransformImpl(const DirtyStack* frame, const DirtyStack* end, + Matrix4* outMatrix) { + while (frame != end) { + switch (frame->type) { + case TransformRenderNode: + frame->renderNode->applyViewPropertyTransforms(*outMatrix); + break; + case TransformMatrix4: + outMatrix->multiply(*frame->matrix4); + break; + case TransformNone: + // nothing to be done + break; + default: + LOG_ALWAYS_FATAL("Tried to compute transform with an invalid type: %d", + frame->type); + } + frame = frame->prev; + } +} + void DamageAccumulator::applyRenderNodeTransform(DirtyStack* frame) { if (frame->pendingDirty.isEmpty()) { return; @@ -249,19 +280,41 @@ void DamageAccumulator::finish(SkRect* totalDirty) { mHead->pendingDirty.setEmpty(); } -const StretchEffect* DamageAccumulator::findNearestStretchEffect() const { +DamageAccumulator::StretchResult DamageAccumulator::findNearestStretchEffect() const { DirtyStack* frame = mHead; + const auto& headProperties = mHead->renderNode->properties(); + float startWidth = headProperties.getWidth(); + float startHeight = headProperties.getHeight(); while (frame->prev != frame) { - frame = frame->prev; if (frame->type == TransformRenderNode) { + const auto& renderNode = frame->renderNode; + const auto& frameRenderNodeProperties = renderNode->properties(); const auto& effect = - frame->renderNode->properties().layerProperties().getStretchEffect(); + frameRenderNodeProperties.layerProperties().getStretchEffect(); + const float width = (float) frameRenderNodeProperties.getWidth(); + const float height = (float) frameRenderNodeProperties.getHeight(); if (!effect.isEmpty()) { - return &effect; + Matrix4 stretchMatrix; + computeTransformImpl(mHead, frame, &stretchMatrix); + Rect stretchRect = Rect(0.f, 0.f, startWidth, startHeight); + stretchMatrix.mapRect(stretchRect); + + return StretchResult{ + .stretchEffect = &effect, + .childRelativeBounds = SkRect::MakeLTRB( + stretchRect.left, + stretchRect.top, + stretchRect.right, + stretchRect.bottom + ), + .width = width, + .height = height + }; } } + frame = frame->prev; } - return nullptr; + return StretchResult{}; } } /* namespace uirenderer */ diff --git a/libs/hwui/DamageAccumulator.h b/libs/hwui/DamageAccumulator.h index 89ee0e34055b..90a35174d929 100644 --- a/libs/hwui/DamageAccumulator.h +++ b/libs/hwui/DamageAccumulator.h @@ -21,6 +21,7 @@ #include <SkMatrix.h> #include <SkRect.h> +#include <effects/StretchEffect.h> #include "utils/Macros.h" @@ -35,7 +36,6 @@ namespace uirenderer { struct DirtyStack; class RenderNode; class Matrix4; -class StretchEffect; class DamageAccumulator { PREVENT_COPY_AND_ASSIGN(DamageAccumulator); @@ -63,7 +63,29 @@ public: void finish(SkRect* totalDirty); - const StretchEffect* findNearestStretchEffect() const; + struct StretchResult { + /** + * Stretch parameters configured on the stretch container + */ + const StretchEffect* stretchEffect; + + /** + * Bounds of the child relative to the stretch container + */ + const SkRect childRelativeBounds; + + /** + * Width of the stretch container + */ + const float width; + + /** + * Height of the stretch container + */ + const float height; + }; + + [[nodiscard]] StretchResult findNearestStretchEffect() const; private: void pushCommon(); diff --git a/libs/hwui/DisplayListOps.in b/libs/hwui/DisplayListOps.in index 1b1be4311498..fb3e21fc1571 100644 --- a/libs/hwui/DisplayListOps.in +++ b/libs/hwui/DisplayListOps.in @@ -49,4 +49,5 @@ X(DrawVertices) X(DrawAtlas) X(DrawShadowRec) X(DrawVectorDrawable) +X(DrawRippleDrawable) X(DrawWebView) diff --git a/libs/hwui/Properties.cpp b/libs/hwui/Properties.cpp index 7af0a221d228..c58c888b8a21 100644 --- a/libs/hwui/Properties.cpp +++ b/libs/hwui/Properties.cpp @@ -84,6 +84,8 @@ float Properties::defaultSdrWhitePoint = 200.f; bool Properties::useHintManager = true; int Properties::targetCpuTimePercentage = 70; +StretchEffectBehavior Properties::stretchEffectBehavior = StretchEffectBehavior::Shader; + bool Properties::load() { bool prevDebugLayersUpdates = debugLayersUpdates; bool prevDebugOverdraw = debugOverdraw; @@ -135,6 +137,10 @@ bool Properties::load() { targetCpuTimePercentage = base::GetIntProperty(PROPERTY_TARGET_CPU_TIME_PERCENTAGE, 70); if (targetCpuTimePercentage <= 0 || targetCpuTimePercentage > 100) targetCpuTimePercentage = 70; + int stretchType = base::GetIntProperty(PROPERTY_STRETCH_EFFECT_TYPE, 0); + stretchType = std::clamp(stretchType, 0, static_cast<int>(StretchEffectBehavior::LinearScale)); + stretchEffectBehavior = static_cast<StretchEffectBehavior>(stretchType); + return (prevDebugLayersUpdates != debugLayersUpdates) || (prevDebugOverdraw != debugOverdraw); } diff --git a/libs/hwui/Properties.h b/libs/hwui/Properties.h index 1cb87be98051..82ce5c6fb979 100644 --- a/libs/hwui/Properties.h +++ b/libs/hwui/Properties.h @@ -171,6 +171,8 @@ enum DebugLevel { */ #define PROPERTY_TARGET_CPU_TIME_PERCENTAGE "debug.hwui.target_cpu_time_percent" +#define PROPERTY_STRETCH_EFFECT_TYPE "debug.hwui.stretch_mode" + /** * Property for whether this is running in the emulator. */ @@ -178,7 +180,7 @@ enum DebugLevel { /** * Turns on the Skia GPU option "reduceOpsTaskSplitting" which improves GPU - * efficiency but may increase VRAM consumption. Default is "false". + * efficiency but may increase VRAM consumption. Default is "true". */ #define PROPERTY_REDUCE_OPS_TASK_SPLITTING "renderthread.skia.reduceopstasksplitting" @@ -197,6 +199,11 @@ enum class OverdrawColorSet { Default = 0, Deuteranomaly }; enum class RenderPipelineType { SkiaGL, SkiaVulkan, NotInitialized = 128 }; +enum class StretchEffectBehavior { + Shader, + LinearScale, +}; + /** * Renderthread-only singleton which manages several static rendering properties. Most of these * are driven by system properties which are queried once at initialization, and again if init() @@ -270,6 +277,8 @@ public: static bool useHintManager; static int targetCpuTimePercentage; + static StretchEffectBehavior stretchEffectBehavior; + private: static ProfileType sProfileType; static bool sDisableProfileBars; diff --git a/libs/hwui/RecordingCanvas.cpp b/libs/hwui/RecordingCanvas.cpp index 170f73120414..442ae0fb2707 100644 --- a/libs/hwui/RecordingCanvas.cpp +++ b/libs/hwui/RecordingCanvas.cpp @@ -36,6 +36,7 @@ #include "SkTextBlob.h" #include "SkVertices.h" #include "VectorDrawable.h" +#include "pipeline/skia/AnimatedDrawables.h" #include "pipeline/skia/FunctorDrawable.h" namespace android { @@ -497,6 +498,18 @@ struct DrawVectorDrawable final : Op { SkPaint paint; BitmapPalette palette; }; + +struct DrawRippleDrawable final : Op { + static const auto kType = Type::DrawRippleDrawable; + DrawRippleDrawable(const skiapipeline::RippleDrawableParams& params) : mParams(params) {} + + void draw(SkCanvas* canvas, const SkMatrix&) const { + skiapipeline::AnimatedRippleDrawable::draw(canvas, mParams); + } + + skiapipeline::RippleDrawableParams mParams; +}; + struct DrawWebView final : Op { static const auto kType = Type::DrawWebView; DrawWebView(skiapipeline::FunctorDrawable* drawable) : drawable(sk_ref_sp(drawable)) {} @@ -721,6 +734,10 @@ void DisplayListData::drawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar mHasText = true; } +void DisplayListData::drawRippleDrawable(const skiapipeline::RippleDrawableParams& params) { + this->push<DrawRippleDrawable>(0, params); +} + void DisplayListData::drawPatch(const SkPoint points[12], const SkColor colors[4], const SkPoint texs[4], SkBlendMode bmode, const SkPaint& paint) { this->push<DrawPatch>(0, points, colors, texs, bmode, paint); @@ -851,6 +868,16 @@ constexpr color_transform_fn colorTransformForOp<DrawTextBlob>() { }; } +template <> +constexpr color_transform_fn colorTransformForOp<DrawRippleDrawable>() { + return [](const void* opRaw, ColorTransform transform) { + const DrawRippleDrawable* op = reinterpret_cast<const DrawRippleDrawable*>(opRaw); + // Ripple drawable needs to contrast against the background, so we need the inverse color. + SkColor color = transformColorInverse(transform, op->mParams.color); + const_cast<DrawRippleDrawable*>(op)->mParams.color = color; + }; +} + #define X(T) colorTransformForOp<T>(), static const color_transform_fn color_transform_fns[] = { #include "DisplayListOps.in" @@ -985,6 +1012,10 @@ void RecordingCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScala fDL->drawTextBlob(blob, x, y, paint); } +void RecordingCanvas::drawRippleDrawable(const skiapipeline::RippleDrawableParams& params) { + fDL->drawRippleDrawable(params); +} + void RecordingCanvas::drawImage(const sk_sp<SkImage>& image, SkScalar x, SkScalar y, const SkSamplingOptions& sampling, const SkPaint* paint, BitmapPalette palette) { diff --git a/libs/hwui/RecordingCanvas.h b/libs/hwui/RecordingCanvas.h index a6a7b12ba658..4fae6a13a25a 100644 --- a/libs/hwui/RecordingCanvas.h +++ b/libs/hwui/RecordingCanvas.h @@ -29,6 +29,9 @@ #include "SkPath.h" #include "SkRect.h" +#include "pipeline/skia/AnimatedDrawables.h" + +#include <SkRuntimeEffect.h> #include <vector> namespace android { @@ -125,6 +128,7 @@ private: void drawVertices(const SkVertices*, SkBlendMode, const SkPaint&); void drawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int, SkBlendMode, const SkSamplingOptions&, const SkRect*, const SkPaint*); + void drawRippleDrawable(const skiapipeline::RippleDrawableParams& params); void drawShadowRec(const SkPath&, const SkDrawShadowRec&); void drawVectorDrawable(VectorDrawableRoot* tree); void drawWebView(skiapipeline::FunctorDrawable*); @@ -184,6 +188,7 @@ public: void drawImage(const sk_sp<SkImage>&, SkScalar left, SkScalar top, const SkSamplingOptions&, const SkPaint* paint, BitmapPalette pallete); + void drawRippleDrawable(const skiapipeline::RippleDrawableParams& params); void drawImageRect(const sk_sp<SkImage>& image, const SkRect& src, const SkRect& dst, const SkSamplingOptions&, const SkPaint*, SrcRectConstraint, BitmapPalette); diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp index e9eae3d14760..64abd9428528 100644 --- a/libs/hwui/RenderNode.cpp +++ b/libs/hwui/RenderNode.cpp @@ -194,6 +194,9 @@ void RenderNode::pushLayerUpdate(TreeInfo& info) { SkRect dirty; info.damageAccumulator->peekAtDirty(&dirty); info.layerUpdateQueue->enqueueLayerWithDamage(this, dirty); + if (!dirty.isEmpty()) { + mStretchMask.markDirty(); + } // There might be prefetched layers that need to be accounted for. // That might be us, so tell CanvasContext that this layer is in the @@ -302,6 +305,12 @@ void RenderNode::pushStagingPropertiesChanges(TreeInfo& info) { damageSelf(info); info.damageAccumulator->popTransform(); syncProperties(); + + const StretchEffect& stagingStretch = + mProperties.layerProperties().getStretchEffect(); + if (stagingStretch.isEmpty()) { + mStretchMask.clear(); + } // We could try to be clever and only re-damage if the matrix changed. // However, we don't need to worry about that. The cost of over-damaging // here is only going to be a single additional map rect of this node @@ -468,6 +477,14 @@ void RenderNode::applyViewPropertyTransforms(mat4& matrix, bool true3dTransform) } } } + + if (Properties::stretchEffectBehavior == StretchEffectBehavior::LinearScale) { + const StretchEffect& stretch = properties().layerProperties().getStretchEffect(); + if (!stretch.isEmpty()) { + matrix.multiply( + stretch.makeLinearStretch(properties().getWidth(), properties().getHeight())); + } + } } const SkPath* RenderNode::getClippedOutline(const SkRect& clipRect) const { diff --git a/libs/hwui/RenderNode.h b/libs/hwui/RenderNode.h index 988141fe191d..6a0b1aafd7c7 100644 --- a/libs/hwui/RenderNode.h +++ b/libs/hwui/RenderNode.h @@ -40,6 +40,7 @@ #include "pipeline/skia/SkiaLayer.h" #include <vector> +#include <pipeline/skia/StretchMask.h> class SkBitmap; class SkPaint; @@ -127,6 +128,8 @@ public: } } + StretchMask& getStretchMask() { return mStretchMask; } + VirtualLightRefBase* getUserContext() const { return mUserContext.get(); } void setUserContext(VirtualLightRefBase* context) { mUserContext = context; } @@ -286,6 +289,7 @@ private: UsageHint mUsageHint = UsageHint::Unknown; bool mHasHolePunches; + StretchMask mStretchMask; // METHODS & FIELDS ONLY USED BY THE SKIA RENDERER public: diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp index 3056e977f841..d032e2b00649 100644 --- a/libs/hwui/SkiaCanvas.cpp +++ b/libs/hwui/SkiaCanvas.cpp @@ -815,17 +815,8 @@ void SkiaCanvas::drawCircle(uirenderer::CanvasPropertyPrimitive* x, mCanvas->drawDrawable(drawable.get()); } -void SkiaCanvas::drawRipple(uirenderer::CanvasPropertyPrimitive* x, - uirenderer::CanvasPropertyPrimitive* y, - uirenderer::CanvasPropertyPrimitive* radius, - uirenderer::CanvasPropertyPaint* paint, - uirenderer::CanvasPropertyPrimitive* progress, - uirenderer::CanvasPropertyPrimitive* turbulencePhase, - const SkRuntimeShaderBuilder& effectBuilder) { - sk_sp<uirenderer::skiapipeline::AnimatedRipple> drawable( - new uirenderer::skiapipeline::AnimatedRipple(x, y, radius, paint, progress, - turbulencePhase, effectBuilder)); - mCanvas->drawDrawable(drawable.get()); +void SkiaCanvas::drawRipple(const uirenderer::skiapipeline::RippleDrawableParams& params) { + uirenderer::skiapipeline::AnimatedRippleDrawable::draw(mCanvas, params); } void SkiaCanvas::drawPicture(const SkPicture& picture) { diff --git a/libs/hwui/SkiaCanvas.h b/libs/hwui/SkiaCanvas.h index 995f00c6aa8d..438a40cb4c81 100644 --- a/libs/hwui/SkiaCanvas.h +++ b/libs/hwui/SkiaCanvas.h @@ -25,6 +25,7 @@ #include "hwui/Paint.h" #include <SkCanvas.h> +#include "pipeline/skia/AnimatedDrawables.h" #include "src/core/SkArenaAlloc.h" #include <cassert> @@ -148,13 +149,7 @@ public: uirenderer::CanvasPropertyPrimitive* y, uirenderer::CanvasPropertyPrimitive* radius, uirenderer::CanvasPropertyPaint* paint) override; - virtual void drawRipple(uirenderer::CanvasPropertyPrimitive* x, - uirenderer::CanvasPropertyPrimitive* y, - uirenderer::CanvasPropertyPrimitive* radius, - uirenderer::CanvasPropertyPaint* paint, - uirenderer::CanvasPropertyPrimitive* progress, - uirenderer::CanvasPropertyPrimitive* turbulencePhase, - const SkRuntimeShaderBuilder& effectBuilder) override; + virtual void drawRipple(const uirenderer::skiapipeline::RippleDrawableParams& params) override; virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) override; virtual void drawRenderNode(uirenderer::RenderNode* renderNode) override; diff --git a/libs/hwui/canvas/CanvasOpTypes.h b/libs/hwui/canvas/CanvasOpTypes.h index b55ef9d5537c..6e18e492e7ca 100644 --- a/libs/hwui/canvas/CanvasOpTypes.h +++ b/libs/hwui/canvas/CanvasOpTypes.h @@ -43,7 +43,7 @@ enum class CanvasOpType : int8_t { DrawRoundRectProperty, DrawDoubleRoundRect, DrawCircleProperty, - DrawRippleProperty, + DrawRippleDrawable, DrawCircle, DrawOval, DrawArc, diff --git a/libs/hwui/canvas/CanvasOps.h b/libs/hwui/canvas/CanvasOps.h index 173f3948dd0e..fdc97a4fd8ba 100644 --- a/libs/hwui/canvas/CanvasOps.h +++ b/libs/hwui/canvas/CanvasOps.h @@ -145,73 +145,13 @@ struct CanvasOp<CanvasOpType::DrawCircleProperty> { ASSERT_DRAWABLE() }; -template<> -struct CanvasOp<CanvasOpType::DrawRippleProperty> { - sp<uirenderer::CanvasPropertyPrimitive> x; - sp<uirenderer::CanvasPropertyPrimitive> y; - sp<uirenderer::CanvasPropertyPrimitive> radius; - sp<uirenderer::CanvasPropertyPaint> paint; - sp<uirenderer::CanvasPropertyPrimitive> progress; - sp<uirenderer::CanvasPropertyPrimitive> turbulencePhase; - sk_sp<SkRuntimeEffect> effect; - - const float PI = 3.1415926535897932384626; - const float PI_ROTATE_RIGHT = PI * 0.0078125; - const float PI_ROTATE_LEFT = PI * -0.0078125; - const float SCALE = 1.5; - const float CIRCLE_X_1 = 0.01 * cos(SCALE * 0.55); - const float CIRCLE_Y_1 = 0.01 * sin(SCALE * 0.55); - const float CIRCLE_X_2 = -0.0066 * cos(SCALE * 0.45); - const float CIRCLE_Y_2 = -0.0066 * sin(SCALE * 0.45); - const float CIRCLE_X_3 = -0.0066 * cos(SCALE * 0.35); - const float CIRCLE_Y_3 = -0.0066 * sin(SCALE * 0.35); +template <> +struct CanvasOp<CanvasOpType::DrawRippleDrawable> { + skiapipeline::RippleDrawableParams params; void draw(SkCanvas* canvas) const { - SkRuntimeShaderBuilder runtimeEffectBuilder(effect); - - setUniform2f(runtimeEffectBuilder, "in_origin", x->value, y->value); - setUniform(runtimeEffectBuilder, "in_radius", radius); - setUniform(runtimeEffectBuilder, "in_progress", progress); - setUniform(runtimeEffectBuilder, "in_turbulencePhase", turbulencePhase); - - // - // Keep in sync with: - // frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java - // - const float turbulence = turbulencePhase->value; - setUniform2f(runtimeEffectBuilder, "in_tCircle1", SCALE * 0.5 + (turbulence * CIRCLE_X_1), - SCALE * 0.5 + (turbulence * CIRCLE_Y_1)); - setUniform2f(runtimeEffectBuilder, "in_tCircle2", SCALE * 0.2 + (turbulence * CIRCLE_X_2), - SCALE * 0.2 + (turbulence * CIRCLE_Y_2)); - setUniform2f(runtimeEffectBuilder, "in_tCircle3", SCALE + (turbulence * CIRCLE_X_3), - SCALE + (turbulence * CIRCLE_Y_3)); - const float rotation1 = turbulence * PI_ROTATE_RIGHT + 1.7 * PI; - setUniform2f(runtimeEffectBuilder, "in_tRotation1", cos(rotation1), sin(rotation1)); - const float rotation2 = turbulence * PI_ROTATE_LEFT + 2 * PI; - setUniform2f(runtimeEffectBuilder, "in_tRotation2", cos(rotation2), sin(rotation2)); - const float rotation3 = turbulence * PI_ROTATE_RIGHT + 2.75 * PI; - setUniform2f(runtimeEffectBuilder, "in_tRotation3", cos(rotation3), sin(rotation3)); - - SkPaint paintMod = paint->value; - paintMod.setShader(runtimeEffectBuilder.makeShader(nullptr, false)); - canvas->drawCircle(x->value, y->value, radius->value, paintMod); + skiapipeline::AnimatedRippleDrawable::draw(canvas, params); } - - void setUniform(SkRuntimeShaderBuilder& effect, std::string name, - sp<uirenderer::CanvasPropertyPrimitive> property) const { - SkRuntimeShaderBuilder::BuilderUniform uniform = effect.uniform(name.c_str()); - if (uniform.fVar != nullptr) { - uniform = property->value; - } - } - - void setUniform2f(SkRuntimeShaderBuilder effect, std::string name, float a, float b) const { - SkRuntimeShaderBuilder::BuilderUniform uniform = effect.uniform(name.c_str()); - if (uniform.fVar != nullptr) { - uniform = SkV2{a, b}; - } - } - ASSERT_DRAWABLE() }; diff --git a/libs/hwui/effects/StretchEffect.cpp b/libs/hwui/effects/StretchEffect.cpp index 6eb6e1ee4a5c..0599bfaf02f5 100644 --- a/libs/hwui/effects/StretchEffect.cpp +++ b/libs/hwui/effects/StretchEffect.cpp @@ -68,9 +68,8 @@ static const SkString stretchShader = SkString(R"( // and the other way around. uniform float uInterpolationStrength; - float easeInCubic(float t, float d) { - float tmp = t * d; - return tmp * tmp * tmp; + float easeIn(float t, float d) { + return t * d; } float computeOverscrollStart( @@ -83,7 +82,7 @@ static const SkString stretchShader = SkString(R"( ) { float offsetPos = uStretchAffectedDist - inPos; float posBasedVariation = mix( - 1. ,easeInCubic(offsetPos, uInverseStretchAffectedDist), interpolationStrength); + 1. ,easeIn(offsetPos, uInverseStretchAffectedDist), interpolationStrength); float stretchIntensity = overscroll * posBasedVariation; return distanceStretched - (offsetPos / (1. + stretchIntensity)); } @@ -99,7 +98,7 @@ static const SkString stretchShader = SkString(R"( ) { float offsetPos = inPos - reverseStretchDist; float posBasedVariation = mix( - 1. ,easeInCubic(offsetPos, uInverseStretchAffectedDist), interpolationStrength); + 1. ,easeIn(offsetPos, uInverseStretchAffectedDist), interpolationStrength); float stretchIntensity = (-overscroll) * posBasedVariation; return 1 - (distanceStretched - (offsetPos / (1. + stretchIntensity))); } @@ -189,17 +188,12 @@ static const float ZERO = 0.f; static const float CONTENT_DISTANCE_STRETCHED = 1.f; static const float INTERPOLATION_STRENGTH_VALUE = 0.7f; -sk_sp<SkShader> StretchEffect::getShader(const sk_sp<SkImage>& snapshotImage) const { +sk_sp<SkShader> StretchEffect::getShader(float width, float height, + const sk_sp<SkImage>& snapshotImage) const { if (isEmpty()) { return nullptr; } - if (mStretchShader != nullptr) { - return mStretchShader; - } - - float viewportWidth = stretchArea.width(); - float viewportHeight = stretchArea.height(); float normOverScrollDistX = mStretchDirection.x(); float normOverScrollDistY = mStretchDirection.y(); float distanceStretchedX = CONTENT_DISTANCE_STRETCHED / (1 + abs(normOverScrollDistX)); @@ -228,12 +222,10 @@ sk_sp<SkShader> StretchEffect::getShader(const sk_sp<SkImage>& snapshotImage) co mBuilder->uniform("uOverscrollY").set(&normOverScrollDistY, 1); mBuilder->uniform("uScrollX").set(&ZERO, 1); mBuilder->uniform("uScrollY").set(&ZERO, 1); - mBuilder->uniform("viewportWidth").set(&viewportWidth, 1); - mBuilder->uniform("viewportHeight").set(&viewportHeight, 1); - - mStretchShader = mBuilder->makeShader(nullptr, false); + mBuilder->uniform("viewportWidth").set(&width, 1); + mBuilder->uniform("viewportHeight").set(&height, 1); - return mStretchShader; + return mBuilder->makeShader(nullptr, false); } sk_sp<SkRuntimeEffect> StretchEffect::getStretchEffect() { @@ -241,4 +233,80 @@ sk_sp<SkRuntimeEffect> StretchEffect::getStretchEffect() { return instance.effect; } +/** + * Helper method that maps the input texture position to the stretch position + * based on the given overscroll value that represents an overscroll from + * either the top or left + * @param overscroll current overscroll value + * @param input normalized input position (can be x or y) on the input texture + * @return stretched position of the input normalized from 0 to 1 + */ +float reverseMapStart(float overscroll, float input) { + float numerator = (-input * overscroll * overscroll) - + (2 * input * overscroll) - input; + float denominator = 1.f + (.3f * overscroll) + + (.7f * input * overscroll * overscroll) + (.7f * input * overscroll); + return -(numerator / denominator); +} + +/** + * Helper method that maps the input texture position to the stretch position + * based on the given overscroll value that represents an overscroll from + * either the bottom or right + * @param overscroll current overscroll value + * @param input normalized input position (can be x or y) on the input texture + * @return stretched position of the input normalized from 0 to 1 + */ +float reverseMapEnd(float overscroll, float input) { + float numerator = (.3f * overscroll * overscroll) - + (.3f * input * overscroll * overscroll) + + (1.3f * input * overscroll) - overscroll - input; + float denominator = (.7f * input * overscroll * overscroll) - + (.7f * input * overscroll) - (.7f * overscroll * overscroll) + + overscroll - 1.f; + return numerator / denominator; +} + +/** + * Calculates the normalized stretch position given the normalized input + * position. This handles calculating the overscroll from either the + * top or left vs bottom or right depending on the sign of the given overscroll + * value + * + * @param overscroll unit vector of overscroll from -1 to 1 indicating overscroll + * from the bottom or right vs top or left respectively + * @param normalizedInput the + * @return + */ +float computeReverseOverscroll(float overscroll, float normalizedInput) { + float distanceStretched = 1.f / (1.f + abs(overscroll)); + float distanceDiff = distanceStretched - 1.f; + if (overscroll > 0) { + float output = reverseMapStart(overscroll, normalizedInput); + if (output <= 1.0f) { + return output; + } else if (output >= distanceStretched){ + return output - distanceDiff; + } + } + + if (overscroll < 0) { + float output = reverseMapEnd(overscroll, normalizedInput); + if (output >= 0.f) { + return output; + } else if (output < 0.f){ + return output + distanceDiff; + } + } + return normalizedInput; +} + +float StretchEffect::computeStretchedPositionX(float normalizedX) const { + return computeReverseOverscroll(mStretchDirection.x(), normalizedX); +} + +float StretchEffect::computeStretchedPositionY(float normalizedY) const { + return computeReverseOverscroll(mStretchDirection.y(), normalizedY); +} + } // namespace android::uirenderer
\ No newline at end of file diff --git a/libs/hwui/effects/StretchEffect.h b/libs/hwui/effects/StretchEffect.h index 546d53b1a2df..c49d53af94eb 100644 --- a/libs/hwui/effects/StretchEffect.h +++ b/libs/hwui/effects/StretchEffect.h @@ -20,25 +20,22 @@ #include <SkImage.h> #include <SkImageFilter.h> +#include <SkMatrix.h> #include <SkPoint.h> #include <SkRect.h> #include <SkRuntimeEffect.h> namespace android::uirenderer { -// TODO: Inherit from base RenderEffect type? class StretchEffect { public: - enum class StretchInterpolator { - SmoothStep, - }; - StretchEffect(const SkRect& area, const SkVector& direction, float maxStretchAmountX, + StretchEffect(const SkVector& direction, + float maxStretchAmountX, float maxStretchAmountY) - : stretchArea(area) - , maxStretchAmountX(maxStretchAmountX) + : maxStretchAmountX(maxStretchAmountX) , maxStretchAmountY(maxStretchAmountY) - , mStretchDirection(direction) {} + , mStretchDirection(direction) { } StretchEffect() {} @@ -51,14 +48,18 @@ public: } StretchEffect& operator=(const StretchEffect& other) { - this->stretchArea = other.stretchArea; this->mStretchDirection = other.mStretchDirection; - this->mStretchShader = other.mStretchShader; this->maxStretchAmountX = other.maxStretchAmountX; this->maxStretchAmountY = other.maxStretchAmountY; return *this; } + bool operator==(const StretchEffect& other) const { + return mStretchDirection == other.mStretchDirection && + maxStretchAmountX == other.maxStretchAmountX && + maxStretchAmountY == other.maxStretchAmountY; + } + void mergeWith(const StretchEffect& other) { if (other.isEmpty()) { return; @@ -67,33 +68,50 @@ public: *this = other; return; } - setStretchDirection(mStretchDirection + other.mStretchDirection); + mStretchDirection += other.mStretchDirection; if (isEmpty()) { return setEmpty(); } - stretchArea.join(other.stretchArea); maxStretchAmountX = std::max(maxStretchAmountX, other.maxStretchAmountX); maxStretchAmountY = std::max(maxStretchAmountY, other.maxStretchAmountY); } - sk_sp<SkShader> getShader(const sk_sp<SkImage>& snapshotImage) const; + /** + * Return the stretched x position given the normalized x position with + * the current horizontal stretch direction + * @param normalizedX x position on the input texture from 0 to 1 + * @return x position when the horizontal stretch direction applied + */ + float computeStretchedPositionX(float normalizedX) const; + + /** + * Return the stretched y position given the normalized y position with + * the current horizontal stretch direction + * @param normalizedX y position on the input texture from 0 to 1 + * @return y position when the horizontal stretch direction applied + */ + float computeStretchedPositionY(float normalizedY) const; + + sk_sp<SkShader> getShader(float width, float height, + const sk_sp<SkImage>& snapshotImage) const; - SkRect stretchArea {0, 0, 0, 0}; float maxStretchAmountX = 0; float maxStretchAmountY = 0; - void setStretchDirection(const SkVector& direction) { - mStretchShader = nullptr; - mStretchDirection = direction; - } - const SkVector getStretchDirection() const { return mStretchDirection; } + SkMatrix makeLinearStretch(float width, float height) const { + SkMatrix matrix; + auto [sX, sY] = getStretchDirection(); + matrix.setScale(1 + std::abs(sX), 1 + std::abs(sY), sX > 0 ? 0 : width, + sY > 0 ? 0 : height); + return matrix; + } + private: static sk_sp<SkRuntimeEffect> getStretchEffect(); mutable SkVector mStretchDirection{0, 0}; mutable std::unique_ptr<SkRuntimeShaderBuilder> mBuilder; - mutable sk_sp<SkShader> mStretchShader; }; } // namespace android::uirenderer diff --git a/libs/hwui/hwui/Canvas.h b/libs/hwui/hwui/Canvas.h index 837b055a8f42..9023613478fc 100644 --- a/libs/hwui/hwui/Canvas.h +++ b/libs/hwui/hwui/Canvas.h @@ -22,6 +22,7 @@ #include <androidfw/ResourceTypes.h> #include "Properties.h" +#include "pipeline/skia/AnimatedDrawables.h" #include "utils/Macros.h" #include <SkBitmap.h> @@ -141,13 +142,7 @@ public: uirenderer::CanvasPropertyPrimitive* y, uirenderer::CanvasPropertyPrimitive* radius, uirenderer::CanvasPropertyPaint* paint) = 0; - virtual void drawRipple(uirenderer::CanvasPropertyPrimitive* x, - uirenderer::CanvasPropertyPrimitive* y, - uirenderer::CanvasPropertyPrimitive* radius, - uirenderer::CanvasPropertyPaint* paint, - uirenderer::CanvasPropertyPrimitive* progress, - uirenderer::CanvasPropertyPrimitive* turbulencePhase, - const SkRuntimeShaderBuilder& effectBuilder) = 0; + virtual void drawRipple(const uirenderer::skiapipeline::RippleDrawableParams& params) = 0; virtual void drawLayer(uirenderer::DeferredLayerUpdater* layerHandle) = 0; virtual void drawRenderNode(uirenderer::RenderNode* renderNode) = 0; diff --git a/libs/hwui/jni/android_graphics_DisplayListCanvas.cpp b/libs/hwui/jni/android_graphics_DisplayListCanvas.cpp index eb5a88ad7ae8..f060bb32031a 100644 --- a/libs/hwui/jni/android_graphics_DisplayListCanvas.cpp +++ b/libs/hwui/jni/android_graphics_DisplayListCanvas.cpp @@ -144,7 +144,7 @@ static void android_view_DisplayListCanvas_drawCircleProps(CRITICAL_JNI_PARAMS_C static void android_view_DisplayListCanvas_drawRippleProps( CRITICAL_JNI_PARAMS_COMMA jlong canvasPtr, jlong xPropPtr, jlong yPropPtr, jlong radiusPropPtr, jlong paintPropPtr, jlong progressPropPtr, jlong turbulencePhasePtr, - jlong builderPtr) { + jint color, jlong builderPtr) { Canvas* canvas = reinterpret_cast<Canvas*>(canvasPtr); CanvasPropertyPrimitive* xProp = reinterpret_cast<CanvasPropertyPrimitive*>(xPropPtr); CanvasPropertyPrimitive* yProp = reinterpret_cast<CanvasPropertyPrimitive*>(yPropPtr); @@ -155,8 +155,12 @@ static void android_view_DisplayListCanvas_drawRippleProps( CanvasPropertyPrimitive* progressProp = reinterpret_cast<CanvasPropertyPrimitive*>(progressPropPtr); SkRuntimeShaderBuilder* builder = reinterpret_cast<SkRuntimeShaderBuilder*>(builderPtr); - canvas->drawRipple(xProp, yProp, radiusProp, paintProp, progressProp, turbulencePhaseProp, - *builder); + + const uirenderer::skiapipeline::RippleDrawableParams params = + uirenderer::skiapipeline::RippleDrawableParams{ + xProp, yProp, radiusProp, progressProp, turbulencePhaseProp, + (SkColor)color, paintProp, *builder}; + canvas->drawRipple(params); } static void android_view_DisplayListCanvas_drawWebViewFunctor(CRITICAL_JNI_PARAMS_COMMA jlong canvasPtr, jint functor) { @@ -186,7 +190,7 @@ static JNINativeMethod gMethods[] = { {"nDrawCircle", "(JJJJJ)V", (void*)android_view_DisplayListCanvas_drawCircleProps}, {"nDrawRoundRect", "(JJJJJJJJ)V", (void*)android_view_DisplayListCanvas_drawRoundRectProps}, {"nDrawWebViewFunctor", "(JI)V", (void*)android_view_DisplayListCanvas_drawWebViewFunctor}, - {"nDrawRipple", "(JJJJJJJJ)V", (void*)android_view_DisplayListCanvas_drawRippleProps}, + {"nDrawRipple", "(JJJJJJJIJ)V", (void*)android_view_DisplayListCanvas_drawRippleProps}, }; int register_android_view_DisplayListCanvas(JNIEnv* env) { diff --git a/libs/hwui/jni/android_graphics_RenderNode.cpp b/libs/hwui/jni/android_graphics_RenderNode.cpp index fffa80614370..6123c05fb22a 100644 --- a/libs/hwui/jni/android_graphics_RenderNode.cpp +++ b/libs/hwui/jni/android_graphics_RenderNode.cpp @@ -180,12 +180,10 @@ static jboolean android_view_RenderNode_clearStretch(CRITICAL_JNI_PARAMS_COMMA j } static jboolean android_view_RenderNode_stretch(CRITICAL_JNI_PARAMS_COMMA jlong renderNodePtr, - jfloat left, jfloat top, jfloat right, - jfloat bottom, jfloat vX, jfloat vY, jfloat maxX, + jfloat vX, jfloat vY, jfloat maxX, jfloat maxY) { - StretchEffect effect = StretchEffect(SkRect::MakeLTRB(left, top, right, bottom), - {.fX = vX, .fY = vY}, maxX, maxY); - RenderNode* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr); + auto* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr); + StretchEffect effect = StretchEffect({.fX = vX, .fY = vY}, maxX, maxY); renderNode->mutateStagingProperties().mutateLayerProperties().mutableStretchEffect().mergeWith( effect); renderNode->setPropertyFieldsDirty(RenderNode::GENERIC); @@ -574,11 +572,12 @@ static void android_view_RenderNode_requestPositionUpdates(JNIEnv* env, jobject, info.damageAccumulator->computeCurrentTransform(&transform); const RenderProperties& props = node.properties(); - if (info.stretchEffectCount) { - handleStretchEffect(info, transform); + uirenderer::Rect bounds(props.getWidth(), props.getHeight()); + if (Properties::stretchEffectBehavior == StretchEffectBehavior::Shader && + info.stretchEffectCount) { + handleStretchEffect(info, bounds); } - uirenderer::Rect bounds(props.getWidth(), props.getHeight()); transform.mapRect(bounds); if (CC_LIKELY(transform.isPureTranslate())) { @@ -641,15 +640,45 @@ static void android_view_RenderNode_requestPositionUpdates(JNIEnv* env, jobject, return env; } - void handleStretchEffect(const TreeInfo& info, const Matrix4& transform) { + void stretchTargetBounds(const StretchEffect& stretchEffect, + float width, float height, + const SkRect& childRelativeBounds, + uirenderer::Rect& bounds) { + float normalizedLeft = childRelativeBounds.left() / width; + float normalizedTop = childRelativeBounds.top() / height; + float normalizedRight = childRelativeBounds.right() / width; + float normalizedBottom = childRelativeBounds.bottom() / height; + float reverseLeft = width * + (stretchEffect.computeStretchedPositionX(normalizedLeft) - + normalizedLeft); + float reverseTop = height * + (stretchEffect.computeStretchedPositionY(normalizedTop) - + normalizedTop); + float reverseRight = width * + (stretchEffect.computeStretchedPositionX(normalizedRight) - + normalizedLeft); + float reverseBottom = height * + (stretchEffect.computeStretchedPositionY(normalizedBottom) - + normalizedTop); + bounds.left = reverseLeft; + bounds.top = reverseTop; + bounds.right = reverseRight; + bounds.bottom = reverseBottom; + } + + void handleStretchEffect(const TreeInfo& info, uirenderer::Rect& targetBounds) { // Search up to find the nearest stretcheffect parent - const StretchEffect* effect = info.damageAccumulator->findNearestStretchEffect(); + const DamageAccumulator::StretchResult result = + info.damageAccumulator->findNearestStretchEffect(); + const StretchEffect* effect = result.stretchEffect; if (!effect) { return; } - uirenderer::Rect area = effect->stretchArea; - transform.mapRect(area); + const auto& childRelativeBounds = result.childRelativeBounds; + stretchTargetBounds(*effect, result.width, result.height, + childRelativeBounds,targetBounds); + JNIEnv* env = jnienv(); jobject localref = env->NewLocalRef(mWeakRef); @@ -661,9 +690,17 @@ static void android_view_RenderNode_requestPositionUpdates(JNIEnv* env, jobject, #ifdef __ANDROID__ // Layoutlib does not support CanvasContext SkVector stretchDirection = effect->getStretchDirection(); env->CallVoidMethod(localref, gPositionListener_ApplyStretchMethod, - info.canvasContext.getFrameNumber(), area.left, area.top, - area.right, area.bottom, stretchDirection.fX, stretchDirection.fY, - effect->maxStretchAmountX, effect->maxStretchAmountY); + info.canvasContext.getFrameNumber(), + result.width, + result.height, + stretchDirection.fX, + stretchDirection.fY, + effect->maxStretchAmountX, + effect->maxStretchAmountY, + childRelativeBounds.left(), + childRelativeBounds.top(), + childRelativeBounds.right(), + childRelativeBounds.bottom()); #endif env->DeleteLocalRef(localref); } @@ -739,7 +776,7 @@ static const JNINativeMethod gMethods[] = { {"nSetOutlineEmpty", "(J)Z", (void*)android_view_RenderNode_setOutlineEmpty}, {"nSetOutlineNone", "(J)Z", (void*)android_view_RenderNode_setOutlineNone}, {"nClearStretch", "(J)Z", (void*)android_view_RenderNode_clearStretch}, - {"nStretch", "(JFFFFFFFF)Z", (void*)android_view_RenderNode_stretch}, + {"nStretch", "(JFFFF)Z", (void*)android_view_RenderNode_stretch}, {"nHasShadow", "(J)Z", (void*)android_view_RenderNode_hasShadow}, {"nSetSpotShadowColor", "(JI)Z", (void*)android_view_RenderNode_setSpotShadowColor}, {"nGetSpotShadowColor", "(J)I", (void*)android_view_RenderNode_getSpotShadowColor}, @@ -814,7 +851,7 @@ int register_android_view_RenderNode(JNIEnv* env) { gPositionListener_PositionChangedMethod = GetMethodIDOrDie(env, clazz, "positionChanged", "(JIIII)V"); gPositionListener_ApplyStretchMethod = - GetMethodIDOrDie(env, clazz, "applyStretch", "(JFFFFFFF)V"); + GetMethodIDOrDie(env, clazz, "applyStretch", "(JFFFFFFFFFF)V"); gPositionListener_PositionLostMethod = GetMethodIDOrDie(env, clazz, "positionLost", "(J)V"); return RegisterMethodsOrDie(env, kClassPathName, gMethods, NELEM(gMethods)); diff --git a/libs/hwui/pipeline/skia/AnimatedDrawables.h b/libs/hwui/pipeline/skia/AnimatedDrawables.h index 7d65be1a76e6..10889e7a9229 100644 --- a/libs/hwui/pipeline/skia/AnimatedDrawables.h +++ b/libs/hwui/pipeline/skia/AnimatedDrawables.h @@ -22,6 +22,7 @@ #include <math.h> #include <utils/RefBase.h> #include "CanvasProperty.h" +#include "CanvasTransform.h" namespace android { namespace uirenderer { @@ -56,89 +57,80 @@ private: sp<uirenderer::CanvasPropertyPaint> mPaint; }; -class AnimatedRipple : public SkDrawable { +struct RippleDrawableParams { + sp<uirenderer::CanvasPropertyPrimitive> x; + sp<uirenderer::CanvasPropertyPrimitive> y; + sp<uirenderer::CanvasPropertyPrimitive> radius; + sp<uirenderer::CanvasPropertyPrimitive> progress; + sp<uirenderer::CanvasPropertyPrimitive> turbulencePhase; + SkColor color; + sp<uirenderer::CanvasPropertyPaint> paint; + SkRuntimeShaderBuilder effectBuilder; +}; + +class AnimatedRippleDrawable { public: - AnimatedRipple(uirenderer::CanvasPropertyPrimitive* x, uirenderer::CanvasPropertyPrimitive* y, - uirenderer::CanvasPropertyPrimitive* radius, - uirenderer::CanvasPropertyPaint* paint, - uirenderer::CanvasPropertyPrimitive* progress, - uirenderer::CanvasPropertyPrimitive* turbulencePhase, - const SkRuntimeShaderBuilder& effectBuilder) - : mX(x) - , mY(y) - , mRadius(radius) - , mPaint(paint) - , mProgress(progress) - , mTurbulencePhase(turbulencePhase) - , mRuntimeEffectBuilder(effectBuilder) {} + static void draw(SkCanvas* canvas, const RippleDrawableParams& params) { + auto& effectBuilder = const_cast<SkRuntimeShaderBuilder&>(params.effectBuilder); -protected: - virtual SkRect onGetBounds() override { - const float x = mX->value; - const float y = mY->value; - const float radius = mRadius->value; - return SkRect::MakeLTRB(x - radius, y - radius, x + radius, y + radius); - } - virtual void onDraw(SkCanvas* canvas) override { - setUniform2f("in_origin", mX->value, mY->value); - setUniform("in_radius", mRadius); - setUniform("in_progress", mProgress); - setUniform("in_turbulencePhase", mTurbulencePhase); + setUniform2f(effectBuilder, "in_origin", params.x->value, params.y->value); + setUniform(effectBuilder, "in_radius", params.radius); + setUniform(effectBuilder, "in_progress", params.progress); + setUniform(effectBuilder, "in_turbulencePhase", params.turbulencePhase); + + SkRuntimeShaderBuilder::BuilderUniform uniform = effectBuilder.uniform("in_color"); + if (uniform.fVar != nullptr) { + uniform = SkV4{SkColorGetR(params.color) / 255.0f, SkColorGetG(params.color) / 255.0f, + SkColorGetB(params.color) / 255.0f, SkColorGetA(params.color) / 255.0f}; + } + + const float CIRCLE_X_1 = 0.01 * cos(SCALE * 0.55); + const float CIRCLE_Y_1 = 0.01 * sin(SCALE * 0.55); + const float CIRCLE_X_2 = -0.0066 * cos(SCALE * 0.45); + const float CIRCLE_Y_2 = -0.0066 * sin(SCALE * 0.45); + const float CIRCLE_X_3 = -0.0066 * cos(SCALE * 0.35); + const float CIRCLE_Y_3 = -0.0066 * sin(SCALE * 0.35); // // Keep in sync with: // frameworks/base/graphics/java/android/graphics/drawable/RippleShader.java // - const float turbulencePhase = mTurbulencePhase->value; - setUniform2f("in_tCircle1", SCALE * 0.5 + (turbulencePhase * CIRCLE_X_1), + const float turbulencePhase = params.turbulencePhase->value; + setUniform2f(effectBuilder, "in_tCircle1", SCALE * 0.5 + (turbulencePhase * CIRCLE_X_1), SCALE * 0.5 + (turbulencePhase * CIRCLE_Y_1)); - setUniform2f("in_tCircle2", SCALE * 0.2 + (turbulencePhase * CIRCLE_X_2), + setUniform2f(effectBuilder, "in_tCircle2", SCALE * 0.2 + (turbulencePhase * CIRCLE_X_2), SCALE * 0.2 + (turbulencePhase * CIRCLE_Y_2)); - setUniform2f("in_tCircle3", SCALE + (turbulencePhase * CIRCLE_X_3), + setUniform2f(effectBuilder, "in_tCircle3", SCALE + (turbulencePhase * CIRCLE_X_3), SCALE + (turbulencePhase * CIRCLE_Y_3)); const float rotation1 = turbulencePhase * PI_ROTATE_RIGHT + 1.7 * PI; - setUniform2f("in_tRotation1", cos(rotation1), sin(rotation1)); + setUniform2f(effectBuilder, "in_tRotation1", cos(rotation1), sin(rotation1)); const float rotation2 = turbulencePhase * PI_ROTATE_LEFT + 2 * PI; - setUniform2f("in_tRotation2", cos(rotation2), sin(rotation2)); + setUniform2f(effectBuilder, "in_tRotation2", cos(rotation2), sin(rotation2)); const float rotation3 = turbulencePhase * PI_ROTATE_RIGHT + 2.75 * PI; - setUniform2f("in_tRotation3", cos(rotation3), sin(rotation3)); + setUniform2f(effectBuilder, "in_tRotation3", cos(rotation3), sin(rotation3)); - SkPaint paint = mPaint->value; - paint.setShader(mRuntimeEffectBuilder.makeShader(nullptr, false)); - canvas->drawCircle(mX->value, mY->value, mRadius->value, paint); + params.paint->value.setShader(effectBuilder.makeShader(nullptr, false)); + canvas->drawCircle(params.x->value, params.y->value, params.radius->value, + params.paint->value); } private: - sp<uirenderer::CanvasPropertyPrimitive> mX; - sp<uirenderer::CanvasPropertyPrimitive> mY; - sp<uirenderer::CanvasPropertyPrimitive> mRadius; - sp<uirenderer::CanvasPropertyPaint> mPaint; - sp<uirenderer::CanvasPropertyPrimitive> mProgress; - sp<uirenderer::CanvasPropertyPrimitive> mTurbulencePhase; - SkRuntimeShaderBuilder mRuntimeEffectBuilder; - - const float PI = 3.1415926535897932384626; - const float PI_ROTATE_RIGHT = PI * 0.0078125; - const float PI_ROTATE_LEFT = PI * -0.0078125; - const float SCALE = 1.5; - const float CIRCLE_X_1 = 0.01 * cos(SCALE * 0.55); - const float CIRCLE_Y_1 = 0.01 * sin(SCALE * 0.55); - const float CIRCLE_X_2 = -0.0066 * cos(SCALE * 0.45); - const float CIRCLE_Y_2 = -0.0066 * sin(SCALE * 0.45); - const float CIRCLE_X_3 = -0.0066 * cos(SCALE * 0.35); - const float CIRCLE_Y_3 = -0.0066 * sin(SCALE * 0.35); - - virtual void setUniform(std::string name, sp<uirenderer::CanvasPropertyPrimitive> property) { - SkRuntimeShaderBuilder::BuilderUniform uniform = - mRuntimeEffectBuilder.uniform(name.c_str()); + static constexpr float PI = 3.1415926535897932384626; + static constexpr float PI_ROTATE_RIGHT = PI * 0.0078125; + static constexpr float PI_ROTATE_LEFT = PI * -0.0078125; + static constexpr float SCALE = 1.5; + + static void setUniform(SkRuntimeShaderBuilder& effectBuilder, std::string name, + sp<uirenderer::CanvasPropertyPrimitive> property) { + SkRuntimeShaderBuilder::BuilderUniform uniform = effectBuilder.uniform(name.c_str()); if (uniform.fVar != nullptr) { uniform = property->value; } } - virtual void setUniform2f(std::string name, float a, float b) { - SkRuntimeShaderBuilder::BuilderUniform uniform = - mRuntimeEffectBuilder.uniform(name.c_str()); + static void setUniform2f(SkRuntimeShaderBuilder& effectBuilder, std::string name, float a, + float b) { + SkRuntimeShaderBuilder::BuilderUniform uniform = effectBuilder.uniform(name.c_str()); if (uniform.fVar != nullptr) { uniform = SkV2{a, b}; } diff --git a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp index 77d99a67b602..509884e23c26 100644 --- a/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp +++ b/libs/hwui/pipeline/skia/RenderNodeDrawable.cpp @@ -16,6 +16,7 @@ #include "RenderNodeDrawable.h" #include <SkPaintFilterCanvas.h> +#include "StretchMask.h" #include "RenderNode.h" #include "SkiaDisplayList.h" #include "TransformCanvas.h" @@ -170,11 +171,16 @@ void RenderNodeDrawable::forceDraw(SkCanvas* canvas) const { displayList->mProjectedOutline = nullptr; } +static bool stretchNeedsLayer(const LayerProperties& properties) { + return Properties::stretchEffectBehavior == StretchEffectBehavior::Shader && + !properties.getStretchEffect().isEmpty(); +} + static bool layerNeedsPaint(const sk_sp<SkImage>& snapshotImage, const LayerProperties& properties, float alphaMultiplier, SkPaint* paint) { if (alphaMultiplier < 1.0f || properties.alpha() < 255 || properties.xferMode() != SkBlendMode::kSrcOver || properties.getColorFilter() != nullptr || - properties.getImageFilter() != nullptr || !properties.getStretchEffect().isEmpty()) { + properties.getImageFilter() != nullptr || stretchNeedsLayer(properties)) { paint->setAlpha(properties.alpha() * alphaMultiplier); paint->setBlendMode(properties.xferMode()); paint->setColorFilter(sk_ref_sp(properties.getColorFilter())); @@ -245,17 +251,38 @@ void RenderNodeDrawable::drawContent(SkCanvas* canvas) const { "SurfaceID|%" PRId64, renderNode->uniqueId()).c_str(), nullptr); } - if (renderNode->hasHolePunches()) { - TransformCanvas transformCanvas(canvas); - displayList->draw(&transformCanvas); - } - const StretchEffect& stretch = properties.layerProperties().getStretchEffect(); - if (stretch.isEmpty()) { + if (stretch.isEmpty() || + Properties::stretchEffectBehavior != StretchEffectBehavior::Shader) { + // If we don't have any stretch effects, issue the filtered + // canvas draw calls to make sure we still punch a hole + // with the same canvas transformation + clip into the target + // canvas then draw the layer on top + if (renderNode->hasHolePunches()) { + TransformCanvas transformCanvas(canvas, SkBlendMode::kClear); + displayList->draw(&transformCanvas); + } canvas->drawImageRect(snapshotImage, bounds, bounds, sampling, &paint, SkCanvas::kStrict_SrcRectConstraint); } else { - sk_sp<SkShader> stretchShader = stretch.getShader(snapshotImage); + // If we do have stretch effects and have hole punches, + // then create a mask and issue the filtered draw calls to + // get the corresponding hole punches. + // Then apply the stretch to the mask and draw the mask to + // the destination + if (renderNode->hasHolePunches()) { + GrRecordingContext* context = canvas->recordingContext(); + StretchMask& stretchMask = renderNode->getStretchMask(); + stretchMask.draw(context, + stretch, + bounds, + displayList, + canvas); + } + + sk_sp<SkShader> stretchShader = stretch.getShader(bounds.width(), + bounds.height(), + snapshotImage); paint.setShader(stretchShader); canvas->drawRect(bounds, paint); } @@ -305,6 +332,13 @@ void RenderNodeDrawable::setViewProperties(const RenderProperties& properties, S canvas->concat(*properties.getTransformMatrix()); } } + if (Properties::stretchEffectBehavior == StretchEffectBehavior::LinearScale) { + const StretchEffect& stretch = properties.layerProperties().getStretchEffect(); + if (!stretch.isEmpty()) { + canvas->concat( + stretch.makeLinearStretch(properties.getWidth(), properties.getHeight())); + } + } const bool isLayer = properties.effectiveLayerType() != LayerType::None; int clipFlags = properties.getClippingFlags(); if (properties.getAlpha() < 1) { diff --git a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp index 9e73f04c32ab..76c4a03d3a91 100644 --- a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp +++ b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.cpp @@ -109,15 +109,8 @@ void SkiaRecordingCanvas::drawCircle(uirenderer::CanvasPropertyPrimitive* x, drawDrawable(mDisplayList->allocateDrawable<AnimatedCircle>(x, y, radius, paint)); } -void SkiaRecordingCanvas::drawRipple(uirenderer::CanvasPropertyPrimitive* x, - uirenderer::CanvasPropertyPrimitive* y, - uirenderer::CanvasPropertyPrimitive* radius, - uirenderer::CanvasPropertyPaint* paint, - uirenderer::CanvasPropertyPrimitive* progress, - uirenderer::CanvasPropertyPrimitive* turbulencePhase, - const SkRuntimeShaderBuilder& effectBuilder) { - drawDrawable(mDisplayList->allocateDrawable<AnimatedRipple>(x, y, radius, paint, progress, - turbulencePhase, effectBuilder)); +void SkiaRecordingCanvas::drawRipple(const skiapipeline::RippleDrawableParams& params) { + mRecorder.drawRippleDrawable(params); } void SkiaRecordingCanvas::enableZ(bool enableZ) { diff --git a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.h b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.h index 4deb3b9c47c8..1445a27e4248 100644 --- a/libs/hwui/pipeline/skia/SkiaRecordingCanvas.h +++ b/libs/hwui/pipeline/skia/SkiaRecordingCanvas.h @@ -20,6 +20,7 @@ #include "ReorderBarrierDrawables.h" #include "SkiaCanvas.h" #include "SkiaDisplayList.h" +#include "pipeline/skia/AnimatedDrawables.h" namespace android { namespace uirenderer { @@ -70,13 +71,7 @@ public: uirenderer::CanvasPropertyPrimitive* y, uirenderer::CanvasPropertyPrimitive* radius, uirenderer::CanvasPropertyPaint* paint) override; - virtual void drawRipple(uirenderer::CanvasPropertyPrimitive* x, - uirenderer::CanvasPropertyPrimitive* y, - uirenderer::CanvasPropertyPrimitive* radius, - uirenderer::CanvasPropertyPaint* paint, - uirenderer::CanvasPropertyPrimitive* progress, - uirenderer::CanvasPropertyPrimitive* turbulencePhase, - const SkRuntimeShaderBuilder& effectBuilder) override; + virtual void drawRipple(const RippleDrawableParams& params) override; virtual void drawVectorDrawable(VectorDrawableRoot* vectorDrawable) override; diff --git a/libs/hwui/pipeline/skia/StretchMask.cpp b/libs/hwui/pipeline/skia/StretchMask.cpp new file mode 100644 index 000000000000..2bbd8a4fa028 --- /dev/null +++ b/libs/hwui/pipeline/skia/StretchMask.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "StretchMask.h" +#include "SkSurface.h" +#include "SkCanvas.h" +#include "TransformCanvas.h" +#include "SkiaDisplayList.h" + +using android::uirenderer::StretchMask; + +void StretchMask::draw(GrRecordingContext* context, + const StretchEffect& stretch, + const SkRect& bounds, + skiapipeline::SkiaDisplayList* displayList, + SkCanvas* canvas) { + float width = bounds.width(); + float height = bounds.height(); + if (mMaskSurface == nullptr || mMaskSurface->width() != width || + mMaskSurface->height() != height) { + // Create a new surface if we don't have one or our existing size does + // not match. + mMaskSurface = SkSurface::MakeRenderTarget( + context, + SkBudgeted::kYes, + SkImageInfo::Make( + width, + height, + SkColorType::kAlpha_8_SkColorType, + SkAlphaType::kPremul_SkAlphaType) + ); + mIsDirty = true; + } + + if (mIsDirty) { + SkCanvas* maskCanvas = mMaskSurface->getCanvas(); + maskCanvas->drawColor(0, SkBlendMode::kClear); + TransformCanvas transformCanvas(maskCanvas, SkBlendMode::kSrcOver); + displayList->draw(&transformCanvas); + } + + sk_sp<SkImage> maskImage = mMaskSurface->makeImageSnapshot(); + sk_sp<SkShader> maskStretchShader = stretch.getShader( + width, height, maskImage); + + SkPaint maskPaint; + maskPaint.setShader(maskStretchShader); + maskPaint.setBlendMode(SkBlendMode::kDstOut); + canvas->drawRect(bounds, maskPaint); + + mIsDirty = false; +}
\ No newline at end of file diff --git a/libs/hwui/pipeline/skia/StretchMask.h b/libs/hwui/pipeline/skia/StretchMask.h new file mode 100644 index 000000000000..dc698b8e57ff --- /dev/null +++ b/libs/hwui/pipeline/skia/StretchMask.h @@ -0,0 +1,62 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once + +#include "GrRecordingContext.h" +#include <effects/StretchEffect.h> +#include <SkSurface.h> +#include "SkiaDisplayList.h" + +namespace android::uirenderer { + +/** + * Helper class used to create/cache an SkSurface instance + * to create a mask that is used to draw a stretched hole punch + */ +class StretchMask { + public: + /** + * Release the current surface used for the stretch mask + */ + void clear() { + mMaskSurface = nullptr; + } + + /** + * Reset the dirty flag to re-create the stretch mask on the next draw + * pass + */ + void markDirty() { + mIsDirty = true; + } + + /** + * Draws the stretch mask into the given target canvas + * @param context GrRecordingContext used to create the surface if necessary + * @param stretch StretchEffect to apply to the mask + * @param bounds Target bounds to draw into the given canvas + * @param displayList List of drawing commands to render into the stretch mask + * @param canvas Target canvas to draw the mask into + */ + void draw(GrRecordingContext* context, + const StretchEffect& stretch, const SkRect& bounds, + skiapipeline::SkiaDisplayList* displayList, SkCanvas* canvas); +private: + sk_sp<SkSurface> mMaskSurface; + bool mIsDirty = true; +}; + +} diff --git a/libs/hwui/pipeline/skia/TransformCanvas.cpp b/libs/hwui/pipeline/skia/TransformCanvas.cpp index a6e4c4cf9ca7..6777c00c4655 100644 --- a/libs/hwui/pipeline/skia/TransformCanvas.cpp +++ b/libs/hwui/pipeline/skia/TransformCanvas.cpp @@ -28,8 +28,8 @@ void TransformCanvas::onDrawAnnotation(const SkRect& rect, const char* key, SkDa SkRRect roundRect = SkRRect::MakeRectXY(rect, radiusX, radiusY); SkPaint paint; - paint.setColor(0); - paint.setBlendMode(SkBlendMode::kClear); + paint.setColor(SkColors::kBlack); + paint.setBlendMode(mHolePunchBlendMode); mWrappedCanvas->drawRRect(roundRect, paint); } } diff --git a/libs/hwui/pipeline/skia/TransformCanvas.h b/libs/hwui/pipeline/skia/TransformCanvas.h index 47f77f107441..685b71d017e9 100644 --- a/libs/hwui/pipeline/skia/TransformCanvas.h +++ b/libs/hwui/pipeline/skia/TransformCanvas.h @@ -17,10 +17,12 @@ #include <include/core/SkCanvas.h> #include "SkPaintFilterCanvas.h" +#include <effects/StretchEffect.h> class TransformCanvas : public SkPaintFilterCanvas { public: - TransformCanvas(SkCanvas* target) : SkPaintFilterCanvas(target), mWrappedCanvas(target) {} + TransformCanvas(SkCanvas* target, SkBlendMode blendmode) : + SkPaintFilterCanvas(target), mWrappedCanvas(target), mHolePunchBlendMode(blendmode) {} protected: bool onFilter(SkPaint& paint) const override; @@ -32,4 +34,5 @@ protected: private: // We don't own the canvas so just maintain a raw pointer to it SkCanvas* mWrappedCanvas; + const SkBlendMode mHolePunchBlendMode; }; diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp index 04aa1cb91492..3421e01b1585 100644 --- a/libs/hwui/renderthread/RenderThread.cpp +++ b/libs/hwui/renderthread/RenderThread.cpp @@ -275,7 +275,7 @@ void RenderThread::requireVkContext() { void RenderThread::initGrContextOptions(GrContextOptions& options) { options.fPreferExternalImagesOverES3 = true; options.fDisableDistanceFieldPaths = true; - if (android::base::GetBoolProperty(PROPERTY_REDUCE_OPS_TASK_SPLITTING, false)) { + if (android::base::GetBoolProperty(PROPERTY_REDUCE_OPS_TASK_SPLITTING, true)) { options.fReduceOpsTaskSplitting = GrContextOptions::Enable::kYes; } else { options.fReduceOpsTaskSplitting = GrContextOptions::Enable::kNo; diff --git a/libs/hwui/tests/unit/CanvasOpTests.cpp b/libs/hwui/tests/unit/CanvasOpTests.cpp index a718d46c735f..2cf3456694b0 100644 --- a/libs/hwui/tests/unit/CanvasOpTests.cpp +++ b/libs/hwui/tests/unit/CanvasOpTests.cpp @@ -31,6 +31,7 @@ using namespace android; using namespace android::uirenderer; +using namespace android::uirenderer::skiapipeline; using namespace android::uirenderer::test; // We lazy @@ -569,6 +570,33 @@ TEST(CanvasOp, simpleDrawPicture) { EXPECT_EQ(2, canvas.sumTotalDrawCalls()); } +TEST(CanvasOp, simpleDrawRipple) { + CanvasOpBuffer buffer; + EXPECT_EQ(buffer.size(), 0); + + const char* sksl = + "half4 main(float2 coord) {" + " return half4(1.);" + "}"; + auto [effect, error] = SkRuntimeEffect::MakeForShader(SkString(sksl)); + auto params = RippleDrawableParams{ + .x = sp<CanvasPropertyPrimitive>(new CanvasPropertyPrimitive(100)), + .y = sp<CanvasPropertyPrimitive>(new CanvasPropertyPrimitive(200)), + .radius = sp<CanvasPropertyPrimitive>(new CanvasPropertyPrimitive(50)), + .progress = sp<CanvasPropertyPrimitive>(new CanvasPropertyPrimitive(0.5)), + .turbulencePhase = sp<CanvasPropertyPrimitive>(new CanvasPropertyPrimitive(1)), + .color = 0xff00ff, + .paint = sp<CanvasPropertyPaint>(new CanvasPropertyPaint(SkPaint{})), + .effectBuilder = SkRuntimeShaderBuilder(effect)}; + buffer.push<Op::DrawRippleDrawable>({.params = params}); + + CallCountingCanvas canvas; + EXPECT_EQ(0, canvas.sumTotalDrawCalls()); + rasterizeCanvasBuffer(buffer, &canvas); + EXPECT_EQ(1, canvas.drawOvalCount); + EXPECT_EQ(1, canvas.sumTotalDrawCalls()); +} + TEST(CanvasOp, immediateRendering) { auto canvas = std::make_shared<CallCountingCanvas>(); diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 5952479da702..7c2f5408fffb 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -346,6 +346,43 @@ public class LocationManager { */ public static final String EXTRA_GNSS_CAPABILITIES = "android.location.extra.GNSS_CAPABILITIES"; + /** + * Broadcast intent action for Settings app to inject a footer at the bottom of location + * settings. This is for use only by apps that are included in the system image. + * + * <p>To inject a footer to location settings, you must declare a broadcast receiver for + * this action in the manifest: + * <pre> + * <receiver android:name="com.example.android.footer.MyFooterInjector"> + * <intent-filter> + * <action android:name="com.android.settings.location.INJECT_FOOTER" /> + * </intent-filter> + * <meta-data + * android:name="com.android.settings.location.FOOTER_STRING" + * android:resource="@string/my_injected_footer_string" /> + * </receiver> + * </pre> + * + * <p>This broadcast receiver will never actually be invoked. See also + * {#METADATA_SETTINGS_FOOTER_STRING}. + * + * @hide + */ + public static final String SETTINGS_FOOTER_DISPLAYED_ACTION = + "com.android.settings.location.DISPLAYED_FOOTER"; + + /** + * Metadata name for {@link LocationManager#SETTINGS_FOOTER_DISPLAYED_ACTION} broadcast + * receivers to specify a string resource id as location settings footer text. This is for use + * only by apps that are included in the system image. + * + * <p>See {@link #SETTINGS_FOOTER_DISPLAYED_ACTION} for more detail on how to use. + * + * @hide + */ + public static final String METADATA_SETTINGS_FOOTER_STRING = + "com.android.settings.location.FOOTER_STRING"; + private static final long MAX_SINGLE_LOCATION_TIMEOUT_MS = 30 * 1000; private static final String CACHE_KEY_LOCATION_ENABLED_PROPERTY = diff --git a/location/java/android/location/SatellitePvt.java b/location/java/android/location/SatellitePvt.java index 27c7eda1dae3..1456f74ef6d4 100644 --- a/location/java/android/location/SatellitePvt.java +++ b/location/java/android/location/SatellitePvt.java @@ -28,6 +28,19 @@ import android.os.Parcelable; * same signal transmission time {@link GnssMeasurement#getReceivedSvTimeNanos()}. * * <p>The position and velocity must be in ECEF coordinates. + * + * <p>If {@link GnssMeasurement#getSatellitePvt()} is derived from Broadcast ephemeris, then the + * position is already w.r.t. the antenna phase center. However, if + * {@link GnssMeasurement#getSatellitePvt()} is derived from other modeled orbits, such as + * long-term orbits, or precise orbits, then the orbits may have been computed w.r.t. + * the satellite center of mass, and then GNSS vendors are expected to correct for the effect + * on different phase centers (can differ by meters) of different GNSS signals (e.g. L1, L5) + * on the reported satellite position. Accordingly, we might observe a different satellite + * position reported for L1 GnssMeasurement struct compared to L5 GnssMeasurement struct. + * + * <p>If {@link GnssMeasurement#getReceivedSvTimeNanos()} is not fully decoded, + * {@link GnssMeasurement#getSatellitePvt()} could still be reported and + * {@link GnssMeasurement#getReceivedSvTimeUncertaintyNanos()} would be used to provide confidence. * @hide */ @SystemApi @@ -203,7 +216,7 @@ public final class SatellitePvt implements Parcelable { /** * Returns the signal in Space User Range Error Rate (URE Rate) (meters per second). * - * It covers satellite velocity error and Satellite clock drift + * <p>It covers satellite velocity error and Satellite clock drift * projected to the pseudorange rate measurements. */ @FloatRange(from = 0.0f, fromInclusive = false) @@ -272,6 +285,14 @@ public final class SatellitePvt implements Parcelable { /** * Returns the satellite hardware code bias of the reported code type w.r.t * ionosphere-free measurement in meters. + * + * <p>When broadcast ephemeris is used, this is the offset caused + * by the satellite hardware delays at different frequencies; + * e.g. in IS-GPS-705D, this term is described in Section + * 20.3.3.3.1.2.1. + * + * <p>For GPS this term is ~10ns, and affects the satellite position + * computation by less than a millimeter. */ @FloatRange() public double getHardwareCodeBiasMeters() { @@ -282,6 +303,17 @@ public final class SatellitePvt implements Parcelable { * Returns the satellite time correction for ionospheric-free signal measurement * (meters). The satellite clock correction for the given signal type * = satTimeCorrectionMeters - satHardwareCodeBiasMeters. + * + * <p>When broadcast ephemeris is used, this is the offset modeled in the + * clock terms broadcast over the air by the satellites; + * e.g. in IS-GPS-200H, Section 20.3.3.3.3.1, this term is + * ∆tsv = af0 + af1(t - toc) + af2(t - toc)^2 + ∆tr. + * + * <p>If another source of ephemeris is used for SatellitePvt, then the + * equivalent value of satTimeCorrection must be provided. + * + * <p>For GPS this term is ~1ms, and affects the satellite position + * computation by ~1m. */ @FloatRange() public double getTimeCorrectionMeters() { diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java index 8fee768ecf1e..c8412f214cfa 100644 --- a/media/java/android/media/AudioFormat.java +++ b/media/java/android/media/AudioFormat.java @@ -518,13 +518,13 @@ public final class AudioFormat implements Parcelable { * @hide */ // never unhide - public static final int SAMPLE_RATE_HZ_MIN = 4000; + public static final int SAMPLE_RATE_HZ_MIN = AudioSystem.SAMPLE_RATE_HZ_MIN; /** Maximum value for sample rate, * assuming AudioTrack and AudioRecord share the same limitations. * @hide */ // never unhide - public static final int SAMPLE_RATE_HZ_MAX = 192000; + public static final int SAMPLE_RATE_HZ_MAX = AudioSystem.SAMPLE_RATE_HZ_MAX; /** Sample rate will be a route-dependent value. * For AudioTrack, it is usually the sink sample rate, * and for AudioRecord it is usually the source sample rate. diff --git a/media/java/android/media/AudioPlaybackConfiguration.java b/media/java/android/media/AudioPlaybackConfiguration.java index ede1dbf47d36..d18d7e4238e2 100644 --- a/media/java/android/media/AudioPlaybackConfiguration.java +++ b/media/java/android/media/AudioPlaybackConfiguration.java @@ -267,14 +267,18 @@ public final class AudioPlaybackConfiguration implements Parcelable { final AudioPlaybackConfiguration anonymCopy = new AudioPlaybackConfiguration(in.mPlayerIId); anonymCopy.mPlayerState = in.mPlayerState; // do not reuse the full attributes: only usage, content type and public flags are allowed - anonymCopy.mPlayerAttr = new AudioAttributes.Builder() - .setUsage(in.mPlayerAttr.getUsage()) + AudioAttributes.Builder builder = new AudioAttributes.Builder() .setContentType(in.mPlayerAttr.getContentType()) .setFlags(in.mPlayerAttr.getFlags()) .setAllowedCapturePolicy( in.mPlayerAttr.getAllowedCapturePolicy() == ALLOW_CAPTURE_BY_ALL - ? ALLOW_CAPTURE_BY_ALL : ALLOW_CAPTURE_BY_NONE) - .build(); + ? ALLOW_CAPTURE_BY_ALL : ALLOW_CAPTURE_BY_NONE); + if (AudioAttributes.isSystemUsage(in.mPlayerAttr.getSystemUsage())) { + builder.setSystemUsage(in.mPlayerAttr.getSystemUsage()); + } else { + builder.setUsage(in.mPlayerAttr.getUsage()); + } + anonymCopy.mPlayerAttr = builder.build(); anonymCopy.mDeviceId = in.mDeviceId; // anonymized data anonymCopy.mPlayerType = PLAYER_TYPE_UNKNOWN; diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java index ce9d7e3c8d01..39b7922017e3 100644 --- a/media/java/android/media/AudioSystem.java +++ b/media/java/android/media/AudioSystem.java @@ -105,11 +105,31 @@ public class AudioSystem */ public static final int NUM_STREAMS = 5; + /* + * Framework static final constants that are primitives or Strings + * accessed by CTS tests or internal applications must be set from methods + * (or in a static block) to prevent Java compile-time replacement. + * We set them from methods so they are read from the device framework. + * Do not un-hide or change to a numeric literal. + */ + /** Maximum value for AudioTrack channel count - * @hide public for MediaCode only, do not un-hide or change to a numeric literal + * @hide + */ + public static final int OUT_CHANNEL_COUNT_MAX = native_getMaxChannelCount(); + private static native int native_getMaxChannelCount(); + + /** Maximum value for sample rate, used by AudioFormat. + * @hide + */ + public static final int SAMPLE_RATE_HZ_MAX = native_getMaxSampleRate(); + private static native int native_getMaxSampleRate(); + + /** Minimum value for sample rate, used by AudioFormat. + * @hide */ - public static final int OUT_CHANNEL_COUNT_MAX = native_get_FCC_8(); - private static native int native_get_FCC_8(); + public static final int SAMPLE_RATE_HZ_MIN = native_getMinSampleRate(); + private static native int native_getMinSampleRate(); // Expose only the getter method publicly so we can change it in the future private static final int NUM_STREAM_TYPES = 12; diff --git a/media/java/android/media/CamcorderProfile.java b/media/java/android/media/CamcorderProfile.java index f6f0a590f054..b4fdcb9ba2cf 100644 --- a/media/java/android/media/CamcorderProfile.java +++ b/media/java/android/media/CamcorderProfile.java @@ -602,39 +602,7 @@ public class CamcorderProfile } catch (NumberFormatException e) { return null; } - CamcorderProfile cp = native_get_camcorder_profile(id, quality); - if (cp == null) { - return null; - }; - - EncoderProfiles.AudioProfile[] audioProfiles; - // timelapse profiles do not list audio profiles - if (cp.quality >= QUALITY_TIME_LAPSE_LIST_START - && cp.quality <= QUALITY_TIME_LAPSE_LIST_END) { - audioProfiles = new EncoderProfiles.AudioProfile[] { }; - } else { - audioProfiles = new EncoderProfiles.AudioProfile[] { - new EncoderProfiles.AudioProfile( - cp.audioCodec, - cp.audioChannels, - cp.audioSampleRate, - cp.audioBitRate) - }; - } - - return new EncoderProfiles( - cp.duration, - cp.fileFormat, - new EncoderProfiles.VideoProfile[] { - new EncoderProfiles.VideoProfile( - cp.videoCodec, - cp.videoFrameWidth, - cp.videoFrameHeight, - cp.videoFrameRate, - cp.videoBitRate, - 0 /* TODO: get profile */) - }, - audioProfiles); + return native_get_camcorder_profiles(id, quality); } /** @@ -743,6 +711,8 @@ public class CamcorderProfile @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private static native final CamcorderProfile native_get_camcorder_profile( int cameraId, int quality); + private static native final EncoderProfiles native_get_camcorder_profiles( + int cameraId, int quality); private static native final boolean native_has_camcorder_profile( int cameraId, int quality); } diff --git a/media/java/android/media/EncoderProfiles.java b/media/java/android/media/EncoderProfiles.java index d9eabbd4903f..ac8c65e69e72 100644 --- a/media/java/android/media/EncoderProfiles.java +++ b/media/java/android/media/EncoderProfiles.java @@ -181,7 +181,7 @@ public final class EncoderProfiles /** * The video encoder profile being used for the video track. * <p> - * This value is 0 if there is no profile defined for the video codec. + * This value is negative if there is no profile defined for the video codec. * * @see MediaRecorder#setVideoEncodingProfileLevel * @see MediaFormat#KEY_PROFILE @@ -293,7 +293,7 @@ public final class EncoderProfiles /** * The audio encoder profile being used for the audio track * <p> - * This value is 0 if there is no profile defined for the audio codec. + * This value is negative if there is no profile defined for the audio codec. * @see MediaFormat#KEY_PROFILE */ public int getProfile() { @@ -304,7 +304,7 @@ public final class EncoderProfiles } else if (codec == MediaRecorder.AudioEncoder.AAC_ELD) { return MediaCodecInfo.CodecProfileLevel.AACObjectELD; } - return 0; + return profile; } @@ -313,17 +313,20 @@ public final class EncoderProfiles int codec, int channels, int sampleRate, - int bitrate) { + int bitrate, + int profile) { this.codec = codec; this.channels = channels; this.sampleRate = sampleRate; this.bitrate = bitrate; + this.profile = profile; } private int codec; private int channels; private int sampleRate; private int bitrate; + private int profile; // this contains the profile if codec itself does not } private int durationSecs; diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java index 480e2eaaf40f..4c8a8fa4a554 100644 --- a/media/java/android/media/MediaRouter.java +++ b/media/java/android/media/MediaRouter.java @@ -78,6 +78,7 @@ import java.util.concurrent.CopyOnWriteArrayList; public class MediaRouter { private static final String TAG = "MediaRouter"; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); + private static final boolean DEBUG_RESTORE_ROUTE = true; static class Static implements DisplayManager.DisplayListener { final String mPackageName; @@ -261,8 +262,8 @@ public class MediaRouter { if (audioRoutesChanged) { Log.v(TAG, "Audio routes updated: " + newRoutes + ", a2dp=" + isBluetoothA2dpOn()); - if (mSelectedRoute == null || mSelectedRoute == mDefaultAudioVideo - || mSelectedRoute == mBluetoothA2dpRoute) { + if (mSelectedRoute == null || mSelectedRoute.isDefault() + || mSelectedRoute.isBluetooth()) { if (forceUseDefaultRoute || mBluetoothA2dpRoute == null) { selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mDefaultAudioVideo, false); } else { @@ -665,12 +666,16 @@ public class MediaRouter { // Skip restoring route if the selected route is not a system audio route, // MediaRouter is initializing, or mClient was changed. if (Client.this != mClient || mSelectedRoute == null - || (mSelectedRoute != mDefaultAudioVideo - && mSelectedRoute != mBluetoothA2dpRoute)) { + || (!mSelectedRoute.isDefault() && !mSelectedRoute.isBluetooth())) { return; } - if (DEBUG) { - Log.d(TAG, "onRestoreRoute() : route=" + mSelectedRoute); + if (DEBUG_RESTORE_ROUTE) { + if (mSelectedRoute.isDefault() && mBluetoothA2dpRoute != null) { + Log.d(TAG, "onRestoreRoute() : selectedRoute=" + mSelectedRoute + + ", a2dpRoute=" + mBluetoothA2dpRoute); + } else { + Log.d(TAG, "onRestoreRoute() : route=" + mSelectedRoute); + } } mSelectedRoute.select(); }); @@ -690,9 +695,12 @@ public class MediaRouter { @Override public void onGlobalA2dpChanged(boolean a2dpOn) { mHandler.post(() -> { - if (mSelectedRoute == mDefaultAudioVideo && a2dpOn) { + if (mSelectedRoute == null) { + return; + } + if (mSelectedRoute.isDefault() && a2dpOn) { setSelectedRoute(mBluetoothA2dpRoute, /*explicit=*/false); - } else if (mSelectedRoute == mBluetoothA2dpRoute && !a2dpOn) { + } else if (mSelectedRoute.isBluetooth() && !a2dpOn) { setSelectedRoute(mDefaultAudioVideo, /*explicit=*/false); } }); @@ -1057,8 +1065,8 @@ public class MediaRouter { final RouteInfo oldRoute = sStatic.mSelectedRoute; final RouteInfo currentSystemRoute = sStatic.isBluetoothA2dpOn() ? sStatic.mBluetoothA2dpRoute : sStatic.mDefaultAudioVideo; - boolean wasDefaultOrBluetoothRoute = (oldRoute == sStatic.mDefaultAudioVideo - || oldRoute == sStatic.mBluetoothA2dpRoute); + boolean wasDefaultOrBluetoothRoute = (oldRoute != null) + && (oldRoute.isDefault() || oldRoute.isBluetooth()); if (oldRoute == route && (!wasDefaultOrBluetoothRoute || route == currentSystemRoute)) { return; @@ -1070,14 +1078,17 @@ public class MediaRouter { return; } - final RouteInfo btRoute = sStatic.mBluetoothA2dpRoute; - if (sStatic.isPlaybackActive() && btRoute != null && (types & ROUTE_TYPE_LIVE_AUDIO) != 0 - && (route == btRoute || route == sStatic.mDefaultAudioVideo)) { + if (sStatic.isPlaybackActive() && sStatic.mBluetoothA2dpRoute != null + && (types & ROUTE_TYPE_LIVE_AUDIO) != 0 + && (route.isBluetooth() || route.isDefault())) { try { - sStatic.mAudioService.setBluetoothA2dpOn(route == btRoute); + sStatic.mAudioService.setBluetoothA2dpOn(route.isBluetooth()); } catch (RemoteException e) { Log.e(TAG, "Error changing Bluetooth A2DP state", e); } + } else if (DEBUG_RESTORE_ROUTE) { + Log.i(TAG, "Skip setBluetoothA2dpOn(): types=" + types + ", isPlaybackActive()=" + + sStatic.isPlaybackActive() + ", BT route=" + sStatic.mBluetoothA2dpRoute); } final WifiDisplay activeDisplay = @@ -1118,7 +1129,8 @@ public class MediaRouter { static void selectDefaultRouteStatic() { // TODO: Be smarter about the route types here; this selects for all valid. - if (sStatic.mSelectedRoute != sStatic.mBluetoothA2dpRoute && sStatic.isBluetoothA2dpOn()) { + if (sStatic.isBluetoothA2dpOn() && sStatic.mSelectedRoute != null + && !sStatic.mSelectedRoute.isBluetooth()) { selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mBluetoothA2dpRoute, false); } else { selectRouteStatic(ROUTE_TYPE_ANY, sStatic.mDefaultAudioVideo, false); @@ -1452,8 +1464,7 @@ public class MediaRouter { final RouteInfo selectedRoute = sStatic.mSelectedRoute; if (selectedRoute == null) return; - if (selectedRoute == sStatic.mBluetoothA2dpRoute || - selectedRoute == sStatic.mDefaultAudioVideo) { + if (selectedRoute.isBluetooth() || selectedRoute.isDefault()) { dispatchRouteVolumeChanged(selectedRoute); } else if (sStatic.mBluetoothA2dpRoute != null) { dispatchRouteVolumeChanged(sStatic.mIsBluetoothA2dpOn @@ -2225,7 +2236,7 @@ public class MediaRouter { /** @hide */ public boolean isBluetooth() { - return this == sStatic.mBluetoothA2dpRoute; + return mDeviceType == RouteInfo.DEVICE_TYPE_BLUETOOTH; } /** @hide */ diff --git a/media/java/android/media/SoundPool.java b/media/java/android/media/SoundPool.java index 32413dc6e841..6403aab08adc 100644 --- a/media/java/android/media/SoundPool.java +++ b/media/java/android/media/SoundPool.java @@ -36,13 +36,20 @@ import java.util.concurrent.atomic.AtomicReference; /** * The SoundPool class manages and plays audio resources for applications. * - * <p>A SoundPool is a collection of samples that can be loaded into memory + * <p>A SoundPool is a collection of sound samples that can be loaded into memory * from a resource inside the APK or from a file in the file system. The - * SoundPool library uses the MediaPlayer service to decode the audio - * into a raw 16-bit PCM mono or stereo stream. This allows applications + * SoundPool library uses the MediaCodec service to decode the audio + * into raw 16-bit PCM. This allows applications * to ship with compressed streams without having to suffer the CPU load * and latency of decompressing during playback.</p> * + * <p>Soundpool sounds are expected to be short as they are + * predecoded into memory. Each decoded sound is internally limited to one + * megabyte storage, which represents approximately 5.6 seconds at 44.1kHz stereo + * (the duration is proportionally longer at lower sample rates or + * a channel mask of mono). A decoded audio sound will be truncated if it would + * exceed the per-sound one megabyte storage space.</p> + * * <p>In addition to low-latency playback, SoundPool can also manage the number * of audio streams being rendered at once. When the SoundPool object is * constructed, the maxStreams parameter sets the maximum number of streams diff --git a/media/java/android/media/audiopolicy/AudioMixingRule.java b/media/java/android/media/audiopolicy/AudioMixingRule.java index cb47ba25caa7..abbcc669504d 100644 --- a/media/java/android/media/audiopolicy/AudioMixingRule.java +++ b/media/java/android/media/audiopolicy/AudioMixingRule.java @@ -140,7 +140,7 @@ public class AudioMixingRule { final int match_rule = mRule & ~RULE_EXCLUSION_MASK; switch (match_rule) { case RULE_MATCH_ATTRIBUTE_USAGE: - dest.writeInt(mAttr.getUsage()); + dest.writeInt(mAttr.getSystemUsage()); break; case RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET: dest.writeInt(mAttr.getCapturePreset()); @@ -165,7 +165,7 @@ public class AudioMixingRule { for (AudioMixMatchCriterion criterion : mCriteria) { if ((criterion.mRule & RULE_MATCH_ATTRIBUTE_USAGE) != 0 && criterion.mAttr != null - && criterion.mAttr.getUsage() == usage) { + && criterion.mAttr.getSystemUsage() == usage) { return true; } } @@ -182,7 +182,7 @@ public class AudioMixingRule { for (AudioMixMatchCriterion criterion : mCriteria) { if (criterion.mRule == RULE_MATCH_ATTRIBUTE_USAGE && criterion.mAttr != null - && criterion.mAttr.getUsage() == usage) { + && criterion.mAttr.getSystemUsage() == usage) { return true; } } @@ -565,7 +565,7 @@ public class AudioMixingRule { switch (match_rule) { case RULE_MATCH_ATTRIBUTE_USAGE: // "usage"-based rule - if (criterion.mAttr.getUsage() == attrToMatch.getUsage()) { + if (criterion.mAttr.getSystemUsage() == attrToMatch.getSystemUsage()) { if (criterion.mRule == rule) { // rule already exists, we're done return this; @@ -646,8 +646,13 @@ public class AudioMixingRule { switch (match_rule) { case RULE_MATCH_ATTRIBUTE_USAGE: int usage = in.readInt(); - attr = new AudioAttributes.Builder() - .setUsage(usage).build(); + if (AudioAttributes.isSystemUsage(usage)) { + attr = new AudioAttributes.Builder() + .setSystemUsage(usage).build(); + } else { + attr = new AudioAttributes.Builder() + .setUsage(usage).build(); + } break; case RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET: int preset = in.readInt(); diff --git a/media/jni/android_media_MediaProfiles.cpp b/media/jni/android_media_MediaProfiles.cpp index 5bc80925eca4..90325e74b8ab 100644 --- a/media/jni/android_media_MediaProfiles.cpp +++ b/media/jni/android_media_MediaProfiles.cpp @@ -223,6 +223,87 @@ android_media_MediaProfiles_native_get_camcorder_profile(JNIEnv *env, jobject /* audioChannels); } +static jobject +android_media_MediaProfiles_native_get_camcorder_profiles(JNIEnv *env, jobject /* thiz */, jint id, + jint quality) +{ + ALOGV("native_get_camcorder_profiles: %d %d", id, quality); + if (!isCamcorderQualityKnown(quality)) { + jniThrowException(env, "java/lang/RuntimeException", "Unknown camcorder profile quality"); + return NULL; + } + + camcorder_quality q = static_cast<camcorder_quality>(quality); + const MediaProfiles::CamcorderProfile *cp = sProfiles->getCamcorderProfile(id, q); + if (!cp) { + jniThrowException(env, "java/lang/RuntimeException", + "Error retrieving camcorder profile params"); + return NULL; + } + + int duration = cp->getDuration(); + int fileFormat = cp->getFileFormat(); + + jclass encoderProfilesClazz = env->FindClass("android/media/EncoderProfiles"); + jmethodID encoderProfilesConstructorMethodID = + env->GetMethodID(encoderProfilesClazz, "<init>", + "(II[Landroid/media/EncoderProfiles$VideoProfile;[Landroid/media/EncoderProfiles$AudioProfile;)V"); + + jclass videoProfileClazz = env->FindClass("android/media/EncoderProfiles$VideoProfile"); + jmethodID videoProfileConstructorMethodID = + env->GetMethodID(videoProfileClazz, "<init>", "(IIIIII)V"); + + jclass audioProfileClazz = env->FindClass("android/media/EncoderProfiles$AudioProfile"); + jmethodID audioProfileConstructorMethodID = + env->GetMethodID(audioProfileClazz, "<init>", "(IIIII)V"); + + jobjectArray videoCodecs = (jobjectArray)env->NewObjectArray( + cp->getVideoCodecs().size(), videoProfileClazz, nullptr); + { + int i = 0; + for (const MediaProfiles::VideoCodec *vc : cp->getVideoCodecs()) { + jobject videoCodec = env->NewObject(videoProfileClazz, + videoProfileConstructorMethodID, + vc->getCodec(), + vc->getFrameWidth(), + vc->getFrameHeight(), + vc->getFrameRate(), + vc->getBitrate(), + vc->getProfile()); + env->SetObjectArrayElement(videoCodecs, i++, videoCodec); + } + } + + jobjectArray audioCodecs; + if (quality >= CAMCORDER_QUALITY_TIME_LAPSE_LIST_START + && quality <= CAMCORDER_QUALITY_TIME_LAPSE_LIST_END) { + // timelapse profiles do not have audio codecs + audioCodecs = (jobjectArray)env->NewObjectArray(0, audioProfileClazz, nullptr); + } else { + audioCodecs = (jobjectArray)env->NewObjectArray( + cp->getAudioCodecs().size(), audioProfileClazz, nullptr); + int i = 0; + for (const MediaProfiles::AudioCodec *ac : cp->getAudioCodecs()) { + jobject audioCodec = env->NewObject(audioProfileClazz, + audioProfileConstructorMethodID, + ac->getCodec(), + ac->getChannels(), + ac->getSampleRate(), + ac->getBitrate(), + ac->getProfile()); + + env->SetObjectArrayElement(audioCodecs, i++, audioCodec); + } + } + + return env->NewObject(encoderProfilesClazz, + encoderProfilesConstructorMethodID, + duration, + fileFormat, + videoCodecs, + audioCodecs); +} + static jboolean android_media_MediaProfiles_native_has_camcorder_profile(JNIEnv* /* env */, jobject /* thiz */, jint id, jint quality) @@ -319,6 +400,8 @@ static const JNINativeMethod gMethodsForCamcorderProfileClass[] = { {"native_init", "()V", (void *)android_media_MediaProfiles_native_init}, {"native_get_camcorder_profile", "(II)Landroid/media/CamcorderProfile;", (void *)android_media_MediaProfiles_native_get_camcorder_profile}, + {"native_get_camcorder_profiles", "(II)Landroid/media/EncoderProfiles;", + (void *)android_media_MediaProfiles_native_get_camcorder_profiles}, {"native_has_camcorder_profile", "(II)Z", (void *)android_media_MediaProfiles_native_has_camcorder_profile}, }; diff --git a/mime/java-res/android.mime.types b/mime/java-res/android.mime.types index 92365d1af4c9..587367737be0 100644 --- a/mime/java-res/android.mime.types +++ b/mime/java-res/android.mime.types @@ -139,7 +139,7 @@ # that may have been defined earlier. application/pgp-signature pgp -application/x-x509-ca-cert crt +application/x-x509-ca-cert crt der audio/aac aac adts adt audio/basic snd audio/flac flac diff --git a/native/android/native_window_jni.cpp b/native/android/native_window_jni.cpp index 859c550db94d..901b4de4f13b 100644 --- a/native/android/native_window_jni.cpp +++ b/native/android/native_window_jni.cpp @@ -30,7 +30,7 @@ using namespace android; ANativeWindow* ANativeWindow_fromSurface(JNIEnv* env, jobject surface) { sp<ANativeWindow> win = android_view_Surface_getNativeWindow(env, surface); if (win != NULL) { - win->incStrong((void*)ANativeWindow_fromSurface); + ANativeWindow_acquire(win.get()); } return win.get(); } diff --git a/native/graphics/jni/imagedecoder.cpp b/native/graphics/jni/imagedecoder.cpp index b0c8c612036a..a0f3098ad347 100644 --- a/native/graphics/jni/imagedecoder.cpp +++ b/native/graphics/jni/imagedecoder.cpp @@ -506,7 +506,7 @@ int AImageDecoder_getFrameInfo(AImageDecoder* decoder, } int64_t AImageDecoderFrameInfo_getDuration(const AImageDecoderFrameInfo* info) { - if (!info) return 0; + if (!info) return ANDROID_IMAGE_DECODER_BAD_PARAMETER; return toFrameInfo(info)->fDuration * 1'000'000; } diff --git a/packages/Connectivity/framework/api/module-lib-current.txt b/packages/Connectivity/framework/api/module-lib-current.txt index 90580fa17b79..78dff21b6c68 100644 --- a/packages/Connectivity/framework/api/module-lib-current.txt +++ b/packages/Connectivity/framework/api/module-lib-current.txt @@ -109,7 +109,7 @@ package android.net { public final class NetworkCapabilities implements android.os.Parcelable { method @Nullable public java.util.Set<android.util.Range<java.lang.Integer>> getUids(); - method public boolean hasUnwantedCapability(int); + method public boolean hasForbiddenCapability(int); field public static final long REDACT_ALL = -1L; // 0xffffffffffffffffL field public static final long REDACT_FOR_ACCESS_FINE_LOCATION = 1L; // 0x1L field public static final long REDACT_FOR_LOCAL_MAC_ADDRESS = 2L; // 0x2L @@ -123,13 +123,13 @@ package android.net { } public class NetworkRequest implements android.os.Parcelable { - method @NonNull public int[] getUnwantedCapabilities(); - method public boolean hasUnwantedCapability(int); + method @NonNull public int[] getForbiddenCapabilities(); + method public boolean hasForbiddenCapability(int); } public static class NetworkRequest.Builder { - method @NonNull public android.net.NetworkRequest.Builder addUnwantedCapability(int); - method @NonNull public android.net.NetworkRequest.Builder removeUnwantedCapability(int); + method @NonNull public android.net.NetworkRequest.Builder addForbiddenCapability(int); + method @NonNull public android.net.NetworkRequest.Builder removeForbiddenCapability(int); method @NonNull public android.net.NetworkRequest.Builder setUids(@Nullable java.util.Set<android.util.Range<java.lang.Integer>>); } diff --git a/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java b/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java index 775c88f20d56..0bafd5b2f817 100644 --- a/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java +++ b/packages/Connectivity/framework/src/android/net/NetworkCapabilities.java @@ -183,7 +183,7 @@ public final class NetworkCapabilities implements Parcelable { throw new UnsupportedOperationException( "Cannot clear NetworkCapabilities when mRedactions is set"); } - mNetworkCapabilities = mTransportTypes = mUnwantedNetworkCapabilities = 0; + mNetworkCapabilities = mTransportTypes = mForbiddenNetworkCapabilities = 0; mLinkUpBandwidthKbps = mLinkDownBandwidthKbps = LINK_BANDWIDTH_UNSPECIFIED; mNetworkSpecifier = null; mTransportInfo = null; @@ -219,7 +219,7 @@ public final class NetworkCapabilities implements Parcelable { mUids = (nc.mUids == null) ? null : new ArraySet<>(nc.mUids); setAdministratorUids(nc.getAdministratorUids()); mOwnerUid = nc.mOwnerUid; - mUnwantedNetworkCapabilities = nc.mUnwantedNetworkCapabilities; + mForbiddenNetworkCapabilities = nc.mForbiddenNetworkCapabilities; mSSID = nc.mSSID; mPrivateDnsBroken = nc.mPrivateDnsBroken; mRequestorUid = nc.mRequestorUid; @@ -237,7 +237,7 @@ public final class NetworkCapabilities implements Parcelable { /** * If any capabilities specified here they must not exist in the matching Network. */ - private long mUnwantedNetworkCapabilities; + private long mForbiddenNetworkCapabilities; /** @hide */ @Retention(RetentionPolicy.SOURCE) @@ -595,21 +595,21 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ public @NonNull NetworkCapabilities addCapability(@NetCapability int capability) { - // If the given capability was previously added to the list of unwanted capabilities - // then the capability will also be removed from the list of unwanted capabilities. - // TODO: Consider adding unwanted capabilities to the public API and mention this + // If the given capability was previously added to the list of forbidden capabilities + // then the capability will also be removed from the list of forbidden capabilities. + // TODO: Consider adding forbidden capabilities to the public API and mention this // in the documentation. checkValidCapability(capability); mNetworkCapabilities |= 1L << capability; - // remove from unwanted capability list - mUnwantedNetworkCapabilities &= ~(1L << capability); + // remove from forbidden capability list + mForbiddenNetworkCapabilities &= ~(1L << capability); return this; } /** - * Adds the given capability to the list of unwanted capabilities of this + * Adds the given capability to the list of forbidden capabilities of this * {@code NetworkCapability} instance. Note that when searching for a network to - * satisfy a request, the network must not contain any capability from unwanted capability + * satisfy a request, the network must not contain any capability from forbidden capability * list. * <p> * If the capability was previously added to the list of required capabilities (for @@ -619,9 +619,9 @@ public final class NetworkCapabilities implements Parcelable { * @see #addCapability(int) * @hide */ - public void addUnwantedCapability(@NetCapability int capability) { + public void addForbiddenCapability(@NetCapability int capability) { checkValidCapability(capability); - mUnwantedNetworkCapabilities |= 1L << capability; + mForbiddenNetworkCapabilities |= 1L << capability; mNetworkCapabilities &= ~(1L << capability); // remove from requested capabilities } @@ -641,16 +641,16 @@ public final class NetworkCapabilities implements Parcelable { } /** - * Removes (if found) the given unwanted capability from this {@code NetworkCapability} - * instance that were added via addUnwantedCapability(int) or setCapabilities(int[], int[]). + * Removes (if found) the given forbidden capability from this {@code NetworkCapability} + * instance that were added via addForbiddenCapability(int) or setCapabilities(int[], int[]). * * @param capability the capability to be removed. * @return This NetworkCapabilities instance, to facilitate chaining. * @hide */ - public @NonNull NetworkCapabilities removeUnwantedCapability(@NetCapability int capability) { + public @NonNull NetworkCapabilities removeForbiddenCapability(@NetCapability int capability) { checkValidCapability(capability); - mUnwantedNetworkCapabilities &= ~(1L << capability); + mForbiddenNetworkCapabilities &= ~(1L << capability); return this; } @@ -679,13 +679,13 @@ public final class NetworkCapabilities implements Parcelable { } /** - * Gets all the unwanted capabilities set on this {@code NetworkCapability} instance. + * Gets all the forbidden capabilities set on this {@code NetworkCapability} instance. * - * @return an array of unwanted capability values for this instance. + * @return an array of forbidden capability values for this instance. * @hide */ - public @NetCapability int[] getUnwantedCapabilities() { - return NetworkCapabilitiesUtils.unpackBits(mUnwantedNetworkCapabilities); + public @NetCapability int[] getForbiddenCapabilities() { + return NetworkCapabilitiesUtils.unpackBits(mForbiddenNetworkCapabilities); } @@ -696,9 +696,9 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ public void setCapabilities(@NetCapability int[] capabilities, - @NetCapability int[] unwantedCapabilities) { + @NetCapability int[] forbiddenCapabilities) { mNetworkCapabilities = NetworkCapabilitiesUtils.packBits(capabilities); - mUnwantedNetworkCapabilities = NetworkCapabilitiesUtils.packBits(unwantedCapabilities); + mForbiddenNetworkCapabilities = NetworkCapabilitiesUtils.packBits(forbiddenCapabilities); } /** @@ -723,9 +723,9 @@ public final class NetworkCapabilities implements Parcelable { /** @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public boolean hasUnwantedCapability(@NetCapability int capability) { + public boolean hasForbiddenCapability(@NetCapability int capability) { return isValidCapability(capability) - && ((mUnwantedNetworkCapabilities & (1L << capability)) != 0); + && ((mForbiddenNetworkCapabilities & (1L << capability)) != 0); } /** @@ -755,14 +755,14 @@ public final class NetworkCapabilities implements Parcelable { private void combineNetCapabilities(@NonNull NetworkCapabilities nc) { final long wantedCaps = this.mNetworkCapabilities | nc.mNetworkCapabilities; - final long unwantedCaps = - this.mUnwantedNetworkCapabilities | nc.mUnwantedNetworkCapabilities; - if ((wantedCaps & unwantedCaps) != 0) { + final long forbiddenCaps = + this.mForbiddenNetworkCapabilities | nc.mForbiddenNetworkCapabilities; + if ((wantedCaps & forbiddenCaps) != 0) { throw new IllegalArgumentException( - "Cannot have the same capability in wanted and unwanted lists."); + "Cannot have the same capability in wanted and forbidden lists."); } this.mNetworkCapabilities = wantedCaps; - this.mUnwantedNetworkCapabilities = unwantedCaps; + this.mForbiddenNetworkCapabilities = forbiddenCaps; } /** @@ -773,7 +773,7 @@ public final class NetworkCapabilities implements Parcelable { * @hide */ public @Nullable String describeFirstNonRequestableCapability() { - final long nonRequestable = (mNetworkCapabilities | mUnwantedNetworkCapabilities) + final long nonRequestable = (mNetworkCapabilities | mForbiddenNetworkCapabilities) & NON_REQUESTABLE_CAPABILITIES; if (nonRequestable != 0) { @@ -790,28 +790,28 @@ public final class NetworkCapabilities implements Parcelable { private boolean satisfiedByNetCapabilities(@NonNull NetworkCapabilities nc, boolean onlyImmutable) { long requestedCapabilities = mNetworkCapabilities; - long requestedUnwantedCapabilities = mUnwantedNetworkCapabilities; + long requestedForbiddenCapabilities = mForbiddenNetworkCapabilities; long providedCapabilities = nc.mNetworkCapabilities; if (onlyImmutable) { requestedCapabilities &= ~MUTABLE_CAPABILITIES; - requestedUnwantedCapabilities &= ~MUTABLE_CAPABILITIES; + requestedForbiddenCapabilities &= ~MUTABLE_CAPABILITIES; } return ((providedCapabilities & requestedCapabilities) == requestedCapabilities) - && ((requestedUnwantedCapabilities & providedCapabilities) == 0); + && ((requestedForbiddenCapabilities & providedCapabilities) == 0); } /** @hide */ public boolean equalsNetCapabilities(@NonNull NetworkCapabilities nc) { return (nc.mNetworkCapabilities == this.mNetworkCapabilities) - && (nc.mUnwantedNetworkCapabilities == this.mUnwantedNetworkCapabilities); + && (nc.mForbiddenNetworkCapabilities == this.mForbiddenNetworkCapabilities); } private boolean equalsNetCapabilitiesRequestable(@NonNull NetworkCapabilities that) { - return ((this.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) == - (that.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)) - && ((this.mUnwantedNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) == - (that.mUnwantedNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)); + return ((this.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) + == (that.mNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)) + && ((this.mForbiddenNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES) + == (that.mForbiddenNetworkCapabilities & ~NON_REQUESTABLE_CAPABILITIES)); } /** @@ -1734,7 +1734,7 @@ public final class NetworkCapabilities implements Parcelable { * Combine a set of Capabilities to this one. Useful for coming up with the complete set. * <p> * Note that this method may break an invariant of having a particular capability in either - * wanted or unwanted lists but never in both. Requests that have the same capability in + * wanted or forbidden lists but never in both. Requests that have the same capability in * both lists will never be satisfied. * @hide */ @@ -1875,8 +1875,8 @@ public final class NetworkCapabilities implements Parcelable { public int hashCode() { return (int) (mNetworkCapabilities & 0xFFFFFFFF) + ((int) (mNetworkCapabilities >> 32) * 3) - + ((int) (mUnwantedNetworkCapabilities & 0xFFFFFFFF) * 5) - + ((int) (mUnwantedNetworkCapabilities >> 32) * 7) + + ((int) (mForbiddenNetworkCapabilities & 0xFFFFFFFF) * 5) + + ((int) (mForbiddenNetworkCapabilities >> 32) * 7) + ((int) (mTransportTypes & 0xFFFFFFFF) * 11) + ((int) (mTransportTypes >> 32) * 13) + mLinkUpBandwidthKbps * 17 @@ -1911,7 +1911,7 @@ public final class NetworkCapabilities implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeLong(mNetworkCapabilities); - dest.writeLong(mUnwantedNetworkCapabilities); + dest.writeLong(mForbiddenNetworkCapabilities); dest.writeLong(mTransportTypes); dest.writeInt(mLinkUpBandwidthKbps); dest.writeInt(mLinkDownBandwidthKbps); @@ -1935,7 +1935,7 @@ public final class NetworkCapabilities implements Parcelable { NetworkCapabilities netCap = new NetworkCapabilities(); netCap.mNetworkCapabilities = in.readLong(); - netCap.mUnwantedNetworkCapabilities = in.readLong(); + netCap.mForbiddenNetworkCapabilities = in.readLong(); netCap.mTransportTypes = in.readLong(); netCap.mLinkUpBandwidthKbps = in.readInt(); netCap.mLinkDownBandwidthKbps = in.readInt(); @@ -1989,9 +1989,9 @@ public final class NetworkCapabilities implements Parcelable { appendStringRepresentationOfBitMaskToStringBuilder(sb, mNetworkCapabilities, NetworkCapabilities::capabilityNameOf, "&"); } - if (0 != mUnwantedNetworkCapabilities) { - sb.append(" Unwanted: "); - appendStringRepresentationOfBitMaskToStringBuilder(sb, mUnwantedNetworkCapabilities, + if (0 != mForbiddenNetworkCapabilities) { + sb.append(" Forbidden: "); + appendStringRepresentationOfBitMaskToStringBuilder(sb, mForbiddenNetworkCapabilities, NetworkCapabilities::capabilityNameOf, "&"); } if (mLinkUpBandwidthKbps > 0) { diff --git a/packages/Connectivity/framework/src/android/net/NetworkRequest.java b/packages/Connectivity/framework/src/android/net/NetworkRequest.java index 194b8ff4eb5e..a384109e2300 100644 --- a/packages/Connectivity/framework/src/android/net/NetworkRequest.java +++ b/packages/Connectivity/framework/src/android/net/NetworkRequest.java @@ -311,7 +311,7 @@ public class NetworkRequest implements Parcelable { * * @see #addCapability(int) * - * @param capability The capability to add to unwanted capability list. + * @param capability The capability to add to forbidden capability list. * @return The builder to facilitate chaining. * * @hide @@ -319,15 +319,15 @@ public class NetworkRequest implements Parcelable { @NonNull @SuppressLint("MissingGetterMatchingBuilder") @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public Builder addUnwantedCapability(@NetworkCapabilities.NetCapability int capability) { - mNetworkCapabilities.addUnwantedCapability(capability); + public Builder addForbiddenCapability(@NetworkCapabilities.NetCapability int capability) { + mNetworkCapabilities.addForbiddenCapability(capability); return this; } /** - * Removes (if found) the given unwanted capability from this builder instance. + * Removes (if found) the given forbidden capability from this builder instance. * - * @param capability The unwanted capability to remove. + * @param capability The forbidden capability to remove. * @return The builder to facilitate chaining. * * @hide @@ -335,8 +335,9 @@ public class NetworkRequest implements Parcelable { @NonNull @SuppressLint("BuilderSetStyle") @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public Builder removeUnwantedCapability(@NetworkCapabilities.NetCapability int capability) { - mNetworkCapabilities.removeUnwantedCapability(capability); + public Builder removeForbiddenCapability( + @NetworkCapabilities.NetCapability int capability) { + mNetworkCapabilities.removeForbiddenCapability(capability); return this; } @@ -598,13 +599,13 @@ public class NetworkRequest implements Parcelable { } /** - * @see Builder#addUnwantedCapability(int) + * @see Builder#addForbiddenCapability(int) * * @hide */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public boolean hasUnwantedCapability(@NetCapability int capability) { - return networkCapabilities.hasUnwantedCapability(capability); + public boolean hasForbiddenCapability(@NetCapability int capability) { + return networkCapabilities.hasForbiddenCapability(capability); } /** @@ -690,18 +691,18 @@ public class NetworkRequest implements Parcelable { } /** - * Gets all the unwanted capabilities set on this {@code NetworkRequest} instance. + * Gets all the forbidden capabilities set on this {@code NetworkRequest} instance. * - * @return an array of unwanted capability values for this instance. + * @return an array of forbidden capability values for this instance. * * @hide */ @NonNull @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public @NetCapability int[] getUnwantedCapabilities() { - // No need to make a defensive copy here as NC#getUnwantedCapabilities() already returns + public @NetCapability int[] getForbiddenCapabilities() { + // No need to make a defensive copy here as NC#getForbiddenCapabilities() already returns // a new array. - return networkCapabilities.getUnwantedCapabilities(); + return networkCapabilities.getForbiddenCapabilities(); } /** diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java index 95f180a9ba32..0210079646c9 100644 --- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -23,6 +23,7 @@ import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTE import android.Manifest; import android.annotation.NonNull; import android.annotation.StringRes; +import android.app.Activity; import android.app.AlertDialog; import android.app.AppGlobals; import android.app.AppOpsManager; @@ -632,6 +633,12 @@ public class PackageInstallerActivity extends AlertActivity { .setPositiveButton(R.string.ok, (dialog, which) -> getActivity().finish()) .create(); } + + @Override + public void onCancel(DialogInterface dialog) { + getActivity().setResult(Activity.RESULT_CANCELED); + getActivity().finish(); + } } /** diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml index 579a6b203760..7d9b4d78ce2a 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/res/layout-v31/collapsing_toolbar_base_layout.xml @@ -30,7 +30,7 @@ android:fitsSystemWindows="true" android:outlineAmbientShadowColor="@android:color/transparent" android:outlineSpotShadowColor="@android:color/transparent" - android:background="@android:color/transparent" + android:background="?android:attr/colorPrimary" android:theme="@style/Theme.CollapsingToolbar.Settings"> <com.android.settingslib.collapsingtoolbar.AdjustableToolbarLayout @@ -43,7 +43,7 @@ app:layout_scrollFlags="scroll|exitUntilCollapsed|snap" app:scrimAnimationDuration="50" app:scrimVisibleHeightTrigger="@dimen/scrim_visible_height_trigger" - app:statusBarScrim="@empty" + app:statusBarScrim="@null" app:titleCollapseMode="fade" app:collapsedTitleTextAppearance="@style/CollapsingToolbarTitle.Collapsed" app:expandedTitleTextAppearance="@style/CollapsingToolbarTitle.Expanded" diff --git a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java index c47638ac239b..b4fe7ed1a8fb 100644 --- a/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java +++ b/packages/SettingsLib/CollapsingToolbarBaseActivity/src/com/android/settingslib/collapsingtoolbar/SettingsTransitionActivity.java @@ -78,6 +78,10 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { super.startActivity(intent, options); return; } + if (options != null) { + super.startActivity(intent, getMergedBundleForTransition(options)); + return; + } super.startActivity(intent, getActivityOptionsBundle(toolbar)); } @@ -110,6 +114,11 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { super.startActivityForResult(intent, requestCode, options); return; } + if (options != null) { + super.startActivityForResult(intent, requestCode, + getMergedBundleForTransition(options)); + return; + } super.startActivityForResult(intent, requestCode, getActivityOptionsBundle(toolbar)); } @@ -133,4 +142,15 @@ public abstract class SettingsTransitionActivity extends FragmentActivity { return ActivityOptions.makeSceneTransitionAnimation(this, toolbar, "shared_element_view").toBundle(); } + + private Bundle getMergedBundleForTransition(@NonNull Bundle options) { + final Toolbar toolbar = getToolbar(); + final Bundle mergedBundle = new Bundle(); + mergedBundle.putAll(options); + final Bundle activityOptionsBundle = getActivityOptionsBundle(toolbar); + if (activityOptionsBundle != null) { + mergedBundle.putAll(activityOptionsBundle); + } + return mergedBundle; + } } diff --git a/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml b/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml new file mode 100644 index 000000000000..205485d76145 --- /dev/null +++ b/packages/SettingsLib/FooterPreference/res/layout-v31/preference_footer.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?android:attr/listPreferredItemHeight" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" + android:background="?android:attr/selectableItemBackground" + android:orientation="vertical" + android:importantForAccessibility = "no" + android:clipToPadding="false"> + + <LinearLayout + android:id="@+id/icon_frame" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:minWidth="56dp" + android:gravity="start|top" + android:orientation="horizontal" + android:paddingEnd="12dp" + android:paddingTop="16dp" + android:paddingBottom="4dp"> + <ImageView + android:id="@android:id/icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + </LinearLayout> + + <com.android.settingslib.widget.LinkTextView + android:id="@android:id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:paddingBottom="16dp" + android:paddingTop="16dp" + android:maxLines="10" + android:textColor="?android:attr/textColorSecondary" + android:ellipsize="marquee" /> + +</LinearLayout>
\ No newline at end of file diff --git a/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml b/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml index 7a550aed94ac..7567c170c41d 100644 --- a/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml +++ b/packages/SettingsLib/FooterPreference/res/layout/preference_footer.xml @@ -23,7 +23,7 @@ android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:background="?android:attr/selectableItemBackground" - android:orientation="vertical" + android:importantForAccessibility = "no" android:clipToPadding="false"> <LinearLayout diff --git a/packages/SettingsLib/MainSwitchPreference/Android.bp b/packages/SettingsLib/MainSwitchPreference/Android.bp index 7b7496ca650a..4ce854ada849 100644 --- a/packages/SettingsLib/MainSwitchPreference/Android.bp +++ b/packages/SettingsLib/MainSwitchPreference/Android.bp @@ -14,7 +14,7 @@ android_library { resource_dirs: ["res"], static_libs: [ - "androidx.preference_preference", + "androidx.preference_preference", ], sdk_version: "system_current", diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/switch_bar_bg_disabled.xml index b29f4596d77c..b646f0a5d26d 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/switch_bar_bg_disabled.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2020 The Android Open Source Project + Copyright (C) 2021 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,12 +15,12 @@ limitations under the License. --> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/track_off_background" /> - <item - android:width="13.33dp" - android:height="1.67dp" - android:left="21dp" - android:gravity="center" - android:drawable="@drawable/track_off_indicator" /> -</layer-list> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/state_off_color"/> + <corners android:radius="@dimen/switch_bar_radius"/> + </shape> + </item> +</ripple> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_indicator.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/switch_bar_bg_off.xml index 6cc6224ae6c5..b646f0a5d26d 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_indicator.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/switch_bar_bg_off.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2020 The Android Open Source Project + Copyright (C) 2021 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,20 +15,12 @@ limitations under the License. --> -<vector - xmlns:android="http://schemas.android.com/apk/res/android" - android:width="13.33dp" - android:height="1.67dp" - android:viewportWidth="13.33" - android:viewportHeight="1.67"> - - <group> - <clip-path - android:pathData="M0 0H13.3333V1.66667H0V0Z" /> - - <path - android:pathData="M0 0V1.66667H13.3333V0" - android:fillColor="@android:color/white" /> - </group> - -</vector> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/state_off_color"/> + <corners android:radius="@dimen/switch_bar_radius"/> + </shape> + </item> +</ripple> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/switch_bar_bg_on.xml index cf241129f16d..afea8bd8e288 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/switch_bar_bg_on.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2020 The Android Open Source Project + Copyright (C) 2021 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,12 +15,12 @@ limitations under the License. --> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/track_on_background" /> - <item - android:width="13.19dp" - android:height="10.06dp" - android:gravity="center" - android:right="21dp" - android:drawable="@drawable/track_on_indicator" /> -</layer-list> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/state_on_color"/> + <corners android:radius="@dimen/switch_bar_radius"/> + </shape> + </item> +</ripple> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_disabled.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_disabled.xml new file mode 100644 index 000000000000..9e6cfbdff58c --- /dev/null +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_disabled.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:top="@dimen/switch_thumb_margin" + android:left="@dimen/switch_thumb_margin" + android:right="@dimen/switch_thumb_margin" + android:bottom="@dimen/switch_thumb_margin"> + <shape android:shape="oval"> + <size + android:height="@dimen/switch_thumb_size" + android:width="@dimen/switch_thumb_size"/> + <solid + android:color="@color/state_off_color" + android:alpha="?android:attr/disabledAlpha"/> + </shape> + </item> +</layer-list> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_off.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_off.xml index 2be00b95af3c..f6d88151b1fa 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_off.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_off.xml @@ -16,16 +16,16 @@ --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item - android:top="4dp" - android:left="4dp" - android:right="4dp" - android:bottom="4dp"> - - <shape android:shape="oval" > - <size android:height="20dp" android:width="20dp" /> - <solid android:color="@color/thumb_off" /> - </shape> - - </item> + <item + android:top="@dimen/switch_thumb_margin" + android:left="@dimen/switch_thumb_margin" + android:right="@dimen/switch_thumb_margin" + android:bottom="@dimen/switch_thumb_margin"> + <shape android:shape="oval"> + <size + android:height="@dimen/switch_thumb_size" + android:width="@dimen/switch_thumb_size"/> + <solid android:color="@color/state_off_color"/> + </shape> + </item> </layer-list> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_on.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_on.xml index e85eb42007b8..61230b5071f2 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_on.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_on.xml @@ -16,16 +16,16 @@ --> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item - android:top="4dp" - android:left="4dp" - android:right="4dp" - android:bottom="4dp"> - - <shape android:shape="oval" > - <size android:height="20dp" android:width="20dp" /> - <solid android:color="?android:attr/colorAccent" /> - </shape> - - </item> + <item + android:top="@dimen/switch_thumb_margin" + android:left="@dimen/switch_thumb_margin" + android:right="@dimen/switch_thumb_margin" + android:bottom="@dimen/switch_thumb_margin"> + <shape android:shape="oval"> + <size + android:height="@dimen/switch_thumb_size" + android:width="@dimen/switch_thumb_size"/> + <solid android:color="@color/state_on_color"/> + </shape> + </item> </layer-list> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_selector.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_selector.xml index 8cc9bb3d5198..a541eaab6d51 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_selector.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/thumb_selector.xml @@ -16,6 +16,7 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/thumb_on" android:state_checked="true" /> - <item android:drawable="@drawable/thumb_off" android:state_checked="false" /> + <item android:drawable="@drawable/thumb_on" android:state_checked="true"/> + <item android:drawable="@drawable/thumb_off" android:state_checked="false"/> + <item android:drawable="@drawable/thumb_disabled" android:state_enabled="false"/> </selector> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_indicator.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_disabled_background.xml index 2281d045e101..b6c7313a89a2 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_indicator.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_disabled_background.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2020 The Android Open Source Project + Copyright (C) 2021 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -15,17 +15,12 @@ limitations under the License. --> -<vector - xmlns:android="http://schemas.android.com/apk/res/android" - android:width="13.19dp" - android:height="10.06dp" - android:viewportWidth="13.19" - android:viewportHeight="10.06"> - - <group> - <path - android:pathData="M4.75012 8.12738L1.62262 4.99988L0.557617 6.05738L4.75012 10.2499L13.7501 1.24988L12.6926 0.192383L4.75012 8.12738Z" - android:fillColor="@android:color/white" /> - </group> - -</vector> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" + android:width="@dimen/switch_track_width" + android:height="@dimen/switch_track_height"> + <solid + android:color="@color/track_off_color" + android:alpha="?android:attr/disabledAlpha"/> + <corners android:radius="@dimen/switch_track_radius"/> +</shape> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_background.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_background.xml index c838654dd209..f2c11b6db504 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_background.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_off_background.xml @@ -15,20 +15,10 @@ limitations under the License. --> -<vector - xmlns:android="http://schemas.android.com/apk/res/android" - android:width="52dp" - android:height="28dp" - android:viewportWidth="52" - android:viewportHeight="28"> - - <group> - <clip-path - android:pathData="M14 0H38C45.732 0 52 6.26801 52 14C52 21.732 45.732 28 38 28H14C6.26801 28 0 21.732 0 14C0 6.26801 6.26801 0 14 0Z" /> - - <path - android:pathData="M0 0V28H52V0" - android:fillColor="@color/track_off" /> - </group> - -</vector> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" + android:width="@dimen/switch_track_width" + android:height="@dimen/switch_track_height"> + <solid android:color="@color/track_off_color"/> + <corners android:radius="@dimen/switch_track_radius"/> +</shape> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_background.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_background.xml index bb1a7ef9c733..924646291c5f 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_background.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_on_background.xml @@ -15,22 +15,10 @@ limitations under the License. --> -<vector - xmlns:android="http://schemas.android.com/apk/res/android" - android:width="52dp" - android:height="28dp" - android:viewportWidth="52" - android:viewportHeight="28" - android:tint="@*android:color/switch_track_material"> - - <group> - <clip-path - android:pathData="M14 0H38C45.732 0 52 6.26801 52 14C52 21.732 45.732 28 38 28H14C6.26801 28 0 21.732 0 14C0 6.26801 6.26801 0 14 0Z" /> - - <path - android:pathData="M0 0V28H52V0" - android:fillColor="@*android:color/white_disabled_material" /> - - </group> - -</vector> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" + android:width="@dimen/switch_track_width" + android:height="@dimen/switch_track_height"> + <solid android:color="@color/track_on_color"/> + <corners android:radius="@dimen/switch_track_radius"/> +</shape> diff --git a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_selector.xml b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_selector.xml index 5c699be4939a..50a03b9b64a0 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/drawable/track_selector.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/drawable/track_selector.xml @@ -16,6 +16,7 @@ --> <selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:drawable="@drawable/track_on" android:state_checked="true" /> - <item android:drawable="@drawable/track_off" android:state_checked="false" /> + <item android:drawable="@drawable/track_on_background" android:state_checked="true"/> + <item android:drawable="@drawable/track_off_background" android:state_checked="false"/> + <item android:drawable="@drawable/track_disabled_background" android:state_enabled="false"/> </selector> diff --git a/packages/SettingsLib/MainSwitchPreference/res/layout-v31/main_switch_bar.xml b/packages/SettingsLib/MainSwitchPreference/res/layout-v31/main_switch_bar.xml index 3ce9421f8e97..9ccf63aec018 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/layout-v31/main_switch_bar.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/layout-v31/main_switch_bar.xml @@ -19,6 +19,10 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="match_parent" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" + android:paddingLeft="?android:attr/listPreferredItemPaddingLeft" + android:paddingRight="?android:attr/listPreferredItemPaddingRight" android:background="?android:attr/colorBackground" android:orientation="vertical"> @@ -27,7 +31,6 @@ android:minHeight="@dimen/min_switch_bar_height" android:layout_height="wrap_content" android:layout_width="match_parent" - android:background="?android:attr/selectableItemBackground" android:paddingLeft="@dimen/switchbar_margin_start" android:paddingRight="@dimen/switchbar_margin_end"> @@ -41,7 +44,6 @@ android:maxLines="2" android:ellipsize="end" android:textAppearance="?android:attr/textAppearanceListItem" - android:textAlignment="viewStart" style="@style/MainSwitchText" /> <ImageView @@ -58,18 +60,13 @@ <Switch android:id="@android:id/switch_widget" android:layout_width="wrap_content" - android:layout_height="wrap_content" + android:layout_height="48dp" android:layout_gravity="center_vertical" android:track="@drawable/track_selector" android:thumb="@drawable/thumb_selector" android:theme="@style/Settings.MainSwitch"/> </LinearLayout> - <View - android:id="@+id/below_divider" - android:layout_width="match_parent" - android:layout_height="1dp" - android:background="?android:attr/listDivider" /> </LinearLayout> diff --git a/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_bar.xml b/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_bar.xml index 5dc320924da2..ac827330333f 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_bar.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/layout/main_switch_bar.xml @@ -54,4 +54,3 @@ android:theme="@style/Widget.SwitchBar.Switch"/> </LinearLayout> - diff --git a/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml b/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml index e54569e9a814..7457285d397c 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values-night/colors.xml @@ -15,11 +15,10 @@ limitations under the License. --> -<resources> - - <color name="thumb_off">#BFFFFFFF</color> - <color name="track_off">@*android:color/material_grey_600</color> - +<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> <color name="switchbar_switch_track_tint">#82000000</color> <color name="switchbar_switch_thumb_tint">@android:color/black</color> + + <!-- Material next track on color--> + <color name="track_on_color">?androidprv:attr/colorSurfaceHighlight</color> </resources> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml b/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml index b5a73b17ed34..ea7bfd4163d2 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values/colors.xml @@ -15,12 +15,20 @@ limitations under the License. --> -<resources> - - <color name="thumb_off">#BFFFFFFF</color> - <color name="track_off">@*android:color/material_grey_600</color> - +<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> <color name="switchbar_background_color">@*android:color/material_grey_600</color> <color name="switchbar_switch_track_tint">#BFFFFFFF</color> <color name="switchbar_switch_thumb_tint">@android:color/white</color> + + <!-- Material next state on color--> + <color name="state_on_color">?androidprv:attr/colorAccentPrimary</color> + + <!-- Material next state off color--> + <color name="state_off_color">?androidprv:attr/colorAccentSecondary</color> + + <!-- Material next track on color--> + <color name="track_on_color">?androidprv:attr/colorAccentPrimaryVariant</color> + + <!-- Material next track off color--> + <color name="track_off_color">?androidprv:attr/colorAccentSecondaryVariant</color> </resources> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values/dimens.xml b/packages/SettingsLib/MainSwitchPreference/res/values/dimens.xml index c471bcd645a6..67886bcbcbd9 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values/dimens.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values/dimens.xml @@ -18,7 +18,7 @@ <resources> <!-- Size of layout margin left --> - <dimen name="switchbar_margin_start">22dp</dimen> + <dimen name="switchbar_margin_start">24dp</dimen> <!-- Size of layout margin right --> <dimen name="switchbar_margin_end">16dp</dimen> @@ -35,6 +35,24 @@ <!-- Restricted icon in switch bar --> <dimen name="restricted_icon_margin_end">16dp</dimen> + <!-- Radius of switch bar --> + <dimen name="switch_bar_radius">28dp</dimen> + + <!-- Margin of switch thumb --> + <dimen name="switch_thumb_margin">4dp</dimen> + + <!-- Size of switch thumb --> + <dimen name="switch_thumb_size">20dp</dimen> + + <!-- Width of switch track --> + <dimen name="switch_track_width">52dp</dimen> + + <!-- Height of switch track --> + <dimen name="switch_track_height">28dp</dimen> + + <!-- Radius of switch track --> + <dimen name="switch_track_radius">35dp</dimen> + <!-- SwitchBar sub settings margin start / end --> <dimen name="switchbar_subsettings_margin_start">72dp</dimen> <dimen name="switchbar_subsettings_margin_end">16dp</dimen> diff --git a/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml b/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml index e05809799865..5867695c5dc7 100644 --- a/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml +++ b/packages/SettingsLib/MainSwitchPreference/res/values/styles.xml @@ -19,6 +19,8 @@ <style name="MainSwitchText"> <item name="android:textSize">20sp</item> + <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item> + <item name="android:textColor">@android:color/black</item> </style> <style name="Settings.MainSwitch" parent="@android:style/Widget.Material.CompoundButton.Switch"> diff --git a/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchBar.java b/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchBar.java index 2be3f0d815aa..7913e0ab7697 100644 --- a/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchBar.java +++ b/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchBar.java @@ -18,6 +18,7 @@ package com.android.settingslib.widget; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; import android.os.Parcel; import android.os.Parcelable; import android.util.AttributeSet; @@ -50,6 +51,10 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec protected TextView mTextView; protected Switch mSwitch; + private Drawable mBackgroundOn; + private Drawable mBackgroundOff; + private Drawable mBackgroundDisabled; + private View mFrameView; public MainSwitchBar(Context context) { this(context, null); @@ -81,8 +86,12 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec setFocusable(true); setClickable(true); + mFrameView = findViewById(R.id.frame); mTextView = (TextView) findViewById(R.id.switch_text); mSwitch = (Switch) findViewById(android.R.id.switch_widget); + mBackgroundOn = getContext().getDrawable(R.drawable.switch_bar_bg_on); + mBackgroundOff = getContext().getDrawable(R.drawable.switch_bar_bg_off); + mBackgroundDisabled = getContext().getDrawable(R.drawable.switch_bar_bg_disabled); addOnSwitchChangeListener((switchView, isChecked) -> setChecked(isChecked)); @@ -194,21 +203,31 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec super.setEnabled(enabled); mTextView.setEnabled(enabled); mSwitch.setEnabled(enabled); + + if (BuildCompat.isAtLeastS()) { + if (enabled) { + mFrameView.setBackground(isChecked() ? mBackgroundOn : mBackgroundOff); + } else { + mFrameView.setBackground(mBackgroundDisabled); + } + } } private void propagateChecked(boolean isChecked) { + setBackground(isChecked); + final int count = mSwitchChangeListeners.size(); for (int n = 0; n < count; n++) { mSwitchChangeListeners.get(n).onSwitchChanged(mSwitch, isChecked); } } - private void setBackground(boolean checked) { - if (BuildCompat.isAtLeastS()) { - return; + private void setBackground(boolean isChecked) { + if (!BuildCompat.isAtLeastS()) { + setBackgroundColor(isChecked ? mBackgroundActivatedColor : mBackgroundColor); + } else { + mFrameView.setBackground(isChecked ? mBackgroundOn : mBackgroundOff); } - - setBackgroundColor(checked ? mBackgroundActivatedColor : mBackgroundColor); } static class SavedState extends BaseSavedState { @@ -273,6 +292,7 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec mSwitch.setChecked(ss.mChecked); setChecked(ss.mChecked); + setBackground(ss.mChecked); setVisibility(ss.mVisible ? View.VISIBLE : View.GONE); mSwitch.setOnCheckedChangeListener(ss.mVisible ? this : null); diff --git a/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchPreference.java b/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchPreference.java index 1f7f8d44d610..cafc7036f146 100644 --- a/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchPreference.java +++ b/packages/SettingsLib/MainSwitchPreference/src/com/android/settingslib/widget/MainSwitchPreference.java @@ -63,7 +63,7 @@ public class MainSwitchPreference extends TwoStatePreference { public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); - holder.setDividerAllowedAbove(true); + holder.setDividerAllowedAbove(false); holder.setDividerAllowedBelow(false); mMainSwitchBar = (MainSwitchBar) holder.findViewById(R.id.main_switch_bar); diff --git a/packages/SettingsLib/SettingsTheme/res/layout/settings_dropdown_preference.xml b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_dropdown_preference.xml index 87977bdcd6b3..60088bd0470d 100644 --- a/packages/SettingsLib/SettingsTheme/res/layout/settings_dropdown_preference.xml +++ b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_dropdown_preference.xml @@ -30,6 +30,6 @@ android:layout_marginLeft="@dimen/preference_dropdown_padding_start" android:visibility="invisible" /> - <include layout="@layout/settings_preference" /> + <include layout="@layout/settingslib_preference" /> </FrameLayout>
\ No newline at end of file diff --git a/packages/SettingsLib/SettingsTheme/res/layout/settings_icon.xml b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_icon_frame.xml index 55677908b684..f7e0151637b7 100644 --- a/packages/SettingsLib/SettingsTheme/res/layout/settings_icon.xml +++ b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_icon_frame.xml @@ -20,7 +20,7 @@ android:id="@+id/icon_frame" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:minWidth="@dimen/icon_min_width" + android:minWidth="48dp" android:gravity="start|center_vertical" android:orientation="horizontal" android:paddingLeft="0dp" diff --git a/packages/SettingsLib/SettingsTheme/res/layout/settings_preference.xml b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_preference.xml index d2b3169369ae..579abbd58169 100644 --- a/packages/SettingsLib/SettingsTheme/res/layout/settings_preference.xml +++ b/packages/SettingsLib/SettingsTheme/res/layout-v31/settingslib_preference.xml @@ -29,7 +29,7 @@ android:clipToPadding="false" android:baselineAligned="false"> - <include layout="@layout/settings_icon"/> + <include layout="@layout/settingslib_icon_frame"/> <RelativeLayout android:layout_width="0dp" diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/config.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/config.xml index acf06c4ffc29..8993d0fc71f7 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v31/config.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/config.xml @@ -15,6 +15,6 @@ limitations under the License. --> <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <bool name="config_icon_space_reserved">false</bool> - <bool name="config_allow_divider">false</bool> + <bool name="settingslib_config_icon_space_reserved">false</bool> + <bool name="settingslib_config_allow_divider">false</bool> </resources>
\ No newline at end of file diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/dimens.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/dimens.xml index d092666f972c..acbf35946126 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v31/dimens.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/dimens.xml @@ -16,10 +16,6 @@ --> <resources> - <dimen name="preference_title_font_size">20sp</dimen> - <dimen name="icon_min_width">48dp</dimen> - <dimen name="preference_padding_start">24dp</dimen> - <dimen name="preference_padding_end">16dp</dimen> <dimen name="app_preference_padding_start">20dp</dimen> <dimen name="app_icon_min_width">52dp</dimen> </resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/style_preference.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/style_preference.xml new file mode 100644 index 000000000000..e61d5534aa25 --- /dev/null +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/style_preference.xml @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> +<resources> + <style name="PreferenceTheme.SettingsLib" parent="@style/PreferenceThemeOverlay"> + <item name="preferenceCategoryTitleTextAppearance">@style/TextAppearance.CategoryTitle.SettingsLib</item> + <item name="preferenceCategoryStyle">@style/SettingsCategoryPreference.SettingsLib</item> + <item name="preferenceStyle">@style/SettingsPreference.SettingsLib</item> + <item name="checkBoxPreferenceStyle">@style/SettingsCheckBoxPreference.SettingsLib</item> + <item name="dialogPreferenceStyle">@style/SettingsPreference.SettingsLib</item> + <item name="editTextPreferenceStyle">@style/SettingsEditTextPreference.SettingsLib</item> + <item name="dropdownPreferenceStyle">@style/SettingsDropdownPreference.SettingsLib</item> + <item name="switchPreferenceStyle">@style/SettingsSwitchPreference.SettingsLib</item> + <item name="seekBarPreferenceStyle">@style/SettingsSeekbarPreference.SettingsLib</item> + <item name="footerPreferenceStyle">@style/Preference.Material</item> + </style> + + <style name="SettingsCategoryPreference.SettingsLib" parent="@style/Preference.Category.Material"> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + <item name="allowDividerAbove">@bool/settingslib_config_allow_divider</item> + <item name="allowDividerBelow">@bool/settingslib_config_allow_divider</item> + </style> + + <style name="SettingsPreference.SettingsLib" parent="@style/Preference.Material"> + <item name="layout">@layout/settingslib_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsCheckBoxPreference.SettingsLib" parent="@style/Preference.CheckBoxPreference.Material"> + <item name="layout">@layout/settingslib_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsEditTextPreference.SettingsLib" + parent="@style/Preference.DialogPreference.EditTextPreference.Material"> + <item name="layout">@layout/settingslib_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsDropdownPreference.SettingsLib" parent="@style/Preference.DropDown.Material"> + <item name="layout">@layout/settingslib_dropdown_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsSwitchPreference.SettingsLib" parent="@style/Preference.SwitchPreference.Material"> + <item name="layout">@layout/settingslib_preference</item> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> + + <style name="SettingsSeekbarPreference.SettingsLib" parent="@style/Preference.SeekBarPreference.Material"> + <item name="iconSpaceReserved">@bool/settingslib_config_icon_space_reserved</item> + </style> +</resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values/styles.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml index f24e0083db27..83a259e624bd 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/styles.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/styles.xml @@ -15,8 +15,11 @@ limitations under the License. --> <resources> - <style name="TextAppearance.PreferenceTitle" + <style name="TextAppearance.PreferenceTitle.SettingsLib" parent="@*android:style/TextAppearance.DeviceDefault.ListItem"> - <item name="android:textSize">@dimen/preference_title_font_size</item> + <item name="android:textSize">20sp</item> </style> + + <style name="TextAppearance.CategoryTitle.SettingsLib" + parent="@*android:style/TextAppearance.DeviceDefault.Body2" /> </resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml new file mode 100644 index 000000000000..69649e042ac4 --- /dev/null +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/themes.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<resources> + <!-- Only using in Settings application --> + <style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings" > + <item name="android:textAppearanceListItem">@style/TextAppearance.PreferenceTitle.SettingsLib</item> + <item name="android:listPreferredItemPaddingStart">24dp</item> + <item name="android:listPreferredItemPaddingEnd">16dp</item> + <item name="preferenceTheme">@style/PreferenceTheme.SettingsLib</item> + </style> + + <!-- Using in SubSettings page including injected settings page --> + <style name="Theme.SubSettingsBase" parent="Theme.SettingsBase"> + <!-- Suppress the built-in action bar --> + <item name="android:windowActionBar">false</item> + <item name="android:windowNoTitle">true</item> + <!-- Set up edge-to-edge configuration for top app bar --> + <item name="android:navigationBarColor">@android:color/transparent</item> + <item name="android:statusBarColor">@android:color/transparent</item> + </style> +</resources>
\ No newline at end of file diff --git a/packages/SettingsLib/SettingsTheme/res/values/dimens.xml b/packages/SettingsLib/SettingsTheme/res/values/dimens.xml index 009ae6bc46a9..3f473a3e0e85 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/dimens.xml +++ b/packages/SettingsLib/SettingsTheme/res/values/dimens.xml @@ -17,10 +17,6 @@ <resources> <dimen name="secondary_app_icon_size">32dp</dimen> - <dimen name="preference_title_font_size">16sp</dimen> - <dimen name="icon_min_width">56dp</dimen> - <dimen name="preference_padding_start">?android:attr/dialogPreferredPadding</dimen> - <dimen name="preference_padding_end">?android:attr/dialogPreferredPadding</dimen> <dimen name="app_preference_padding_start">?android:attr/listPreferredItemPaddingStart</dimen> <dimen name="app_icon_min_width">56dp</dimen> </resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml b/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml deleted file mode 100644 index cec8b3294418..000000000000 --- a/packages/SettingsLib/SettingsTheme/res/values/styles_preference.xml +++ /dev/null @@ -1,82 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2021 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - --> -<resources> - <!--DEPRECATED. It will be removed after all of client teams migrated to new style. --> - <style name="PreferenceTheme" parent="@style/PreferenceThemeOverlay"> - <item name="preferenceCategoryStyle">@style/SettingsCategoryPreference</item> - <item name="preferenceStyle">@style/SettingsPreference</item> - <item name="checkBoxPreferenceStyle">@style/SettingsCheckBoxPreference</item> - <item name="dialogPreferenceStyle">@style/SettingsPreference</item> - <item name="editTextPreferenceStyle">@style/SettingsEditTextPreference</item> - <item name="dropdownPreferenceStyle">@style/SettingsDropdownPreference</item> - <item name="switchPreferenceStyle">@style/SettingsSwitchPreference</item> - <item name="seekBarPreferenceStyle">@style/SettingsSeekbarPreference</item> - <item name="footerPreferenceStyle">@style/Preference.Material</item> - </style> - - <style name="PreferenceTheme.SettingsBase" parent="@style/PreferenceThemeOverlay"> - <item name="preferenceCategoryStyle">@style/SettingsCategoryPreference</item> - <item name="preferenceStyle">@style/SettingsPreference</item> - <item name="checkBoxPreferenceStyle">@style/SettingsCheckBoxPreference</item> - <item name="dialogPreferenceStyle">@style/SettingsPreference</item> - <item name="editTextPreferenceStyle">@style/SettingsEditTextPreference</item> - <item name="dropdownPreferenceStyle">@style/SettingsDropdownPreference</item> - <item name="switchPreferenceStyle">@style/SettingsSwitchPreference</item> - <item name="seekBarPreferenceStyle">@style/SettingsSeekbarPreference</item> - <item name="footerPreferenceStyle">@style/Preference.Material</item> - </style> - - <style name="SettingsCategoryPreference" parent="@style/Preference.Category.Material"> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - <item name="allowDividerAbove">@bool/config_allow_divider</item> - <item name="allowDividerBelow">@bool/config_allow_divider</item> - </style> - - <style name="SettingsPreference" parent="@style/Preference.Material"> - <item name="layout">@layout/settings_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsCheckBoxPreference" parent="@style/Preference.CheckBoxPreference.Material"> - <item name="layout">@layout/settings_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsEditTextPreference" - parent="@style/Preference.DialogPreference.EditTextPreference.Material"> - <item name="layout">@layout/settings_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsDropdownPreference" parent="@style/Preference.DropDown.Material"> - <item name="layout">@layout/settings_dropdown_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsSwitchPreference" parent="@style/Preference.SwitchPreference.Material"> - <item name="layout">@layout/settings_preference</item> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingsSeekbarPreference" parent="@style/Preference.SeekBarPreference.Material"> - <item name="iconSpaceReserved">@bool/config_icon_space_reserved</item> - </style> - - <style name="SettingFooterPreference" parent="@style/Preference.Material"> - <item name="allowDividerAbove">@bool/config_allow_divider</item> - </style> -</resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values/themes.xml b/packages/SettingsLib/SettingsTheme/res/values/themes.xml index 771fbc2e0b1f..e856aa1a2780 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/themes.xml +++ b/packages/SettingsLib/SettingsTheme/res/values/themes.xml @@ -17,11 +17,8 @@ <resources> <!-- Only using in Settings application --> - <style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings" > - <item name="android:textAppearanceListItem">@style/TextAppearance.PreferenceTitle</item> - <item name="android:listPreferredItemPaddingStart">@dimen/preference_padding_start</item> - <item name="android:listPreferredItemPaddingEnd">@dimen/preference_padding_end</item> - <item name="preferenceTheme">@style/PreferenceTheme.SettingsBase</item> + <style name="Theme.SettingsBase" parent="@android:style/Theme.DeviceDefault.Settings"> + <item name="preferenceTheme">@style/PreferenceThemeOverlay</item> </style> <!-- Using in SubSettings page including injected settings page --> @@ -29,8 +26,5 @@ <!-- Suppress the built-in action bar --> <item name="android:windowActionBar">false</item> <item name="android:windowNoTitle">true</item> - <!-- Set up edge-to-edge configuration for top app bar --> - <item name="android:navigationBarColor">@android:color/transparent</item> - <item name="android:statusBarColor">@android:color/transparent</item> </style> -</resources>
\ No newline at end of file +</resources> diff --git a/packages/SettingsLib/res/layout/user_preference.xml b/packages/SettingsLib/res/layout/user_preference.xml index aa07713e7f69..f13447a4737c 100644 --- a/packages/SettingsLib/res/layout/user_preference.xml +++ b/packages/SettingsLib/res/layout/user_preference.xml @@ -27,9 +27,7 @@ android:layout_width="@dimen/user_icon_view_height" android:layout_height="@dimen/user_icon_view_height" android:layout_gravity="center" - android:scaleType="fitCenter" - android:paddingBottom="@dimen/user_spinner_padding" - android:paddingTop="@dimen/user_spinner_padding" /> + android:scaleType="fitCenter" /> <TextView android:id="@android:id/title" @@ -42,6 +40,6 @@ android:fadingEdge="horizontal" android:paddingStart="@dimen/user_spinner_padding" android:paddingEnd="@dimen/user_spinner_padding" - style="?android:attr/textAppearanceMedium" /> + android:textAppearance="?android:attr/textAppearanceMedium" /> </LinearLayout> diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index 832894c163d8..8639d2154266 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -377,8 +377,8 @@ <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Maak dat enige program na eksterne berging geskryf kan word, ongeag manifeswaardes"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Dwing aktiwiteite om verstelbaar te wees"</string> <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Maak die groottes van alle aktiwiteite verstelbaar vir veelvuldige vensters, ongeag manifeswaardes."</string> - <string name="enable_freeform_support" msgid="7599125687603914253">"Aktiveer vormvrye-Windows"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Aktiveer steun vir eksperimentele vormvrye-Windows."</string> + <string name="enable_freeform_support" msgid="7599125687603914253">"Aktiveer vormvrye vensters"</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Aktiveer steun vir eksperimentele vormvrye vensters."</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Werkskerm-rugsteunwagwoord"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Volle rekenaarrugsteune word nie tans beskerm nie"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Tik om die wagwoord vir volledige rekenaarrugsteune te verander of te verwyder"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Aktiveer kodewisseling"</string> <string name="transcode_default" msgid="3784803084573509491">"Aanvaar dat programme moderne formate steun"</string> <string name="transcode_notification" msgid="5560515979793436168">"Wys kodewisselingkennisgewings"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Deaktiveer kodewisselingkas"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Lopende dienste"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Sien en beheer dienste wat tans aktief is"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet sal dalk binnekort afgaan (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Toestel sal dalk binnekort afgaan (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> oor tot vol"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> oor tot vol"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimeer tans vir batterygesondheid"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Onbekend"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Laai"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Laai tans vinnig"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Laai tans stadig"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Laai tans draadloos"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Laai nie"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Ingeprop; kan nie op die oomblik laai nie"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Gelaai"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Beheer deur administrateur"</string> <string name="disabled" msgid="8017887509554714950">"Gedeaktiveer"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Toegelaat"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"Nie toegelaat nie"</string> - <string name="install_other_apps" msgid="3232595082023199454">"Installeer onbekende apps"</string> + <string name="install_other_apps" msgid="3232595082023199454">"Installeer onbekende programme"</string> <string name="home" msgid="973834627243661438">"Instellingstuisblad"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0%"</item> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Kanselleer"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Wekkers en onthounotas"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Laat toe om wekkers of onthounotas te stel"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Wekkers en onthounotas"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Laat hierdie program toe om wekkers of ander tydgegronde geleenthede te stel. Die program sal kan wakker word en loop selfs wanneer jy nie die toestel gebruik nie. Neem kennis dat hierdie program dalk nie sal werk as hierdie toestemming herroep word nie – in besonder sal enige wekkers wat die program geskeduleer het, nie werk nie."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"skedule, wekker, onthounota, geleentheid"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Laat toe dat wekkers en onthounotas gestel word"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Wekkers en onthounotas"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Laat hierdie program toe om wekkers te stel en ander handelinge te skeduleer. Hierdie program kan gebruik word wanneer jy nie jou foon gebruik nie, en kan dalk meer batterykrag gebruik. As hierdie toestemming af is, sal hierdie program dalk nie normaal funksioneer en sy wekkers nie werk soos geskeduleer nie."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Laat hierdie program toe om wekkers te stel en ander handelinge te skeduleer. Hierdie program kan gebruik word wanneer jy nie jou tablet gebruik nie, en kan dalk meer batterykrag gebruik. As hierdie toestemming af is, sal hierdie program dalk nie normaal funksioneer en sy wekkers nie werk soos geskeduleer nie."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Laat hierdie program toe om wekkers te stel en ander handelinge te skeduleer. Hierdie program kan gebruik word wanneer jy nie jou toestel gebruik nie, en kan dalk meer batterykrag gebruik. As hierdie toestemming af is, sal hierdie program dalk nie normaal funksioneer en sy wekkers nie werk soos geskeduleer nie."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"skedule, wekker, onthounota, horlosie"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Skakel aan"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Skakel Moenie steur nie aan"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nooit"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Stel slot op"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Skakel oor na <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Skep tans nuwe gebruiker …"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Kon nie \'n nuwe gebruiker skep nie"</string> <string name="user_nickname" msgid="262624187455825083">"Bynaam"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Voeg gas by"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Verwyder gas"</string> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index 520289bb65dd..a1cf08d5c691 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -361,7 +361,7 @@ <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ለስህተት ማረሚያ መተግበሪያዎች የጂፒዩ ንብርብሮችን መስቀልን ፍቀድ"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"የዝርክርክ ቃላት አቅራቢ ምዝግብ ማስታወሻን መያዝ አንቃ"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"በሳንካ ሪፖርቶች ውስጥ ተጨማሪ መሣሪያ-ተኮር የአቅራቢ ምዝግብ ማስታወሻዎችን ያካትቱ፣ ይህም የግል መረጃን ሊይዝ፣ ተጨማሪ ባትሪ ሊፈጅ እና/ወይም ተጨማሪ ማከማቻ ሊጠቀም ይችላል።"</string> - <string name="window_animation_scale_title" msgid="5236381298376812508">"የዊንዶው እነማ ልኬት ለውጥ"</string> + <string name="window_animation_scale_title" msgid="5236381298376812508">"የ Window እነማ ልኬት ለውጥ"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"የእነማ ልኬት ለውጥ ሽግግር"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"እነማ አድራጊ ቆይታ መለኪያ"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"ሁለተኛ ማሳያዎችን አስመስለህ ስራ"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ትራንስኮዲንግን ያንቁ"</string> <string name="transcode_default" msgid="3784803084573509491">"መተግበሪያዎች ዘመናዊ ቅርጸቶችን እንደሚደግፉ አድርገው ይቁጠሩ"</string> <string name="transcode_notification" msgid="5560515979793436168">"ትራንስኮዲንግ ማሳወቂያዎችን አሳይ"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"የትራንስኮዲንግ መሸጎጫን አሰናክል"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"አሂድ አገልግሎቶች"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"በአሁኑጊዜ እየሄዱ ያሉ አገልግሎቶችን ተቆጣጠር እና እይ"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"የWebView ትግበራ"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ጡባዊው በቅርቡ ሊዘጋ ይችላል (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"መሣሪያው በቅርቡ ሊዘጋ ይችላል (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"እስኪሞላ ድረስ <xliff:g id="TIME">%1$s</xliff:g> ይቀራል"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - እስኪሞላ ድረስ <xliff:g id="TIME">%2$s</xliff:g> ይቀራል"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ለባትሪ ጤና ማመቻቸት"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"ያልታወቀ"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ኃይል በመሙላት ላይ"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"ኃይል በፍጥነት በመሙላት ላይ"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"ኃይል በዝግታ በመሙላት ላይ"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"በገመድ-አልባ ኃይል በመሙላት ላይ"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ባትሪ እየሞላ አይደለም"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ተሰክቷል፣ አሁን ኃይል መሙላት አይቻልም"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ባትሪ ሞልቷል"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"በአስተዳዳሪ ቁጥጥር የተደረገበት"</string> <string name="disabled" msgid="8017887509554714950">"ቦዝኗል"</string> <string name="external_source_trusted" msgid="1146522036773132905">"ይፈቀዳል"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"ይቅር"</string> <string name="okay" msgid="949938843324579502">"እሺ"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ማንቂያዎች እና አስታዋሾች"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"ማንቂያዎች ወይም አስታዋሾች እንዲቀናበሩ ይፍቀዱ"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"ማንቂያዎች እና አስታዋሾች"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"ይህ መተግበሪያ ማንቂያዎችን ወይም ሌሎች በጊዜ ላይ የተመሠረቱ ክስተቶች መርሐግብር እንዲያስይዝ ይፍቀዱለት። ይህ መሣሪያውን በማይጠቀሙበት ጊዜ እንኳን መተግበሪያው እንዲነቃ እና እንዲሰራ ያስችለዋል። ይህን ፈቃድ መሻር መተግበሪያው በአግባቡ እንዳይሠራ ሊያደርገው እንደሚችል ልብ ይበሉ፣ ማለትም መተግበሪያው መርሐግብር ያስያዛቸው ማናቸውም ማንቂያዎች ከእንግዲህ አይሰሩም።"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"መርሐግብር፣ ማንቂያ፣ አስታዋሽ፣ ክስተት"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"ማንቂያዎች እና አስታዋሾች እንዲዋቀሩ ይፍቀዱ"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"ማንቂያዎች እና አስታዋሾች"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"ይህ መተግበሪያ ማንቂያዎችን እንዲያቀናብር እና ለሌሎች እርምጃዎች የጊዜ መርሐግብር እንዲያዘጋጅ ይፍቀዱለት። ይህ መተግበሪያ መሣሪያዎን በማይጠቀሙበት ጊዜ ጥቅም ላይ ሊውል ይችላል፤ ይኽም ተጨማሪ ባትሪ ሊጠቀም ይችላል። ይህ ፈቃድ ከጠፋ ይህ መተግበሪያ መደበኛ ሥራውን ላይሰራ ይችላል፣ እንዲሁም ማንቂያዎቹ በጊዜ መርሐግብራቸው መሰረት አይሰሩም።"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"ይህ መተግበሪያ ማንቂያዎችን እንዲያቀናብር እና ለሌሎች እርምጃዎች የጊዜ መርሐግብር እንዲያዘጋጅ ይፍቀዱለት። ይህ መተግበሪያ መሣሪያዎን በማይጠቀሙበት ጊዜ ጥቅም ላይ ሊውል ይችላል፤ ይኽም ተጨማሪ ባትሪ ሊጠቀም ይችላል። ይህ ፈቃድ ከጠፋ ይህ መተግበሪያ መደበኛ ሥራውን ላይሰራ ይችላል፣ እንዲሁም ማንቂያዎቹ በጊዜ መርሐግብራቸው መሰረት አይሰሩም።"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"ይህ መተግበሪያ ማንቂያዎችን እንዲያቀናብር እና ለሌሎች እርምጃዎች የጊዜ መርሐግብር እንዲያዘጋጅ ይፍቀዱለት። ይህ መተግበሪያ መሣሪያዎን በማይጠቀሙበት ጊዜ ጥቅም ላይ ሊውል ይችላል፤ ይኽም ተጨማሪ ባትሪ ሊጠቀም ይችላል። ይህ ፈቃድ ከጠፋ ይህ መተግበሪያ መደበኛ ሥራውን ላይሰራ ይችላል፣ እንዲሁም ማንቂያዎቹ በጊዜ መርሐግብራቸው መሰረት አይሰሩም።"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"የጊዜ መርሐግብር፣ ማንቂያ፣ አስታዋሽ ሰዓት"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"አብራ"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"አትረብሽን አብራ"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"በጭራሽ"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"ቁልፍ አዘጋጅ"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"ወደ <xliff:g id="USER_NAME">%s</xliff:g> ቀይር"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"አዲስ ተጠቃሚ በመፍጠር ላይ…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"አዲስ ተጠቃሚን መፍጠር አልተሳካም"</string> <string name="user_nickname" msgid="262624187455825083">"ቅጽል ስም"</string> <string name="guest_new_guest" msgid="3482026122932643557">"እንግዳን አክል"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"እንግዳን አስወግድ"</string> diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml index 44f22ee9fcb5..f512db09659c 100644 --- a/packages/SettingsLib/res/values-ar/arrays.xml +++ b/packages/SettingsLib/res/values-ar/arrays.xml @@ -64,7 +64,7 @@ <item msgid="2779123106632690576">"مفعّل"</item> </string-array> <string-array name="bluetooth_avrcp_versions"> - <item msgid="6603880723315236832">"AVRCP 1.5 (التلقائي)"</item> + <item msgid="6603880723315236832">"AVRCP 1.5 (تلقائي)"</item> <item msgid="1637054408779685086">"AVRCP 1.3"</item> <item msgid="5896162189744596291">"AVRCP 1.4"</item> <item msgid="7556896992111771426">"AVRCP 1.6"</item> @@ -76,7 +76,7 @@ <item msgid="1963366694959681026">"avrcp16"</item> </string-array> <string-array name="bluetooth_map_versions"> - <item msgid="8786402640610987099">"MAP 1.2 (الإعداد الافتراضي)"</item> + <item msgid="8786402640610987099">"MAP 1.2 (تلقائي)"</item> <item msgid="6817922176194686449">"MAP 1.3"</item> <item msgid="3423518690032737851">"MAP 1.4"</item> </string-array> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index af071e878a06..e3c452d7ccef 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"إلغاء"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"يضمن لك الإقران إمكانية الدخول إلى جهات اتصالك وسجل المكالمات عند الاتصال."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"تعذر الإقران مع <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"تعذر الإقران مع <xliff:g id="DEVICE_NAME">%1$s</xliff:g> نظرًا لوجود رقم تعريف شخصي أو مفتاح مرور غير صحيح."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"تعذر الإقران مع <xliff:g id="DEVICE_NAME">%1$s</xliff:g> بسبب وجود رقم تعريف شخصي أو مفتاح مرور غير صحيح."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"لا يمكن الاتصال بـ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"تم رفض الاقتران بواسطة <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"كمبيوتر"</string> @@ -197,7 +197,7 @@ <string name="choose_profile" msgid="343803890897657450">"اختيار ملف شخصي"</string> <string name="category_personal" msgid="6236798763159385225">"شخصي"</string> <string name="category_work" msgid="4014193632325996115">"للعمل"</string> - <string name="development_settings_title" msgid="140296922921597393">"خيارات مطور البرامج"</string> + <string name="development_settings_title" msgid="140296922921597393">"خيارات المطورين"</string> <string name="development_settings_enable" msgid="4285094651288242183">"تفعيل خيارات المطورين"</string> <string name="development_settings_summary" msgid="8718917813868735095">"تعيين خيارات تطوير التطبيق"</string> <string name="development_settings_not_available" msgid="355070198089140951">"لا تتوفر خيارات مطوّر البرامج لهذا المستخدم"</string> @@ -238,15 +238,15 @@ <string name="bugreport_in_power" msgid="8664089072534638709">"اختصار تقرير الأخطاء"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"عرض زر في قائمة زر التشغيل لإعداد تقرير بالأخطاء"</string> <string name="keep_screen_on" msgid="1187161672348797558">"البقاء في الوضع النشط"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"لا يتم مطلقًا دخول الشاشة في وضع السكون أثناء الشحن"</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"لا يتم مطلقًا دخول الشاشة في وضع السكون أثناء الشحن."</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"تفعيل سجلّ تطفل بواجهة وحدة تحكم المضيف في بلوتوث"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"رَقمِن محتوى حزم بيانات البلوتوث. (تبديل البلوتوث بعد تغيير هذا الإعداد)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"فتح قفل المصنّع الأصلي للجهاز"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"السماح بإلغاء قفل برنامج bootloader"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"هل تريد السماح بإلغاء قفل المصنّع الأصلي للجهاز؟"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"تحذير: لن تعمل ميزات الحماية على هذا الجهاز أثناء تفعيل هذا الإعداد."</string> - <string name="mock_location_app" msgid="6269380172542248304">"اختيار تطبيق الموقع الزائف"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"لم يتم ضبط تطبيق موقع زائف"</string> + <string name="mock_location_app" msgid="6269380172542248304">"اختيار تطبيق الموقع الجغرافي الوهمي"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"لم يتم ضبط تطبيق موقع جغرافي وهمي"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"تطبيق الموقع الزائف: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"الشبكات"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"شهادة عرض شاشة لاسلكي"</string> @@ -283,7 +283,7 @@ <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"تعذّر الاتصال"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"عرض خيارات شهادة عرض شاشة لاسلكي"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"زيادة مستوى تسجيل Wi-Fi، وعرض لكل SSID RSSI في منتقي Wi-Fi"</string> - <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"لتقليل استنفاد البطارية وتحسين أداء الشبكة."</string> + <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"لتقليل استهلاك البطارية وتحسين أداء الشبكة"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"عند تفعيل هذا الوضع، قد يتم تغيير عنوان MAC لهذا الجهاز في كل مرة تتصل فيها بشبكة تم تفعيل التوزيع العشوائي لعناوين MAC عليها."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"تفرض تكلفة استخدام"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"بدون قياس"</string> @@ -309,7 +309,7 @@ <string name="dev_settings_warning_message" msgid="37741686486073668">"هذه الإعدادات مخصصة لاستخدام التطوير فقط. قد يتسبب هذا في حدوث أعطال أو خلل في أداء الجهاز والتطبيقات المثبتة عليه."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"التحقق من التطبيقات عبر USB"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"التحقق من التطبيقات المثبتة عبر ADB/ADT لكشف السلوك الضار"</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"سيتم عرض أجهزة البلوتوث بدون أسماء (عناوين MAC فقط)"</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"سيتم عرض أجهزة البلوتوث بدون أسماء (عناوين MAC فقط)."</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"لإيقاف ميزة مستوى الصوت المطلق للبلوتوث في حال حدوث مشاكل متعلقة بمستوى الصوت في الأجهزة البعيدة، مثل مستوى صوت عالٍ بشكل غير مقبول أو عدم إمكانية التحكّم في الصوت"</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"تفعيل حِزم ميزة Bluetooth Gabeldorsche"</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"لتفعيل الميزة \"إمكانية اتصال محسّن\""</string> @@ -380,7 +380,7 @@ <string name="enable_freeform_support" msgid="7599125687603914253">"تفعيل النوافذ الحرة"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"إتاحة استخدام النوافذ الحرة التجريبية"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"كلمة مرور احتياطية للكمبيوتر"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"النُسخ الاحتياطية الكاملة لسطح المكتب غير محمية في الوقت الحالي"</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"النُسخ الاحتياطية الكاملة لسطح المكتب غير محمية في الوقت الحالي."</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"انقر لتغيير كلمة مرور النسخ الاحتياطية الكاملة لسطح المكتب أو إزالتها."</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"تم ضبط كلمة مرور احتياطية جديدة"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"كلمة المرور الجديدة وتأكيدها لا يتطابقان"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"تفعيل تحويل الترميز"</string> <string name="transcode_default" msgid="3784803084573509491">"افتراض أن التطبيق يتوافق مع التنسيقات الحديثة"</string> <string name="transcode_notification" msgid="5560515979793436168">"إظهار إشعارات تحويل الترميز"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"إيقاف ذاكرة التخزين المؤقت لميزة \"تحويل الترميز\""</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"الخدمات قيد التشغيل"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"عرض الخدمات قيد التشغيل في الوقت الحالي والتحكم فيها"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"تطبيق WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"قد يتم إغلاق الجهاز اللوحي قريبًا (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"قد يتم إغلاق الجهاز قريبًا (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"يتبقّى <xliff:g id="TIME">%1$s</xliff:g> حتى اكتمال شحن البطارية."</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - يتبقّى <xliff:g id="TIME">%2$s</xliff:g> حتى اكتمال شحن البطارية."</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - التحسين للحفاظ على سلامة البطارية"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"غير معروف"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"جارٍ الشحن"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"جارٍ الشحن سريعًا"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"جارٍ الشحن ببطء"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"جارٍ الشحن لاسلكيًا"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"لا يتم الشحن"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"تم التوصيل، ولكن يتعذّر الشحن الآن"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"تم الشحن"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"إعدادات يتحكم فيها المشرف"</string> <string name="disabled" msgid="8017887509554714950">"غير مفعّل"</string> <string name="external_source_trusted" msgid="1146522036773132905">"مسموح به"</string> @@ -509,10 +508,12 @@ <string name="cancel" msgid="5665114069455378395">"إلغاء"</string> <string name="okay" msgid="949938843324579502">"حسنًا"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"المنبّهات والتذكيرات"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"السماح بضبط المنبّهات أو التذكيرات"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"المنبّهات والتذكيرات"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"يمكنك السماح لهذا التطبيق بضبط المنبّهات أو الموقّتات الأخرى استنادًا إلى الأحداث. سيسمح هذا الأذن بتنشيط التطبيق وتشغيله حتى في حال عدم استخدام الجهاز. تجدر الإشارة إلى أن إبطال هذا الأذن قد يسبب خللاً في عمل التطبيق، وعلى وجه الخصوص لن تعمل أي منبّهات تم ضبطها بواسطة التطبيق."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"جدول زمني، منبّه، تذكير، حدث، فعالية"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"السماح بضبط المنبّهات والتذكيرات"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"المنبّهات والتذكيرات"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"يمكنك السماح لهذا التطبيق بضبط المنبّهات وجدولة الإجراءات الأخرى. قد يتم استخدام هذا التطبيق عند عدم استخدامك للهاتف، مما قد يستهلك المزيد من شحن البطارية. إذا كان هذا الإذن غير مفعّل، قد لا يعمل هذا التطبيق بشكل طبيعي ولن تعمل المنبّهات فيه كما هو مقرر."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"يمكنك السماح لهذا التطبيق بضبط المنبّهات وجدولة الإجراءات الأخرى. قد يتم استخدام هذا التطبيق عند عدم استخدامك للجهاز اللوحي، مما قد يستهلك المزيد من شحن البطارية. إذا كان هذا الإذن غير مفعّل، قد لا يعمل هذا التطبيق بشكل طبيعي ولن تعمل المنبّهات فيه كما هو مقرر."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"يمكنك السماح لهذا التطبيق بضبط المنبّهات وجدولة الإجراءات الأخرى. قد يتم استخدام هذا التطبيق عند عدم استخدامك للجهاز، مما قد يستهلك المزيد من شحن البطارية. إذا كان هذا الإذن غير مفعّل، قد لا يعمل هذا التطبيق بشكل طبيعي ولن تعمل المنبّهات فيه كما هو مقرر."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"جدول زمني، جدولة، منبّه، تذكير، ساعة"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"تفعيل"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"تفعيل وضع \"الرجاء عدم الإزعاج\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"مطلقًا"</string> @@ -566,8 +567,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"تعيين التأمين"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"التبديل إلى <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"جارٍ إنشاء مستخدم جديد…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"تعذّر إنشاء مستخدم جديد."</string> <string name="user_nickname" msgid="262624187455825083">"اللقب"</string> <string name="guest_new_guest" msgid="3482026122932643557">"إضافة ضيف"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"إزالة جلسة الضيف"</string> diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml index 8b6d29bb0e55..e8d294dd9634 100644 --- a/packages/SettingsLib/res/values-as/strings.xml +++ b/packages/SettingsLib/res/values-as/strings.xml @@ -87,7 +87,7 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"ফাইল স্থানান্তৰণ"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"ইনপুট ডিভাইচ"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"ইণ্টাৰনেট সংযোগ"</string> - <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"শ্বেয়াৰিঙৰ সৈতে যোগাযোগ কৰক"</string> + <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"সম্পৰ্ক শ্বেয়াৰ কৰা"</string> <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"সম্পৰ্ক শ্বেয়াৰ কৰিবলৈ ব্যৱহাৰ কৰক"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"ইণ্টাৰনেট সংযোগ শ্বেয়াৰ"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"পাঠ বাৰ্তা"</string> @@ -275,7 +275,7 @@ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"ব্লুটুথ অডিঅ\' LDAC\nক\'ডেক বাছনি আৰম্ভ কৰক: প্লেবেকৰ গুণগত মান"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"ষ্ট্ৰীম কৰি থকা হৈছে: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"ব্যক্তিগত DNS"</string> - <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"ব্যক্তিগত DNS ম\'ড বাছনি কৰক"</string> + <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"ব্যক্তিগত ডিএনএছ ম\'ড বাছনি কৰক"</string> <string name="private_dns_mode_off" msgid="7065962499349997041">"অফ"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"স্বয়ংক্ৰিয়"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"ব্যক্তিগত ডিএনএছ প্ৰদানকাৰীৰ হোষ্টনাম"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ট্ৰেন্সক’ডিং সক্ষম কৰক"</string> <string name="transcode_default" msgid="3784803084573509491">"এপে আধুনিক ফৰ্মেট সমৰ্থন কৰে বুলি ধৰি লওক"</string> <string name="transcode_notification" msgid="5560515979793436168">"ট্ৰান্সক\'ডিঙৰ জাননী দেখুৱাওক"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ট্ৰান্সক\'ডিঙৰ কেশ্ব অক্ষম কৰক"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"চলিত সেৱা"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"বৰ্তমান চলি থকা সেৱাসমূহ চাওক আৰু নিয়ন্ত্ৰণ কৰক"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"ৱেবভিউ প্ৰয়োগ"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"টেবলেটটো সোনকালে বন্ধ হৈ যাব পাৰে (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ডিভাইচটো সোনকালে বন্ধ হৈ যাব পাৰে (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"সম্পূৰ্ণ হ’বলৈ <xliff:g id="TIME">%1$s</xliff:g> বাকী আছে"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"সম্পূৰ্ণ হ’বলৈ <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> বাকী আছে"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - বেটাৰীৰ অৱস্থা অপ্টিমাইজ কৰি থকা হৈছে"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"অজ্ঞাত"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"চাৰ্জ কৰি থকা হৈছে"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"দ্ৰুততাৰে চাৰ্জ হৈছে"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"লাহে লাহে চাৰ্জ হৈছে"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"বেতাঁৰৰ মাধ্যমেৰে চাৰ্জ হৈ আছে"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"চ্চাৰ্জ কৰা নাই"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"প্লাগ কৰি থোৱা হৈছে, এই মুহূৰ্তত চ্চাৰ্জ কৰিব নোৱাৰি"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"চাৰ্জ হ’ল"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"এডমিনৰ দ্বাৰা নিয়ন্ত্ৰিত"</string> <string name="disabled" msgid="8017887509554714950">"নিষ্ক্ৰিয়"</string> <string name="external_source_trusted" msgid="1146522036773132905">"অনুমতি দিয়া হৈছে"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"বাতিল কৰক"</string> <string name="okay" msgid="949938843324579502">"ঠিক"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"এলাৰ্ম আৰু ৰিমাইণ্ডাৰ"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"এলাৰ্ম অথবা ৰিমাইণ্ডাৰ ছেট কৰিবলৈ অনুমতি দিয়ক"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"এলাৰ্ম আৰু ৰিমাইণ্ডাৰ"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"এই এপ্টোক এলাৰ্ম অথবা অন্য সময় ভিত্তিক অনুষ্ঠানৰ সময়সূচী নিৰ্ধাৰণ কৰিবলৈ দিয়ক। এইটোৱে আপুনি ডিভাইচটো ব্যৱহাৰ কৰি নথকাৰ সময়তো অন্য এপক সক্ৰিয় হ’বলৈ আৰু চলিবলৈ অনুমতি দিয়ে। মনত ৰাখিব যে এই অনুমতিটো প্ৰত্যাহাৰ কৰাৰ ফলত এপ্টোৱে ভালদৰে কাম নকৰা হ’ব পাৰে, বিশেষকৈ এপ্টোৱে সময়সূচী নিৰ্ধাৰণ কৰা এলাৰ্মে আৰু কাম নকৰে।"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"সময়সূচী, এলাৰ্ম, ৰিমাইণ্ডাৰ, অনুষ্ঠান"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"এলাৰ্ম আৰু ৰিমাইণ্ডাৰ ছেট কৰাৰ অনুমতি দিয়ক"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"এলাৰ্ম আৰু ৰিমাইণ্ডাৰ"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"এই এপ্টোক এলাৰ্ম ছেট কৰিবলৈ আৰু অন্য কাৰ্যৰ সময়সূচী নিৰ্ধাৰণ কৰিবলৈ দিয়ক। এই এপ্টো আপুনি নিজৰ ফ’নটো ব্যৱহাৰ কৰি নথকাৰ সময়ত ব্যৱহাৰ কৰা হ’ব পাৰে, যি অধিক বেটাৰী খৰচ কৰিব পাৰে। যদি এই অনুমতিটো অফ কৰি ৰখা হয়, এই এপ্টোৱে স্বাভাৱিকভাৱে কাম নকৰিব পাৰে আৰু ইয়াৰ এলাৰ্মসমূহে নিৰ্ধাৰিত সময়সূচী অনুযায়ী কাম নকৰিব।"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"এই এপ্টোক এলাৰ্ম ছেট কৰিবলৈ আৰু অন্য কাৰ্যৰ সময়সূচী নিৰ্ধাৰণ কৰিবলৈ দিয়ক। এই এপ্টো আপুনি নিজৰ টেবলেটটো ব্যৱহাৰ কৰি নথকাৰ সময়ত ব্যৱহাৰ কৰা হ’ব পাৰে, যি অধিক বেটাৰী খৰচ কৰিব পাৰে। যদি এই অনুমতিটো অফ কৰি ৰখা হয়, এই এপ্টোৱে স্বাভাৱিকভাৱে কাম নকৰিব পাৰে আৰু ইয়াৰ এলাৰ্মসমূহে নিৰ্ধাৰিত সময়সূচী অনুযায়ী কাম নকৰিব।"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"এই এপ্টোক এলাৰ্ম ছেট কৰিবলৈ আৰু অন্য কাৰ্যৰ সময়সূচী নিৰ্ধাৰণ কৰিবলৈ দিয়ক। এই এপ্টো আপুনি নিজৰ ডিভাইচটো ব্যৱহাৰ কৰি নথকাৰ সময়ত ব্যৱহাৰ কৰা হ’ব পাৰে, যি অধিক বেটাৰী খৰচ কৰিব পাৰে। যদি এই অনুমতিটো অফ কৰি ৰখা হয়, এই এপ্টোৱে স্বাভাৱিকভাৱে কাম নকৰিব পাৰে আৰু ইয়াৰ এলাৰ্মসমূহে নিৰ্ধাৰিত সময়সূচী অনুযায়ী কাম নকৰিব।"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"সময়সূচী, এলাৰ্ম, ৰিমাইণ্ডাৰ, ঘড়ী"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"অন কৰক"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"অসুবিধা নিদিব অন কৰক"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"কেতিয়াও নহয়"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"লক ছেট কৰক"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g>লৈ সলনি কৰক"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰি থকা হৈছে…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰিব পৰা নগ’ল"</string> <string name="user_nickname" msgid="262624187455825083">"উপনাম"</string> <string name="guest_new_guest" msgid="3482026122932643557">"অতিথি যোগ কৰক"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"অতিথি আঁতৰাওক"</string> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index f00a87b6288d..5d2c997f4aa5 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -35,7 +35,7 @@ <string name="wifi_not_in_range" msgid="1541760821805777772">"Diapazonda deyil"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Avtomatik qoşulmayacaq"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"İnternet girişi yoxdur"</string> - <string name="saved_network" msgid="7143698034077223645">"<xliff:g id="NAME">%1$s</xliff:g> tərəfindən saxlandı"</string> + <string name="saved_network" msgid="7143698034077223645">"Yadda saxlayan: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="connected_to_metered_access_point" msgid="9179693207918156341">"Ölçülən şəbəkəyə qoşulub"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"%1$s üzərindən avtomatik qoşuldu"</string> <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Avtomatik olaraq şəbəkə reytinq provayderi ilə qoşuludur"</string> @@ -86,12 +86,12 @@ <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Telefon zəngləri"</string> <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Fayl transferi"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Daxiletmə cihazı"</string> - <string name="bluetooth_profile_pan" msgid="1006235139308318188">"İnternet girişi"</string> + <string name="bluetooth_profile_pan" msgid="1006235139308318188">"İnternetə giriş"</string> <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"Kontakt paylaşımı"</string> <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"Kontakt paylaşımı üçün istifadə edin"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"internet bağlantı paylaşımı"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mətn Mesajları"</string> - <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM Girişi"</string> + <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM-karta giriş"</string> <string name="bluetooth_profile_a2dp_high_quality" msgid="4739440941324792775">"HD audio: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"HD audio"</string> <string name="bluetooth_profile_hearing_aid" msgid="58154575573984914">"Eşitmə Aparatı"</string> @@ -113,12 +113,12 @@ <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"Fayl transferi üçün istifadə edin"</string> <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"Daxiletmə üçün istifadə edin"</string> <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"Eşitmə Aparatları üçün istifadə edin"</string> - <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Birləşdir"</string> - <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"CÜTLƏNDİR"</string> - <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Ləğv et"</string> + <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Qoşulsun"</string> + <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"QOŞULSUN"</string> + <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Ləğv edin"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Qoşulan zaman kontaktlarınıza və çağrı tarixçəsinə giriş cütlənməsi."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə birləşdirmək alınmadı."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Yanlış PIN və ya parola görə <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə cütləşmək alınmadı."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Yanlış PIN və ya parola görə <xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazına qoşulmaq olmur."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ilə ünsiyyət qurula bilmir."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Cütləşdirmə <xliff:g id="DEVICE_NAME">%1$s</xliff:g> tərəfindən rədd edildi."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Kompüter"</string> @@ -144,11 +144,11 @@ <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"Silinmiş tətbiqlər"</string> <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Tətbiqləri və istifadəçiləri silin"</string> <string name="data_usage_ota" msgid="7984667793701597001">"Sistem güncəllənməsi"</string> - <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB Birləşmə"</string> + <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB-modem"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Portativ hotspot"</string> - <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth birləşmə"</string> - <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Birləşmə"</string> - <string name="tether_settings_title_all" msgid="8910259483383010470">"Birləşmə və daşınan hotspot"</string> + <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth-modem"</string> + <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Modem rejimi"</string> + <string name="tether_settings_title_all" msgid="8910259483383010470">"Modem rejimi"</string> <string name="managed_user_title" msgid="449081789742645723">"Bütün iş tətbiqləri"</string> <string name="user_guest" msgid="6939192779649870792">"Qonaq"</string> <string name="unknown" msgid="3544487229740637809">"Naməlum"</string> @@ -202,7 +202,7 @@ <string name="development_settings_summary" msgid="8718917813868735095">"Tətbiq inkişafı seçimlərini təyin et"</string> <string name="development_settings_not_available" msgid="355070198089140951">"Gəlişdirici seçimləri bu istifadəçi üçün əlçatımlı deyil"</string> <string name="vpn_settings_not_available" msgid="2894137119965668920">"VPN ayarları bu istifadəçi üçün əlçatmazdır"</string> - <string name="tethering_settings_not_available" msgid="266821736434699780">"Modem ayarları bu istifadəçi üçün əlçatmazdır"</string> + <string name="tethering_settings_not_available" msgid="266821736434699780">"Modem ayarları bu istifadəçiyə qapalıdır"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Giriş Nöqtəsi Ad Ayarları bu istifadəçi üçün əlçatmazdır"</string> <string name="enable_adb" msgid="8072776357237289039">"USB debaq prosesi"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"USB qoşulu olan zaman debaq rejimi"</string> @@ -214,7 +214,7 @@ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Əlçatan cihazları görmək və onlardan istifadə etmək üçün WiFi sazlamasını yandırın"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR kodu ilə cihazı cütləşdirin"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR kod skanerindən istifadə etməklə yeni cihazları birləşdirin"</string> - <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Cütləşdirmə kodu ilə cihazı cütləşdirin"</string> + <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Qoşulma kodu ilə cihazı əlavə edin"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Altı rəqəmli koddan istifadə etməklə yeni cihazları cütləşdirin"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Cütləşdirilmiş cihazlar"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Hazırda qoşulub"</string> @@ -224,7 +224,7 @@ <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"Bağlantı uğursuz oldu"</string> <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> cihazının düzgün şəbəkəyə qoşulduğundan əmin olun"</string> <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Cihaz ilə cütləşdirin"</string> - <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wi‑Fi cütləşdirmə kodu"</string> + <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wi‑Fi qoşulma kodu"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Cütləşdirmə uğursuz oldu"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Cihazın eyni şəbəkəyə qoşulduğundan əmin olun."</string> <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR kodu skanlamaqla cihazı Wi‑Fi vasitəsilə cütləşdirin"</string> @@ -244,7 +244,7 @@ <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM kilidinin açılması"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Əməliyyat sistemi yükləyicisinin kilidinin açılmasına icazə ver"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"OEM kilidinin açılmasına icazə verilsin?"</string> - <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"XƏBƏRDARLIQ: Bu parametr yanılı olduqda cihazın qorunması xüsusiyyətləri işləməyəcək."</string> + <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"DİQQƏT: Bu parametr aktiv olduqca cihaz qorunmayacaq."</string> <string name="mock_location_app" msgid="6269380172542248304">"Saxta məkan tətbiqini seçin"</string> <string name="mock_location_app_not_set" msgid="6972032787262831155">"Ayarlanmış saxta məkan tətbiqi yoxdur"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"Saxta məkan tətbiqi: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> @@ -254,7 +254,7 @@ <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi skanlamasının tənzimlənməsi"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi ilə qabaqcıl MAC randomizasiyası"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobil data həmişə aktiv"</string> - <string name="tethering_hardware_offload" msgid="4116053719006939161">"Birləşmə üçün avadanlıq akselerasiyası"</string> + <string name="tethering_hardware_offload" msgid="4116053719006939161">"Modem rejimində cihaz sürətləndiricisi"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth cihazlarını adsız göstərin"</string> <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Mütləq səs həcmi deaktiv edin"</string> <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche\'ni aktiv edin"</string> @@ -275,17 +275,17 @@ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Bluetooth Audio LDAC\nCodec Seçimini aktiv edin: Oxutma Keyfiyyəti"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Canlı yayım: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"Şəxsi DNS"</string> - <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Şəxsi DNS Rejimini Seçin"</string> + <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Şəxsi DNS rejimini seçin"</string> <string name="private_dns_mode_off" msgid="7065962499349997041">"Deaktiv"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Avtomatik"</string> - <string name="private_dns_mode_provider" msgid="3619040641762557028">"Şəxsi DNS provayderinin host adı"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS provayderinin host adını daxil edin"</string> + <string name="private_dns_mode_provider" msgid="3619040641762557028">"Şəxsi DNS provayder hostunun adı"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS provayder host adını daxil edin"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Qoşulmaq mümkün olmadı"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Simsiz displey sertifikatlaşması üçün seçimləri göstərir"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi giriş səviyyəsini qaldırın, Wi‑Fi seçəndə hər SSID RSSI üzrə göstərin"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Batareya istifadəsini azaldır & şəbəkə performansını yaxşılaşdırır"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Bu rejim deaktiv edildikdə, bu cihaz hər dəfə MAC randomizasiyası aktiv edilmiş şəbəkəyə qoşulanda onun MAC ünvanı dəyişə bilər."</string> - <string name="wifi_metered_label" msgid="8737187690304098638">"Ödənişli"</string> + <string name="wifi_metered_label" msgid="8737187690304098638">"Tarif sayğacılı"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Limitsiz"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger bufer ölçüləri"</string> <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Hər jurnal buferinı Logger ölçüsü seçin"</string> @@ -299,7 +299,7 @@ <string name="allow_mock_location_summary" msgid="179780881081354579">"Sınaq yerləşmələrə icazə verin"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Atribut inspeksiyasına baxışa icazə verin"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Hətta Wi‑Fi aktiv olanda da mobil datanı həmişə aktiv saxlayın (sürətli şəbəkək keçidi üçün)."</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Əlçatan oldarsa, birləşmə üçün avadanlıq akselerasiyasından istifadə edin"</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"İmkan olduqda, modem rejimində cihaz sürətləndiricisi istifadə olunsun"</string> <string name="adb_warning_title" msgid="7708653449506485728">"USB debaq funksiyasına icazə verilsin?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"USB sazlanması yalnız inkişaf məqsədlidir. Kompüteriniz və cihazınız arasında datanı kopyalamaq üçün ondan istifadə edin, bildiriş olmadan tətbiqləri cihazınıza quraşdırın və qeydiyyat datasını oxuyun."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"WiFi sazlamasına icazə verilsin?"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Yenidən kodlaşdırmanı aktiv edin"</string> <string name="transcode_default" msgid="3784803084573509491">"Tətbiqlərin müasir formatları dəstəklədiyini qəbul edin"</string> <string name="transcode_notification" msgid="5560515979793436168">"Kod dəyişmə bildirişlərini göstərin"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Keşin kodlaşdırılmasını deaktiv edin"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"İşləyən xidmətlər"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Hazırda prosesdə olan xidmətləri görüntüləyin və onlara nəzarət edin"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView icrası"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Planşet tezliklə sönə bilər (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Cihaz tezliklə sönə bilər (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Tam şarj edilənədək <xliff:g id="TIME">%1$s</xliff:g> qalıb"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - tam şarj edilənədək <xliff:g id="TIME">%2$s</xliff:g> qalıb"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Enerjiyə qənaət üçün optimallaşdırma"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Naməlum"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Enerji doldurma"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Sürətlə doldurulur"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Asta doldurulur"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Simsiz şarj edilir"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Doldurulmur"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Cihaz hazırda batareya yığa bilmir"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Şarj edilib"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Admin tərəfindən nəzarət olunur"</string> <string name="disabled" msgid="8017887509554714950">"Deaktiv"</string> <string name="external_source_trusted" msgid="1146522036773132905">"İcazə verilib"</string> @@ -502,25 +501,27 @@ </plurals> <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Daha çox vaxt."</string> <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Daha az vaxt."</string> - <string name="cancel" msgid="5665114069455378395">"Ləğv et"</string> + <string name="cancel" msgid="5665114069455378395">"Ləğv edin"</string> <string name="okay" msgid="949938843324579502">"Ok"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Siqnallar və xatırladıcılar"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Siqnal və xatırladıcıları ayarlamağa icazə verin"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Siqnallar və xatırladıcılar"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Bu tətbiqin siqnallar və ya digər vaxta əsaslanan tədbirləri planlaşdırmasına icazə verin. Bu, cihazdan istifadə etmədiyiniz halda belə, tətbiqin oyanmasına və işləməsinə imkan verəcək. Nəzərə alın ki, bu icazəni ləğv etsəniz, tətbiq düzgün işləməyə bilər, xüsusən də, tətbiqin planlaşdırdığı siqnallar işləməyəcək."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"cədvəl, siqnal, xatırladıcı, tədbir"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Siqnallar və xatırlatmaları ayarlamağa icazə verin"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Siqnallar və xatırlatmalar"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Bu tətbiqə siqnallar ayarlamağa və digər əməliyyatları planlaşdırmağa icazə verin. Bu tətbiq telefonunuzu istifadə etmədiyiniz zaman istifadə edilə bilər və daha çox enerji istifadə edə bilər. Bu icazə deaktivdirsə, bu tətbiq normal işləməyə bilər və onun siqnalları planlaşdırıldığı kimi işləməyəcəkdir."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Bu tətbiqə siqnallar ayarlamağa və digər əməliyyatları planlaşdırmağa icazə verin. Bu tətbiq planşetinizi istifadə etmədiyiniz zaman istifadə edilə bilər və daha çox enerji istifadə edə bilər. Bu icazə deaktivdirsə, bu tətbiq normal işləməyə bilər və onun siqnalları planlaşdırıldığı kimi işləməyəcəkdir."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Bu tətbiqə siqnallar ayarlamağa və digər əməliyyatları planlaşdırmağa icazə verin. Bu tətbiq cihazınızı istifadə etmədiyiniz zaman istifadə edilə bilər və daha çox enerji istifadə edə bilər. Bu icazə deaktivdirsə, bu tətbiq normal işləməyə bilər və onun siqnalları planlaşdırıldığı kimi işləməyəcəkdir."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"cədvəl, siqnal, xatırlatma, saat"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aktiv edin"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\"Narahat Etməyin\" rejimini aktiv edin"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Heç vaxt"</string> - <string name="zen_interruption_level_priority" msgid="5392140786447823299">"Yalnız prioritet"</string> + <string name="zen_interruption_level_priority" msgid="5392140786447823299">"İcazəli şəxslər"</string> <string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string> <string name="zen_alarm_warning_indef" msgid="4146527909616457163">"Tez bir zamanda söndürməyincə, <xliff:g id="WHEN">%1$s</xliff:g> olduqda növbəti xəbərdarlığınızı eşitməyəcəksiniz"</string> <string name="zen_alarm_warning" msgid="245729928048586280">"<xliff:g id="WHEN">%1$s</xliff:g> olduqda növbəti xəbərdarlığınızı eşitməyəcəksiniz"</string> <string name="alarm_template" msgid="3346777418136233330">"<xliff:g id="WHEN">%1$s</xliff:g> olduqda"</string> <string name="alarm_template_far" msgid="6382760514842998629">"<xliff:g id="WHEN">%1$s</xliff:g> olduqda"</string> <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"Müddət"</string> - <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Hər dəfə soruşun"</string> - <string name="zen_mode_forever" msgid="3339224497605461291">"Deaktiv edənə qədər"</string> + <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Həmişə soruşulsun"</string> + <string name="zen_mode_forever" msgid="3339224497605461291">"Deaktiv edilənə qədər"</string> <string name="time_unit_just_now" msgid="3006134267292728099">"İndicə"</string> <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon dinamiki"</string> <string name="media_transfer_this_phone" msgid="7194341457812151531">"Bu telefon"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Kilid ayarlayın"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> adlı istifadəçiyə keçin"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Yeni istifadəçi yaradılır…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Yeni istifadəçi yaratmaq alınmadı"</string> <string name="user_nickname" msgid="262624187455825083">"Ləqəb"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Qonaq əlavə edin"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Qonağı silin"</string> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index 26528b50da5f..aa722b193cf3 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -236,7 +236,7 @@ <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Povežite se na WiFi mrežu"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, otklanjanje grešaka, programer"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Prečica za izveštaj o greškama"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikaži dugme u meniju napajanja za pravljenje izveštaja o greškama"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikazuje dugme u meniju napajanja za pravljenje izveštaja o greškama"</string> <string name="keep_screen_on" msgid="1187161672348797558">"Ne zaključavaj"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"Ekran neće biti u režimu spavanja tokom punjenja"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Omogući snoop evid. za Bluetooth HCI"</string> @@ -281,7 +281,7 @@ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Ime hosta dobavljača usluge privatnog DNS-a"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Unesite ime hosta dobavljača usluge DNS-a"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Povezivanje nije uspelo"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Prikaz opcija za sertifikaciju bežičnog ekrana"</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Prikazuje opcije za sertifikaciju bežičnog ekrana"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Povećava nivo evidentiranja za Wi‑Fi. Prikaz po SSID RSSI-u u biraču Wi‑Fi mreže"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Smanjuje potrošnju baterije i poboljšava učinak mreže"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Kada je ovaj režim omogućen, MAC adresa ovog uređaja može da se promeni svaki put kada se poveže sa mrežom na kojoj je omogućeno nasumično razvrstavanje MAC adresa."</string> @@ -298,8 +298,8 @@ <string name="allow_mock_location" msgid="2102650981552527884">"Dozvoli lažne lokacije"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"Dozvoli lažne lokacije"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Omogući proveru atributa za pregled"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Neka mobilni podaci uvek budu aktivni, čak i kada je Wi‑Fi aktivan (radi brze promene mreže)."</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Koristi hardversko ubrzanje privezivanja ako je dostupno"</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mobilni podaci su uvek aktivni, čak i kada je Wi‑Fi aktivan (radi brze promene mreže)."</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Koristi se hardversko ubrzanje privezivanja ako je dostupno"</string> <string name="adb_warning_title" msgid="7708653449506485728">"Dozvoli otklanjanje USB grešaka?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"Otklanjanje USB grešaka namenjeno je samo za svrhe programiranja. Koristite ga za kopiranje podataka sa računara na uređaj i obrnuto, instaliranje aplikacija na uređaju bez obaveštenja i čitanje podataka iz evidencije."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"Želite da dozvolite bežično otklanjanje grešaka?"</string> @@ -309,7 +309,7 @@ <string name="dev_settings_warning_message" msgid="37741686486073668">"Ova podešavanja su namenjena samo za programiranje. Mogu da izazovu prestanak funkcionisanja ili neočekivano ponašanje uređaja i aplikacija na njemu."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Verifikuj aplikacije preko USB-a"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Proverava da li su aplikacije instalirane preko ADB-a/ADT-a štetne."</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Biće prikazani Bluetooth uređaji bez naziva (samo sa MAC adresama)"</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Prikazuje Bluetooth uređaje bez naziva (samo MAC adrese)"</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Onemogućava glavno podešavanje jačine zvuka na Bluetooth uređaju u slučaju problema sa jačinom zvuka na daljinskim uređajima, kao što su izuzetno velika jačina zvuka ili nedostatak kontrole."</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Omogućava grupu Bluetooth Gabeldorsche funkcija."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Omogućava funkciju Poboljšano povezivanje."</string> @@ -331,54 +331,54 @@ <string name="media_category" msgid="8122076702526144053">"Mediji"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Nadgledanje"</string> <string name="strict_mode" msgid="889864762140862437">"Omogućen je strogi režim"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"Neka ekran treperi kada aplikacije obavljaju duge operacije na glavnoj niti"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"Ekran treperi kada aplikacije obavljaju duge operacije na glavnoj niti"</string> <string name="pointer_location" msgid="7516929526199520173">"Lokacija pokazivača"</string> <string name="pointer_location_summary" msgid="957120116989798464">"Preklopni element sa trenutnim podacima o dodiru"</string> <string name="show_touches" msgid="8437666942161289025">"Prikazuj dodire"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"Prikazuj vizuelne povratne informacije za dodire"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"Prikazuje vizuelne povratne informacije za dodire"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Prikaži ažuriranja površine"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"Osvetli sve površine prozora kada se ažuriraju"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"Osvetljava sve površine prozora kada se ažuriraju"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"Prikaži ažuriranja prikaza"</string> - <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Osvetli prikaze u prozorima kada se crta"</string> + <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Osvetljava prikaze u prozorima kada se crta"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Prikaži ažuriranja hardverskih slojeva"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Hardverski slojevi trepere zeleno kada se ažuriraju"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Otkloni greške GPU preklapanja"</string> <string name="disable_overlays" msgid="4206590799671557143">"Onemogući HW postavljene elemente"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"Uvek koristi GPU za komponovanje ekrana"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"Uvek se koristi GPU za komponovanje ekrana"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Simuliraj prostor boje"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Omogući OpenGL tragove"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Onemogući USB preusm. zvuka"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Onemogući aut. preusm. na USB audio periferne uređaje"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Onemogućava automatsko preusmeravanje na USB audio periferne uređaje"</string> <string name="debug_layout" msgid="1659216803043339741">"Prikaži granice rasporeda"</string> - <string name="debug_layout_summary" msgid="8825829038287321978">"Prikaži granice klipa, margine itd."</string> + <string name="debug_layout_summary" msgid="8825829038287321978">"Prikazuje granice klipa, margine itd."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Nametni smer rasporeda zdesna nalevo"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Nametni smer rasporeda ekrana zdesna nalevo za sve lokalitete"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Nameće smer rasporeda ekrana zdesna nalevo za sve lokalitete"</string> <string name="force_msaa" msgid="4081288296137775550">"Nametni 4x MSAA"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"Omogući 4x MSAA u OpenGL ES 2.0 aplikacijama"</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"Omogućava 4x MSAA u OpenGL ES 2.0 aplikacijama"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Otkloni greške isecanja oblasti nepravougaonog oblika"</string> <string name="track_frame_time" msgid="522674651937771106">"Renderuj pomoću HWUI-a"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Omogući slojeve za otklanjanje grešaka GPU-a"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Omogući učitavanje otk. greš. GPU-a u apl. za otk. greš."</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Učitava otklanjanje grešaka GPU-a u apl. za otklanjanje grešaka"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Opširne evidencije prodavca"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Uvrstite u izveštaje o greškama dodatne posebne evidencije prodavca za uređaje, koje mogu da sadrže privatne podatke, da troše više baterije i/ili da koriste više memorije."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Uvrštava u izveštaje o greškama dodatne posebne evidencije prodavca za uređaje, koje mogu da sadrže privatne podatke, da troše više baterije i/ili da koriste više memorije."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Razmera animacije prozora"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Razmera animacije prelaza"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatorova razmera trajanja"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuliraj sekundarne ekrane"</string> <string name="debug_applications_category" msgid="5394089406638954196">"Aplikacije"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"Ne čuvaj aktivnosti"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Uništi svaku aktivnost čim je korisnik napusti"</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Uništava svaku aktivnost čim je korisnik napusti"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Ograničenje pozadinskih procesa"</string> <string name="show_all_anrs" msgid="9160563836616468726">"Prikaži ANR-ove u pozadini"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"Prikaži dijalog Aplikacija ne reaguje za aplikacije u pozadini"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"Prikazuje dijalog Aplikacija ne reaguje za aplikacije u pozadini"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Prikazuj upozorenja zbog kanala za obaveštenja"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Prikazuje upozorenje na ekranu kada aplikacija postavi obaveštenje bez važećeg kanala"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Prinudno dozvoli aplikacije u spoljnoj"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Omogućava upisivanje svih aplikacija u spoljnu memoriju, bez obzira na vrednosti manifesta"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Prinudno omogući promenu veličine aktivnosti"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Omogući promenu veličine svih aktivnosti za režim sa više prozora, bez obzira na vrednosti manifesta."</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Omogućava promenu veličine svih aktivnosti za režim sa više prozora, bez obzira na vrednosti manifesta."</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Omogući prozore proizvoljnog formata"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Omogućite podršku za eksperimentalne prozore proizvoljnog formata."</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Omogućava podršku za eksperimentalne prozore proizvoljnog formata."</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Lozinka rezervne kopije za računar"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Rezervne kopije čitavog sistema trenutno nisu zaštićene"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Dodirnite da biste promenili ili uklonili lozinku za pravljenje rezervnih kopija čitavog sistema na računaru"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Omogući transkodiranje"</string> <string name="transcode_default" msgid="3784803084573509491">"Podrazumevaj da aplikacije podržavaju moderne formate"</string> <string name="transcode_notification" msgid="5560515979793436168">"Prikazuj obaveštenja o transkodiranju"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Onemogući keš transkodiranja"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Pokrenute usluge"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Prikaz i kontrola trenutno pokrenutih usluga"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Primena WebView-a"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet će se uskoro isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Uređaj će se uskoro isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> do kraja punjenja"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do kraja punjenja"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimizuje se radi boljeg stanja baterije"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Nepoznato"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Puni se"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Brzo se puni"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Sporo se puni"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Bežično punjenje"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ne puni se"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Priključeno je, ali punjenje trenutno nije moguće"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Napunjeno"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontroliše administrator"</string> <string name="disabled" msgid="8017887509554714950">"Onemogućeno"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Dozvoljeno"</string> @@ -506,10 +505,12 @@ <string name="cancel" msgid="5665114069455378395">"Otkaži"</string> <string name="okay" msgid="949938843324579502">"Potvrdi"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi i podsetnici"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Dozvoli podešavanje alarma ili podsetnika"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmi i podsetnici"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Dozvolite ovoj aplikaciji da zakazuje alarme ili druge događaje zasnovane na vremenu. Time dozvoljavate aplikaciji da se probudi i radi čak i kada ne koristite uređaj. Imajte na umu da aplikacija možda neće ispravno raditi ako opozovete ovu dozvolu. Konkretno, nijedan alarm koji je aplikacija zakazala neće više raditi."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"zakazati, alarm, podsetnik, događaj"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Omogući podešavanje alarma i podsetnika"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmi i podsetnici"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Omogućite ovoj aplikaciji da podešava alarme i zakazuje druge radnje. Ova aplikacija može da se koristi kada ne koristite telefon, što može da dodatno troši bateriju. Ako je ova dozvola isključena, ova aplikacija možda neće raditi normalno i njeni alarmi neće raditi po rasporedu."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Omogućite ovoj aplikaciji da podešava alarme i zakazuje druge radnje. Ova aplikacija može da se koristi kada ne koristite tablet, što može da dodatno troši bateriju. Ako je ova dozvola isključena, ova aplikacija možda neće raditi normalno i njeni alarmi neće raditi po rasporedu."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Omogućite ovoj aplikaciji da podešava alarme i zakazuje druge radnje. Ova aplikacija može da se koristi kada ne koristite uređaj, što može da dodatno troši bateriju. Ako je ova dozvola isključena, ova aplikacija možda neće raditi normalno i njeni alarmi neće raditi po rasporedu."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"zakazati, alarm, podsetnik, sat"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Uključi"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Uključite režim Ne uznemiravaj"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nikad"</string> @@ -563,8 +564,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Podesi zaključavanje"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Pređi na korisnika <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Pravi se novi korisnik…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Pravljenje novog korisnika nije uspelo"</string> <string name="user_nickname" msgid="262624187455825083">"Nadimak"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Dodaj gosta"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Ukloni gosta"</string> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 3f83d71d2fe4..65dcb2f2a966 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -204,9 +204,9 @@ <string name="vpn_settings_not_available" msgid="2894137119965668920">"Налады VPN недаступныя для гэтага карыстальніка"</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"Налады мадэма недаступныя для гэтага карыстальніка"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Налады Імя пункту доступу недаступныя для гэтага карыстальніка"</string> - <string name="enable_adb" msgid="8072776357237289039">"Адладка USB"</string> + <string name="enable_adb" msgid="8072776357237289039">"Адладка па USB"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"Рэжым адладкі, калі USB падключаны"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"Адклікаць дазвол USB-адладкі"</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"Скасаваць дазвол да адладкі па USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Адладка па Wi-Fi"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Рэжым адладкі з падключанай сеткай Wi‑Fi"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Памылка"</string> @@ -300,17 +300,17 @@ <string name="debug_view_attributes" msgid="3539609843984208216">"Уключыць прагляд атрыбутаў"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Перадача даных мабільнай сувязі заўсёды актыўная, нават калі актыўная сетка Wi‑Fi (для хуткага пераключэння паміж сеткамі)."</string> <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Выкарыстоўваць апаратнае паскарэнне ў рэжыме мадэма пры наяўнасці"</string> - <string name="adb_warning_title" msgid="7708653449506485728">"Дазволіць адладку USB?"</string> - <string name="adb_warning_message" msgid="8145270656419669221">"Адладка USB прызначана толькі для мэтаў распрацоўкі. Яна можа выкарыстоўвацца, каб капіяваць дадзеныя паміж кампутарам і прыладай, усталёўваць прыкладанні на прыладзе без папярэдняга апавяшчэння і чытаць дадзеныя дзённiка."</string> + <string name="adb_warning_title" msgid="7708653449506485728">"Дазволіць адладку па USB?"</string> + <string name="adb_warning_message" msgid="8145270656419669221">"Адладка па USB прызначана толькі для мэт распрацоўкі. Яна можа выкарыстоўвацца, каб капіраваць даныя паміж камп\'ютарам і прыладай, усталёўваць праграмы на прыладзе без папярэдняга апавяшчэння і чытаць даныя журнала."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"Дазволіць адладку па Wi-Fi?"</string> <string name="adbwifi_warning_message" msgid="8005936574322702388">"Адладка па Wi-Fi прызначана толькі для мэт распрацоўкі. Яна можа выкарыстоўвацца, каб капіраваць даныя паміж камп\'ютарам і прыладай, усталёўваць праграмы на прыладзе без апавяшчэння і чытаць даныя журнала."</string> - <string name="adb_keys_warning_message" msgid="2968555274488101220">"Адклікаць доступ да адладкі USB з усіх камп\'ютараў, на якiх вы уваходзiлi ў сiстэму?"</string> + <string name="adb_keys_warning_message" msgid="2968555274488101220">"Скасаваць доступ да адладкі па USB з усіх камп\'ютараў, на якiх вы уваходзiлi ў сiстэму?"</string> <string name="dev_settings_warning_title" msgid="8251234890169074553">"Дазволiць налады распрацоўшчыка?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"Гэтыя налады прызначаны толькi для распрацоўшыкаў. Яны могуць выклікаць збоi прылад i ўсталяваных на iх прыкладанняў, а таксама перашкаджаць iх працы."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Праверце праграмы па USB"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Праверка бяспекі праграм, усталяваных з дапамогай ADB/ADT."</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Прылады Bluetooth будуць паказаны без назваў (толькі MAC-адрасы)"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Адключыць функцыю абсалютнага гуку Bluetooth у выпадку праблем з гукам на аддаленых прыладах, напрыклад, пры непрымальна высокай гучнасці або адсутнасці кіравання."</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Адключыць функцыю абсалютнага гуку Bluetooth у выпадку праблем з гукам на аддаленых прыладах, напрыклад пры непрымальна высокай гучнасці або адсутнасці кіравання."</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Уключае стос функцый Bluetooth Gabeldorsche."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Уключае функцыю \"Палепшанае падключэнне\"."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Лакальны тэрмінал"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Уключыць перакадзіраванне"</string> <string name="transcode_default" msgid="3784803084573509491">"Лічыца, што праграмы падтрымліваюць сучасныя фарматы"</string> <string name="transcode_notification" msgid="5560515979793436168">"Паказваць апавяшчэнні пра перакадзіраванне"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Адключыць кэш перакадзіравання"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Запушчаныя службы"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Прагляд запушчаных службаў i кіраванне iмi"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Рэалізацыя WebView"</string> @@ -423,7 +424,7 @@ <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Дэйтэранамалія (чырвоны-зялёны)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Пратанамалія (чырвоны-зялёны)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Трытанамалія (сіні-жоўты)"</string> - <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Карэкцыя колеру"</string> + <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Карэкцыя колераў"</string> <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Наладзьце адлюстраванне колераў на экране прылады. Гэта налада можа быць карыснай, калі вы захочаце:<br/><br/> <ol> <li>&nbsp;бачыць колеры больш дакладна;</li> <li>&nbsp;выдаліць колеры, якія перашкаджаюць вам сканцэнтравацца</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Перавызначаны <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Планшэт у хуткім часе выключыцца (узровень зараду: <xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Прылада ў хуткім часе выключыцца (узровень зараду: <xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Да поўнай зарадкі засталося <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – да поўнай зарадкі засталося: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Аптымізацыя стану акумулятара"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Невядома"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Зарадка"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Хуткая зарадка"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Павольная зарадка"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Бесправадная зарадка"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не зараджаецца"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Падключана да сеткі сілкавання, зарадзіць зараз немагчыма"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Зараджаны"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Кантралюецца адміністратарам"</string> <string name="disabled" msgid="8017887509554714950">"Адключанае"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Дазволена"</string> @@ -507,10 +506,12 @@ <string name="cancel" msgid="5665114069455378395">"Скасаваць"</string> <string name="okay" msgid="949938843324579502">"ОК"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Будзільнікі і напаміны"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Дазволіць наладжваць будзільнікі і напаміны"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Будзільнікі і напаміны"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Дазвольце гэтай праграме ўключаць будзільнікі і задаваць час падзей. Дзякуючы гэтаму праграма будзе абуджацца і працаваць, нават калі вы не выкарыстоўваеце прыладу. Звярніце ўвагу, што скасаванне дазволу можа прывесці да збояў у працы праграмы, у прыватнасці, будуць адключаны будзільнікі, зададзеныя праграмай."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"расклад, будзільнік, напамін, падзея"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Дазволіць усталёўваць будзільнікі і напаміны"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Будзільнікі і напаміны"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Дазвольце гэтай праграме ўсталёўваць будзільнікі і задаваць расклад для дзеянняў. Праграма можа працаваць, калі вы не выкарыстоўваеце тэлефон, і ў выніку хутчэй разраджаць акумулятар. Калі гэты дазвол выключаны, праграма можа не працаваць належым чынам, а яе будзільнікі – не спрацоўваць як запланавана."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Дазвольце гэтай праграме ўсталёўваць будзільнікі і задаваць расклад для дзеянняў. Праграма можа працаваць, калі вы не выкарыстоўваеце планшэт, і ў выніку хутчэй разраджаць акумулятар. Калі гэты дазвол выключаны, праграма можа не працаваць належым чынам, а яе будзільнікі – не спрацоўваць як запланавана."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Дазвольце гэтай праграме ўсталёўваць будзільнікі і задаваць расклад для дзеянняў. Праграма можа працаваць, калі вы не выкарыстоўваеце прыладу, і ў выніку хутчэй разраджаць акумулятар. Калі гэты дазвол выключаны, праграма можа не працаваць належым чынам, а яе будзільнікі – не спрацоўваць як запланавана."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"расклад, будзільнік, напамін, гадзіннік"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Уключыць"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Уключэнне рэжыму \"Не турбаваць\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Ніколі"</string> @@ -564,8 +565,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Усталёўка блакiроўкi"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Пераключыцца на карыстальніка <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Ствараецца новы карыстальнік…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Не ўдалося стварыць новага карыстальніка"</string> <string name="user_nickname" msgid="262624187455825083">"Псеўданім"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Дадаць госця"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Выдаліць госця"</string> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index 55e87322c7e5..31b032529e20 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -117,8 +117,8 @@ <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"СДВОЯВАНЕ"</string> <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Отказ"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"При свързване сдвояването предоставя достъп до вашите контакти и история на обажданията."</string> - <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Не можа да се сдвои с/ъс <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Не можа да се сдвои с/ъс <xliff:g id="DEVICE_NAME">%1$s</xliff:g> поради неправилен ПИН или код за достъп."</string> + <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Неуспешно сдвояване с(ъс) <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Неуспешно сдвояване с(ъс) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> поради неправилен ПИН или код за достъп."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Не може да се свърже с/ъс <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Сдвояването е отхвърлено от <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Компютър"</string> @@ -250,7 +250,7 @@ <string name="mock_location_app_set" msgid="4706722469342913843">"Приложение за мнимо местоположение: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Мрежи"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Безжичен дисплей"</string> - <string name="wifi_verbose_logging" msgid="1785910450009679371">"„Многословно“ регистр. на Wi‑Fi: Актив."</string> + <string name="wifi_verbose_logging" msgid="1785910450009679371">"Активиране на „многословно“ регистр. на Wi‑Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Ограничаване на сканирането за Wi-Fi"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Подобр. рандом. на MAC адреса чрез Wi-Fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Винаги активни мобилни данни"</string> @@ -267,7 +267,7 @@ <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"Честота на дискретизация за звука през Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"Задействане на аудиокодек за Bluetooth\nИзбор: Честота на дискретизация"</string> <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"Неактивното състояние означава, че елементът не се поддържа от телефона или слушалките"</string> - <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Битове на дискрет за звука през Bluetooth"</string> + <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Битове на дискрет. за звука през Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Задействане на аудиокодек за Bluetooth\nИзбор: Битове на дискрет"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Режим на канала на звука през Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Задействане на аудиокодек за Bluetooth\nИзбор: Режим на канала"</string> @@ -347,21 +347,21 @@ <string name="disable_overlays_summary" msgid="1954852414363338166">"Винаги да се използва GPU за изграждане на екрана"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Цвет. простр.: Симулиране"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Трасирания на OpenGL: Акт."</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Маршрут. на аудио чрез USB: Деакт."</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Авт. маршрут. за периферните у-ва за аудио чрез USB: Деакт."</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Деактивиране на маршрутизирането на аудио чрез USB"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Деактивиране на автоматичното маршрутизиране към периферните USB устройства за аудио"</string> <string name="debug_layout" msgid="1659216803043339741">"Граници на оформлението"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Показв. на границите на изрязване, полетата и др."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Принуд. оформл. от дясно наляво"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Принуд. оформл. на екрана от дясно наляво за вс. локали"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Принудително оформление на екрана от дясно наляво за всички локали"</string> <string name="force_msaa" msgid="4081288296137775550">"Задаване на 4x MSAA"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"Активиране на 4x MSAA в прилож. с OpenGL ES 2.0"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Отстр. на грешки при неправоъг. изрязване"</string> <string name="track_frame_time" msgid="522674651937771106">"Изобр. на HWUI: Профилир."</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Активиране на слоевете за отстр. на грешки в ГП"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Разреш. на зарежд. на слоевете за отстр. на грешки в ГП за съотв. прилож."</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Подр. рег. файлове за доставчиците: Актив."</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Активиране на подробно регистр. на файлове за доставчиците"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Включване на допълнителни регистрационни файлове за доставчиците на конкретни устройства в сигналите за програмни грешки, които може да съдържат поверителна информация, да изразходват батерията в по-голяма степен и/или да използват повече място в хранилището."</string> - <string name="window_animation_scale_title" msgid="5236381298376812508">"Скала на аним.: Прозорец"</string> + <string name="window_animation_scale_title" msgid="5236381298376812508">"Скала на прозореца на аним."</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Скала на преходната анимация"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Скала за Animator"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Симулиране на алтерн. дисплеи"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Активиране на прекодирането"</string> <string name="transcode_default" msgid="3784803084573509491">"Предполагане, че приложенията поддържат съвременни формати"</string> <string name="transcode_notification" msgid="5560515979793436168">"Показване на известията за прекодиране"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Деактивиране на кеша за прекодиране"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Изпълнявани услуги"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Преглед и контрол върху изпълняващите се понастоящем услуги"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Внедряване на WebView"</string> @@ -457,6 +458,7 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Зарежда се"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Зарежда се бързо"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Зарежда се бавно"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Зарежда се безжично"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не се зарежда"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Включена в захранването, в момента не се зарежда"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Заредена"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Отказ"</string> <string name="okay" msgid="949938843324579502">"ОK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Будилници и напомняния"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Разрешаване на задаване на будилници и напомняния"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Будилници и напомняния"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Разрешете на това приложение да задава будилници и да насрочва други събития, свързани с време. Това ще даде възможност на приложението да се активира и изпълнява дори когато не използвате устройството. Обърнете внимание, че отмяната на това разрешение може да възпрепятства работата на приложението (зададените от него будилници вече няма да работят)."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"насрочване, будилник, напомняне, събитие"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Разреш. на задаването на будилници и напомняния"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Будилници и напомняния"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Разрешете на това приложение да задава будилници и да насрочва други действия. То може да работи, когато не използвате телефона си, и затова да изразходва повече енергия. Ако това разрешение е изключено, приложението може да не функционира нормално, а зададените будилници няма да работят."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Разрешете на това приложение да задава будилници и да насрочва други действия. То може да работи, когато не използвате таблета си, и затова да изразходва повече енергия. Ако това разрешение е изключено, приложението може да не функционира нормално, а зададените будилници няма да работят."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Разрешете на това приложение да задава будилници и да насрочва други действия. То може да работи, когато не използвате устройството си, и затова да изразходва повече енергия. Ако това разрешение е изключено, приложението може да не функционира нормално, а зададените будилници няма да работят."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"график, будилник, напомняне, часовник"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Включване"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Включване на режима „Не безпокойте“"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Никога"</string> @@ -559,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Задаване на заключване"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Превключване към <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Създава се нов потребител…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Неуспешно създаване на нов потребител"</string> <string name="user_nickname" msgid="262624187455825083">"Псевдоним"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Добавяне на гост"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Премахване на госта"</string> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index 9e2ce0908359..8d5c99de6fb4 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -228,7 +228,7 @@ <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"পেয়ার করা যায়নি"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"ডিভাইসটি একই নেটওয়ার্কে কানেক্ট আছে কিনা দেখে নিন।"</string> <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR কোড স্ক্যান করে ওয়াই-ফাই ব্যবহার করে ডিভাইসের সাথে পেয়ার করুন"</string> - <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"ডিভাইস যোগ করা হচ্ছে…"</string> + <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"ডিভাইস পেয়ার করা হচ্ছে…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"ডিভাইস যোগ করা যায়নি। এটি দুটি কারণে হয়ে থাকে - QR কোডটি সঠিক নয় বা ডিভাইসটি একই নেটওয়ার্কে কানেক্ট করা নেই।"</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP অ্যাড্রেস ও পোর্ট"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR কোড স্ক্যান করুন"</string> @@ -318,7 +318,7 @@ <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP পরীক্ষণ"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP চেক করার আচরণ সেট করুন"</string> <string name="debug_debugging_category" msgid="535341063709248842">"ডিবাগিং"</string> - <string name="debug_app" msgid="8903350241392391766">"ডিবাগ অ্যাপ্লিকেশান বেছে নিন"</string> + <string name="debug_app" msgid="8903350241392391766">"ডিবাগ অ্যাপ বেছে নিন"</string> <string name="debug_app_not_set" msgid="1934083001283807188">"ডিবাগ অ্যাপ্লিকেশান সেট করা নেই"</string> <string name="debug_app_set" msgid="6599535090477753651">"ডিবাগিং অ্যাপ্লিকেশান: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"অ্যাপ্লিকেশান বেছে নিন"</string> @@ -354,7 +354,7 @@ <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL লেআউট দিকনির্দেশ জোর দিন"</string> <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"সমস্ত স্থানের জন্য RTL এ স্ক্রিন লেআউট দিকনির্দেশে জোর দেয়"</string> <string name="force_msaa" msgid="4081288296137775550">"4x MSAA এ জোর দিন"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 অ্যাপ্লিকেশানগুলির মধ্যে 4x MSAA সক্রিয় করুন"</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 অ্যাপের মধ্যে 4x MSAA চালু করুন"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"অ-আয়তক্ষেত্রাকার ক্লিপ অ্যাক্টিভিটি ডিবাগ করুন"</string> <string name="track_frame_time" msgid="522674651937771106">"প্রোফাইল HWUI রেন্ডারিং"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ডিবাগ স্তর চালু করুন"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ট্রান্সকোডিং চালু করুন"</string> <string name="transcode_default" msgid="3784803084573509491">"অ্যাপ মর্ডার্ন ফর্ম্যাটে কাজ করবে বলে ধরে নিন"</string> <string name="transcode_notification" msgid="5560515979793436168">"ট্রান্সকোডিং বিজ্ঞপ্তি দেখুন"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ক্যাশে ট্রান্সকোডিং বন্ধ করুন"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"এখন চলছে যে পরিষেবাগুলি"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"বর্তমান চলমান পরিষেবাগুলি দেখুন এবং নিয়ন্ত্রণ করুন"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"ওয়েবভিউ প্রয়োগ"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ট্যাবলেটটি শীঘ্রই বন্ধ হয়ে যেতে পারে (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ডিভাইসটি শীঘ্রই বন্ধ হয়ে যেতে পারে (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g>-এ ব্যাটারি পুরো চার্জ হয়ে যাবে"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>-এ ব্যাটারি পুরো চার্জ হয়ে যাবে"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ব্যাটারির চার্জ অপটিমাইজ করা হচ্ছে"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"অজানা"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"চার্জ হচ্ছে"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"দ্রুত চার্জ হচ্ছে"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"ধীরে চার্জ হচ্ছে"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"কেবল ছাড়া চার্জ হচ্ছে"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"চার্জ হচ্ছে না"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"প্লাগ-ইন করা হয়েছে কিন্তু এখনই চার্জ করা যাবে না"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"চার্জ হয়েছে"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"প্রশাসকের দ্বারা নিয়ন্ত্রিত"</string> <string name="disabled" msgid="8017887509554714950">"অক্ষম হয়েছে"</string> <string name="external_source_trusted" msgid="1146522036773132905">"অনুমোদিত"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"বাতিল"</string> <string name="okay" msgid="949938843324579502">"ঠিক আছে"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"অ্যালার্ম এবং রিমাইন্ডার"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"অ্যালার্ম এবং রিমাইন্ডার সেট করতে অনুমতি দিন"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"অ্যালার্ম এবং রিমাইন্ডার"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"অ্যালার্ম শিডিউল করা বা অন্য সময় ভিত্তিক ইভেন্টের জন্য এই অ্যাপকে অনুমতি দিন। আপনি ডিভাইস ব্যবহার না করলেও এর ফলে অ্যাপ কাজ করা শুরু করে দেবে। মনে রাখবেন অনুমতি না দিলে অ্যাপ ঠিকভাবে কাজ নাও করতে পারে, বিশেষ করে অ্যাপে শিডিউল করা যেকোনও অ্যালার্ম নাও বাজতে পারে।"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"শিডিউল, অ্যালার্ম, রিমাইন্ডার, ইভেন্ট"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"অ্যালার্ম এবং রিমাইন্ডার সেট করার অনুমতি দিন"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"অ্যালার্ম এবং রিমাইন্ডার"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"অন্যান্য অ্যাকশন শিডিউল করতে এবং অ্যালার্ম সেট করার জন্য এই অ্যাপকে অনুমতি দিন। আপনি ফোন ব্যবহার না করার সময় এই অ্যাপ ব্যবহার করা হতে পারে, কারণ এটির জন্য বেশি ব্যাটারি চার্জ লাগতে পারে। অনুমতি দেওয়া না থাকলে, এই অ্যাপ সঠিকভাবে কাজ নাও করতে পারে এবং অ্যালার্মও শিডিউল অনুযায়ী বাজবে না।"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"অন্যান্য অ্যাকশন শিডিউল করতে এবং অ্যালার্ম সেট করার জন্য এই অ্যাপকে অনুমতি দিন। আপনি ট্যাবলেট ব্যবহার না করার সময় এই অ্যাপ ব্যবহার করা হতে পারে, কারণ এটির জন্য বেশি ব্যাটারি চার্জ লাগতে পারে। অনুমতি দেওয়া না থাকলে, এই অ্যাপ সঠিকভাবে কাজ নাও করতে পারে এবং অ্যালার্মও শিডিউল অনুযায়ী বাজবে না।"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"অন্যান্য অ্যাকশন শিডিউল করতে এবং অ্যালার্ম সেট করার জন্য এই অ্যাপকে অনুমতি দিন। আপনি ডিভাইস ব্যবহার না করার সময় এই অ্যাপ ব্যবহার করা হতে পারে, কারণ এটির জন্য বেশি ব্যাটারি চার্জ খরচ হতে পারে। অনুমতি দেওয়া না থাকলে, এই অ্যাপ সঠিকভাবে কাজ নাও করতে পারে এবং অ্যালার্মও শিডিউল অনুযায়ী বাজবে না।"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"শিডিউল, অ্যালার্ম, রিমাইন্ডার, ঘড়ি"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"চালু করুন"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\'বিরক্ত করবে না\' মোড চালু করুন"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"কখনও নয়"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"লক সেট করুন"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g>-এ পাল্টান"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"নতুন ব্যবহারকারী তৈরি করা হচ্ছে…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"নতুন ব্যবহারকারী যোগ করা যায়নি"</string> <string name="user_nickname" msgid="262624187455825083">"বিশেষ নাম"</string> <string name="guest_new_guest" msgid="3482026122932643557">"অতিথি যোগ করুন"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"অতিথি সরান"</string> diff --git a/packages/SettingsLib/res/values-bs/arrays.xml b/packages/SettingsLib/res/values-bs/arrays.xml index bb51f2b687ee..8375efc696e9 100644 --- a/packages/SettingsLib/res/values-bs/arrays.xml +++ b/packages/SettingsLib/res/values-bs/arrays.xml @@ -54,9 +54,9 @@ <item msgid="9048424957228926377">"Uvijek provjeri"</item> </string-array> <string-array name="hdcp_checking_summaries"> - <item msgid="4045840870658484038">"Nikada ne koristi HDCP provjeru"</item> - <item msgid="8254225038262324761">"Koristi HDCP provjeru samo za DRM sadržaj"</item> - <item msgid="6421717003037072581">"Uvijek koristi HDCP provjeru"</item> + <item msgid="4045840870658484038">"Nikada ne koristite HDCP provjeru"</item> + <item msgid="8254225038262324761">"Koristite HDCP provjeru samo za DRM sadržaj"</item> + <item msgid="6421717003037072581">"Uvijek koristite HDCP provjeru"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> <item msgid="695678520785580527">"Onemogućeno"</item> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index 10214641ed76..9242a7010db0 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -162,7 +162,7 @@ <string name="tts_default_pitch_title" msgid="6988592215554485479">"Visina glasa"</string> <string name="tts_default_pitch_summary" msgid="9132719475281551884">"Utiče na ton sintetiziranog govora"</string> <string name="tts_default_lang_title" msgid="4698933575028098940">"Jezik"</string> - <string name="tts_lang_use_system" msgid="6312945299804012406">"Koristi jezik sistema"</string> + <string name="tts_lang_use_system" msgid="6312945299804012406">"Korištenje jezika sistema"</string> <string name="tts_lang_not_selected" msgid="7927823081096056147">"Jezik nije izabran"</string> <string name="tts_default_lang_summary" msgid="9042620014800063470">"Postavlja glas za dati jezik za izgovoreni tekst"</string> <string name="tts_play_example_title" msgid="1599468547216481684">"Poslušajte primjer"</string> @@ -206,7 +206,7 @@ <string name="apn_settings_not_available" msgid="1147111671403342300">"Postavke za ime pristupne tačke nisu dostupne za ovog korisnika"</string> <string name="enable_adb" msgid="8072776357237289039">"Otklanjanje grešaka putem USB-a"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"Način rada za uklanjanje grešaka kada je povezan USB"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"Ukini odobrenja otklanjanja grešaka putem USB-a"</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"Ukinite odobrenja otklanjanja grešaka putem USB-a"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Bežično otklanjanje grešaka"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Način rada otklanjanja grešaka kada je WiFi mreža povezana"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Greška"</string> @@ -251,9 +251,9 @@ <string name="debug_networking_category" msgid="6829757985772659599">"Umrežavanje"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Certifikacija bežičnog prikaza"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Omogući detaljni zapisnik za WiFi"</string> - <string name="wifi_scan_throttling" msgid="2985624788509913617">"Reguliranje skeniranja WiFi mreže"</string> + <string name="wifi_scan_throttling" msgid="2985624788509913617">"Usporavanje skeniranja WiFi-ja"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Nasum. odabir MAC-a poboljšan WiFi-jem"</string> - <string name="mobile_data_always_on" msgid="8275958101875563572">"Prijenos podataka na mobilnoj mreži je uvijek aktivan"</string> + <string name="mobile_data_always_on" msgid="8275958101875563572">"Prijenos podataka na mobilnoj mreži uvijek aktivan"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardversko ubrzavanje za povezivanje putem mobitela"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži Bluetooth uređaje bez naziva"</string> <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Onemogući apsolutnu jačinu zvuka"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Omogući transkodiranje"</string> <string name="transcode_default" msgid="3784803084573509491">"Pretpostavi da aplikacije podržavaju moderne formate"</string> <string name="transcode_notification" msgid="5560515979793436168">"Prikaži obavještenja o transkodiranju"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Onemogućite keš memoriju za transkodiranje"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Pokrenute usluge"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Prikaz i kontrola trenutno pokrenutih usluga"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Postavljanje WebViewa"</string> @@ -423,7 +424,7 @@ <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Deuteranomalija (crveno-zeleno)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno-zeleno)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo-žuto)"</string> - <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Ispravka boje"</string> + <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Ispravka boja"</string> <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Podešavanje načina na koji se boje prikazuju na uređaju. To može biti korisno kada želite:<br/><br/> <ol> <li>&nbsp;preciznije prikazati boje</li> <li>&nbsp;ukloniti boje da se lakše fokusirate</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Zamjenjuje <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet će se uskoro isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Uređaj će se uskoro isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> do potpune napunjenosti"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do potpune napunjenosti"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimiziranje radi očuvanja baterije"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Nepoznato"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Punjenje"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Brzo punjenje"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Sporo punjenje"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Bežično punjenje"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ne puni se"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Priključeno, trenutno se ne može puniti"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Napunjeno"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Pod kontrolom administratora"</string> <string name="disabled" msgid="8017887509554714950">"Onemogućeno"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Dozvoljeno"</string> @@ -506,10 +505,12 @@ <string name="cancel" msgid="5665114069455378395">"Otkaži"</string> <string name="okay" msgid="949938843324579502">"Uredu"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi i podsjetnici"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Dozvoli postavljanje alarma ili podsjetnika"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmi i podsjetnici"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Dozvolite ovoj aplikaciji da zakazuje alarme ili druge događaje zasnovane na vremenskom rasporedu. To će dozvoliti aplikaciji da se probudi i pokrene čak i kada ne koristite uređaj. Imajte na umu da ukidanje ovog odobrenja može uzrokovati neispravan rad aplikacije, odnosno nijedan alarm koji je aplikacija zakazala više neće funkcionirati."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"raspored, alarm, podsjetnik, događaj"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Dozvoli postavljanje alarma i podsjetnika"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmi i podsjetnici"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Dozvolite ovoj aplikaciji da postavlja alarme i zakaže druge radnje. Ova aplikacija se može koristiti kada ne koristite telefon, čime se može povećati potrošnja baterije. Ako isključite ovo odobrenje, moguće je da ova aplikacija neće funkcionirati kako je namijenjeno, a njeni alarmi neće funkcionirati prema rasporedu."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Dozvolite ovoj aplikaciji da postavlja alarme i zakaže druge radnje. Ova aplikacija se može koristiti kada ne koristite tablet, čime se može povećati potrošnja baterije. Ako isključite ovo odobrenje, moguće je da ova aplikacija neće funkcionirati kako je namijenjeno, a njeni alarmi neće funkcionirati prema rasporedu."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Dozvolite ovoj aplikaciji da postavlja alarme i zakaže druge radnje. Ova aplikacija se može koristiti kada ne koristite uređaj, čime se može povećati potrošnja baterije. Ako isključite ovo odobrenje, moguće je da ova aplikacija neće funkcionirati kako je namijenjeno, a njeni alarmi neće funkcionirati prema rasporedu."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"raspored, alarm, podsjetnik, sat"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Uključi"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Uključi način rada Ne ometaj"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nikada"</string> @@ -563,8 +564,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Postaviti zaključavanje"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Prebaci na korisnika <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Kreiranje novog korisnika…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Kreiranje novog korisnika nije uspjelo"</string> <string name="user_nickname" msgid="262624187455825083">"Nadimak"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Dodaj gosta"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Ukloni gosta"</string> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index 24455710635f..7bb27abb17a2 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Cancel·la"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"La vinculació permet accedir als contactes i a l\'historial de trucades quan el dispositiu està connectat."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"No s\'ha pogut vincular amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No s\'ha pogut vincular amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, perquè el PIN o la contrasenya són incorrectes."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No s\'ha pogut vincular a <xliff:g id="DEVICE_NAME">%1$s</xliff:g>: el PIN o la clau d\'accés són incorrectes."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"No es pot comunicar amb <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Vinculació rebutjada per <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Ordinador"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Activa la transcodificació"</string> <string name="transcode_default" msgid="3784803084573509491">"Assumeix que les aplicacions són compatibles amb formats moderns"</string> <string name="transcode_notification" msgid="5560515979793436168">"Mostra les notificacions de transcodificació"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Desactiva la memòria cau per a la transcodificació"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Serveis en execució"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Visualitza i controla els serveis en execució"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementació de WebView"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"És possible que la tauleta s\'apagui aviat (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"És possible que el dispositiu s\'apagui aviat (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> per completar la càrrega"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> per completar la càrrega"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g>: s\'està optimitzant per preservar l\'estat de la bateria"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconegut"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"S\'està carregant"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Carregant ràpidament"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Carregant lentament"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Carregant sense fil"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"No s\'està carregant"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"El dispositiu està endollat però en aquests moments no es pot carregar"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Carregada"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlat per l\'administrador"</string> <string name="disabled" msgid="8017887509554714950">"Desactivat"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Amb permís"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"Sense permís"</string> - <string name="install_other_apps" msgid="3232595082023199454">"Instal·la aplicacions desconegudes"</string> + <string name="install_other_apps" msgid="3232595082023199454">"Instal·lar aplicacions desconegudes"</string> <string name="home" msgid="973834627243661438">"Pàgina d\'inici de configuració"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0%"</item> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancel·la"</string> <string name="okay" msgid="949938843324579502">"D\'acord"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes i recordatoris"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Permet configurar alarmes o recordatoris"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmes i recordatoris"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Permet que aquesta aplicació programi alarmes o altres esdeveniments basats en el temps. Això permetrà que l\'aplicació s\'activi i s\'executi fins i tot quan no utilitzes el dispositiu. Si revoques aquest permís, pot ser que l\'aplicació no funcioni correctament; concretament, no sonarà cap alarma que l\'aplicació hagi programat."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"programació, alarma, recordatori, esdeveniment"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Permet la configuració d\'alarmes i recordatoris"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmes i recordatoris"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Permet que aquesta aplicació configuri alarmes i programi altres accions. Aquesta aplicació es pot utilitzar quan no fas servir el telèfon, que pot consumir més bateria. Si aquest permís està desactivat, pot ser que l\'aplicació no funcioni amb normalitat i que les alarmes no funcionin tal com s\'han programat."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Permet que aquesta aplicació configuri alarmes i programi altres accions. Aquesta aplicació es pot utilitzar quan no fas servir la tauleta, que pot consumir més bateria. Si aquest permís està desactivat, pot ser que l\'aplicació no funcioni amb normalitat i que les alarmes no funcionin tal com s\'han programat."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Permet que aquesta aplicació configuri alarmes i programi altres accions. Aquesta aplicació es pot utilitzar quan no fas servir el dispositiu, que pot consumir més bateria. Si aquest permís està desactivat, pot ser que l\'aplicació no funcioni amb normalitat i que les alarmes no funcionin tal com s\'han programat."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"programació, alarma, recordatori, rellotge"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Activa"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Activa el mode No molestis"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Mai"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Defineix un bloqueig"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Canvia a <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"S\'està creant l\'usuari…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"No s\'ha pogut crear l\'usuari"</string> <string name="user_nickname" msgid="262624187455825083">"Àlies"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Afegeix un convidat"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Suprimeix el convidat"</string> diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml index 87a7c8d29150..54e809679bc7 100644 --- a/packages/SettingsLib/res/values-cs/arrays.xml +++ b/packages/SettingsLib/res/values-cs/arrays.xml @@ -217,7 +217,7 @@ <item msgid="2464080977843960236">"Měřítko animace 10x"</item> </string-array> <string-array name="overlay_display_devices_entries"> - <item msgid="4497393944195787240">"Žádný"</item> + <item msgid="4497393944195787240">"Žádná"</item> <item msgid="8461943978957133391">"480p"</item> <item msgid="6923083594932909205">"480p (zabezpečeno)"</item> <item msgid="1226941831391497335">"720p"</item> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index 1e3869303140..1a7e83be5268 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -113,16 +113,16 @@ <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"Použít pro přenos souborů"</string> <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"Použít pro vstup"</string> <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"Použít pro naslouchátka"</string> - <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Párovat"</string> - <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"PÁROVAT"</string> + <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Spárovat"</string> + <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"SPÁROVAT"</string> <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Zrušit"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Párováním připojenému zařízení udělíte přístup ke svým kontaktům a historii volání."</string> - <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Nelze párovat se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nelze párovat se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Kód PIN nebo přístupový klíč je nesprávný."</string> + <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Nelze spárovat se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nelze spárovat se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. Kód PIN nebo přístupový klíč je nesprávný."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Se zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nelze navázat komunikaci."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Párování odmítnuto zařízením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Počítač"</string> - <string name="bluetooth_talkback_headset" msgid="3406852564400882682">"Náhlavní souprava"</string> + <string name="bluetooth_talkback_headset" msgid="3406852564400882682">"Sluchátka"</string> <string name="bluetooth_talkback_phone" msgid="868393783858123880">"Telefon"</string> <string name="bluetooth_talkback_imaging" msgid="8781682986822514331">"Zobrazovací zařízení"</string> <string name="bluetooth_talkback_headphone" msgid="8613073829180337091">"Sluchátka"</string> @@ -211,7 +211,7 @@ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Režim ladění při připojení k Wi-Fi"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Chyba"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Bezdrátové ladění"</string> - <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Chcete-li zobrazit a použít dostupná zařízení, zapněte bezdrátové ladění"</string> + <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Pokud chcete zobrazit a použít dostupná zařízení, zapněte bezdrátové ladění."</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Párovat zařízení pomocí QR kódu"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Párovat nová zařízení pomocí skeneru QR kódů"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Párovat zařízení pomocí párovacího kódu"</string> @@ -227,12 +227,12 @@ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Párovací kód Wi‑Fi"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Spárování se nezdařilo"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Zkontrolujte, zda je zařízení připojeno ke stejné síti."</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Párovat zařízení přes Wi-Fi naskenováním QR kódu"</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Spárovat zařízení přes Wi-Fi naskenováním QR kódu"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Párování zařízení…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Spárování zařízení se nezdařilo. Buď byl QR kód chybný, nebo zařízení není připojeno ke stejné síti."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP adresa a port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Naskenování QR kódu"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Párovat zařízení přes Wi-Fi naskenováním QR kódu"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Spárovat zařízení přes Wi-Fi naskenováním QR kódu"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Připojte se k síti Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ladění, vývoj"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Zástupce hlášení chyb"</string> @@ -249,7 +249,7 @@ <string name="mock_location_app_not_set" msgid="6972032787262831155">"Aplikace k simulování polohy není nastavena"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"Aplikace k simulování polohy: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Sítě"</string> - <string name="wifi_display_certification" msgid="1805579519992520381">"Certifikace bezdrát. displeje"</string> + <string name="wifi_display_certification" msgid="1805579519992520381">"Certifikace bezdrátového displeje"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Podrobné protokolování Wi‑Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Přibrždění vyhledávání Wi‑Fi"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Vylepšená randomizace adres MAC pro WiFi"</string> @@ -279,7 +279,7 @@ <string name="private_dns_mode_off" msgid="7065962499349997041">"Vypnuto"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automaticky"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Název hostitele poskytovatele soukromého DNS"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Zadejte název hostitele poskytovatele DNS"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Zadejte hostitele poskytovatele DNS"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Nelze se připojit"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Zobrazit možnosti certifikace bezdrátového displeje"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Zvýšit úroveň protokolování Wi‑Fi zobrazenou v SSID a RSSI při výběru sítě Wi‑Fi."</string> @@ -287,7 +287,7 @@ <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Když je tento režim aktivován, adresa MAC tohoto zařízení se může změnit pokaždé, když se zařízení připojí k síti s aktivovanou randomizací adres MAC."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Měřená"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Neměřená"</string> - <string name="select_logd_size_title" msgid="1604578195914595173">"Vyrovnávací paměť protokol. nástroje"</string> + <string name="select_logd_size_title" msgid="1604578195914595173">"Vyrovnávací paměť protokolovacího nástroje"</string> <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Velikost vyrovnávací paměti protokol. nástroje"</string> <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"Vymazat trvalé úložiště protokolovacího nástroje?"</string> <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"Pokud již pomocí nástroje na trvalé protokolování nic nemonitorujeme, jsme povinni jeho data uložená v zařízení vymazat."</string> @@ -299,7 +299,7 @@ <string name="allow_mock_location_summary" msgid="179780881081354579">"Povolit simulované polohy"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Kontrola atributu zobrazení"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mobilní data budou vždy ponechána aktivní, i když bude aktivní Wi-Fi (za účelem rychlého přepínání sítí)."</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Pokud je k dispozici hardwarová akceleraci tetheringu, použít ji"</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Pokud je k dispozici hardwarová akcelerace tetheringu, použít ji."</string> <string name="adb_warning_title" msgid="7708653449506485728">"Povolit ladění přes USB?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"Ladění prostřednictvím rozhraní USB je určeno pouze pro účely vývoje. Použijte je ke kopírování dat mezi počítačem a zařízením, instalaci aplikací do zařízení bez upozornění a čtení dat protokolů."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"Povolit bezdrátové ladění?"</string> @@ -337,10 +337,10 @@ <string name="show_touches" msgid="8437666942161289025">"Zobrazovat klepnutí"</string> <string name="show_touches_summary" msgid="3692861665994502193">"Zobrazování vizuální zpětné vazby pro klepnutí"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Zobrazit obnovení obsahu"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"Rozblikat obsah okna při aktualizaci"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"Rozbliká obsah okna při aktualizaci"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"Zobrazit aktualizace"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Rozblikat zobrazení v oknech při vykreslování"</string> - <string name="show_hw_layers_updates" msgid="5268370750002509767">"Zobrazit aktual. HW vrstev"</string> + <string name="show_hw_layers_updates" msgid="5268370750002509767">"Zobrazit aktualizace HW vrstev"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Rozblikat zeleně hardwarové vrstvy při aktualizaci"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Ladit překreslování GPU"</string> <string name="disable_overlays" msgid="4206590799671557143">"Zakázat hardwarové vrstvy"</string> @@ -356,7 +356,7 @@ <string name="force_msaa" msgid="4081288296137775550">"Vynutit 4x MSAA"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"Povolit 4x MSAA v aplikacích OpenGL ES 2.0"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Ladit operace s neobdélníkovými výstřižky"</string> - <string name="track_frame_time" msgid="522674651937771106">"Profil – vykres. HWUI"</string> + <string name="track_frame_time" msgid="522674651937771106">"Profilovat vykreslování rozhraním HWUI"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Povolit vrstvy ladění GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Povolit načítání vrstev ladění GPU pro ladicí aplikace"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Povolit podrobné protokolování dodavatele"</string> @@ -370,15 +370,15 @@ <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Rušit všechny činnosti, jakmile je uživatel zavře"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Omezení procesů na pozadí"</string> <string name="show_all_anrs" msgid="9160563836616468726">"Zobrazovat ANR na pozadí"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"Zobrazovat dialog „Aplikace neodpovídá“ pro aplikace na pozadí"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"Zobrazí dialog „Aplikace neodpovídá“ pro aplikace na pozadí"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Zobrazovat upozornění ohledně kanálu oznámení"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Když aplikace odešle oznámení bez platného kanálu, na obrazovce se zobrazí upozornění"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Vynutit povolení aplikací na externím úložišti"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Každou aplikaci bude možné zapsat do externího úložiště, bez ohledu na hodnoty manifestu"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Vynutit možnost změny velikosti aktivit"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Umožnit změnu velikosti všech aktivit na několik oken (bez ohledu na hodnoty manifestu)"</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Umožní změnu velikosti všech aktivit na několik oken (bez ohledu na hodnoty manifestu)"</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Aktivovat okna s volným tvarem"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Aktivovat podporu experimentálních oken s volným tvarem"</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Aktivuje podporu experimentálních oken s volným tvarem"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Heslo pro zálohy v počítači"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Úplné zálohy v počítači nejsou v současné době chráněny"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Tuto možnost vyberte, chcete-li změnit nebo odebrat heslo pro úplné zálohy do počítače"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Povolit překódování"</string> <string name="transcode_default" msgid="3784803084573509491">"Předpokládat, že aplikace podporují moderní formáty"</string> <string name="transcode_notification" msgid="5560515979793436168">"Zobrazit oznámení o překódování"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Deaktivovat mezipaměť pro překódování"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Spuštěné služby"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Umožňuje zobrazit a ovládat aktuálně spuštěné služby"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementace WebView"</string> @@ -424,7 +425,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomálie (červená a zelená)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomálie (modrá a žlutá)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekce barev"</string> - <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Upravte zobrazování barev na svém zařízení. To se může hodit, když chcete:<br/><br/> <ol> <li>&nbsp;Zobrazovat barvy přesněji</li> <li>&nbsp;Odstranit barvy, abyste se mohli lépe soustředit</li> </ol>"</string> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Na svém zařízení si můžete upravit zobrazování barev. To se může hodit, když chcete:<br/><br/> <ol> <li>&nbsp;zobrazovat barvy přesněji</li> <li>&nbsp;odstranit barvy, abyste se mohli lépe soustředit</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Přepsáno nastavením <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Zbývá asi <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet se brzy vypne (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Zařízení se brzy vypne (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> do úplného nabití"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do úplného nabití"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimalizace pro výdrž baterie"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Neznámé"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Nabíjí se"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Rychlé nabíjení"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Pomalé nabíjení"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Bezdrátové nabíjení"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nenabíjí se"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Zapojeno, ale nelze nabíjet"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Nabito"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Spravováno administrátorem"</string> <string name="disabled" msgid="8017887509554714950">"Deaktivováno"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Povoleno"</string> @@ -507,10 +506,12 @@ <string name="cancel" msgid="5665114069455378395">"Zrušit"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Budíky a připomenutí"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Povolit nastavení budíků nebo připomenutí"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Budíky a připomenutí"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Umožní této aplikaci plánovat budíky nebo další události založené na načasování. Aplikace se bude moci probudit a spustit, i když zařízení nebudete používat. Upozorňujeme, že zrušení tohoto oprávnění může mít za následek nesprávné fungování aplikace, konkrétně už nebudou fungovat budíky, které jsou v aplikaci naplánovány."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"plán, budík, připomenutí, událost"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Povolit nastavování budíků a připomenutí"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Budíky a připomenutí"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Umožní této aplikaci nastavovat budíky a plánovat další akce. Aplikace může být použita, i když telefon nepoužíváte, a tak může docházet k vyšší spotřebě baterie. Když je toto oprávnění vypnuté, aplikace nemusí fungovat normálně a její budíky nebudou fungovat podle plánu."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Umožní této aplikaci nastavovat budíky a plánovat další akce. Aplikace může být použita, i když tablet nepoužíváte, a tak může docházet k vyšší spotřebě baterie. Když je toto oprávnění vypnuté, aplikace nemusí fungovat normálně a její budíky nebudou fungovat podle plánu."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Umožní této aplikaci nastavovat budíky a plánovat další akce. Aplikace může být použita, i když zařízení nepoužíváte, a tak může docházet k vyšší spotřebě baterie. Když je toto oprávnění vypnuté, aplikace nemusí fungovat normálně a její budíky nebudou fungovat podle plánu."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"plán, budík, připomenutí, hodiny"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Zapnout"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Zapněte funkci Nerušit"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nikdy"</string> @@ -522,7 +523,7 @@ <string name="alarm_template_far" msgid="6382760514842998629">"v <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"Trvání"</string> <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pokaždé se zeptat"</string> - <string name="zen_mode_forever" msgid="3339224497605461291">"Dokud tuto funkci nevypnete"</string> + <string name="zen_mode_forever" msgid="3339224497605461291">"Dokud funkci nevypnete"</string> <string name="time_unit_just_now" msgid="3006134267292728099">"Právě teď"</string> <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Reproduktor telefonu"</string> <string name="media_transfer_this_phone" msgid="7194341457812151531">"Tento telefon"</string> @@ -564,8 +565,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Nastavit zámek"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Přepnout na uživatele <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Vytváření nového uživatele…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Nového uživatele se nepodařilo vytvořit"</string> <string name="user_nickname" msgid="262624187455825083">"Přezdívka"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Přidat hosta"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Odstranit hosta"</string> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index f1ea6cc0f707..0554960d6475 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Annuller"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Parring giver adgang til dine kontakter og din opkaldshistorik, når enhederne er forbundet."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Der kunne ikke parres med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Der kunne ikke parres med <xliff:g id="DEVICE_NAME">%1$s</xliff:g> på grund af en forkert pinkode eller adgangsnøgle."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Parring med <xliff:g id="DEVICE_NAME">%1$s</xliff:g> mislykkedes på grund af en forkert pinkode eller adgangsnøgle."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Der kan ikke kommunikeres med <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Parring afvist af <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Computer"</string> @@ -348,7 +348,7 @@ <string name="simulate_color_space" msgid="1206503300335835151">"Simuler farverum"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Aktivér OpenGL-spor"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Slå USB-lydhåndtering fra"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Slå autom. lydhåndtering fra for USB-lydenheder"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Slå automatisk lydhåndtering fra for USB-lydenheder"</string> <string name="debug_layout" msgid="1659216803043339741">"Vis layoutgrænser"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Vis grænser for klip, margener osv."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Tving læsning mod venstre"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Aktivér omkodning"</string> <string name="transcode_default" msgid="3784803084573509491">"Gå ud fra, at apps understøtter moderne formater"</string> <string name="transcode_notification" msgid="5560515979793436168">"Vis notifikationer for omkodning"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Deaktiver omkodningscache"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Kørende tjenester"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Vis og administrer kørende tjenester"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string> @@ -423,7 +424,7 @@ <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Deuteranopi (rød-grøn)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanopi (rød-grøn)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanopi (blå-gul)"</string> - <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korriger farver"</string> + <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Farvekorrigering"</string> <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Juster, hvordan farverne vises på din enhed. Dette kan være nyttigt, når du vil:<br/><br/> <ol> <li>&nbsp;Se farver mere nøjagtigt</li> <li>&nbsp;Fjerne farver, så du bedre kan fokusere</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Tilsidesat af <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> @@ -457,6 +458,7 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Oplader"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Oplader hurtigt"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Oplader langsomt"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Trådløs opladning"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Oplader ikke"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Enheden er tilsluttet en strømkilde. Det er ikke muligt at oplade på nuværende tidspunkt."</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Opladet"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Annuller"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmer og påmindelser"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Tillad indstilling af alarmer og påmindelser"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmer og påmindelser"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Giv denne app tilladelse til at planlægge alarmer og andre timerrelaterede begivenheder. Dette giver tilladelse til, at appen aktiveres og køres, også selvom du ikke bruger enheden. Bemærk, at tilbagekaldelse af denne tilladelse kan medføre, at appen ikke fungerer korrekt. Det kan f.eks. bevirke, at alarmer, som appen har planlagt, ikke længere virker."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"planlæg, alarm, påmindelse, begivenhed"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Tillad indstilling af alarmer og påmindelser"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmer og påmindelser"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Tillad, at denne app indstiller alarmer og planlægger andre handlinger. Denne app kan blive brugt, når du ikke bruger din telefon, hvilket kan øge batteriforbruget. Hvis denne tilladelse deaktiveres, fungerer denne app muligvis ikke som normalt, og dens alarmer fungerer ikke på de planlagte tider."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Tillad, at denne app indstiller alarmer og planlægger andre handlinger. Denne app kan blive brugt, når du ikke bruger din tablet, hvilket kan øge batteriforbruget. Hvis denne tilladelse deaktiveres, fungerer denne app muligvis ikke som normalt, og dens alarmer fungerer ikke på de planlagte tider."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Tillad, at denne app indstiller alarmer og planlægger andre handlinger. Denne app kan blive brugt, når du ikke bruger din enhed, hvilket kan øge batteriforbruget. Hvis denne tilladelse deaktiveres, fungerer denne app muligvis ikke som normalt, og dens alarmer fungerer ikke på de planlagte tider."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"planlæg, alarm, påmindelse, ur"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aktivér"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Aktivér Forstyr ikke"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Aldrig"</string> @@ -559,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Konfigurer låseskærmen"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Skift til <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Opretter ny bruger…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Der kunne ikke oprettes en ny bruger"</string> <string name="user_nickname" msgid="262624187455825083">"Kaldenavn"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Tilføj gæst"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Fjern gæsten"</string> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index dcf787903597..83f516f9a91b 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -35,7 +35,7 @@ <string name="wifi_not_in_range" msgid="1541760821805777772">"Nicht in Reichweite"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Kein automatischer Verbindungsaufbau"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"Kein Internetzugriff"</string> - <string name="saved_network" msgid="7143698034077223645">"Gespeichert von <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="saved_network" msgid="7143698034077223645">"Gespeichert durch <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="connected_to_metered_access_point" msgid="9179693207918156341">"Mit kostenpflichtigem Netzwerk verbunden"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"Automatisch über %1$s verbunden"</string> <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Automatisch über Anbieter von Netzwerkbewertungen verbunden"</string> @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Abbrechen"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Über die Kopplung kann auf deine Kontakte und auf deine Anrufliste zugegriffen werden, wenn eine Verbindung besteht."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Kopplung mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> war nicht möglich."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Kopplung mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> war nicht möglich, weil die eingegebene PIN oder der Zugangscode falsch ist."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Kopplung mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nicht möglich. PIN oder Passkey fehlerhaft."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Kommunikation mit <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ist nicht möglich."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Verbindung wurde von <xliff:g id="DEVICE_NAME">%1$s</xliff:g> abgelehnt."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Computer"</string> @@ -211,7 +211,7 @@ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Debugging-Modus, wenn eine WLAN-Verbindung besteht"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Fehler"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Debugging über WLAN"</string> - <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Aktiviere \"Debugging über WLAN\", um verfügbare Geräte zu sehen und zu verwenden"</string> + <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Aktiviere „Debugging über WLAN“, um verfügbare Geräte zu sehen und zu verwenden"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Gerät über einen QR-Code koppeln"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Neue Geräte über QR-Codescanner koppeln"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Gerät über einen Kopplungscode koppeln"</string> @@ -264,12 +264,12 @@ <string name="bluetooth_select_map_version_dialog_title" msgid="7085934373987428460">"Bluetooth MAP-Version auswählen"</string> <string name="bluetooth_select_a2dp_codec_type" msgid="952001408455456494">"Bluetooth-Audio-Codec"</string> <string name="bluetooth_select_a2dp_codec_type_dialog_title" msgid="7510542404227225545">"Bluetooth-Audio-Codec auslösen\nAuswahl"</string> - <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"Bluetooth-Audio-Abtastrate"</string> + <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"Bluetooth-Audio: Abtastrate"</string> <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"Bluetooth-Audio-Codec auslösen\nAuswahl: Abtastrate"</string> <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"Wenn etwas ausgegraut ist, wird es nicht vom Smartphone oder Headset unterstützt"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Bluetooth-Audio/Bits pro Sample"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Bluetooth-Audio-Codec auslösen\nAuswahl: Bits pro Sample"</string> - <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Bluetooth-Audiokanal-Modus"</string> + <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Bluetooth-Audio: Kanalmodus"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Bluetooth-Audio-Codec auslösen\nAuswahl: Kanalmodus"</string> <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Bluetooth-Audio-LDAC-Codec: Wiedergabequalität"</string> <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Bluetooth-Audio-LDAC-Codec auslösen\nAuswahl: Wiedergabequalität"</string> @@ -282,7 +282,7 @@ <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Hostname des DNS-Anbieters eingeben"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Verbindung nicht möglich"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Optionen zur Zertifizierung für kabellose Übertragung anzeigen"</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"WLAN-Protokollierungsebene erhöhen, pro SSID RSSI in WiFi Picker anzeigen"</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"WLAN-Protokollierungsebene erhöhen, in WLAN-Auswahl für jede SSID RSSI anzeigen"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Verringert den Akkuverbrauch und verbessert die Netzwerkleistung"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Wenn dieser Modus aktiviert ist, kann sich die MAC-Adresse dieses Geräts bei jeder Verbindung mit einem Netzwerk ändern, bei dem die MAC-Adressen randomisiert werden."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Kostenpflichtig"</string> @@ -302,7 +302,7 @@ <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Falls verfügbar, Hardwarebeschleunigung für Tethering verwenden"</string> <string name="adb_warning_title" msgid="7708653449506485728">"USB-Debugging zulassen?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"USB-Debugging ist nur für Entwicklungszwecke vorgesehen. Damit kannst du Daten zwischen deinem Computer und deinem Gerät kopieren, Apps auf deinem Gerät ohne Benachrichtigung installieren und Protokolldaten lesen."</string> - <string name="adbwifi_warning_title" msgid="727104571653031865">"\"Debugging über WLAN\" zulassen?"</string> + <string name="adbwifi_warning_title" msgid="727104571653031865">"Debugging über WLAN zulassen?"</string> <string name="adbwifi_warning_message" msgid="8005936574322702388">"\"Debugging über WLAN\" ist nur für Entwicklungszwecke vorgesehen. Damit kannst du Daten zwischen deinem Computer und deinem Gerät kopieren, Apps auf deinem Gerät ohne Benachrichtigung installieren und Protokolldaten lesen."</string> <string name="adb_keys_warning_message" msgid="2968555274488101220">"Zugriff auf USB-Debugging für alle zuvor autorisierten Computer aufheben?"</string> <string name="dev_settings_warning_title" msgid="8251234890169074553">"Entwicklungseinstellungen zulassen?"</string> @@ -310,7 +310,7 @@ <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Über USB installierte Apps prüfen"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Über ADB/ADT installierte Apps werden auf schädliches Verhalten geprüft"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-Geräte werden ohne Namen und nur mit ihren MAC-Adressen angezeigt"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Deaktiviert die Funktion \"Absolute Lautstärkeregelung\" für Bluetooth-Geräte, falls auf Remote-Geräten Probleme mit der Lautstärke auftreten, wie beispielsweise übermäßig laute Wiedergabe oder fehlende Steuerungsmöglichkeiten."</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Deaktiviert die Funktion „Absolute Lautstärkeregelung“ für Bluetooth-Geräte, falls auf Remote-Geräten Probleme mit der Lautstärke auftreten, wie beispielsweise übermäßig laute Wiedergabe oder fehlende Steuerungsmöglichkeiten."</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Aktiviert das Bluetooth-Gabeldorsche-Funktionspaket."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Aktiviert die Funktion \"Verbesserte Konnektivität\"."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Lokales Terminal"</string> @@ -331,16 +331,16 @@ <string name="media_category" msgid="8122076702526144053">"Medien"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Überwachung"</string> <string name="strict_mode" msgid="889864762140862437">"Strikter Modus aktiviert"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"Bei langen App-Operationen im Hauptthread blinkt Bildschirm"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"Bei langen App-Vorgängen im Hauptthread blinkt Bildschirm"</string> <string name="pointer_location" msgid="7516929526199520173">"Zeigerposition"</string> <string name="pointer_location_summary" msgid="957120116989798464">"Overlay mit aktuellen Daten zu Tippaktionen anzeigen"</string> - <string name="show_touches" msgid="8437666942161289025">"Fingertipps anzeigen"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"Bei Fingertipps visuelles Feedback anzeigen"</string> - <string name="show_screen_updates" msgid="2078782895825535494">"Oberflächenaktualisierungen anzeigen"</string> + <string name="show_touches" msgid="8437666942161289025">"Fingertippen visualisieren"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"Bei Fingertippen visuelles Feedback anzeigen"</string> + <string name="show_screen_updates" msgid="2078782895825535494">"Oberflächenaktualisierungen hervorheben"</string> <string name="show_screen_updates_summary" msgid="2126932969682087406">"Gesamte Fensteroberflächen blinken bei Aktualisierung"</string> - <string name="show_hw_screen_updates" msgid="2021286231267747506">"Updates anzeigen"</string> + <string name="show_hw_screen_updates" msgid="2021286231267747506">"Aktualisierungen von Ansichten hervorheben"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Ansichten in Fenstern blinken beim Rendern"</string> - <string name="show_hw_layers_updates" msgid="5268370750002509767">"Aktualisierungen von Hardwareschichten anzeigen"</string> + <string name="show_hw_layers_updates" msgid="5268370750002509767">"Aktualisierungen von Hardwareschichten hervorheben"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Hardwareschichten blinken beim Aktualisieren grün"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU-Overdraw debuggen"</string> <string name="disable_overlays" msgid="4206590799671557143">"HW-Overlays deaktivieren"</string> @@ -350,12 +350,12 @@ <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB-Audiorouting deaktivieren"</string> <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Autom. Routing an externe USB-Audiogeräte deaktivieren"</string> <string name="debug_layout" msgid="1659216803043339741">"Layoutgrenzen anzeigen"</string> - <string name="debug_layout_summary" msgid="8825829038287321978">"Clip-Begrenzungen, Ränder usw. anzeigen"</string> - <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL-Layout erzwingen"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Für alle Sprachen wird das RTL-Bildschirmlayout (linksläufig) verwendet"</string> + <string name="debug_layout_summary" msgid="8825829038287321978">"Zuschnittbegrenzungen, Ränder usw. anzeigen"</string> + <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Linksläufiges Layout erzwingen"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Für alle Sprachen wird das linksläufige Bildschirmlayout verwendet"</string> <string name="force_msaa" msgid="4081288296137775550">"4x MSAA erzwingen"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"In OpenGL ES 2.0-Apps 4x MSAA aktivieren"</string> - <string name="show_non_rect_clip" msgid="7499758654867881817">"Nicht rechteckige Clip-Operationen debuggen"</string> + <string name="show_non_rect_clip" msgid="7499758654867881817">"Nichtrechteckige Zuschnitte debuggen"</string> <string name="track_frame_time" msgid="522674651937771106">"HWUI-Rendering für Profil"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU-Debug-Ebenen zulassen"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Debug-Apps das Laden von GPU-Debug-Ebenen erlauben"</string> @@ -370,7 +370,7 @@ <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Aktivität löschen, sobald der Nutzer diese beendet"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Limit für Hintergrundprozesse"</string> <string name="show_all_anrs" msgid="9160563836616468726">"Absturzmeldungen für Hintergrund-Apps anzeigen"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"Bei Abstürzen von Hintergrund-Apps \"App reagiert nicht\"-Dialog anzeigen"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"Bei Abstürzen von Hintergrund-Apps „App reagiert nicht“-Dialog anzeigen"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Benachrichtigungskanal- Warnungen anzeigen"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Bei Benachrichtigungen ohne gültigen Kanal wird eine Warnung angezeigt"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Sperrung des externen Speichers für alle Apps aufheben"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Transcodierung aktivieren"</string> <string name="transcode_default" msgid="3784803084573509491">"Voraussetzen, dass Apps moderne Formate unterstützen"</string> <string name="transcode_notification" msgid="5560515979793436168">"Benachrichtigungen zur Transcodierung anzeigen"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Cache für Transcodierung deaktivieren"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Aktive Dienste"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Momentan ausgeführte Dienste anzeigen und steuern"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-Implementierung"</string> @@ -424,7 +425,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (Rot-Grün-Sehschwäche)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (Blau-Gelb-Sehschwäche)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Farbkorrektur"</string> - <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Hier kannst du anpassen, wie Farben auf deinem Gerät dargestellt werden sollen. Das kann in folgenden Fällen hilfreich sein:<br/><br/> <ol> <li>&nbsp;Wenn Farben genauer dargestellt werden sollen</li> <li>&nbsp;Wenn du Farben entfernen möchtest, um dich besser konzentrieren zu können</li> </ol>"</string> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Hier kannst du anpassen, wie Farben auf deinem Gerät dargestellt werden sollen. Das kann in folgenden Fällen hilfreich sein:<br/><br/> <ol> <li>&nbsp;Wenn du Farben genauer erkennen möchtest</li> <li>&nbsp;Wenn du Farben entfernen möchtest, um dich besser konzentrieren zu können</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Außer Kraft gesetzt von \"<xliff:g id="TITLE">%1$s</xliff:g>\""</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Noch etwa <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -457,13 +458,14 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Wird aufgeladen"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Schnelles Aufladen"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Langsames Aufladen"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Kabelloses Laden"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Wird nicht geladen"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Angeschlossen, kann derzeit nicht geladen werden"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Aufgeladen"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Durch den Administrator verwaltet"</string> <string name="disabled" msgid="8017887509554714950">"Deaktiviert"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Zugelassen"</string> - <string name="external_source_untrusted" msgid="5037891688911672227">"Nicht zulässig"</string> + <string name="external_source_untrusted" msgid="5037891688911672227">"Nicht zugelassen"</string> <string name="install_other_apps" msgid="3232595082023199454">"Installieren unbekannter Apps"</string> <string name="home" msgid="973834627243661438">"Startseite \"Einstellungen\""</string> <string-array name="battery_labels"> @@ -502,12 +504,14 @@ <string name="cancel" msgid="5665114069455378395">"Abbrechen"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Wecker und Erinnerungen"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Erlauben, dass Wecker und Erinnerungen eingerichtet werden"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Wecker und Erinnerungen"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Erlauben, dass diese App Wecker stellt oder andere zeitliche Ereignisse plant. So kann die App gestartet und ausgeführt werden, auch wenn du das Gerät nicht verwendest. Beachte, dass das Aufheben dieser Berechtigung zu einer Fehlfunktion der App führen kann. In der App gestellte Wecker werden beispielsweise nicht mehr läuten."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"einrichten, Wecker, Erinnerung, Ereignis"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Erlauben, Wecker und Erinnerungen einzurichten"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Wecker und Erinnerungen"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Dieser App erlauben, Wecker zu stellen und andere Aktionen zu planen. Du kannst diese App nutzen, wenn du dein Smartphone nicht verwendest. Dies kann den Akkuverbrauch erhöhen. Wenn diese Berechtigung deaktiviert ist, funktionieren die App und die zugehörigen Wecker möglicherweise nicht wie erwartet."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Dieser App erlauben, Wecker zu stellen und andere Aktionen zu planen. Du kannst diese App nutzen, wenn du dein Tablet nicht verwendest. Dies kann den Akkuverbrauch erhöhen. Wenn diese Berechtigung deaktiviert ist, funktionieren die App und die zugehörigen Wecker möglicherweise nicht wie erwartet."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Dieser App erlauben, Wecker zu stellen und andere Aktionen zu planen. Du kannst diese App nutzen, wenn du dein Gerät nicht verwendest. Dies kann den Akkuverbrauch erhöhen. Wenn diese Berechtigung deaktiviert ist, funktionieren die App und die zugehörigen Wecker möglicherweise nicht wie erwartet."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"planen, Wecker, Erinnerung, Uhr"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aktivieren"</string> - <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\"Bitte nicht stören\" aktivieren"</string> + <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"„Bitte nicht stören“ aktivieren"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nie"</string> <string name="zen_interruption_level_priority" msgid="5392140786447823299">"Nur wichtige Unterbrechungen"</string> <string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>."</string> @@ -559,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Sperre einrichten"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Zu <xliff:g id="USER_NAME">%s</xliff:g> wechseln"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Neuer Nutzer wird erstellt…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Nutzer konnte nicht erstellt werden"</string> <string name="user_nickname" msgid="262624187455825083">"Alias"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Gast hinzufügen"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Gast entfernen"</string> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index 9ebafd947453..585d54e295c9 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Ενεργοποίηση διακωδικοποίησης"</string> <string name="transcode_default" msgid="3784803084573509491">"Να θεωρείται ότι οι εφαρμογές χρησιμοποιούν σύγχρονες μορφές"</string> <string name="transcode_notification" msgid="5560515979793436168">"Εμφάνιση ειδοποιήσεων διακωδικοποίησης"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Απενεργοποίηση κρυφής μνήμης για διακωδικοποίηση"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Υπηρεσίες που εκτελούνται"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Προβολή και έλεγχος των εφαρμογών που εκτελούνται αυτή τη στιγμή"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Υλοποίηση WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Το tablet μπορεί να απενεργοποιηθεί σύντομα (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Η συσκευή μπορεί να απενεργοποιηθεί σύντομα (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Απομένουν <xliff:g id="TIME">%1$s</xliff:g> για πλήρη φόρτιση"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - Απομένουν <xliff:g id="TIME">%2$s</xliff:g> για πλήρη φόρτιση"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Βελτιστοποίηση για τη διατήρηση της καλής κατάστασης της μπαταρίας"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Άγνωστο"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Φόρτιση"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Ταχεία φόρτιση"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Αργή φόρτιση"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Ασύρματη φόρτιση"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Δεν φορτίζει"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Συνδέθηκε, δεν είναι δυνατή η φόρτιση αυτήν τη στιγμή"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Φορτισμένη"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Ελέγχονται από το διαχειριστή"</string> <string name="disabled" msgid="8017887509554714950">"Απενεργοποιημένο"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Επιτρέπεται"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Ακύρωση"</string> <string name="okay" msgid="949938843324579502">"ΟΚ"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ξυπνητήρια και ειδοποιήσεις"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Να επιτρέπεται ο ορισμός ξυπνητηριών/υπενθυμίσεων"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Ξυπνητήρια και ειδοποιήσεις"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Να επιτρέπεται σε αυτήν την εφαρμογή να προγραμματίζει ξυπνητήρια ή άλλα συμβάντα που βασίζονται σε χρονομέτρηση. Αυτό θα επιτρέπει την αφύπνιση και εκτέλεση της εφαρμογής ακόμη και όταν δεν χρησιμοποιείτε τη συσκευή. Λάβετε υπόψη ότι η ανάκληση αυτής της άδειας μπορεί να οδηγήσει σε δυσλειτουργία της εφαρμογής. Συγκεκριμένα, δεν θα λειτουργούν πλέον τυχόν ξυπνητήρια που έχουν προγραμματιστεί από την εφαρμογή."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"χρονοδιάγραμμα, ξυπνητήρι, υπενθύμιση, συμβάν"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Να επιτρέπεται ο ορισμός ξυπνητ. και υπενθυμίσεων"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Ξυπνητήρια και υπενθυμίσεις"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Να επιτρέπεται σε αυτήν την εφαρμογή να ορίζει ξυπνητήρια και να προγραμματίζει άλλες ενέργειες. Αυτή η εφαρμογή ενδέχεται να χρησιμοποιείται όταν δεν χρησιμοποιείτε το τηλέφωνό σας, κάτι που μπορεί να οδηγήσει σε μεγαλύτερη κατανάλωση μπαταρίας. Εάν αυτή η άδεια είναι απενεργοποιημένη, η εφαρμογή ενδέχεται να μην λειτουργεί φυσιολογικά και τα ξυπνητήρια της δεν θα λειτουργούν σύμφωνα με τον προγραμματισμό τους."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Να επιτρέπεται σε αυτήν την εφαρμογή να ορίζει ξυπνητήρια και να προγραμματίζει άλλες ενέργειες. Αυτή η εφαρμογή ενδέχεται να χρησιμοποιείται όταν δεν χρησιμοποιείτε το tablet, κάτι που μπορεί να οδηγήσει σε μεγαλύτερη κατανάλωση μπαταρίας. Εάν αυτή η άδεια είναι απενεργοποιημένη, η εφαρμογή ενδέχεται να μην λειτουργεί φυσιολογικά και τα ξυπνητήρια της δεν θα λειτουργούν σύμφωνα με τον προγραμματισμό τους."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Να επιτρέπεται σε αυτήν την εφαρμογή να ορίζει ξυπνητήρια και να προγραμματίζει άλλες ενέργειες. Αυτή η εφαρμογή ενδέχεται να χρησιμοποιείται όταν δεν χρησιμοποιείτε τη συσκευή σας, κάτι που μπορεί να οδηγήσει σε μεγαλύτερη κατανάλωση μπαταρίας. Εάν αυτή η άδεια είναι απενεργοποιημένη, η εφαρμογή ενδέχεται να μην λειτουργεί φυσιολογικά και τα ξυπνητήρια της δεν θα λειτουργούν σύμφωνα με τον προγραμματισμό τους."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"χρονοδιάγραμμα, ξυπνητήρι, υπενθύμιση, ρολόι"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Ενεργοποίηση"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Ενεργοποίηση λειτουργίας \"Μην ενοχλείτε\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Ποτέ"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Ορισμός κλειδώματος"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Εναλλαγή σε <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Δημιουργία νέου χρήστη…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Η δημιουργία νέου χρήστη απέτυχε"</string> <string name="user_nickname" msgid="262624187455825083">"Ψευδώνυμο"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Προσθήκη επισκέπτη"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Κατάργηση επισκέπτη"</string> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 7beb37893969..46e4b401ab8a 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Enable transcoding"</string> <string name="transcode_default" msgid="3784803084573509491">"Assume apps support modern formats"</string> <string name="transcode_notification" msgid="5560515979793436168">"Show transcoding notifications"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Disable transcoding cache"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Running services"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"View and control currently running services"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string> @@ -457,6 +458,7 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Charging slowly"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Charging wirelessly"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge at the moment"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Charged"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancel"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Allow alarms or reminders to be set"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarms and reminders"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Allow this app to schedule alarms or other timing-based events. This will allow the app to wake up and run even when you are not using the device. Note that revoking this permission may cause the app to malfunction; specifically, any alarms that the app has scheduled will no longer work."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"schedule, alarm, reminder, event"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Allow setting alarms and reminders"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarms & reminders"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your phone, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your tablet, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your device, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"schedule, alarm, reminder, clock"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Turn on"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Turn on Do Not Disturb"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Never"</string> diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml index b1596c324837..705e903603b1 100644 --- a/packages/SettingsLib/res/values-en-rCA/strings.xml +++ b/packages/SettingsLib/res/values-en-rCA/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Enable transcoding"</string> <string name="transcode_default" msgid="3784803084573509491">"Assume apps support modern formats"</string> <string name="transcode_notification" msgid="5560515979793436168">"Show transcoding notifications"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Disable transcoding cache"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Running services"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"View and control currently running services"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string> @@ -457,6 +458,7 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Charging slowly"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Charging wirelessly"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge at the moment"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Charged"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancel"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Allow alarms or reminders to be set"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarms and reminders"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Allow this app to schedule alarms or other timing-based events. This will allow the app to wake up and run even when you are not using the device. Note that revoking this permission may cause the app to malfunction; specifically, any alarms that the app has scheduled will no longer work."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"schedule, alarm, reminder, event"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Allow setting alarms and reminders"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarms & reminders"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your phone, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your tablet, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your device, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"schedule, alarm, reminder, clock"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Turn on"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Turn on Do Not Disturb"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Never"</string> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 7beb37893969..46e4b401ab8a 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Enable transcoding"</string> <string name="transcode_default" msgid="3784803084573509491">"Assume apps support modern formats"</string> <string name="transcode_notification" msgid="5560515979793436168">"Show transcoding notifications"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Disable transcoding cache"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Running services"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"View and control currently running services"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string> @@ -457,6 +458,7 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Charging slowly"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Charging wirelessly"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge at the moment"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Charged"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancel"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Allow alarms or reminders to be set"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarms and reminders"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Allow this app to schedule alarms or other timing-based events. This will allow the app to wake up and run even when you are not using the device. Note that revoking this permission may cause the app to malfunction; specifically, any alarms that the app has scheduled will no longer work."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"schedule, alarm, reminder, event"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Allow setting alarms and reminders"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarms & reminders"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your phone, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your tablet, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your device, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"schedule, alarm, reminder, clock"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Turn on"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Turn on Do Not Disturb"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Never"</string> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 7beb37893969..46e4b401ab8a 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Enable transcoding"</string> <string name="transcode_default" msgid="3784803084573509491">"Assume apps support modern formats"</string> <string name="transcode_notification" msgid="5560515979793436168">"Show transcoding notifications"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Disable transcoding cache"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Running services"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"View and control currently running services"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string> @@ -457,6 +458,7 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Charging slowly"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Charging wirelessly"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge at the moment"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Charged"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancel"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Allow alarms or reminders to be set"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarms and reminders"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Allow this app to schedule alarms or other timing-based events. This will allow the app to wake up and run even when you are not using the device. Note that revoking this permission may cause the app to malfunction; specifically, any alarms that the app has scheduled will no longer work."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"schedule, alarm, reminder, event"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Allow setting alarms and reminders"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarms & reminders"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your phone, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your tablet, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your device, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"schedule, alarm, reminder, clock"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Turn on"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Turn on Do Not Disturb"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Never"</string> diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml index c984f6e2ef1b..8e944ba0a777 100644 --- a/packages/SettingsLib/res/values-en-rXC/strings.xml +++ b/packages/SettingsLib/res/values-en-rXC/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Enable transcoding"</string> <string name="transcode_default" msgid="3784803084573509491">"Assume apps support modern formats"</string> <string name="transcode_notification" msgid="5560515979793436168">"Show transcoding notifications"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Disable transcoding cache"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Running services"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"View and control currently running services"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView implementation"</string> @@ -457,6 +458,7 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Charging slowly"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Charging wirelessly"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge right now"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Charged"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancel"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarms and reminders"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Allow to set alarms or reminders"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarms and reminders"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Allow this app to schedule alarms or other timing based events. This will allow the app to wake up and run even when you are not using the device. Note that revoking this permission may cause the app to malfunction, specifically any alarms that the app has scheduled will no longer work."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"schedule, alarm, reminder, event"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Allow setting alarms and reminders"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarms & reminders"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your phone, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your tablet, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Allow this app to set alarms and schedule other actions. This app may be used when you’re not using your device, which may use more battery. If this permission is off, this app may not function normally, and its alarms won’t work as scheduled."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"schedule, alarm, reminder, clock"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Turn on"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Turn on Do Not Disturb"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Never"</string> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index 0b543b830d0c..0a6e98b41c94 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Cancelar"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"La sincronización te permite acceder a los contactos y al historial de llamadas cuando el dispositivo está conectado."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"No se pudo vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No se pudo vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> debido a que el PIN o la clave de acceso son incorrectos."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No se pudo vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque la clave de acceso o el PIN son incorrectos."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"No se puede establecer la comunicación con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Vínculo rechazado por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Computadora"</string> @@ -331,7 +331,7 @@ <string name="media_category" msgid="8122076702526144053">"Multimedia"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisión"</string> <string name="strict_mode" msgid="889864762140862437">"Modo estricto"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"Destello por op. de apps en el subproceso principal"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"Parpadear si aplicaciones tardan en proceso principal"</string> <string name="pointer_location" msgid="7516929526199520173">"Ubicación del puntero"</string> <string name="pointer_location_summary" msgid="957120116989798464">"Superponer capa en pant. para mostrar puntos tocados"</string> <string name="show_touches" msgid="8437666942161289025">"Mostrar presiones"</string> @@ -369,7 +369,7 @@ <string name="immediately_destroy_activities" msgid="1826287490705167403">"Eliminar actividades"</string> <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Descartar todas las actividades en cuanto el usuario las abandona"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Límite de procesos en segundo plano"</string> - <string name="show_all_anrs" msgid="9160563836616468726">"Mostrar ANR en 2.° plano"</string> + <string name="show_all_anrs" msgid="9160563836616468726">"Mostrar ANR en segundo plano"</string> <string name="show_all_anrs_summary" msgid="8562788834431971392">"Mostrar diálogo cuando las apps en segundo plano no responden"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Alertas de notificaciones"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Advertencia en pantalla cuando una app publica una notificación sin canal válido"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Habilitar la transcodificación"</string> <string name="transcode_default" msgid="3784803084573509491">"Suponer que las apps admiten formatos modernos"</string> <string name="transcode_notification" msgid="5560515979793436168">"Mostrar notificaciones de transcodificación"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Inhabilitar caché de transcodificación"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"En ejecución"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ver y controlar servicios actuales en ejecución"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string> @@ -457,6 +458,7 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"Cargando"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Cargando rápido"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Carga lenta"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Carga inalámbrica"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"No se está cargando."</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectado. No se puede cargar en este momento"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Cargada"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancelar"</string> <string name="okay" msgid="949938843324579502">"Aceptar"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmas y recordatorios"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Permitir programar alarmas o recordatorios"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmas y recordatorios"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Permite que esta app programe alarmas y otros eventos de tiempo. Esto permitirá que la app se active y se ejecute incluso cuando no uses el dispositivo. Ten en cuenta que revocar este permiso podría hacer que la app no funcione correctamente, y es posible que las alarmas que haya programado la app dejen de funcionar."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"programar, alarma, recordatorio, evento"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Permitir configuración de alarmas y recordatorios"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmas y recordatorios"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Permite que esta app configure alarmas y programe otras acciones. Esta app podría ejecutarse cuando no estás usando el teléfono, lo que podría consumir más batería. Si este permiso está desactivado, es posible que la app no funcione con normalidad, y las alarmas no seguirán su programación."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Permite que esta app configure alarmas y programe otras acciones. Esta app podría ejecutarse cuando no estás usando la tablet, lo que podría consumir más batería. Si este permiso está desactivado, es posible que la app no funcione con normalidad, y las alarmas no seguirán su programación."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Permite que esta app configure alarmas y programe otras acciones. Esta app se puede usar cuando no estás usando el dispositivo, lo que podría consumir más batería. Si este permiso está desactivado, es posible que la app no funcione con normalidad, y las alarmas no seguirán su programación."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"programar, alarma, recordatorio, reloj"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Activar"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Activar No interrumpir"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nunca"</string> @@ -559,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Configurar bloqueo"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Cambiar a <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Creando usuario nuevo…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"No se pudo crear el usuario nuevo"</string> <string name="user_nickname" msgid="262624187455825083">"Sobrenombre"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Agregar invitado"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Quitar invitado"</string> diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml index 5f8434c6f7a2..eb39d62a79fe 100644 --- a/packages/SettingsLib/res/values-es/arrays.xml +++ b/packages/SettingsLib/res/values-es/arrays.xml @@ -54,9 +54,9 @@ <item msgid="9048424957228926377">"Comprobar siempre"</item> </string-array> <string-array name="hdcp_checking_summaries"> - <item msgid="4045840870658484038">"No utilizar comprobación de HDCP"</item> - <item msgid="8254225038262324761">"Utilizar comprobación de HDCP solo para contenido DRM"</item> - <item msgid="6421717003037072581">"Utilizar siempre comprobación de HDCP"</item> + <item msgid="4045840870658484038">"No usar comprobación de HDCP"</item> + <item msgid="8254225038262324761">"Usar comprobación de HDCP solo para contenido DRM"</item> + <item msgid="6421717003037072581">"Usar siempre comprobación de HDCP"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> <item msgid="695678520785580527">"Inhabilitado"</item> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 5d738d7c4318..99b297f2b4bf 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -113,12 +113,12 @@ <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"Uso de la transferencia de archivos"</string> <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"Usar para entrada"</string> <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"Usar con audífonos"</string> - <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Vincular"</string> - <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"VINCULAR"</string> + <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Emparejar"</string> + <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"EMPAREJAR"</string> <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Cancelar"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"La vinculación permite acceder a tus contactos y al historial de llamadas cuando el dispositivo está conectado."</string> - <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"No se ha podido vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No se ha podido vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque la clave de acceso o el PIN son incorrectos."</string> + <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"No se ha podido emparejar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"No se ha podido emparejar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque la clave de acceso o el PIN son incorrectos."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"No se puede establecer comunicación con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Vinculación rechazada por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Ordenador"</string> @@ -145,33 +145,33 @@ <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Usuarios y aplicaciones eliminados"</string> <string name="data_usage_ota" msgid="7984667793701597001">"Actualizaciones del sistema"</string> <string name="tether_settings_title_usb" msgid="3728686573430917722">"Compartir conexión por USB"</string> - <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Zona Wi-Fi portátil"</string> + <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Punto de acceso portátil"</string> <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Compartir conexión por Bluetooth"</string> <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Compartir conexión"</string> - <string name="tether_settings_title_all" msgid="8910259483383010470">"Compartir conexión y zona Wi-Fi"</string> + <string name="tether_settings_title_all" msgid="8910259483383010470">"Compartir Internet"</string> <string name="managed_user_title" msgid="449081789742645723">"Todas las aplicaciones de trabajo"</string> <string name="user_guest" msgid="6939192779649870792">"Invitado"</string> <string name="unknown" msgid="3544487229740637809">"Desconocido"</string> <string name="running_process_item_user_label" msgid="3988506293099805796">"Usuario: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"Se han establecido algunos valores predeterminados"</string> <string name="launch_defaults_none" msgid="8049374306261262709">"No se han establecido opciones predeterminadas"</string> - <string name="tts_settings" msgid="8130616705989351312">"Ajustes de síntesis de voz"</string> - <string name="tts_settings_title" msgid="7602210956640483039">"Síntesis de voz"</string> + <string name="tts_settings" msgid="8130616705989351312">"Ajustes de conversión de texto a voz"</string> + <string name="tts_settings_title" msgid="7602210956640483039">"Salida de conversión de texto a voz"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"Velocidad de la voz"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"Velocidad a la que se lee el texto"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"Tono"</string> - <string name="tts_default_pitch_summary" msgid="9132719475281551884">"Afecta al tono de la síntesis de voz"</string> + <string name="tts_default_pitch_summary" msgid="9132719475281551884">"Afecta al tono de la conversión de texto a voz"</string> <string name="tts_default_lang_title" msgid="4698933575028098940">"Idioma"</string> <string name="tts_lang_use_system" msgid="6312945299804012406">"Usar idioma del sistema"</string> <string name="tts_lang_not_selected" msgid="7927823081096056147">"Idioma no seleccionado"</string> <string name="tts_default_lang_summary" msgid="9042620014800063470">"Establecer la voz del idioma específico para el texto hablado"</string> <string name="tts_play_example_title" msgid="1599468547216481684">"Escuchar un ejemplo"</string> - <string name="tts_play_example_summary" msgid="634044730710636383">"Reproducir una breve demostración de síntesis de voz"</string> + <string name="tts_play_example_summary" msgid="634044730710636383">"Reproducir una breve demostración de conversión de texto a voz"</string> <string name="tts_install_data_title" msgid="1829942496472751703">"Instalar archivos de voz"</string> - <string name="tts_install_data_summary" msgid="3608874324992243851">"Instalar los archivos de datos de voz necesarios para la síntesis de voz"</string> - <string name="tts_engine_security_warning" msgid="3372432853837988146">"Es posible que este motor de síntesis de voz recopile todo el texto hablado, incluidos datos personales, como contraseñas y números de tarjeta de crédito. Procede del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. ¿Quieres habilitar el uso de este motor de síntesis de voz?"</string> - <string name="tts_engine_network_required" msgid="8722087649733906851">"Este idioma requiere una conexión de red activa para la salida de síntesis de voz."</string> - <string name="tts_default_sample_string" msgid="6388016028292967973">"Este es un ejemplo de síntesis de voz"</string> + <string name="tts_install_data_summary" msgid="3608874324992243851">"Instalar los archivos de datos de voz necesarios para la conversión de texto a voz"</string> + <string name="tts_engine_security_warning" msgid="3372432853837988146">"Es posible que este motor de conversión de texto a voz recopile todo el texto hablado, incluidos datos personales, como contraseñas y números de tarjeta de crédito. Procede del motor <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g>. ¿Quieres habilitar el uso de este motor de conversión de texto a voz?"</string> + <string name="tts_engine_network_required" msgid="8722087649733906851">"Este idioma requiere una conexión de red activa para la salida de conversión de texto a voz."</string> + <string name="tts_default_sample_string" msgid="6388016028292967973">"Este es un ejemplo de conversión de texto a voz"</string> <string name="tts_status_title" msgid="8190784181389278640">"Estado del idioma predeterminado"</string> <string name="tts_status_ok" msgid="8583076006537547379">"El <xliff:g id="LOCALE">%1$s</xliff:g> se admite completamente"</string> <string name="tts_status_requires_network" msgid="8327617638884678896">"El idioma <xliff:g id="LOCALE">%1$s</xliff:g> requiere conexión a Internet"</string> @@ -205,17 +205,17 @@ <string name="tethering_settings_not_available" msgid="266821736434699780">"Los ajustes para compartir conexión no están disponibles para este usuario"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Los ajustes del nombre del punto de acceso no están disponibles para este usuario"</string> <string name="enable_adb" msgid="8072776357237289039">"Depuración por USB"</string> - <string name="enable_adb_summary" msgid="3711526030096574316">"Activar el modo de depuración cuando el dispositivo esté conectado por USB"</string> + <string name="enable_adb_summary" msgid="3711526030096574316">"Activa el modo de depuración cuando el dispositivo esté conectado por USB"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"Revocar autorizaciones de depuración USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Depuración inalámbrica"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Activa el modo de depuración cuando haya conexión Wi‑Fi"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Error"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Depuración inalámbrica"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Para ver y utilizar los dispositivos disponibles, activa la depuración inalámbrica"</string> - <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Vincular dispositivo con código QR"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Vincula nuevos dispositivos con el escáner de códigos QR"</string> - <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Vincular dispositivo con código de sincronización"</string> - <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Vincula nuevos dispositivos con un código de seis dígitos"</string> + <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Emparejar dispositivo con código QR"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Empareja nuevos dispositivos con el escáner de códigos QR"</string> + <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Emparejar dispositivo con código de sincronización"</string> + <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Empareja nuevos dispositivos con un código de seis dígitos"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Dispositivos vinculados"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Conectados actualmente"</string> <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Datos del dispositivo"</string> @@ -223,20 +223,20 @@ <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"Huella digital del dispositivo: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string> <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"No se ha podido conectar"</string> <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"Comprueba que has conectado <xliff:g id="DEVICE_NAME">%1$s</xliff:g> a la red correcta"</string> - <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Vincular con dispositivo"</string> + <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Emparejar con dispositivo"</string> <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Código de vinculación de Wi‑Fi"</string> - <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"No se ha podido vincular"</string> + <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"No se ha podido emparejar"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Asegúrate de que el dispositivo esté conectado a la misma red."</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Vincula un dispositivo mediante Wi‑Fi con un código QR"</string> - <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Vinculando dispositivo…"</string> - <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"No se ha podido vincular el dispositivo. El código QR no era correcto o el dispositivo no estaba conectado a la misma red."</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Empareja un dispositivo mediante Wi‑Fi con un código QR"</string> + <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Emparejando dispositivo…"</string> + <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"No se ha podido emparejar el dispositivo. El código QR no era correcto o el dispositivo no estaba conectado a la misma red."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Dirección IP y puerto"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Escanea el código QR"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Vincula un dispositivo mediante Wi‑Fi escaneando un código QR"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Empareja un dispositivo mediante Wi‑Fi escaneando un código QR"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Conéctate a una red Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, depuración, desarrollo"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Acceso directo a informe de errores"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostrar un botón en el menú de encendido para crear un informe de errores"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Muestra un botón en el menú de encendido para crear un informe de errores"</string> <string name="keep_screen_on" msgid="1187161672348797558">"Pantalla siempre encendida al cargar"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"La pantalla nunca entra en modo de suspensión si el dispositivo se está cargando"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Habilitar registro de Bluetooth HCI"</string> @@ -251,7 +251,7 @@ <string name="debug_networking_category" msgid="6829757985772659599">"Redes"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Certificación de pantalla inalámbrica"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Habilitar registro de Wi-Fi detallado"</string> - <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limitación de búsqueda de redes Wi‑Fi"</string> + <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limitar búsqueda de redes Wi‑Fi"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Aleatorización de MAC mejorada por Wi-Fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Datos móviles siempre activos"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Aceleración por hardware para conexión compartida"</string> @@ -267,7 +267,7 @@ <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"Frecuencia de muestreo de audio de Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"Activar el códec de audio por Bluetooth\nSelección: frecuencia de muestreo"</string> <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"Si una opción aparece atenuada, no es compatible con el teléfono o los auriculares"</string> - <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Bits por muestra del audio Bluetooth"</string> + <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Bits por muestra del audio de Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Activar el códec de audio por Bluetooth\nSelección: bits por muestra"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Modo de canal de audio de Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Activar el códec de audio por Bluetooth\nSelección: modo de canal"</string> @@ -281,10 +281,10 @@ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Nombre de host del proveedor de DNS privado"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Introduce el host del proveedor de DNS"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"No se ha podido establecer la conexión"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opciones para la certificación de la pantalla inalámbrica"</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumentar el nivel de registro de Wi-Fi y mostrar por SSID RSSI en el selector Wi-Fi"</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Muestra opciones para la certificación de la pantalla inalámbrica"</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumenta el nivel de registro de la conexión Wi-Fi y se muestra por SSID RSSI en el selector Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduce el consumo de batería y mejora el rendimiento de las redes"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Si este modo está habilitado, es posible que la dirección MAC del dispositivo cambie cada vez que se conecte a una red que tenga habilitada la aleatorización de MAC."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Si este modo está habilitado, es posible que la dirección MAC del dispositivo cambie cada vez que se conecte a una red que tenga habilitada la aleatorización de MAC"</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Medida"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"No medida"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamaños del búfer para registrar"</string> @@ -298,8 +298,8 @@ <string name="allow_mock_location" msgid="2102650981552527884">"Ubicaciones simuladas"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"Permitir ubicaciones simuladas"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Inspección de atributos de vista"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mantener los datos móviles siempre activos aunque la conexión Wi‑Fi esté activada (para cambiar de red rápidamente)"</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Usar la conexión compartida con aceleración por hardware si está disponible"</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mantiene los datos móviles siempre activos aunque la conexión Wi‑Fi esté habilitada (para cambiar de red rápidamente)"</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Usa la conexión compartida con aceleración por hardware si está disponible"</string> <string name="adb_warning_title" msgid="7708653449506485728">"¿Permitir depuración por USB?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"La depuración por USB solo está indicada para actividades de desarrollo. Puedes utilizarla para intercambiar datos entre el ordenador y el dispositivo, para instalar aplicaciones en el dispositivo sin recibir notificaciones y para leer datos de registro."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"¿Permitir la depuración inalámbrica?"</string> @@ -308,10 +308,10 @@ <string name="dev_settings_warning_title" msgid="8251234890169074553">"¿Permitir ajustes de desarrollo?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"Estos ajustes están destinados únicamente a los desarrolladores. Pueden provocar que el dispositivo o las aplicaciones no funcionen correctamente."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Verificar aplicaciones por USB"</string> - <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Comprobar las aplicaciones instaladas mediante ADB/ADT para detectar comportamientos dañinos"</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Mostrar dispositivos Bluetooth sin nombre (solo direcciones MAC)"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Inhabilitar la función de volumen absoluto de Bluetooth si se producen problemas de volumen con dispositivos remotos (por ejemplo, volumen demasiado alto o falta de control)"</string> - <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Habilita la pila de funciones de Bluetooth Gabeldorsche."</string> + <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Comprueba las aplicaciones instaladas por ADB/ADT para detectar comportamientos dañinos"</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Muestra los dispositivos Bluetooth sin nombre (solo direcciones MAC)"</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Inhabilita la función de volumen absoluto de Bluetooth si se producen problemas de volumen con dispositivos remotos (por ejemplo, volumen excesivamente alto o falta de control)"</string> + <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Habilita la pila de funciones de Bluetooth Gabeldorsche"</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Habilita la función de conectividad mejorada."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"Habilitar aplicación de terminal que ofrece acceso a shell local"</string> @@ -331,54 +331,54 @@ <string name="media_category" msgid="8122076702526144053">"Multimedia"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Supervisión"</string> <string name="strict_mode" msgid="889864762140862437">"Modo estricto"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"Parpadear si las aplicaciones tardan mucho en el subproceso principal"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"Hace parpadear la pantalla si las aplicaciones tardan mucho en el subproceso principal"</string> <string name="pointer_location" msgid="7516929526199520173">"Ubicación del puntero"</string> - <string name="pointer_location_summary" msgid="957120116989798464">"Superponer los datos de las pulsaciones en la pantalla"</string> + <string name="pointer_location_summary" msgid="957120116989798464">"Superpone los datos de las pulsaciones en la pantalla"</string> <string name="show_touches" msgid="8437666942161289025">"Mostrar toques"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"Mostrar la ubicación de los toques en la pantalla"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"Muestra la ubicación de los toques en la pantalla"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Mostrar cambios de superficies"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"Parpadear todas las superficies de la ventana cuando se actualizan"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"Hace parpadear todas las superficies de la ventana cuando se actualizan"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"Ver cambios de vista"</string> - <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Parpadear vistas dentro de las ventanas cuando se dibujan"</string> + <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Hacer parpadear las vistas dentro de las ventanas cuando se dibujan"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Ver actualizaciones de capas de hardware"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Parpadear capas de hardware en verde al actualizarse"</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Hacer parpadear las capas de hardware en verde cuando se actualizan"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Depurar sobredibujos de GPU"</string> <string name="disable_overlays" msgid="4206590799671557143">"Inhabilitar superposiciones de hardware"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"Usar siempre la GPU para componer pantallas"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Simular espacio de color"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Habilitar seguimiento OpenGL"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Inhabilitar enrutamiento de audio por USB"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Inhabilitar el enrutamiento automático a periféricos de audio USB"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Inhabilita el enrutamiento automático a periféricos de audio USB"</string> <string name="debug_layout" msgid="1659216803043339741">"Mostrar límites de diseño"</string> - <string name="debug_layout_summary" msgid="8825829038287321978">"Mostrar límites de vídeo, márgenes, etc."</string> + <string name="debug_layout_summary" msgid="8825829038287321978">"Muestra límites de vídeo, márgenes, etc."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Forzar dirección de diseño RTL"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Forzar dirección RTL para todos los idiomas"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Fuerza la dirección RTL para todos los idiomas"</string> <string name="force_msaa" msgid="4081288296137775550">"Forzar MSAA 4x"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"Habilitar MSAA 4x en aplicaciones de OpenGL ES 2.0"</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"Habilita MSAA 4x en aplicaciones de OpenGL ES 2.0"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Depurar operaciones de recorte no rectangulares"</string> <string name="track_frame_time" msgid="522674651937771106">"Trazar la renderización de HWUI"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activar capas de depuración de GPU"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir cargar capas de depuración de GPU en aplicaciones"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Habilit. registro de proveedor"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluye otros registros de proveedor específicos del dispositivo en informes de errores; es posible que contenga información privada, que consuma más batería o que ocupe más espacio de almacenamiento."</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permite cargar capas de depuración de GPU para aplicaciones de depuración"</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Habilitar registro de proveedor detallado"</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluye otros registros de proveedor específicos del dispositivo en informes de errores, lo que puede añadir información privada, usar más batería u ocupar más espacio de almacenamiento."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animación de ventana"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animación de transición"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duración de animación"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Simular pantallas secundarias"</string> <string name="debug_applications_category" msgid="5394089406638954196">"Aplicaciones"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"No mantener actividades"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destruir actividades cuando el usuario deje de usarlas"</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Destruye actividades cuando el usuario deja de usarlas"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Límitar procesos en segundo plano"</string> <string name="show_all_anrs" msgid="9160563836616468726">"Mostrar ANR en segundo plano"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"Mostrar el diálogo de que la aplicación no responde para aplicaciones en segundo plano"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"Muestra el cuadro de diálogo de que la aplicación no responde para aplicaciones en segundo plano"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Ver advertencias del canal de notificaciones"</string> - <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Mostrar una advertencia en pantalla cuando una aplicación publica una notificación sin un canal válido"</string> - <string name="force_allow_on_external" msgid="9187902444231637880">"Forzar permitir aplicaciones de forma externa"</string> - <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Hacer que cualquier aplicación se pueda escribir en un dispositivo de almacenamiento externo independientemente de los valores definidos"</string> - <string name="force_resizable_activities" msgid="7143612144399959606">"Forzar el ajuste de tamaño de las actividades"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Hacer que el tamaño de todas las actividades se pueda ajustar para el modo multiventana independientemente de los valores definidos"</string> + <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Muestra una advertencia en pantalla cuando una aplicación publica una notificación sin un canal válido"</string> + <string name="force_allow_on_external" msgid="9187902444231637880">"Forzar permitir aplicaciones en almacenamiento externo"</string> + <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Permite que cualquier aplicación se pueda escribir en un almacenamiento externo independientemente de los valores de manifiesto"</string> + <string name="force_resizable_activities" msgid="7143612144399959606">"Forzar que las actividades puedan cambiar de tamaño"</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Permite que todas las actividades puedan cambiar de tamaño en multiventana independientemente de los valores de manifiesto"</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Habilitar ventanas de forma libre"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Habilitar la opción para utilizar ventanas de forma libre experimentales"</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Permite la compatibilidad con ventanas de forma libre experimentales"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Contraseña para copias de ordenador"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Las copias de seguridad completas de ordenador no están protegidas"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Toca para cambiar o quitar la contraseña de las copias de seguridad completas del escritorio"</string> @@ -400,13 +400,14 @@ <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Inactiva. Toca para alternar."</string> <string name="inactive_app_active_summary" msgid="8047630990208722344">"Activa. Toca para alternar."</string> <string name="standby_bucket_summary" msgid="5128193447550429600">"Estado de la aplicación en espera: <xliff:g id="BUCKET"> %s</xliff:g>"</string> - <string name="transcode_settings_title" msgid="2581975870429850549">"Configuración de la transcodificación multimedia"</string> + <string name="transcode_settings_title" msgid="2581975870429850549">"Ajustes de transcodificación multimedia"</string> <string name="transcode_user_control" msgid="6176368544817731314">"Anular valores predeterminados de transcodificación"</string> <string name="transcode_enable_all" msgid="2411165920039166710">"Habilitar transcodificación"</string> <string name="transcode_default" msgid="3784803084573509491">"Considerar que las aplicaciones admiten formatos modernos"</string> <string name="transcode_notification" msgid="5560515979793436168">"Mostrar notificaciones de transcodificación"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Inhabilitar almacenamiento en caché para transcodificaciones"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Servicios en ejecución"</string> - <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ver y controlar los servicios en ejecución"</string> + <string name="runningservices_settings_summary" msgid="1046080643262665743">"Consulta y controla los servicios en ejecución"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string> <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Establecer implementación de WebView"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Esta opción ya no está disponible. Vuelve a intentarlo."</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Es posible que el tablet se apague pronto (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Es posible que el dispositivo se apague pronto (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> hasta que esté completamente cargada"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> hasta que esté completamente cargada"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g>: preservando estado de la batería"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconocido"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Cargando"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Cargando rápidamente"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Cargando lentamente"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Cargando sin cables"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"No se está cargando"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Enchufado, pero no se puede cargar en este momento"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Cargada"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlada por el administrador"</string> <string name="disabled" msgid="8017887509554714950">"Inhabilitada"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Autorizadas"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancelar"</string> <string name="okay" msgid="949938843324579502">"Aceptar"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmas y recordatorios"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Permitir crear alarmas o recordatorios"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmas y recordatorios"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Permite que esta aplicación programe alarmas u otros eventos basados en el tiempo. De este modo, podrá activarse y ejecutarse aunque no estés usando el dispositivo. Si quitas este permiso, es posible que la aplicación no funcione correctamente. En concreto, no sonará ninguna alarma que la aplicación haya programado."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"programar, alarma, recordatorio, evento"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Permitir la programación de alarmas y recordatorios"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmas y recordatorios"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Permite que esta aplicación programe alarmas y otras acciones. Puede que la aplicación siga funcionando aunque no estés usando el teléfono, lo que puede consumir más batería. Si este permiso está desactivado, es posible que esta aplicación no funcione correctamente y que las alarmas no se activen según estén programadas."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Permite que esta aplicación programe alarmas y otras acciones. Puede que la aplicación siga funcionando aunque no estés usando el tablet, lo que puede consumir más batería. Si este permiso está desactivado, es posible que esta aplicación no funcione correctamente y que las alarmas no se activen según estén programadas."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Permite que esta aplicación programe alarmas y otras acciones. Puede que la aplicación siga funcionando aunque no estés usando el dispositivo, lo que puede consumir más batería. Si este permiso está desactivado, es posible que esta aplicación no funcione correctamente y que las alarmas no se activen según estén programadas."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"programar, alarma, recordatorio, reloj"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Activar"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Activar el modo No molestar"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nunca"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Establecer bloqueo"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Cambiar a <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Creando usuario…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"No se ha podido crear el usuario"</string> <string name="user_nickname" msgid="262624187455825083">"Apodo"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Añadir invitado"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Quitar invitado"</string> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index 591290b7dcdb..75e012858b2a 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -86,12 +86,12 @@ <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Telefonikõned"</string> <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Failiedastus"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Sisendseade"</string> - <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Internetti juurdepääs"</string> - <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"Kontakti jagamine"</string> + <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Juurdepääs internetile"</string> + <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"Kontaktide jagamine"</string> <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"Kasutamine kontaktide jagamiseks"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Interneti-ühenduse jagamine"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Tekstsõnumid"</string> - <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM-i juurdepääs"</string> + <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Juurdepääs SIM-ile"</string> <string name="bluetooth_profile_a2dp_high_quality" msgid="4739440941324792775">"HD-heli: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"HD-heli"</string> <string name="bluetooth_profile_hearing_aid" msgid="58154575573984914">"Kuuldeaparaadid"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Luba transkodeerimine"</string> <string name="transcode_default" msgid="3784803084573509491">"Oleta, et rakendused toetavad kaasaegseid vorminguid"</string> <string name="transcode_notification" msgid="5560515979793436168">"Kuva transkodeerimise märguanded"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Transkodeerimise vahemälu keelamine"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Käitatud teenused"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Praegu käitatud teenuste vaatamine ja juhtimine"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView\' rakendamine"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tahvelarvuti võib peagi välja lülituda (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Seade võib peagi välja lülituda (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Täislaadimiseks kulub <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – täislaadimiseks kulub <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – optimeerimine aku seisukorra põhjal"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Tundmatu"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Laadimine"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Kiirlaadimine"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Aeglaselt laadimine"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Juhtmevaba laadimine"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ei lae"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Vooluvõrgus, praegu ei saa laadida"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Laetud"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Juhib administraator"</string> <string name="disabled" msgid="8017887509554714950">"Keelatud"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Lubatud"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Tühista"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Äratused ja meeldetuletused"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Luba määrata äratusi või meeldetuletusi"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Äratused ja meeldetuletused"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Lubage sellel rakendusel ajastada äratusi või muid ajapõhiseid sündmusi. See võimaldab rakendusel ärgata ja käivituda ka siis, kui te seadet ei kasuta. Pange tähele, et selle loa tühistamine võib tekitada rakenduse väärtalitlust. Näiteks ei tööta enam rakenduses ajastatud äratused."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ajakava, äratus, meeldetuletus, sündmus"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Luba äratuste ja meeldetuletuste määramine"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Äratused ja meeldetuletused"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Lubage sellel rakendusel määrata äratusi ja ajastada muid toiminguid. Seda rakendust võidakse kasutada ajal, kui te oma telefoni ei kasuta, ja see võib akukasutust suurendada. Kui see luba on välja lülitatud, ei pruugi see rakendus korralikult toimida ja selle äratused ei tööta ajakava järgi."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Lubage sellel rakendusel määrata äratusi ja ajastada muid toiminguid. Seda rakendust võidakse kasutada ajal, kui te oma tahvelarvutit ei kasuta, ja see võib akukasutust suurendada. Kui see luba on välja lülitatud, ei pruugi see rakendus korralikult toimida ja selle äratused ei tööta ajakava järgi."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Lubage sellel rakendusel määrata äratusi ja ajastada muid toiminguid. Seda rakendust võidakse kasutada ajal, kui te oma seadet ei kasuta, ja see võib akukasutust suurendada. Kui see luba on välja lülitatud, ei pruugi see rakendus korralikult toimida ja selle äratused ei tööta ajakava järgi."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ajakava, äratus, meeldetuletus, kell"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Lülita sisse"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Valiku Mitte segada sisselülitamine"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Mitte kunagi"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Määra lukk"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Lülita kasutajale <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Uue kasutaja loomine …"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Uue kasutaja loomine ebaõnnestus"</string> <string name="user_nickname" msgid="262624187455825083">"Hüüdnimi"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Lisa külaline"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Eemalda külaline"</string> diff --git a/packages/SettingsLib/res/values-eu/arrays.xml b/packages/SettingsLib/res/values-eu/arrays.xml index 681c85f34baf..4bce1fe750e9 100644 --- a/packages/SettingsLib/res/values-eu/arrays.xml +++ b/packages/SettingsLib/res/values-eu/arrays.xml @@ -141,13 +141,13 @@ <item msgid="1241278021345116816">"Audioaren kalitatea areagotzeko optimizatua (990 Kb/s / 909 Kb/s)"</item> <item msgid="3523665555859696539">"Audioaren eta konexioaren kalitate orekatua (660 Kb/s / 606 Kb/s)"</item> <item msgid="886408010459747589">"Konexioaren kalitatea areagotzeko optimizatua (330 Kb/s / 303 Kb/s)"</item> - <item msgid="3808414041654351577">"Emaitzarik onenak (bit-abiadura doigarria)"</item> + <item msgid="3808414041654351577">"Emaitzarik onenak (bit-abiadura egokitua)"</item> </string-array> <string-array name="bluetooth_a2dp_codec_ldac_playback_quality_summaries"> <item msgid="804499336721569838">"Audioaren kalitatea areagotzeko optimizatua"</item> <item msgid="7451422070435297462">"Orekatu audioaren eta konexioaren kalitateak"</item> <item msgid="6173114545795428901">"Konexioaren kalitatea areagotzeko optimizatua"</item> - <item msgid="4349908264188040530">"Emaitzarik onenak (bit-abiadura doigarria)"</item> + <item msgid="4349908264188040530">"Emaitzarik onenak (bit-abiadura egokitua)"</item> </string-array> <string-array name="bluetooth_audio_active_device_summaries"> <item msgid="8019740759207729126"></item> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index f5c36152e10f..9e7fa29013df 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -212,10 +212,10 @@ <string name="adb_wireless_error" msgid="721958772149779856">"Errorea"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Hari gabeko arazketa"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Erabilgarri dauden gailuak ikusteko eta erabiltzeko, aktibatu hari gabeko arazketa"</string> - <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Parekatu gailua QR kodearekin"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Parekatu gailu gehiago QR kodea eskaneatuta"</string> - <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Parekatu gailua parekatze-kodearekin"</string> - <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Parekatu gailu gehiago sei digituko kodearekin"</string> + <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Parekatu gailua QR kode batekin"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Parekatu gailu gehiago QR kode bat eskaneatuta"</string> + <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Parekatu gailua parekatze-kode batekin"</string> + <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Parekatu gailu gehiago sei digituko kode batekin"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Parekatutako gailuak"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Konektatuta daudenak"</string> <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Gailuaren xehetasunak"</string> @@ -244,7 +244,7 @@ <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM desblokeoa"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Onartu abiarazlea desblokeatzea"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"OEM desblokeoa onartu nahi duzu?"</string> - <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ABISUA: ezarpen hau aktibatuta dagoen bitartean, gailuaren babes-eginbideek ez dute gailu honetan funtzionatuko."</string> + <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ABISUA: ezarpen hau aktibatuta dagoen bitartean, gailua babesteko eginbideek ez dute gailu honetan funtzionatuko."</string> <string name="mock_location_app" msgid="6269380172542248304">"Hautatu kokapen faltsuen aplikazioa"</string> <string name="mock_location_app_not_set" msgid="6972032787262831155">"Ez da ezarri kokapen faltsuen aplikaziorik"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"Kokapen faltsuen aplikazioa: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> @@ -271,7 +271,7 @@ <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Abiarazi Bluetooth bidezko audio-kodeka\nHautapena: lagin bakoitzeko bitak"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Bluetooth bidezko audioaren kanalaren modua"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Abiarazi Bluetooth bidezko audio-kodeka\nHautapena: kanal modua"</string> - <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Bluetooth audioaren LDAC kodeka: erreprodukzioaren kalitatea"</string> + <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Bluetooth bidezko audioaren LDAC kodeka: erreprodukzioaren kalitatea"</string> <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Abiarazi Bluetooth bidezko LDAC\naudio-kodekaren hautapena: erreprodukzio-kalitatea"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Igortzean: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"DNS pribatua"</string> @@ -337,18 +337,18 @@ <string name="show_touches" msgid="8437666942161289025">"Erakutsi sakatutakoa"</string> <string name="show_touches_summary" msgid="3692861665994502193">"Erakutsi sakatutako elementuak"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Erakutsi azaleko aldaketak"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"Distiratu leiho osoen azalak eguneratzen direnean"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"Distirarazi leiho osoen azalak haiek eguneratzean"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"Erakutsi ikuspegi-aldaketak"</string> - <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Nabarmendu leiho barruko ikuspegiak marraztean"</string> + <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Distirarazi leiho barruko ikuspegiak marraztean"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Hardware-geruzen aldaketak"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Eguneratu bitartean, hardware-geruzak berdez"</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Distirarazi hardware-geruzak berdez haiek eguneratzean"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Araztu GPU gainidazketa"</string> <string name="disable_overlays" msgid="4206590799671557143">"Desgaitu HW gainjartzeak"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"Erabili beti GPU pantaila-muntaietarako"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Simulatu kolore-eremua"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Gaitu OpenGL aztarnak"</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Desgaitu USB audio-bideratzea"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Desgaitu USB audio-gailuetara automatikoki bideratzea"</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Desgaitu USB bidez audioa bideratzeko aukera"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Desgaitu USB bidezko audio-gailuetara automatikoki bideratzeko aukera"</string> <string name="debug_layout" msgid="1659216803043339741">"Erakutsi diseinu-mugak"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Erakutsi kliparen mugak, marjinak, etab."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Behartu eskuin-ezker norabidea"</string> @@ -363,7 +363,7 @@ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sartu gailuaren berariazko saltzaileen erregistro gehigarriak akatsen txostenetan; baliteke haiek informazio pribatua izatea, bateria gehiago erabiltzea edo biltegiratzeko toki gehiago hartzea."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Leihoen animazio-eskala"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Trantsizioen animazio-eskala"</string> - <string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatzailearen iraupena"</string> + <string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatzailearen iraupen-eskala"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Simulatu bigarren mailako pantailak"</string> <string name="debug_applications_category" msgid="5394089406638954196">"Aplikazioak"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"Ez mantendu jarduerak"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Gaitu transkodetzea"</string> <string name="transcode_default" msgid="3784803084573509491">"Arduratu aplikazioek formatu modernoak onartzeaz"</string> <string name="transcode_notification" msgid="5560515979793436168">"Erakutsi transkodetze-jakinarazpenak"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Desgaitu transkodetze-cachea"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Abian diren zerbitzuak"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ikusi eta kontrolatu une honetan abian diren zerbitzuak"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView inplementazioa"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Baliteke tableta laster itzaltzea (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Baliteke gailua laster itzaltzea (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> guztiz kargatu arte"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> guztiz kargatu arte"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Optimizatzen, bateria egoera onean mantentzeko"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Ezezaguna"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Kargatzen"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Bizkor kargatzen"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Mantso kargatzen"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Hari gabe kargatzen"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ez da kargatzen ari"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Konektatuta dago. Ezin da kargatu une honetan."</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Kargatuta"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Administratzaileak kontrolatzen du"</string> <string name="disabled" msgid="8017887509554714950">"Desgaituta"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Baimena dauka"</string> @@ -505,14 +504,16 @@ <string name="cancel" msgid="5665114069455378395">"Utzi"</string> <string name="okay" msgid="949938843324579502">"Ados"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmak eta abisuak"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Eman alarmak edo abisuak ezartzeko baimena"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmak eta abisuak"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Eman alarmak edo denboran oinarritutako beste gertaera batzuk programatzeko baimena aplikazioari. Horrek gailua aktibatu eta exekutatzeko aukera emango dio aplikazioari, baita gailua erabiltzen ari ez zarenean ere. Kontuan izan, baimen hori baliogabetzen baduzu, aplikazioak gaizki funtzionatuko duela agian; zehazki, aplikazioak programatu dituen alarmek ez dute funtzionatuko."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"programazioa, alarma, abisua, gertaera"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Eman alarmak eta abisuak ezartzeko baimena"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmak eta abisuak"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Eman alarmak ezartzeko eta beste ekintza batzuk programatzeko baimena aplikazioari. Telefonoa erabili ez arren, agian aplikazioak martxan jarraituko du, eta bateria gehiago erabiliko. Baimena desaktibatuta badago, baliteke aplikazioak zuzen ez funtzionatzea eta programatutako alarmek ez jotzea."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Eman alarmak ezartzeko eta beste ekintza batzuk programatzeko baimena aplikazioari. Tableta erabili ez arren, agian aplikazioak martxan jarraituko du, eta bateria gehiago erabiliko. Baimena desaktibatuta badago, baliteke aplikazioak zuzen ez funtzionatzea eta programatutako alarmek ez jotzea."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Eman alarmak ezartzeko eta beste ekintza batzuk programatzeko baimena aplikazioari. Gailua erabili ez arren, agian aplikazioak martxan jarraituko du, eta bateria gehiago erabiliko. Baimena desaktibatuta badago, baliteke aplikazioak zuzen ez funtzionatzea eta programatutako alarmek ez jotzea."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"programazioa, alarma, abisua, erlojua"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aktibatu"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Aktibatu ez molestatzeko modua"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Inoiz ez"</string> - <string name="zen_interruption_level_priority" msgid="5392140786447823299">"Lehentasuna dutenak soilik"</string> + <string name="zen_interruption_level_priority" msgid="5392140786447823299">"Lehentasunezkoak soilik"</string> <string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string> <string name="zen_alarm_warning_indef" msgid="4146527909616457163">"Ez duzu entzungo hurrengo alarma (<xliff:g id="WHEN">%1$s</xliff:g>) aukera hau lehenago desaktibatzen ez baduzu"</string> <string name="zen_alarm_warning" msgid="245729928048586280">"Ez duzu entzungo hurrengo alarma (<xliff:g id="WHEN">%1$s</xliff:g>)"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Ezarri blokeoa"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Aldatu <xliff:g id="USER_NAME">%s</xliff:g> erabiltzailera"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Beste erabiltzaile bat sortzen…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Ezin izan da sortu erabiltzailea"</string> <string name="user_nickname" msgid="262624187455825083">"Goitizena"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Gehitu gonbidatua"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Kendu gonbidatua"</string> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index a4ccebad5f44..1d03bf5acd59 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -87,8 +87,8 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"انتقال فایل"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"دستگاه ورودی"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"دسترسی به اینترنت"</string> - <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"اشتراکگذاری مخاطب"</string> - <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"استفاده برای اشتراکگذاری مخاطب"</string> + <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"همرسانی مخاطب"</string> + <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"استفاده برای همرسانی مخاطب"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"اشتراکگذاری اتصال اینترنت"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"پیامهای نوشتاری"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"دسترسی سیمکارت"</string> @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"لغو"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"وقتی وصل باشید، مرتبطسازی اجازه دسترسی به مخاطبین و سابقه تماستان را فراهم میکند."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> مرتبطسازی نشد."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"به خاطر یک پین یا کلیدواژه نادرست، مرتبطسازی با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> انجام نشد."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"بهخاطر پین یا کلیدواژه نادرست، مرتبطسازی با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> انجام نشد."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"ارتباط با <xliff:g id="DEVICE_NAME">%1$s</xliff:g> امکانپذیر نیست."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> مرتبطسازی را رد کرد."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"رایانه"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"فعال کردن تراتبدیل"</string> <string name="transcode_default" msgid="3784803084573509491">"فرض شود برنامهها از قالبهای مدرن پشتیبانی میکنند"</string> <string name="transcode_notification" msgid="5560515979793436168">"نمایش اعلانهای تراتبدیل"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"غیرفعال کردن حافظه پنهان تراتبدیل"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"سرویسهای در حال اجرا"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"مشاهده و کنترل سرویسهای در حال اجرای فعلی"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"اجرای وبنما"</string> @@ -414,8 +415,8 @@ <string name="convert_to_file_encryption_enabled" msgid="840757431284311754">"تبدیل…"</string> <string name="convert_to_file_encryption_done" msgid="8965831011811180627">"از قبل به رمزگذاری بر حسب فایل تبدیل شده است"</string> <string name="title_convert_fbe" msgid="5780013350366495149">"تبدیل به رمزگذاری مبتنی بر فایل"</string> - <string name="convert_to_fbe_warning" msgid="34294381569282109">"تبدیل پارتیشن دادهای به رمزگذاری مبتنی بر فایل.\n !!هشدار!! این کار تمام دادههایتان را پاک میکند.\n این ویژگی در نسخه آلفا قرار دارد و ممکن است بهدرستی کار نکند.\n برای ادامه، «پاک کردن و تبدیل…» را فشار دهید."</string> - <string name="button_convert_fbe" msgid="1159861795137727671">"پاک کردن و تبدیل…"</string> + <string name="convert_to_fbe_warning" msgid="34294381569282109">"تبدیل پارتیشن دادهای به رمزگذاری مبتنی بر فایل.\n !!هشدار!! این کار تمام دادههایتان را پاک میکند.\n این ویژگی در نسخه آلفا قرار دارد و ممکن است بهدرستی کار نکند.\n برای ادامه، «محو کردن داده و تبدیل…» را فشار دهید."</string> + <string name="button_convert_fbe" msgid="1159861795137727671">"محو کردن داده و تبدیل…"</string> <string name="picture_color_mode" msgid="1013807330552931903">"حالت رنگ عکس"</string> <string name="picture_color_mode_desc" msgid="151780973768136200">"استفاده از sRGB"</string> <string name="daltonizer_mode_disabled" msgid="403424372812399228">"غیر فعال"</string> @@ -450,23 +451,21 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ممکن است رایانه لوحی بهزودی خاموش شود (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ممکن است دستگاه بهزودی خاموش شود (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> تا شارژ کامل باقی مانده است"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> تا شارژ کامل باقی مانده است"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - بهینهسازی برای سلامت باتری"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"ناشناس"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"در حال شارژ شدن"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"درحال شارژ شدن سریع"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"درحال شارژ شدن آهسته"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"درحال شارژ بیسیم"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"شارژ نمیشود"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"به برق وصل شده است، درحالحاضر شارژ نمیشود"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"شارژ کامل شد"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"توسط سرپرست سیستم کنترل میشود"</string> <string name="disabled" msgid="8017887509554714950">"غیر فعال شد"</string> - <string name="external_source_trusted" msgid="1146522036773132905">"مجاز"</string> - <string name="external_source_untrusted" msgid="5037891688911672227">"مجاز نیست"</string> + <string name="external_source_trusted" msgid="1146522036773132905">"مجاز بودن"</string> + <string name="external_source_untrusted" msgid="5037891688911672227">"مجاز نبودن"</string> <string name="install_other_apps" msgid="3232595082023199454">"نصب برنامههای ناشناس"</string> <string name="home" msgid="973834627243661438">"صفحه اصلی تنظیمات"</string> <string-array name="battery_labels"> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"لغو"</string> <string name="okay" msgid="949938843324579502">"تأیید"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"زنگهای هشدار و یادآوریها"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"مجاز کردن برای تنظیم زنگ هشدار و یادآوری"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"زنگهای هشدار و یادآوریها"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"به این برنامه اجازه میدهد زنگهای هشدار و دیگر رویدادهای مبتنی بر زمان را زمانبندی کند. با این کار برنامه مجاز میشود حتی زمانی که از دستگاه استفاده نمیکنید بیدار و اجرا شود. توجه داشته باشید که لغو کردن این اجازه ممکن است باعث شود برنامه درست کار نکند، مخصوصاً اینکه همه زنگهای هشداری که برنامه زمانبندی کرده است دیگر کار نخواهند کرد."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"زمانبندی، زنگ هشدار، یادآوری، رویداد"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"مجاز کردن تنظیم زنگ ساعت و یادآوری"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"زنگهای ساعت و یادآوریها"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"به این برنامه اجازه داده میشود که زنگ ساعت تنظیم کند و کنشهای دیگر را زمانبندی کند. ممکن است از این برنامه زمانی استفاده شود که از تلفنتان استفاده نمیکنید؛ این موضوع شاید موجب مصرف شارژ بیشتری شود. اگر این اجازه خاموش باشد، ممکن است این برنامه بهدرستی کار نکند، و زنگهای ساعت آن طبق زمانبندی کار نخواهد کرد."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"به این برنامه اجازه داده میشود که زنگ ساعت تنظیم کند و کنشهای دیگر را زمانبندی کند. ممکن است از این برنامه زمانی استفاده شود که از رایانه لوحیتان استفاده نمیکنید؛ این موضوع شاید موجب مصرف شارژ بیشتری شود. اگر این اجازه خاموش باشد، ممکن است این برنامه بهدرستی کار نکند، و زنگهای ساعت آن طبق زمانبندی کار نخواهد کرد."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"به این برنامه اجازه داده میشود که زنگ ساعت تنظیم کند و کنشهای دیگر را زمانبندی کند. ممکن است از این برنامه زمانی استفاده شود که از دستگاهتان استفاده نمیکنید؛ این موضوع شاید موجب مصرف شارژ بیشتری شود. اگر این اجازه خاموش باشد، ممکن است این برنامه بهدرستی کار نکند، و زنگهای ساعت آن طبق زمانبندی کار نخواهد کرد."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"زمانبندی، زنگ ساعت، یادآوری، ساعت"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"روشن کردن"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"روشن کردن «مزاحم نشوید»"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"هرگز"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"تنظیم قفل"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"رفتن به <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"درحال ایجاد کاربر جدید…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"کاربر جدید ایجاد نشد"</string> <string name="user_nickname" msgid="262624187455825083">"نام مستعار"</string> <string name="guest_new_guest" msgid="3482026122932643557">"افزودن مهمان"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"حذف مهمان"</string> diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml index fc4575462d62..90c40cebf956 100644 --- a/packages/SettingsLib/res/values-fi/arrays.xml +++ b/packages/SettingsLib/res/values-fi/arrays.xml @@ -55,7 +55,7 @@ </string-array> <string-array name="hdcp_checking_summaries"> <item msgid="4045840870658484038">"Älä koskaan käytä HDCP-tarkistusta"</item> - <item msgid="8254225038262324761">"Käytä HDCP-tarkistusta vain DRM-suojatulle sisällölle."</item> + <item msgid="8254225038262324761">"Käytä HDCP-tarkistusta vain DRM-suojatulle sisällölle"</item> <item msgid="6421717003037072581">"Käytä aina HDCP-tarkistusta"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> @@ -86,7 +86,7 @@ <item msgid="8147982633566548515">"map14"</item> </string-array> <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Käytä järjestelmän valintaa (oletus)."</item> + <item msgid="2494959071796102843">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="4055460186095649420">"SBC"</item> <item msgid="720249083677397051">"AAC"</item> <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ‑ääni"</item> @@ -94,7 +94,7 @@ <item msgid="3825367753087348007">"LDAC"</item> </string-array> <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Käytä järjestelmän valintaa (oletus)."</item> + <item msgid="8868109554557331312">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="9024885861221697796">"SBC"</item> <item msgid="4688890470703790013">"AAC"</item> <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ‑ääni"</item> @@ -102,38 +102,38 @@ <item msgid="2553206901068987657">"LDAC"</item> </string-array> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> - <item msgid="926809261293414607">"Käytä järjestelmän valintaa (oletus)."</item> + <item msgid="926809261293414607">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="8003118270854840095">"44,1 kHz"</item> <item msgid="3208896645474529394">"48,0 kHz"</item> <item msgid="8420261949134022577">"88,2 kHz"</item> <item msgid="8887519571067543785">"96,0 kHz"</item> </string-array> <string-array name="bluetooth_a2dp_codec_sample_rate_summaries"> - <item msgid="2284090879080331090">"Käytä järjestelmän valintaa (oletus)."</item> + <item msgid="2284090879080331090">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="1872276250541651186">"44,1 kHz"</item> <item msgid="8736780630001704004">"48,0 kHz"</item> <item msgid="7698585706868856888">"88,2 kHz"</item> <item msgid="8946330945963372966">"96,0 kHz"</item> </string-array> <string-array name="bluetooth_a2dp_codec_bits_per_sample_titles"> - <item msgid="2574107108483219051">"Käytä järjestelmän valintaa (oletus)."</item> + <item msgid="2574107108483219051">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="4671992321419011165">"16 bittiä/näyte"</item> <item msgid="1933898806184763940">"24 bittiä/näyte"</item> <item msgid="1212577207279552119">"32 bittiä/näyte"</item> </string-array> <string-array name="bluetooth_a2dp_codec_bits_per_sample_summaries"> - <item msgid="9196208128729063711">"Käytä järjestelmän valintaa (oletus)."</item> + <item msgid="9196208128729063711">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="1084497364516370912">"16 bittiä/näyte"</item> <item msgid="2077889391457961734">"24 bittiä/näyte"</item> <item msgid="3836844909491316925">"32 bittiä/näyte"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_titles"> - <item msgid="3014194562841654656">"Käytä järjestelmän valintaa (oletus)."</item> + <item msgid="3014194562841654656">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="5982952342181788248">"Mono"</item> <item msgid="927546067692441494">"Stereo"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_summaries"> - <item msgid="1997302811102880485">"Käytä järjestelmän valintaa (oletus)."</item> + <item msgid="1997302811102880485">"Käytä järjestelmän valintaa (oletus)"</item> <item msgid="8005696114958453588">"Mono"</item> <item msgid="1333279807604675720">"Stereo"</item> </string-array> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index f6a1f412c1ee..68b42048e339 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -115,10 +115,10 @@ <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"Käytä kuulolaitteilla"</string> <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Muodosta laitepari"</string> <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"MUODOSTA LAITEPARI"</string> - <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Peruuta"</string> + <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Peru"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Laiteparin muodostaminen mahdollistaa yhteystietojen ja soittohistorian käyttämisen yhteyden aikana."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Laiteparin muodostaminen laitteeseen <xliff:g id="DEVICE_NAME">%1$s</xliff:g> epäonnistui."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Laiteparia laitteen <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kanssa ei voitu muodostaa, koska PIN-koodi tai avain oli virheellinen."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Laiteparia (<xliff:g id="DEVICE_NAME">%1$s</xliff:g>) ei voitu muodostaa, koska PIN-koodi tai avain oli virheellinen."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Ei yhteyttä laitteeseen <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Laite <xliff:g id="DEVICE_NAME">%1$s</xliff:g> torjui laitepariyhteyden."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Tietokone"</string> @@ -206,7 +206,7 @@ <string name="apn_settings_not_available" msgid="1147111671403342300">"Tämä käyttäjä ei voi käyttää APN-asetuksia"</string> <string name="enable_adb" msgid="8072776357237289039">"USB-vianetsintä"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"Vianetsintätila USB-liitännän ollessa käytössä"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"Peruuta USB-vianetsinnän käyttöoikeudet"</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"Peru USB-vianetsinnän käyttöoikeudet"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Langaton virheenkorjaus"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Virheenkorjaustila Wi-Fin ollessa käytössä"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Virhe"</string> @@ -236,9 +236,9 @@ <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Yhdistä langattomaan verkkoon"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, virheenkorjaus, kehittäminen"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Virheraportin pikakuvake"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Näytä virheraporttipainike virtavalikossa."</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Näytä virheraporttipainike virtavalikossa"</string> <string name="keep_screen_on" msgid="1187161672348797558">"Pysy käynnissä"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"Näyttö ei sammu puhelimen latautuessa."</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"Näyttö ei sammu puhelimen latautuessa"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Ota Bluetoothin HCI-tarkkailuloki käyttöön"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Tallenna Bluetoothin HCl-paketit tiedostoon (ota Bluetooth käyttöön asetuksen muuttamisen jälkeen)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM:n lukituksen avaus"</string> @@ -281,10 +281,10 @@ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Yksityisen DNS-tarjoajan isäntänimi"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Anna isäntänimi tai DNS-tarjoaja"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Ei yhteyttä"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Näytä langattoman näytön sertifiointiin liittyvät asetukset."</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Lisää Wi‑Fin lokikirjaustasoa, näytä SSID RSSI -kohtaisesti Wi‑Fi-valitsimessa."</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Näytä langattoman näytön sertifiointiin liittyvät asetukset"</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Lisää Wi‑Fin lokikirjaustasoa, näytä SSID RSSI -kohtaisesti Wi‑Fi-valitsimessa"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Vähentää virrankulutusta ja parantaa verkon toimintaa"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Kun tämä tila on päällä, laitteen MAC-osoite voi muuttua aina, kun laite yhdistää verkkoon, jossa MAC-satunnaistaminen on käytössä."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Kun tämä tila on päällä, laitteen MAC-osoite voi muuttua aina, kun laite yhdistää verkkoon, jossa MAC-satunnaistaminen on käytössä"</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Maksullinen"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Maksuton"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Lokipuskurien koot"</string> @@ -298,8 +298,8 @@ <string name="allow_mock_location" msgid="2102650981552527884">"Salli sijaintien imitointi"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"Salli sijaintien imitointi"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Ota attribuuttinäkymän tarkistus käyttöön"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Pidä mobiilidata aina käytössä, vaikka Wi-Fi olisi aktiivinen. Tämä mahdollistaa nopeamman vaihtelun verkkojen välillä."</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Käytä laitteistokiihdytyksen yhteyden jakamista, jos se on käytettävissä."</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Pidä mobiilidata aina käytössä, vaikka Wi-Fi olisi aktiivinen. Tämä mahdollistaa nopeamman vaihtelun verkkojen välillä"</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Käytä laitteistokiihdytyksen yhteyden jakamista, jos se on käytettävissä"</string> <string name="adb_warning_title" msgid="7708653449506485728">"Sallitaanko USB-vianetsintä?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"USB-vianetsintä on tarkoitettu vain kehittäjien käyttöön. Sen avulla voidaan kopioida tietoja tietokoneesi ja laitteesi välillä, asentaa laitteeseesi sovelluksia ilmoittamatta siitä sinulle ja lukea lokitietoja."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"Sallitaanko langaton virheenkorjaus?"</string> @@ -308,10 +308,10 @@ <string name="dev_settings_warning_title" msgid="8251234890169074553">"Sallitaanko kehittäjäasetukset?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"Nämä asetukset on tarkoitettu vain kehityskäyttöön, ja ne voivat aiheuttaa haittaa laitteellesi tai sen sovelluksille."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Tarkista USB:n kautta asennetut"</string> - <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Tarkista ADB:n/ADT:n kautta asennetut sovellukset haitallisen toiminnan varalta."</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Näytetään Bluetooth-laitteet, joilla ei ole nimiä (vain MAC-osoitteet)."</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Bluetoothin yleinen äänenvoimakkuuden säätö poistetaan käytöstä ongelmien välttämiseksi esimerkiksi silloin, kun laitteen äänenvoimakkuus on liian kova tai sitä ei voi säätää."</string> - <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetoothin Gabeldorsche-ominaisuuspino otetaan käyttöön."</string> + <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Tarkista ADB:n/ADT:n kautta asennetut sovellukset haitallisen toiminnan varalta"</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Näytetään Bluetooth-laitteet, joilla ei ole nimiä (vain MAC-osoitteet)"</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Bluetoothin yleinen äänenvoimakkuuden säätö poistetaan käytöstä ongelmien välttämiseksi esimerkiksi silloin, kun laitteen äänenvoimakkuus on liian kova tai sitä ei voi säätää"</string> + <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetoothin Gabeldorsche-ominaisuuspino otetaan käyttöön"</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Ottaa käyttöön Parannetut yhteydet ‑ominaisuuden."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Paikallinen pääte"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"Ota käyttöön päätesov. joka mahdollistaa paikall. liittymäkäytön"</string> @@ -319,32 +319,32 @@ <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Aseta HDCP-tarkistus"</string> <string name="debug_debugging_category" msgid="535341063709248842">"Vianetsintä"</string> <string name="debug_app" msgid="8903350241392391766">"Valitse vianetsintäsovellus"</string> - <string name="debug_app_not_set" msgid="1934083001283807188">"Vianetsintäsovellusta ei ole asetettu."</string> + <string name="debug_app_not_set" msgid="1934083001283807188">"Vianetsintäsovellusta ei ole asetettu"</string> <string name="debug_app_set" msgid="6599535090477753651">"Vianetsintäsovellus: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"Valitse sovellus"</string> <string name="no_application" msgid="9038334538870247690">"Ei mitään"</string> <string name="wait_for_debugger" msgid="7461199843335409809">"Odota vianetsintää"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Sovellus odottaa vianetsinnän lisäämistä, ja käynnistyy sen jälkeen."</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Sovellus odottaa vianetsinnän lisäämistä, ja käynnistyy sen jälkeen"</string> <string name="debug_input_category" msgid="7349460906970849771">"Syöte"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"Piirustus"</string> <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Laitteistokiihdytetty hahmonnus"</string> <string name="media_category" msgid="8122076702526144053">"Media"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Valvonta"</string> <string name="strict_mode" msgid="889864762140862437">"Tiukka tila käytössä"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"Vilkuta näyttöä sovellusten tehdessä pitkiä toimia."</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"Vilkuta näyttöä sovellusten tehdessä pitkiä toimia"</string> <string name="pointer_location" msgid="7516929526199520173">"Osoittimen sijainti"</string> - <string name="pointer_location_summary" msgid="957120116989798464">"Näytön peittokuva näyttää nykyiset kosketustiedot."</string> + <string name="pointer_location_summary" msgid="957120116989798464">"Näytön peittokuva näyttää nykyiset kosketustiedot"</string> <string name="show_touches" msgid="8437666942161289025">"Näytä kosketus"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"Anna visuaalista palautetta kosketuksesta."</string> + <string name="show_touches_summary" msgid="3692861665994502193">"Anna visuaalista palautetta kosketuksesta"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Näytä pintapäivitykset"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"Väläytä koko ikkunoiden pinnat päivitettäessä."</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"Väläytä koko ikkunoiden pinnat päivitettäessä"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"Näytä näyttöpäivitykset"</string> - <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Näytä ikkunoiden sisältö piirtämisen yhteydessä."</string> + <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Näytä ikkunoiden sisältö piirtämisen yhteydessä"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Näytä laitteistotason päivitykset"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Näytä laitteistotasot vihreinä niiden päivittyessä."</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Näytä laitteistotasot vihreinä niiden päivittyessä"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU-objektien päällekkäisyys"</string> <string name="disable_overlays" msgid="4206590799671557143">"Poista HW-peittokuvat käytöstä"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"Käytä GPU:ta näytön koostamiseen."</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"Käytä GPU:ta näytön koostamiseen"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Simuloi väriavaruus"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Ota OpenGL-jälj. käyttöön"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB-äänireititys pois"</string> @@ -352,35 +352,35 @@ <string name="debug_layout" msgid="1659216803043339741">"Näytä asettelun rajat"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Näytä leikkeiden rajat, marginaalit jne."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Pakota RTL-ulkoasun suunta"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Pakota kaikkien kielten näytön ulkoasun suunnaksi RTL."</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Pakota kaikkien kielten näytön ulkoasun suunnaksi RTL"</string> <string name="force_msaa" msgid="4081288296137775550">"Pakota 4x MSAA"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"Ota käyttöön 4x MSAA OpenGL ES 2.0 -sovelluksissa."</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"Ota käyttöön 4x MSAA OpenGL ES 2.0 -sovelluksissa"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Korjaa ei-suorakulmaisten leiketoimintojen virheet"</string> <string name="track_frame_time" msgid="522674651937771106">"HWUI-profiilirenderöinti"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU-virheenkorjaus päälle"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Salli GPU:n virheenkorjauskerrosten lataus."</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Salli GPU:n virheenkorjauskerrosten lataus"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Käytä laajennettua kirjausta"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sisällytä virheraportteihin muita laitekohtaisia myyjälokeja, jotka voivat sisältää yksityisiä tietoja, käyttää enemmän akkua ja/tai käyttää enemmän tallennustilaa."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sisällytä virheraportteihin muita laitekohtaisia myyjälokeja, jotka voivat sisältää yksityisiä tietoja, käyttää enemmän akkua ja/tai käyttää enemmän tallennustilaa"</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Ikkuna"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Siirtymä"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Animaattori"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuloi toissijaiset näytöt"</string> <string name="debug_applications_category" msgid="5394089406638954196">"Sovellukset"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"Älä säilytä toimintoja"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Tuhoa kaikki toiminnot, kun käyttäjä poistuu."</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Tuhoa kaikki toiminnot, kun käyttäjä poistuu"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Taustaprosessi"</string> <string name="show_all_anrs" msgid="9160563836616468726">"Näytä tausta-ANR:t"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"Näytä taustalla olevien sovellusten Sovellus ei vastaa ‑valintaikkunat."</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"Näytä taustalla olevien sovellusten Sovellus ei vastaa ‑valintaikkunat"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Näytä ilmoituskanavan varoitukset"</string> - <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Näyttää varoituksen, kun sovellus julkaisee ilmoituksen ilman kelvollista kanavaa."</string> + <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Näyttää varoituksen, kun sovellus julkaisee ilmoituksen ilman kelvollista kanavaa"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Salli aina ulkoinen tallennus"</string> - <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Mahdollistaa sovelluksen tietojen tallentamisen ulkoiseen tallennustilaan luetteloarvoista riippumatta."</string> + <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Mahdollistaa sovelluksen tietojen tallentamisen ulkoiseen tallennustilaan luetteloarvoista riippumatta"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Pakota kaikki toiminnot hyväksymään koon muutos"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Pakota kaikki toiminnot hyväksymään koon muuttaminen usean ikkunan tilassa luettelon arvoista riippumatta."</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Pakota kaikki toiminnot hyväksymään koon muuttaminen usean ikkunan tilassa luettelon arvoista riippumatta"</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Ota käyttöön vapaamuotoiset ikkunat"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Ota kokeellisten vapaamuotoisten ikkunoiden tuki käyttöön."</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Ota kokeellisten vapaamuotoisten ikkunoiden tuki käyttöön"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Varmuuskop. salasana"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Tietokoneen kaikkien tietojen varmuuskopiointia ei ole tällä hetkellä suojattu."</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Tietokoneen kaikkien tietojen varmuuskopiointia ei ole tällä hetkellä suojattu"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Vaihda tai poista tietokoneen kaikkien tietojen varmuuskopioinnin salasana koskettamalla."</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Uusi varasalasana asetettiin"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Uusi salasana ja vahvistus eivät täsmää"</string> @@ -405,8 +405,9 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Salli transkoodaus"</string> <string name="transcode_default" msgid="3784803084573509491">"Oleta, että sovellukset tukevat nykyaikaisia formaatteja"</string> <string name="transcode_notification" msgid="5560515979793436168">"Näytä transkoodausilmoituksia"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Poista välimuistin transkoodaus käytöstä"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Käynnissä olevat palvelut"</string> - <string name="runningservices_settings_summary" msgid="1046080643262665743">"Tarkastele ja hallitse käynnissä olevia palveluita."</string> + <string name="runningservices_settings_summary" msgid="1046080643262665743">"Tarkastele ja hallitse käynnissä olevia palveluita"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-käyttöönotto"</string> <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Määritä WebView-käyttöönotto"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Tämä valinta ei ole enää saatavilla. Yritä uudestaan."</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tabletti voi sammua pian (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Laite voi sammua pian (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> kunnes täynnä"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> kunnes täynnä"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Akun kunnon optimointi"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Tuntematon"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Ladataan"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Nopea lataus"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Hidas lataus"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Langaton lataus"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ei laturissa"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Kytketty virtalähteeseen, lataaminen ei onnistu"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Ladattu"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Järjestelmänvalvoja hallinnoi tätä asetusta."</string> <string name="disabled" msgid="8017887509554714950">"Pois päältä"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Sallittu"</string> @@ -502,13 +501,15 @@ </plurals> <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Enemmän aikaa"</string> <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Vähemmän aikaa"</string> - <string name="cancel" msgid="5665114069455378395">"Peruuta"</string> + <string name="cancel" msgid="5665114069455378395">"Peru"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Herätykset ja muistutukset"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Salli herätysten ja muistutusten asettaminen"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Herätykset ja muistutukset"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Anna sovelluksen ajoittaa herätyksiä tai muita aikaan sidonnaisia tapahtumia. Siten sovellus voi aktivoitua ja toimia myös silloin, kun et käytä laitetta. Huomaa, että luvan peruuttaminen voi aiheuttaa sovelluksen toimintahäiriöitä, erityisesti sovelluksen ajoittamat herätykset eivät enää toimi."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ajoitus, herätys, muistutus, tapahtuma"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Salli herätysten ja muistutusten lisääminen"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Herätykset ja muistutukset"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Salli sovelluksen lisätä herätyksiä ja ajoittaa muita toimintoja. Sovellus voi olla käytössä, vaikka et käyttäisi puhelintasi, mikä voi kuluttaa enemmän virtaa. Ilman tätä lupaa sovellus ei välttämättä toimi normaalisti, eivätkä sen herätykset toimi aikataulun mukaisesti."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Salli sovelluksen lisätä herätyksiä ja ajoittaa muita toimintoja. Sovellus voi olla käytössä, vaikka et käyttäisi tablettiasi, mikä voi kuluttaa enemmän virtaa. Ilman tätä lupaa sovellus ei välttämättä toimi normaalisti, eivätkä sen herätykset toimi aikataulun mukaisesti."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Salli sovelluksen lisätä herätyksiä ja ajoittaa muita toimintoja. Sovellus voi olla käytössä, vaikka et käyttäisi laitettasi, mikä voi kuluttaa enemmän virtaa. Ilman tätä lupaa sovellus ei välttämättä toimi normaalisti, eivätkä sen herätykset toimi aikataulun mukaisesti."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ajoitus, herätys, muistutus, kello"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Ota käyttöön"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Ota Älä häiritse ‑tila käyttöön"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Ei koskaan"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Aseta lukitus"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Vaihda tähän käyttäjään: <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Luodaan uutta käyttäjää…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Uuden käyttäjän luominen epäonnistui"</string> <string name="user_nickname" msgid="262624187455825083">"Lempinimi"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Lisää vieras"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Poista vieras"</string> @@ -574,7 +574,7 @@ <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"Laitteen oletusasetus"</string> <string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"Ei käytössä"</string> <string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"Käytössä"</string> - <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"Laitteesi on käynnistettävä uudelleen, jotta muutos tulee voimaan. Käynnistä uudelleen nyt tai peruuta."</string> + <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"Laitteesi on käynnistettävä uudelleen, jotta muutos tulee voimaan. Käynnistä uudelleen nyt tai peru."</string> <string name="media_transfer_wired_usb_device_name" msgid="7699141088423210903">"Langalliset kuulokkeet"</string> <string name="wifi_hotspot_switch_on_text" msgid="9212273118217786155">"Päällä"</string> <string name="wifi_hotspot_switch_off_text" msgid="7245567251496959764">"Poissa päältä"</string> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index 2b379c70b5e8..98f346c97c8b 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Annuler"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"L\'association vous permet d\'accéder à vos contacts et à l\'historique des appels lorsque vous êtes connecté."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Impossible d\'associer à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Impossible d\'établir l\'association avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g> en raison d\'un NIP ou d\'une clé d\'accès incorrects."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Impossible d\'établir l\'association avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>. NIP ou d\'une clé d\'accès incorrects."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Impossible d\'établir la communication avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Association refusée par <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Ordinateur"</string> @@ -362,7 +362,7 @@ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activer le journal détaillé des fournisseurs"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluez les journaux supplémentaires du fournisseur propres à l\'appareil dans les rapports de bogue. Ils peuvent contenir des données personnelles, épuiser la pile plus rapidement et/ou utiliser plus d\'espace de stockage."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Échelle animation fenêtres"</string> - <string name="transition_animation_scale_title" msgid="1278477690695439337">"Échelle animination transitions"</string> + <string name="transition_animation_scale_title" msgid="1278477690695439337">"Éch. d\'animation des trans."</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Échelle durée animation"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Simuler affich. secondaires"</string> <string name="debug_applications_category" msgid="5394089406638954196">"Applications"</string> @@ -380,7 +380,7 @@ <string name="enable_freeform_support" msgid="7599125687603914253">"Activer les fenêtres de forme libre"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Activer la compatibilité avec les fenêtres de forme libre expérimentales."</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Mot de passe sauvegarde PC"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Les sauvegardes complètes sur PC ne sont pas protégées actuellement."</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Les sauvegardes complètes sur PC ne sont pas protégées actuellement"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Touchez pour modifier ou supprimer le mot de passe utilisé pour les sauvegardes complètes sur ordinateur."</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Le nouveau mot de passe de secours a bien été défini."</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Le nouveau mot de passe et sa confirmation ne correspondent pas."</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Activer le transcodage"</string> <string name="transcode_default" msgid="3784803084573509491">"Présumer que les applications prennent en charge les formats modernes"</string> <string name="transcode_notification" msgid="5560515979793436168">"Afficher les notifications de transcodage"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Désactiver le cache de transcodage"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Services en cours d\'exécution"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Afficher et contrôler les services en cours d\'exécution"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Mise en œuvre WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Il se peut que la tablette s\'éteigne bientôt (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Il se peut que l\'appareil s\'éteigne bientôt (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> jusqu\'à la recharge complète"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> (<xliff:g id="TIME">%2$s</xliff:g> jusqu\'à la recharge complète)"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimisation pour préserver la pile"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Inconnu"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Charge en cours…"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Recharge rapide"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Recharge lente"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"En recharge sans fil"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"N\'est pas en charge"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"L\'appareil est branché, mais il ne peut pas être chargé pour le moment"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Chargée"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Contrôlé par l\'administrateur"</string> <string name="disabled" msgid="8017887509554714950">"Désactivée"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Autorisée"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Annuler"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes et rappels"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Autoriser la création d\'alarmes ou de rappels"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmes et rappels"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Autorisez cette application à programmer des alarmes ou d\'autres événements temporels. Cette option permettra à l\'application de s\'activer et de fonctionner même si vous n\'utilisez pas l\'appareil. Notez que si vous révoquez cette autorisation, l\'application pourrait ne pas fonctionner correctement. En particulier, les alarmes que l\'application a programmées ne fonctionneront plus."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"horaire, alarme, rappel, événement"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Autoriser la création d\'alarmes et de rappels"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmes et rappels"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Autorisez cette application à créer des alarmes et à programmer d\'autres actions. Cette application pourrait continuer de fonctionner lorsque vous n\'utilisez pas votre téléphone, ce qui pourrait solliciter davantage la pile. Si l\'autorisation est désactivée, l\'application pourrait ne pas fonctionner normalement et ses alarmes ne se déclencheront pas aux heures prévues."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Autorisez cette application à créer des alarmes et à programmer d\'autres actions. Cette application pourrait continuer de fonctionner lorsque vous n\'utilisez pas votre tablette, ce qui pourrait solliciter davantage la pile. Si l\'autorisation est désactivée, l\'application pourrait ne pas fonctionner normalement et ses alarmes ne se déclencheront pas aux heures prévues."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Autorisez cette application à créer des alarmes et à programmer d\'autres actions. Cette application pourrait continuer de fonctionner lorsque vous n\'utilisez pas votre appareil, ce qui pourrait solliciter davantage la pile. Si l\'autorisation est désactivée, l\'application pourrait ne pas fonctionner normalement et ses alarmes ne se déclencheront pas aux heures prévues."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"horaire, alarme, rappel, horloge"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Activer"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Activer le mode Ne pas déranger"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Jamais"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Définir verrouillage écran"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Passer à <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Créer un utilisateur…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Impossible de créer un utilisateur"</string> <string name="user_nickname" msgid="262624187455825083">"Pseudo"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Ajouter un invité"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Supprimer l\'invité"</string> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index ef4c707864b1..11f7db704c0f 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Annuler"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"L\'association vous permet d\'accéder à vos contacts et à l\'historique des appels lorsque vous êtes connecté."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Impossible d\'associer à <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Impossible d\'établir l\'association avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g> en raison d\'un code ou d\'une clé d\'accès incorrects."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Impossible d\'associer <xliff:g id="DEVICE_NAME">%1$s</xliff:g> : le code ou le mot de passe est incorrect."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Impossible d\'établir la communication avec <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Association refusée par <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Ordinateur"</string> @@ -156,7 +156,7 @@ <string name="launch_defaults_some" msgid="3631650616557252926">"Certains paramètres par défaut définis"</string> <string name="launch_defaults_none" msgid="8049374306261262709">"Aucun paramètre par défaut défini"</string> <string name="tts_settings" msgid="8130616705989351312">"Paramètres de la synthèse vocale"</string> - <string name="tts_settings_title" msgid="7602210956640483039">"Synthèse vocale"</string> + <string name="tts_settings_title" msgid="7602210956640483039">"Sortie de la synthèse vocale"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"Cadence"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"Vitesse à laquelle le texte est énoncé"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"Ton"</string> @@ -195,8 +195,8 @@ <item msgid="581904787661470707">"La plus rapide"</item> </string-array> <string name="choose_profile" msgid="343803890897657450">"Sélectionner un profil"</string> - <string name="category_personal" msgid="6236798763159385225">"Personnel"</string> - <string name="category_work" msgid="4014193632325996115">"Professionnel"</string> + <string name="category_personal" msgid="6236798763159385225">"Perso"</string> + <string name="category_work" msgid="4014193632325996115">"Pro"</string> <string name="development_settings_title" msgid="140296922921597393">"Options pour les développeurs"</string> <string name="development_settings_enable" msgid="4285094651288242183">"Activer les options pour les développeurs"</string> <string name="development_settings_summary" msgid="8718917813868735095">"Définir les options pour le développement de l\'application"</string> @@ -279,12 +279,12 @@ <string name="private_dns_mode_off" msgid="7065962499349997041">"Désactivé"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automatique"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Nom d\'hôte du fournisseur DNS privé"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Indiquez le nom d\'hôte du fournisseur DNS"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Entrez le nom d\'hôte du fournisseur DNS"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Impossible de se connecter"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Afficher les options pour la certification de l\'affichage sans fil"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Détailler les infos Wi-Fi, afficher par RSSI de SSID dans l\'outil de sélection Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Réduit la décharge de la batterie et améliore les performances du réseau"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Lorsque ce mode est activé, l\'adresse MAC de cet appareil peut changer lors de chaque connexion à un réseau Wi-Fi pour lequel le changement aléatoire d\'adresse MAC est activé"</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Quand ce mode est activé, l\'adresse MAC de cet appareil peut changer chaque fois qu\'il se connecte à un réseau Wi-Fi où le changement aléatoire d\'adresse MAC est activé"</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Facturé à l\'usage"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Non facturé à l\'usage"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tailles des tampons de l\'enregistreur"</string> @@ -310,8 +310,8 @@ <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Vérifier les applis via USB"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Vérifier que les applications installées par ADB/ADT ne présentent pas de comportement dangereux"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Les appareils Bluetooth sans nom (adresses MAC seulement) seront affichés"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Désactive la fonctionnalité de volume absolu du Bluetooth en cas de problème de volume sur les appareils à distance, par exemple si le volume est trop élevé ou s\'il ne peut pas être contrôlé"</string> - <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Active la pile de fonctionnalités Bluetooth Gabeldorsche."</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Désactiver la fonctionnalité de volume absolu du Bluetooth en cas de problèmes de volume (par ex., trop élevé ou non contrôlable) sur les appareils à distance"</string> + <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Activer la pile de fonctionnalités Bluetooth Gabeldorsche"</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Active la fonctionnalité Connectivité améliorée."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"Activer l\'application Terminal permettant l\'accès au shell local"</string> @@ -359,7 +359,7 @@ <string name="track_frame_time" msgid="522674651937771106">"Rendu HWUI du profil"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activer les couches de débogage GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Autoriser le chargement de couches de débogage GPU"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Act. journalisation détaillée"</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activer la journalisation détaillée du fournisseur"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclure les journaux supplémentaires du fournisseur, spécifiques à l\'appareil, dans les rapports de bug. Ils peuvent contenir des informations personnelles, solliciter davantage la batterie et/ou utiliser plus d\'espace de stockage."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Échelle d\'animation des fenêtres"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Échelle d\'animation des transitions"</string> @@ -376,12 +376,12 @@ <string name="force_allow_on_external" msgid="9187902444231637880">"Forcer l\'autorisation d\'applis sur stockage externe"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Autoriser l\'enregistrement de toute application sur un espace de stockage externe, indépendamment des valeurs du fichier manifeste"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Forcer le redimensionnement des activités"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Permettre de redimensionner toutes les activités pour le mode multifenêtre, indépendamment des valeurs du fichier manifeste"</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Rendre toutes les activités redimensionnables pour le mode multifenêtre, indépendamment des valeurs du fichier manifeste"</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Activer les fenêtres de forme libre"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Activer la compatibilité avec les fenêtres de forme libre expérimentales"</string> - <string name="local_backup_password_title" msgid="4631017948933578709">"Mot de passe de sauvegarde PC"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Les sauvegardes complètes sur PC ne sont pas protégées actuellement"</string> - <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Appuyez pour modifier ou supprimer le mot de passe de sauvegarde complète sur PC."</string> + <string name="local_backup_password_title" msgid="4631017948933578709">"Mot de passe de sauvegarde ordi"</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Les sauvegardes complètes sur ordi ne sont actuellement pas protégées"</string> + <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Appuyez pour modifier ou supprimer le mot de passe des sauvegardes complètes sur ordi."</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Le nouveau mot de passe de secours a bien été défini."</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Le nouveau mot de passe et sa confirmation ne correspondent pas."</string> <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"Échec de la définition du mot de passe de secours."</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Activer le transcodage"</string> <string name="transcode_default" msgid="3784803084573509491">"Supposer que les applications sont compatibles avec les formats modernes"</string> <string name="transcode_notification" msgid="5560515979793436168">"Afficher les notifications de transcodage"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Désactiver la cache de transcodage"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Services en cours d\'exécution"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Afficher et contrôler les services en cours d\'exécution"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Mise en œuvre WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"La tablette va bientôt s\'éteindre (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"L\'appareil va bientôt s\'éteindre (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Chargée à 100 %% dans <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - chargée à 100 %% dans <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Optimisation pour préserver batterie"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Inconnu"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Batterie en charge"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charge rapide"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Charge lente"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"En charge sans fil"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Pas en charge"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Appareil branché, mais impossible de le charger pour le moment"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Chargée"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Contrôlé par l\'administrateur"</string> <string name="disabled" msgid="8017887509554714950">"Désactivée"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Autorisé"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Annuler"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes et rappels"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Autoriser à définir des alarmes et rappels"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmes et rappels"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Autorisez cette appli à définir des alarmes et d\'autres événements liés à l\'heure. L\'appli pourra alors se lancer et s\'exécuter même si vous n\'utilisez pas l\'appareil. Si vous révoquez cette autorisation, l\'appli risque de mal fonctionner. En particulier, les alarmes qu\'elle aura définies ne fonctionneront plus."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"définir, alarme, rappel, événement"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Autoriser à définir une alarme et des rappels"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmes et rappels"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Autorisez cette appli à définir des alarmes et à planifier d\'autres actions. Cette appli peut être utilisée quand vous n\'utilisez pas votre téléphone, ce qui peut consommer davantage de batterie. Si cette autorisation est désactivée, l\'appli peut ne pas fonctionner correctement, et les alarmes définies ne se déclencheront pas comme prévu."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Autorisez cette appli à définir des alarmes et à planifier d\'autres actions. Cette appli peut être utilisée lorsque vous n\'utilisez pas votre tablette, ce qui peut consommer davantage de batterie. Si cette autorisation est désactivée, l\'appli peut ne pas fonctionner correctement, et les alarmes définies ne se déclencheront pas comme prévu."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Autorisez cette appli à définir des alarmes et à planifier d\'autres actions. Cette appli peut être utilisée lorsque vous n\'utilisez pas votre appareil, ce qui peut consommer davantage de batterie. Si cette autorisation est désactivée, l\'appli peut ne pas fonctionner correctement, et les alarmes définies ne se déclencheront pas comme prévu."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"définir, alarme, rappel, horloge"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Activer"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Activer le mode \"Ne pas déranger\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Jamais"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Définir verrouillage écran"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Passer à <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Création d\'un nouvel utilisateur…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Échec de la création d\'un utilisateur"</string> <string name="user_nickname" msgid="262624187455825083">"Pseudo"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Ajouter un invité"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Supprimer l\'invité"</string> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index e9cfa401f579..edf653f28e73 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -36,7 +36,7 @@ <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Non se conectará automaticamente"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"Sen acceso a Internet"</string> <string name="saved_network" msgid="7143698034077223645">"Gardada por <xliff:g id="NAME">%1$s</xliff:g>"</string> - <string name="connected_to_metered_access_point" msgid="9179693207918156341">"Estableceuse conexión coa rede de pago por consumo"</string> + <string name="connected_to_metered_access_point" msgid="9179693207918156341">"Estableceuse conexión coa rede sen tarifa plana"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"Conectouse automaticamente a través de %1$s"</string> <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Conectada automaticamente a través dun provedor de valoración de redes"</string> <string name="connected_via_passpoint" msgid="7735442932429075684">"Conectado a través de %1$s"</string> @@ -68,7 +68,7 @@ <string name="bluetooth_disconnecting" msgid="7638892134401574338">"Desconectando..."</string> <string name="bluetooth_connecting" msgid="5871702668260192755">"Conectando..."</string> <string name="bluetooth_connected" msgid="8065345572198502293">"Conectado a <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string> - <string name="bluetooth_pairing" msgid="4269046942588193600">"Sincronizando..."</string> + <string name="bluetooth_pairing" msgid="4269046942588193600">"Vinculando..."</string> <string name="bluetooth_connected_no_headset" msgid="2224101138659967604">"Conectado a <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> (sen teléfono)"</string> <string name="bluetooth_connected_no_a2dp" msgid="8566874395813947092">"Conectado a <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> (sen audio multimedia)"</string> <string name="bluetooth_connected_no_map" msgid="3381860077002724689">"Conectado a <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g> (sen acceso a mensaxes)"</string> @@ -113,14 +113,14 @@ <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"Utilízase para a transferencia de ficheiros"</string> <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"Utilízase para a entrada"</string> <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"Utilizar para audiófonos"</string> - <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Sincronizar"</string> - <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"SINCRONIZAR"</string> + <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"Vincular"</string> + <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"VINCULAR"</string> <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Cancelar"</string> - <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"A sincronización garante acceso aos teus contactos e ao historial de chamadas ao estar conectado"</string> - <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Non se puido sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Non se puido sincronizar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> debido a que se introduciu un contrasinal ou PIN incorrecto."</string> + <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"A vinculación garante acceso aos teus contactos e ao historial de chamadas ao estar conectado"</string> + <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Non se puido vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Non se puido vincular con <xliff:g id="DEVICE_NAME">%1$s</xliff:g> porque a clave de acceso ou o PIN son incorrectos."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Non se pode comunicar con <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Sincronización rexeitada por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> + <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Vinculación rexeitada por <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Ordenador"</string> <string name="bluetooth_talkback_headset" msgid="3406852564400882682">"Auriculares con micrófono"</string> <string name="bluetooth_talkback_phone" msgid="868393783858123880">"Teléfono"</string> @@ -128,8 +128,8 @@ <string name="bluetooth_talkback_headphone" msgid="8613073829180337091">"Auriculares"</string> <string name="bluetooth_talkback_input_peripheral" msgid="5133944817800149942">"Periférico de entrada"</string> <string name="bluetooth_talkback_bluetooth" msgid="1143241359781999989">"Bluetooth"</string> - <string name="bluetooth_hearingaid_left_pairing_message" msgid="8561855779703533591">"Sincronizando audiófono esquerdo…"</string> - <string name="bluetooth_hearingaid_right_pairing_message" msgid="2655347721696331048">"Sincronizando audiófono dereito…"</string> + <string name="bluetooth_hearingaid_left_pairing_message" msgid="8561855779703533591">"Vinculando audiófono esquerdo…"</string> + <string name="bluetooth_hearingaid_right_pairing_message" msgid="2655347721696331048">"Vinculando audiófono dereito…"</string> <string name="bluetooth_hearingaid_left_battery_level" msgid="7375621694748104876">"Esquerdo: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería"</string> <string name="bluetooth_hearingaid_right_battery_level" msgid="1850094448499089312">"Dereito: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> de batería"</string> <string name="accessibility_wifi_off" msgid="1195445715254137155">"Wifi desactivada."</string> @@ -141,8 +141,8 @@ <string name="accessibility_wifi_security_type_none" msgid="162352241518066966">"Rede aberta"</string> <string name="accessibility_wifi_security_type_secured" msgid="2399774097343238942">"Rede segura"</string> <string name="process_kernel_label" msgid="950292573930336765">"SO Android"</string> - <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"Aplicacións eliminadas"</string> - <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Aplicacións e usuarios eliminados"</string> + <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"Aplicacións quitadas"</string> + <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Aplicacións e usuarios quitados"</string> <string name="data_usage_ota" msgid="7984667793701597001">"Actualizacións do sistema"</string> <string name="tether_settings_title_usb" msgid="3728686573430917722">"Conexión compart. por USB"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Zona wifi portátil"</string> @@ -214,7 +214,7 @@ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Para ver e usar os dispositivos dispoñibles, activa a depuración sen fíos"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Vincular o dispositivo cun código QR"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Vincula dispositivos novos mediante un escáner de códigos QR"</string> - <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Vincular o dispositivo co código de sincronización"</string> + <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Vincular o dispositivo co código de vinculación"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Vincula dispositivos novos mediante un código de seis díxitos"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Dispositivos vinculados"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Dispositivos conectados actualmente"</string> @@ -223,13 +223,13 @@ <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"Impresión dixital do dispositivo: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string> <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"Produciuse un erro na conexión"</string> <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"Asegúrate de que o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> estea conectado á rede correcta"</string> - <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Sincronizar co dispositivo"</string> - <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Código de sincronización da wifi"</string> - <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Produciuse un fallo na sincronización"</string> + <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Vincular co dispositivo"</string> + <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Código de vinculación da wifi"</string> + <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Produciuse un fallo na vinculación"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Asegúrate de que o dispositivo estea conectado á mesma rede"</string> <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Vincula o dispositivo a través da wifi escaneando un código QR"</string> - <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Sincronizando dispositivo…"</string> - <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Produciuse un erro ao sincronizar o dispositivo. O código QR era incorrecto ou o dispositivo non está conectado á mesma rede."</string> + <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Vinculando dispositivo…"</string> + <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Produciuse un erro ao vincular o dispositivo. O código QR era incorrecto ou o dispositivo non está conectado á mesma rede."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Enderezo IP e porto"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Escanear o código QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Vincula o dispositivo a través da wifi escaneando un código QR"</string> @@ -275,7 +275,7 @@ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Activar selección de códec\nLDAC de audio por Bluetooth: calidade de reprodución"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Reprodución en tempo real: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"DNS privado"</string> - <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Selecciona o modo de DNS privado"</string> + <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Seleccionar modo de DNS privado"</string> <string name="private_dns_mode_off" msgid="7065962499349997041">"Desactivado"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automático"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Nome de host do provedor de DNS privado"</string> @@ -284,9 +284,9 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostra opcións para o certificado de visualización sen fíos"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumenta o nivel de rexistro da wifi, móstrao por SSID RSSI no selector de wifi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduce o consumo de batería e mellora o rendemento da rede"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Cando este modo está activado, o enderezo MAC pode cambiar cada vez que se este dispositivo se conecta a unha rede que teña activada a orde aleatoria de enderezos MAC."</string> - <string name="wifi_metered_label" msgid="8737187690304098638">"Sen tarifa plana"</string> - <string name="wifi_unmetered_label" msgid="6174142840934095093">"Con tarifa plana"</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Cando este modo está activado, o enderezo MAC pode cambiar cada vez que se este dispositivo se conecta a unha rede que teña activada a orde aleatoria de enderezos MAC"</string> + <string name="wifi_metered_label" msgid="8737187690304098638">"Rede sen tarifa plana"</string> + <string name="wifi_unmetered_label" msgid="6174142840934095093">"Rede con tarifa plana"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamaño dos búfers do rexistrador"</string> <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Seleccionar tamaño do rexistrador por búfer"</string> <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"Queres borrar o almacenamento persistente do rexistrador?"</string> @@ -360,7 +360,7 @@ <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activar depuración da GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permite capas da GPU para apps de depuración"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activar rexistro de provedores"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclúe outros rexistros de provedores específicos do dispositivo en informes de erros; pode conter información privada, consumir máis batería e ocupar máis espazo almacenamento."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclúe outros rexistros de provedores específicos do dispositivo en informes de erros; pode conter información privada, consumir máis batería e ocupar máis espazo almacenamento"</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animación da ventá"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala animación-transición"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala duración animador"</string> @@ -381,7 +381,7 @@ <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Activa a compatibilidade con ventás de forma libre experimentais"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Contrasinal para copias"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"As copias de seguranza de ordenador completas non están protexidas"</string> - <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Toca para cambiar ou eliminar o contrasinal para as copias de seguranza completas de ordenador"</string> + <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Toca para cambiar ou quitar o contrasinal para as copias de seguranza completas de ordenador"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Novo contrasinal da copia de seguranza definido"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"O contrasinal novo e a confirmación non coinciden"</string> <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"Erro ao definir un contrasinal da copia de seguranza"</string> @@ -401,10 +401,11 @@ <string name="inactive_app_active_summary" msgid="8047630990208722344">"Aplicación activa. Toca para alternar a configuración."</string> <string name="standby_bucket_summary" msgid="5128193447550429600">"Estado en espera da aplicación: <xliff:g id="BUCKET"> %s</xliff:g>"</string> <string name="transcode_settings_title" msgid="2581975870429850549">"Configuración de transcodificación de contido multimedia"</string> - <string name="transcode_user_control" msgid="6176368544817731314">"Anular valores predeterminados de transcodificación"</string> + <string name="transcode_user_control" msgid="6176368544817731314">"Ignorar valores predeterminados de transcodificación"</string> <string name="transcode_enable_all" msgid="2411165920039166710">"Activar transcodificación"</string> <string name="transcode_default" msgid="3784803084573509491">"Considerar que as aplicacións admiten formatos modernos"</string> <string name="transcode_notification" msgid="5560515979793436168">"Mostrar notificacións de transcodificación"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Desactivar memoria caché para a transcodificación"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Servizos en uso"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Comproba e controla os servizos actualmente en uso"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementación de WebView"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"A tableta pode apagarse en breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"O dispositivo pode apagarse en breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> para completar a carga"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> (<xliff:g id="TIME">%2$s</xliff:g> para completar a carga)"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g>: optimizando a preservación da batería"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Descoñecido"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Cargando"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Cargando rapidamente"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Cargando lentamente"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Cargando sen fíos"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Non se está cargando"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectouse, pero non se pode cargar neste momento"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Cargada"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Opción controlada polo administrador"</string> <string name="disabled" msgid="8017887509554714950">"Desactivada"</string> - <string name="external_source_trusted" msgid="1146522036773132905">"Permitida"</string> - <string name="external_source_untrusted" msgid="5037891688911672227">"Non permitida"</string> - <string name="install_other_apps" msgid="3232595082023199454">"Instalar apps descoñecidas"</string> + <string name="external_source_trusted" msgid="1146522036773132905">"Con permiso"</string> + <string name="external_source_untrusted" msgid="5037891688911672227">"Sen permiso"</string> + <string name="install_other_apps" msgid="3232595082023199454">"Instalar aplicacións descoñecidas"</string> <string name="home" msgid="973834627243661438">"Inicio da configuración"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0 %"</item> @@ -475,7 +474,7 @@ <item msgid="7529124349186240216">"100 %"</item> </string-array> <string name="charge_length_format" msgid="6941645744588690932">"Hai <xliff:g id="ID_1">%1$s</xliff:g>"</string> - <string name="remaining_length_format" msgid="4310625772926171089">"Tempo restante: <xliff:g id="ID_1">%1$s</xliff:g>"</string> + <string name="remaining_length_format" msgid="4310625772926171089">"Queda: <xliff:g id="ID_1">%1$s</xliff:g>"</string> <string name="screen_zoom_summary_small" msgid="6050633151263074260">"Pequeno"</string> <string name="screen_zoom_summary_default" msgid="1888865694033865408">"Predeterminado"</string> <string name="screen_zoom_summary_large" msgid="4706951482598978984">"Grande"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancelar"</string> <string name="okay" msgid="949938843324579502">"Aceptar"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmas e recordatorios"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Permitir definir alarmas ou recordatorios"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmas e recordatorios"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Permite que esta aplicación planifique alarmas ou outros eventos que dependan do tempo para que poida activarse e funcionar aínda que non esteas usando o dispositivo. Se revogas este permiso, é posible que a aplicación deixe de funcionar correctamente. Ademais, as alarmas que planificase non soarán."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"planificar, alarma, recordatorio, evento"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Permitir axuste de alarmas e recordatorios"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmas e recordatorios"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Permite que esta aplicación defina alarmas e planifique outras accións. Pode usarse cando non utilices o teléfono, o cal consome máis batería. Se este permiso está desactivado, é posible que a aplicación non funcione con normalidade e que as alarmas non se activen segundo o planificado."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Permite que esta aplicación defina alarmas e planifique outras accións. Pode usarse cando non utilices a tableta, o cal consome máis batería. Se este permiso está desactivado, é posible que a aplicación non funcione con normalidade e que as alarmas non se activen segundo o planificado."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Permite que esta aplicación defina alarmas e planifique outras accións. Pode usarse cando non utilices o dispositivo, o cal consome máis batería. Se este permiso está desactivado, é posible que a aplicación non funcione con normalidade e que as alarmas non se activen segundo o planificado."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"planificar, alarma, recordatorio, reloxo"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Activar"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Activar modo Non molestar"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nunca"</string> @@ -530,7 +531,7 @@ <string name="storage_category" msgid="2287342585424631813">"Almacenamento"</string> <string name="shared_data_title" msgid="1017034836800864953">"Datos compartidos"</string> <string name="shared_data_summary" msgid="5516326713822885652">"Consulta e modifica os datos compartidos"</string> - <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Non hai datos compartidos para este usuario."</string> + <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Non hai datos compartidos para este usuario"</string> <string name="shared_data_query_failure_text" msgid="3489828881998773687">"Produciuse un erro ao obter os datos compartidos. Téntao de novo."</string> <string name="blob_id_text" msgid="8680078988996308061">"Código de identificación dos datos compartidos: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> <string name="blob_expires_text" msgid="7882727111491739331">"Caduca o <xliff:g id="DATE">%s</xliff:g>"</string> @@ -541,8 +542,8 @@ <string name="accessor_expires_text" msgid="4625619273236786252">"O alugueiro caduca o <xliff:g id="DATE">%s</xliff:g>"</string> <string name="delete_blob_text" msgid="2819192607255625697">"Eliminar datos compartidos"</string> <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"Seguro que queres eliminar estes datos compartidos?"</string> - <string name="user_add_user_item_summary" msgid="5748424612724703400">"Os usuarios teñen as súas propias aplicacións e contidos"</string> - <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Podes restrinxir o acceso a aplicacións e contido da túa conta"</string> + <string name="user_add_user_item_summary" msgid="5748424612724703400">"Os usuarios teñen as súas propias aplicacións e contidos."</string> + <string name="user_add_profile_item_summary" msgid="5418602404308968028">"Podes restrinxir o acceso a aplicacións e contido da túa conta."</string> <string name="user_add_user_item_title" msgid="2394272381086965029">"Usuario"</string> <string name="user_add_profile_item_title" msgid="3111051717414643029">"Perfil restrinxido"</string> <string name="user_add_user_title" msgid="5457079143694924885">"Engadir un usuario novo?"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Establecer bloqueo"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Cambiar a <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Creando usuario novo…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Non se puido crear un novo usuario"</string> <string name="user_nickname" msgid="262624187455825083">"Alcume"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Engadir convidado"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Quitar convidado"</string> @@ -576,8 +576,8 @@ <string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"Activado"</string> <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"É necesario reiniciar o teu dispositivo para aplicar este cambio. Reiníciao agora ou cancela o cambio."</string> <string name="media_transfer_wired_usb_device_name" msgid="7699141088423210903">"Auriculares con cable"</string> - <string name="wifi_hotspot_switch_on_text" msgid="9212273118217786155">"Activar"</string> - <string name="wifi_hotspot_switch_off_text" msgid="7245567251496959764">"Desactivar"</string> + <string name="wifi_hotspot_switch_on_text" msgid="9212273118217786155">"Activada"</string> + <string name="wifi_hotspot_switch_off_text" msgid="7245567251496959764">"Desactivada"</string> <string name="carrier_network_change_mode" msgid="4257621815706644026">"Cambio de rede do operador"</string> <string name="data_connection_3g" msgid="931852552688157407">"3G"</string> <string name="data_connection_edge" msgid="4625509456544797637">"EDGE"</string> diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml index e963f3a5ccbb..9583c0e387a2 100644 --- a/packages/SettingsLib/res/values-gu/arrays.xml +++ b/packages/SettingsLib/res/values-gu/arrays.xml @@ -185,7 +185,7 @@ </string-array> <string-array name="select_logpersist_summaries"> <item msgid="97587758561106269">"બંધ"</item> - <item msgid="7126170197336963369">"તમામ લૉગ બફર્સ"</item> + <item msgid="7126170197336963369">"તમામ લૉગ બફર"</item> <item msgid="7167543126036181392">"તમામ પરંતુ રેડિઓ લૉગ બફર્સ"</item> <item msgid="5135340178556563979">"ફક્ત કર્નલ લૉગ બફર"</item> </string-array> @@ -210,7 +210,7 @@ <string-array name="animator_duration_scale_entries"> <item msgid="6416998593844817378">"એનિમેશન બંધ"</item> <item msgid="875345630014338616">"એનિમેશન સ્કેલ .5x"</item> - <item msgid="2753729231187104962">"એનિમેશન સ્કેલ 1x"</item> + <item msgid="2753729231187104962">"ઍનિમેશન સ્કેલ 1x"</item> <item msgid="1368370459723665338">"એનિમેશન સ્કેલ 1.5x"</item> <item msgid="5768005350534383389">"એનિમેશન સ્કેલ 2x"</item> <item msgid="3728265127284005444">"એનિમેશન સ્કેલ 5x"</item> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index 378215cbd556..32efcdae84a2 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -154,7 +154,7 @@ <string name="unknown" msgid="3544487229740637809">"અજાણ્યું"</string> <string name="running_process_item_user_label" msgid="3988506293099805796">"વપરાશકર્તા: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"કેટલાંક ડિફોલ્ટ્સ સેટ કરેલ છે"</string> - <string name="launch_defaults_none" msgid="8049374306261262709">"કોઇ ડિફોલ્ટ્સ સેટ કરેલ નથી"</string> + <string name="launch_defaults_none" msgid="8049374306261262709">"કોઈ ડિફૉલ્ટ સેટ કરેલા નથી"</string> <string name="tts_settings" msgid="8130616705989351312">"ટેક્સ્ટ-ટુ-સ્પીચ સેટિંગ્સ"</string> <string name="tts_settings_title" msgid="7602210956640483039">"ટેક્સ્ટ ટુ સ્પીચ આઉટપુટ"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"વાણી દર"</string> @@ -197,7 +197,7 @@ <string name="choose_profile" msgid="343803890897657450">"પ્રોફાઇલ પસંદ કરો"</string> <string name="category_personal" msgid="6236798763159385225">"વ્યક્તિગત"</string> <string name="category_work" msgid="4014193632325996115">"ઑફિસ"</string> - <string name="development_settings_title" msgid="140296922921597393">"વિકાસકર્તાનાં વિકલ્પો"</string> + <string name="development_settings_title" msgid="140296922921597393">"વિકાસકર્તાના વિકલ્પો"</string> <string name="development_settings_enable" msgid="4285094651288242183">"વિકાસકર્તાનાં વિકલ્પો સક્ષમ કરો"</string> <string name="development_settings_summary" msgid="8718917813868735095">"ઍપ્લિકેશન વિકાસ માટે વિકલ્પો સેટ કરો"</string> <string name="development_settings_not_available" msgid="355070198089140951">"આ વપરાશકર્તા માટે વિકાસકર્તા વિકલ્પો ઉપલબ્ધ નથી"</string> @@ -246,7 +246,7 @@ <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"OEM ને અનલૉક કરવાની મંજૂરી આપીએ?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ચેતવણી: જ્યારે આ સેટિંગ ચાલુ હોય ત્યારે આ ઉપકરણ પર ઉપકરણ સંરક્ષણ સુવિધાઓ કાર્ય કરશે નહીં."</string> <string name="mock_location_app" msgid="6269380172542248304">"મોક સ્થાન ઍપ્લિકેશન પસંદ કરો"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"કોઈ મોક સ્થાન ઍપ્લિકેશન સેટ કરાયેલ નથી"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"કોઈ મોક સ્થાન ઍપ્લિકેશન સેટ કરાયેલું નથી"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"મોક સ્થાન ઍપ્લિકેશન: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"નેટવર્કિંગ"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"વાયરલેસ ડિસ્પ્લે પ્રમાણન"</string> @@ -255,8 +255,8 @@ <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"MAC રેન્ડમાઇઝ કરવામાં વાઇ-ફાઇનો ઉપયોગ"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"મોબાઇલ ડેટા હંમેશાં સક્રિય"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"ટિથરિંગ માટે હાર્ડવેર ગતિવૃદ્ધિ"</string> - <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"નામ વિનાના બ્લૂટૂથ ઉપકરણો બતાવો"</string> - <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ચોક્કસ વૉલ્યૂમને અક્ષમ કરો"</string> + <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"નામ વિનાના બ્લૂટૂથ ડિવાઇસ બતાવો"</string> + <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ચોક્કસ વૉલ્યૂમને બંધ કરો"</string> <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche ચાલુ કરો"</string> <string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"બ્લૂટૂથ AVRCP સંસ્કરણ"</string> <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"બ્લૂટૂથ AVRCP સંસ્કરણ પસંદ કરો"</string> @@ -269,9 +269,9 @@ <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"નિષ્ક્રિય હોવાનો અર્થ એ છે કે ફોન અથવા હૅડસેટ દ્વારા સપોર્ટ આપવામાં આવતો નથી"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"નમૂના દીઠ બ્લૂટૂથ ઑડિઓ બિટ"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"બ્લૂટૂથ ઑડિઓ કોડેક\nપસંદગી ટ્રિગર કરો: નમૂના દીઠ બિટ"</string> - <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"બ્લૂટૂથ ઑડિઓ ચેનલ મોડ"</string> + <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"બ્લૂટૂથ ઑડિયો ચૅનલ મોડ"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"બ્લૂટૂથ ઑડિઓ કોડેક\nપસંદગી ટ્રિગર કરો: ચૅનલ મોડ"</string> - <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"બ્લૂટૂથ ઑડિઓ LDAC કોડેક: પ્લેબૅક ગુણવત્તા"</string> + <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"બ્લૂટૂથ ઑડિયો LDAC કોડેક: પ્લેબૅક ગુણવત્તા"</string> <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"બ્લૂટૂથ ઑડિઓ LDAC\nCodec પસંદગી ટ્રિગર કરો: પ્લેબૅક ક્વૉલિટી"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"સ્ટ્રીમિંગ: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"ખાનગી DNS"</string> @@ -285,13 +285,13 @@ <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"વાઇ-ફાઇ લોગિંગ સ્તર વધારો, વાઇ-ફાઇ પીકરમાં SSID RSSI દીઠ બતાવો"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"બૅટરીનો ચાર્જ ઝડપથી ઓછો થવાનું ટાળે છે અને નેટવર્કના કાર્યપ્રદર્શનમાં સુધારો કરે છે"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"આ મોડ ચાલુ કરેલો હશે, ત્યારે MAC રેન્ડમાઇઝેશન ચાલુ કરેલું હોય તેવા નેટવર્ક સાથે આ ડિવાઇસ જોડાશે ત્યારે દર વખતે તેનું MAC ઍડ્રેસ બદલાય તેમ બની શકે છે."</string> - <string name="wifi_metered_label" msgid="8737187690304098638">"મીટર કરેલ"</string> + <string name="wifi_metered_label" msgid="8737187690304098638">"મીટર કરેલું"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"મીટર ન કરેલ"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"લોગર બફર કદ"</string> <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"લૉગ દીઠ લૉગર કદ બફર પસંદ કરો"</string> <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"લૉગર નિરંતર સ્ટોરેજ સાફ કરીએ?"</string> <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"જ્યારે અમે હવે નિરંતર લૉગર સાથે મોનીટર કરતાં નથી, તો તમારા ઉપકરણ પર રહેલો લૉગર ડેટા કાઢી નાખવાની જરૂર છે."</string> - <string name="select_logpersist_title" msgid="447071974007104196">"તમારા ઉપકરણ પર લૉગર ડેટા નિરંતર સંગ્રહિત કરો"</string> + <string name="select_logpersist_title" msgid="447071974007104196">"તમારા ડિવાઇસ પર લૉગર ડેટા નિરંતર સંગ્રહિત કરો"</string> <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"તમારા ઉપકરણ પર નિરંતર સંગ્રહવા માટે લૉગ બફર પસંદ કરો"</string> <string name="select_usb_configuration_title" msgid="6339801314922294586">"USB ગોઠવણી પસંદ કરો"</string> <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"USB ગોઠવણી પસંદ કરો"</string> @@ -309,8 +309,8 @@ <string name="dev_settings_warning_message" msgid="37741686486073668">"આ સેટિંગ્સ ફક્ત વિકાસનાં ઉપયોગ માટે જ હેતુબદ્ધ છે. તે તમારા ઉપકરણ અને તેના પરની એપ્લિકેશન્સનાં ભંગ થવા અથવા ખરાબ વર્તનનું કારણ બની શકે છે."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"USB પર ઍપ્લિકેશનો ચકાસો"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"હાનિકારક વર્તણૂંક માટે ADB/ADT મારફતે ઇન્સ્ટોલ કરવામાં આવેલી ઍપ્લિકેશનો તપાસો."</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"નામ વગરના (ફક્ત MAC ઍડ્રેસવાળા) બ્લૂટૂથ ઉપકરણો બતાવવામાં આવશે"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"રિમોટ ઉપકરણોમાં વધુ પડતું ઊંચું વૉલ્યૂમ અથવા નિયંત્રણની કમી જેવી વૉલ્યૂમની સમસ્યાઓની સ્થિતિમાં બ્લૂટૂથ ચોક્કસ વૉલ્યૂમ સુવિધાને અક્ષમ કરે છે."</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"નામ વગરના (ફક્ત MAC ઍડ્રેસવાળા) બ્લૂટૂથ ડિવાઇસ બતાવવામાં આવશે"</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"રિમોટ ડિવાઇસમાં વધુ પડતું ઊંચું વૉલ્યૂમ અથવા નિયંત્રણની કમી જેવી વૉલ્યૂમની સમસ્યાઓની સ્થિતિમાં બ્લૂટૂથ ચોક્કસ વૉલ્યૂમ સુવિધાને બંધ કરે છે."</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"બ્લૂટૂથ Gabeldorsche સુવિધાનું સ્ટૅક ચાલુ કરે છે."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"કનેક્ટિવિટીની વિસ્તૃત સુવિધા ચાલુ કરે છે."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"સ્થાનિક ટર્મિનલ"</string> @@ -331,40 +331,40 @@ <string name="media_category" msgid="8122076702526144053">"મીડિયા"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"નિરિક્ષણ કરી રહ્યું છે"</string> <string name="strict_mode" msgid="889864762140862437">"સ્ટ્રિક્ટ મોડ ચાલુ કરેલ છે"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"જ્યારે મુખ્ય થ્રેડ પર ઍપ્લિકેશનો લાંબી કામગીરીઓ કરે ત્યારે સ્ક્રીનને ફ્લેશ કરો"</string> - <string name="pointer_location" msgid="7516929526199520173">"પોઇન્ટર સ્થાન"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"જ્યારે મુખ્ય થ્રેડ પર ઍપ લાંબી કામગીરીઓ કરે ત્યારે સ્ક્રીનને ફ્લેશ કરો"</string> + <string name="pointer_location" msgid="7516929526199520173">"પૉઇન્ટર સ્થાન"</string> <string name="pointer_location_summary" msgid="957120116989798464">"વર્તમાન ટચ ડેટા દર્શાવતું સ્ક્રીન ઓવરલે"</string> - <string name="show_touches" msgid="8437666942161289025">"ટૅપ્સ બતાવો"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"ટૅપ્સ માટે દૃશ્યાત્મક પ્રતિસાદ બતાવો"</string> + <string name="show_touches" msgid="8437666942161289025">"ટૅપ બતાવો"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"ટૅપ માટે વિઝ્યુઅલ પ્રતિસાદ બતાવો"</string> <string name="show_screen_updates" msgid="2078782895825535494">"સપાટી અપડેટ્સ બતાવો"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"જ્યારે તે અપડેટ થાય ત્યારે સમગ્ર વિંડો સપાટીને ફ્લેશ કરો"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"તે અપડેટ થાય ત્યારે સમગ્ર વિન્ડો સપાટી ફ્લેશ કરો"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"દૃશ્યના અપડેટ બતાવો"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"દોરવામાં આવે ત્યારે વિંડોની અંદર દૃશ્યો બતાવો"</string> - <string name="show_hw_layers_updates" msgid="5268370750002509767">"હાર્ડવેર સ્તરોનાં અપડેટ્સ બતાવો"</string> + <string name="show_hw_layers_updates" msgid="5268370750002509767">"હાર્ડવેર સ્તરોના અપડેટ બતાવો"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"હાર્ડવેર સ્તરો અપડેટ થાય ત્યારે તેને લીલા રંગથી પ્રકાશિત કરો"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU ઓવરડ્રો ડીબગ કરો"</string> <string name="disable_overlays" msgid="4206590799671557143">"HW ઓવરલે અક્ષમ કરો"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"સ્ક્રીન જોડવા માટે હંમેશાં GPU નો ઉપયોગ કરો"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"સ્ક્રીન જોડવા માટે હંમેશાં GPUનો ઉપયોગ કરો"</string> <string name="simulate_color_space" msgid="1206503300335835151">"રંગ સ્થાનનું અનુકરણ કરો"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL ટ્રેસેસ સક્ષમ કરો"</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB ઑડિઓ રૂટિંગ અક્ષમ કરો"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB ઑડિઓ પેરિફિરલ્સ પર સ્વચલિત રાઉટિંગને અક્ષમ કરો"</string> - <string name="debug_layout" msgid="1659216803043339741">"લેઆઉટ બાઉન્ડ્સ બતાવો"</string> - <string name="debug_layout_summary" msgid="8825829038287321978">"ક્લિપ બાઉન્ડ્સ, હાંસિયાં વગેરે બતાવો."</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB ઑડિયો રૂટિંગ બંધ કરો"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB ઑડિયો પેરિફિરલ પર ઑટોમૅટિક રીતે થતા રૂટિંગને બંધ કરો"</string> + <string name="debug_layout" msgid="1659216803043339741">"લેઆઉટ બાઉન્ડ બતાવો"</string> + <string name="debug_layout_summary" msgid="8825829038287321978">"ક્લિપ બાઉન્ડ, હાંસિયાં વગેરે બતાવો."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL લેઆઉટ દિશા નિર્દેશની ફરજ પાડો"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"તમામ લૉકેલ્સ માટે સ્ક્રીન લેઆઉટ દિશા નિર્દેશને RTL ની ફરજ પાડો"</string> - <string name="force_msaa" msgid="4081288296137775550">"4x MSAA ને ફરજ પાડો"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"તમામ લૉકેલ માટે સ્ક્રીન લેઆઉટ દિશા નિર્દેશને RTLની ફરજ પાડો"</string> + <string name="force_msaa" msgid="4081288296137775550">"4x MSAAને ફરજ પાડો"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 એપ્લિકેશન્સમાં 4x MSAA સક્ષમ કરો"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"બિન-લંબચોરસ ક્લિપ કામગીરી ડીબગ કરો"</string> <string name="track_frame_time" msgid="522674651937771106">"HWUIની પ્રોફાઇલ રેંડરીંગ"</string> - <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ડિબગ સ્તરોને સક્ષમ કરો"</string> + <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ડિબગ સ્તરોને ચાલુ કરો"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ડિબગ ઍપ માટે GPU ડિબગ સ્તરો લોડ કરવાની મંજૂરી આપો"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"વર્બોઝ વેન્ડર લૉગિંગ ચાલુ કરો"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ખામીની જાણકારીમાં ડિવાઇસથી જોડાયેલા ચોક્કસ વેન્ડર લૉગ શામેલ કરો, જેમાં ખાનગી માહિતી શામેલ હોઈ શકે છે, તે વધુ બૅટરીનો ઉપયોગ કરી શકે છે અને/અથવા વધુ સ્ટોરેજનો ઉપયોગ કરી શકે છે."</string> - <string name="window_animation_scale_title" msgid="5236381298376812508">"વિંડો એનિમેશન સ્કેલ"</string> + <string name="window_animation_scale_title" msgid="5236381298376812508">"વિન્ડો ઍનિમેશન સ્કેલ"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"સંક્રમણ એનિમેશન સ્કેલ"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"એનિમેટર અવધિ સ્કેલ"</string> - <string name="overlay_display_devices_title" msgid="5411894622334469607">"ગૌણ ડિસ્પ્લેનુ અનુકરણ કરો"</string> + <string name="overlay_display_devices_title" msgid="5411894622334469607">"ગૌણ ડિસ્પ્લેનું અનુકરણ કરો"</string> <string name="debug_applications_category" msgid="5394089406638954196">"ઍપ્લિકેશનો"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"પ્રવૃત્તિઓ રાખશો નહીં"</string> <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"જેવો વપરાશકર્તા તેને છોડે, તરત જ દરેક પ્રવૃત્તિ નષ્ટ કરો"</string> @@ -372,9 +372,9 @@ <string name="show_all_anrs" msgid="9160563836616468726">"બૅકગ્રાઉન્ડના ANRs બતાવો"</string> <string name="show_all_anrs_summary" msgid="8562788834431971392">"બૅકગ્રાઉન્ડ ઍપ માટે \"ઍપ પ્રતિસાદ આપતી નથી\" સંવાદ બતાવો"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"નોટિફિકેશન ચૅનલની ચેતવણી બતાવો"</string> - <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ઍપ્લિકેશન માન્ય ચૅનલ વિના નોટિફિકેશન પોસ્ટ કરે તો સ્ક્રીન પર ચેતવણી દેખાય છે"</string> - <string name="force_allow_on_external" msgid="9187902444231637880">"બાહ્ય પર એપ્લિકેશનોને મંજૂરી આપવાની ફરજ પાડો"</string> - <string name="force_allow_on_external_summary" msgid="8525425782530728238">"મેનિફેસ્ટ મૂલ્યોને ધ્યાનમાં લીધા સિવાય, કોઈપણ ઍપ્લિકેશનને બાહ્ય સ્ટોરેજ પર લખાવા માટે લાયક બનાવે છે"</string> + <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ઍપ માન્ય ચૅનલ વિના નોટિફિકેશન પોસ્ટ કરે તો સ્ક્રીન પર ચેતવણી દેખાય છે"</string> + <string name="force_allow_on_external" msgid="9187902444231637880">"બાહ્ય પર એપને મંજૂરી આપવાની ફરજ પાડો"</string> + <string name="force_allow_on_external_summary" msgid="8525425782530728238">"મેનિફેસ્ટ મૂલ્યોને ધ્યાનમાં લીધા સિવાય, કોઈપણ ઍપને બાહ્ય સ્ટોરેજ પર લખાવા માટે લાયક બનાવે છે"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"પ્રવૃત્તિઓને ફરીથી કદ યોગ્ય થવા માટે ફરજ પાડો"</string> <string name="force_resizable_activities_summary" msgid="2490382056981583062">"મૅનિફેસ્ટ મૂલ્યોને ધ્યાનમાં લીધા સિવાય, તમામ પ્રવૃત્તિઓને મલ્ટી-વિંડો માટે ફરીથી કદ બદલી શકે તેવી બનાવો."</string> <string name="enable_freeform_support" msgid="7599125687603914253">"ફ્રિફોર્મ વિંડોઝ ચાલુ કરો"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ફૉર્મેટ બદલવાની પ્રક્રિયા ચાલુ કરો"</string> <string name="transcode_default" msgid="3784803084573509491">"ધારો કે ઍપ આધુનિક ફૉર્મેટ પર કામ કરે છે"</string> <string name="transcode_notification" msgid="5560515979793436168">"ફૉર્મેટ બદલવાની પ્રક્રિયાના નોટિફિકેશન બતાવો"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ફૉર્મેટ બદલવાની પ્રક્રિયાની કૅશ મેમરી બંધ કરો"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"ચાલુ સેવાઓ"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"હાલમાં ચાલતી સેવાઓ જુઓ અને નિયંત્રિત કરો"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView અમલીકરણ"</string> @@ -418,7 +419,7 @@ <string name="button_convert_fbe" msgid="1159861795137727671">"સાફ અને રૂપાંતરિત કરો..."</string> <string name="picture_color_mode" msgid="1013807330552931903">"ચિત્ર રંગ મોડ"</string> <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB નો ઉપયોગ કરો"</string> - <string name="daltonizer_mode_disabled" msgid="403424372812399228">"અક્ષમ"</string> + <string name="daltonizer_mode_disabled" msgid="403424372812399228">"બંધ"</string> <string name="daltonizer_mode_monochromacy" msgid="362060873835885014">"મોનોક્રોમેસી"</string> <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"ડીયુટેરેનોમલી (લાલ-લીલો)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"પ્રોટેનોમલી (લાલ-લીલો)"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ટૅબ્લેટ થોડીક જ વારમાં બંધ થઈ શકે છે (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ડિવાઇસ થોડીક જ વારમાં બંધ થઈ શકે છે (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"પૂર્ણ ચાર્જ થવામાં <xliff:g id="TIME">%1$s</xliff:g> બાકી છે"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - પૂર્ણ ચાર્જ થવામાં <xliff:g id="TIME">%2$s</xliff:g> બાકી છે"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> • બૅટરીની ક્ષમતા વધારવા ઑપ્ટિમાઇઝ કરી રહ્યાં છીએ"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"અજાણ્યું"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ચાર્જ થઈ રહ્યું છે"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"ઝડપથી ચાર્જ થાય છે"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"ધીમેથી ચાર્જ થાય છે"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"વાયરલેસથી ચાર્જિંગ"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ચાર્જ થઈ રહ્યું નથી"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"પ્લગ ઇન કરેલ, હમણાં ચાર્જ કરી શકતા નથી"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ચાર્જ થયું"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"વ્યવસ્થાપક દ્વારા નિયંત્રિત"</string> <string name="disabled" msgid="8017887509554714950">"અક્ષમ કર્યો"</string> <string name="external_source_trusted" msgid="1146522036773132905">"મંજૂરી છે"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"મંજૂરી નથી"</string> - <string name="install_other_apps" msgid="3232595082023199454">"અજાણી ઍપ્લિકેશનો ઇન્સ્ટૉલ કરો"</string> + <string name="install_other_apps" msgid="3232595082023199454">"અજાણી ઍપ ઇન્સ્ટૉલ કરો"</string> <string name="home" msgid="973834627243661438">"સેટિંગ્સ હોમ"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0%"</item> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"રદ કરો"</string> <string name="okay" msgid="949938843324579502">"ઓકે"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"અલાર્મ અને રિમાઇન્ડર"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"અલાર્મ અને રિમાઇન્ડર સેટ કરવાની મંજૂરી આપો"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"અલાર્મ અને રિમાઇન્ડર"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"આ ઍપને અલાર્મ અથવા અન્ય સમય આધારિત ઇવેન્ટને શેડ્યૂલ કરવાની મંજૂરી આપો. જ્યારે તમે ડિવાઇસનો ઉપયોગ કરતા ન હો, ત્યારે પણ આ સુવિધા ઍપને સક્રિય થવાની અને કામ કરવાની મંજૂરી આપશે. નોંધો કે આ પરવાનગીને રદ કરવાથી ઍપમાં ખામી સર્જાઈ શકે છે, ખાસ કરીને કોઈપણ અલાર્મ કે જે ઍપ દ્વારા શેડ્યૂલ કરવામાં આવ્યું હોય, તે હવે કામ કરશે નહીં."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"શેડ્યૂલ, અલાર્મ, રિમાઇન્ડર, ઇવેન્ટ"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"અલાર્મ અને રિમાન્ડરના સેટિંગની મંજૂરી આપો"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"અલાર્મ અને રિમાઇન્ડર"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"આ ઍપને અલાર્મ સેટ કરવા અને અન્ય ક્રિયાઓ શેડ્યૂલ કરવા માટે મંજૂરી આપો. જ્યારે તમે તમારા ફોનનો ઉપયોગ ન કરતા હો, ત્યારે આ ઍપનો ઉપયોગ થઈ શકે છે, જેમાં વધારે બૅટરી વપરાઈ શકે છે. જો આ પરવાનગી બંધ હોય, તો આ ઍપ સામાન્ય રીતે કાર્ય ન પણ કરી શકે અને તેના અલાર્મ શેડ્યૂલ કર્યા મુજબ કાર્ય ન પણ કરે."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"આ ઍપને અલાર્મ સેટ કરવા અને અન્ય ક્રિયાઓ શેડ્યૂલ કરવા માટે મંજૂરી આપો. જ્યારે તમે તમારા ટૅબ્લેટનો ઉપયોગ ન કરતા હો, ત્યારે આ ઍપનો ઉપયોગ થઈ શકે છે, જેમાં વધારે બૅટરી વપરાઈ શકે છે. જો આ પરવાનગી બંધ હોય, તો આ ઍપ સામાન્ય રીતે કાર્ય ન પણ કરી શકે અને તેના અલાર્મ શેડ્યૂલ કર્યા મુજબ કાર્ય ન પણ કરે."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"આ ઍપને અલાર્મ સેટ કરવા અને અન્ય ક્રિયાઓ શેડ્યૂલ કરવા માટે મંજૂરી આપો. જ્યારે તમે તમારા ડિવાઇસનો ઉપયોગ ન કરતા હો, ત્યારે આ ઍપનો ઉપયોગ થઈ શકે છે, જેમાં વધારે બૅટરી વપરાઈ શકે છે. જો આ પરવાનગી બંધ હોય, તો આ ઍપ સામાન્ય રીતે કાર્ય ન પણ કરી શકે અને તેના અલાર્મ શેડ્યૂલ કર્યા મુજબ કાર્ય ન પણ કરે."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"શેડ્યૂલ, અલાર્મ, રિમાઇન્ડર, ઘડિયાળ"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ચાલુ કરો"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"ખલેલ પાડશો નહીં ચાલુ કરો"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ક્યારેય નહીં"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"લૉક સેટ કરો"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> પર સ્વિચ કરો"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"નવા વપરાશકર્તા બનાવી રહ્યાં છીએ…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"નવો વપરાશકર્તા બનાવવામાં નિષ્ફળ"</string> <string name="user_nickname" msgid="262624187455825083">"ઉપનામ"</string> <string name="guest_new_guest" msgid="3482026122932643557">"અતિથિ ઉમેરો"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"અતિથિને કાઢી નાખો"</string> diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml index 0ffe38f9a35e..f8522aa2eb2d 100644 --- a/packages/SettingsLib/res/values-hi/arrays.xml +++ b/packages/SettingsLib/res/values-hi/arrays.xml @@ -55,7 +55,7 @@ </string-array> <string-array name="hdcp_checking_summaries"> <item msgid="4045840870658484038">"कभी भी HDCP जाँच का उपयोग न करें"</item> - <item msgid="8254225038262324761">"एचडीसीपी जाँच का उपयोग केवल डीआरएम सामग्री के लिए करें"</item> + <item msgid="8254225038262324761">"HDCP जांच का उपयोग सिर्फ़ डीआरएम कॉन्टेंट के लिए करें"</item> <item msgid="6421717003037072581">"हमेशा HDCP जाँच का उपयोग करें"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 319150af593e..c312456195c1 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"रद्द करें"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"कनेक्ट होने पर, पेयरिंग से आपके संपर्कों और कॉल इतिहास तक पहुंचा जा सकता है."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> के साथ युग्मित नहीं हो सका."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"गलत पिन या पासकी के कारण <xliff:g id="DEVICE_NAME">%1$s</xliff:g> के साथ युग्मित नहीं हो सका."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"गलत पिन या पासवर्ड की वजह से <xliff:g id="DEVICE_NAME">%1$s</xliff:g> से नहीं जोड़ा जा सका."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> से संचार नहीं कर सकता."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ने जोड़ने का अनुरोध नहीं माना."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"कंप्यूटर"</string> @@ -144,7 +144,7 @@ <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"निकाले गए ऐप्लिकेशन"</string> <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"ऐप्लिकेशन और उपयोगकर्ताओं को निकालें"</string> <string name="data_usage_ota" msgid="7984667793701597001">"सिस्टम अपडेट"</string> - <string name="tether_settings_title_usb" msgid="3728686573430917722">"यूएसबी से टेदरिंग"</string> + <string name="tether_settings_title_usb" msgid="3728686573430917722">"यूएसबी टेदरिंग"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"पोर्टेबल हॉटस्पॉट"</string> <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ब्लूटूथ टेदरिंग"</string> <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"टेदरिंग"</string> @@ -204,9 +204,9 @@ <string name="vpn_settings_not_available" msgid="2894137119965668920">"VPN सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं"</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"टेदरिंग सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"ऐक्सेस पॉइंट के नाम की सेटिंग इस उपयोगकर्ता के लिए मौजूद नहीं हैं"</string> - <string name="enable_adb" msgid="8072776357237289039">"USB डीबग करना"</string> + <string name="enable_adb" msgid="8072776357237289039">"यूएसबी डीबग करना"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"डीबग मोड जब USB कनेक्ट किया गया हो"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"USB डीबग करने की मंज़ूरी रद्द करें"</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"यूएसबी डीबग करने की मंज़ूरी रद्द करें"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"वॉयरलेस डीबगिंग"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"डिवाइस के वाई-फ़ाई से कनेक्ट हाेने पर, डीबग मोड चालू करें"</string> <string name="adb_wireless_error" msgid="721958772149779856">"गड़बड़ी"</string> @@ -315,7 +315,7 @@ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"कनेक्टिविटी बेहतर बनाने की सुविधा को चालू करें"</string> <string name="enable_terminal_title" msgid="3834790541986303654">"स्थानीय टर्मिनल"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"लोकल शेल तक पहुंचने की सुविधा देने वाले टर्मिनल ऐप को चालू करें"</string> - <string name="hdcp_checking_title" msgid="3155692785074095986">"एचडीसीपी जाँच"</string> + <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP जांच"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP जाँच व्यवहार सेट करें"</string> <string name="debug_debugging_category" msgid="535341063709248842">"डीबग करना"</string> <string name="debug_app" msgid="8903350241392391766">"डीबग करने के लिए ऐप्लिकेशन चुनें"</string> @@ -379,7 +379,7 @@ <string name="force_resizable_activities_summary" msgid="2490382056981583062">"सभी गतिविधियों को मल्टी-विंडो (एक से ज़्यादा ऐप्लिकेशन, एक साथ) के लिए आकार बदलने लायक बनाएं, चाहे उनकी मेनिफ़ेस्ट वैल्यू कुछ भी हो."</string> <string name="enable_freeform_support" msgid="7599125687603914253">"फ़्रीफ़ॉर्म विंडो (एक साथ कई विंडो दिखाना) चालू करें"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"जाँच के लिए बनी फ़्रीफ़ॉर्म विंडो के लिए सहायता चालू करें."</string> - <string name="local_backup_password_title" msgid="4631017948933578709">"डेस्कटॉप बैकअप पासवर्ड"</string> + <string name="local_backup_password_title" msgid="4631017948933578709">"डेस्कटॉप बैक अप पासवर्ड"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"डेस्कटॉप के पूरे बैक अप फ़िलहाल सुरक्षित नहीं हैं"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"डेस्कटॉप के पूरे बैक अप का पासवर्ड बदलने या हटाने के लिए टैप करें"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"नया बैकअप पासवर्ड सेट किया गया"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ट्रांसकोडिंग चालू करें"</string> <string name="transcode_default" msgid="3784803084573509491">"मानकर चलें कि ऐप्लिकेशन, नए फ़ॉर्मैट के साथ काम करेंगे"</string> <string name="transcode_notification" msgid="5560515979793436168">"ट्रांसकोडिंग की सूचनाएं दिखाएं"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"कैश को ट्रांसकोड करने की सुविधा बंद करें"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"चल रही सेवाएं"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"इस समय चल रही सेवाओं को देखें और नियंत्रित करें"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"वेबव्यू लागू करें"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"टैबलेट जल्द ही बंद हो सकता है (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"डिवाइस जल्द ही बंद हो सकता है (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> में बैटरी पूरी चार्ज हो जाएगी"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> में बैटरी पूरी चार्ज हो जाएगी"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - बैटरी की परफ़ॉर्मेंस बेहतर करने के लिए, ऑप्टिमाइज़ किया जा रहा है"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"अज्ञात"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"चार्ज हो रही है"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"तेज़ चार्ज हो रही है"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"धीरे चार्ज हो रही है"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"वायरलेस चार्जिंग"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"चार्ज नहीं हो रही है"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"प्लग इन है, अभी चार्ज नहीं हो सकती"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"बैटरी चार्ज हो गई"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"इसका नियंत्रण एडमिन के पास है"</string> <string name="disabled" msgid="8017887509554714950">"बंद किया गया"</string> <string name="external_source_trusted" msgid="1146522036773132905">"अनुमति है"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"रद्द करें"</string> <string name="okay" msgid="949938843324579502">"ठीक है"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"अलार्म और रिमाइंडर"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"अलार्म या रिमाइंडर सेट करने की अनुमति दें"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"अलार्म और रिमाइंडर"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"इस ऐप्लिकेशन को अलार्म या इवेंट के रिमाइंडर सेट करने की अनुमति दें. इससे, यह ऐप्लिकेशन तब भी काम करना शुरू कर देगा, जब आप डिवाइस का इस्तेमाल नहीं कर रहे होंगे. ध्यान रखें कि यह अनुमति न देने पर, हो सकता है कि ऐप्लिकेशन ठीक तरह से काम न करे. खास तौर पर, ऐप्लिकेशन में शेड्यूल किए गए अलार्म नहीं बजेंगे."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"शेड्यूल, अलार्म, रिमाइंडर, इवेंट"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"अलार्म और रिमाइंडर सेट करने की अनुमति दें"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"अलार्म और रिमाइंडर"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"इस ऐप्लिकेशन को अनुमति दें कि यह अलार्म सेट कर सके और दूसरी कार्रवाइयां शेड्यूल कर सके. इस ऐप्लिकेशन का इस्तेमाल तब भी किया जा सकता है, जब आप अपने फ़ोन का इस्तेमाल नहीं कर रहे होते. इससे बैटरी ज़्यादा खर्च हो सकती है. अगर आप यह अनुमति नहीं देते हैं, तो हो सकता है कि यह ऐप्लिकेशन ठीक तरह से काम न करे. साथ ही, इसमें शेड्यूल किए गए अलार्म भी नहीं बजेंगे."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"इस ऐप्लिकेशन को अनुमति दें कि यह अलार्म सेट कर सके और दूसरी कार्रवाइयां शेड्यूल कर सके. इस ऐप्लिकेशन का इस्तेमाल तब भी किया जा सकता है, जब आप अपने टैबलेट का इस्तेमाल नहीं कर रहे होते. इससे बैटरी ज़्यादा खर्च हो सकती है. अगर आप यह अनुमति नहीं देते हैं, तो हो सकता है कि यह ऐप्लिकेशन ठीक तरह से काम न करे. साथ ही, इसमें शेड्यूल किए गए अलार्म भी नहीं बजेंगे."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"इस ऐप्लिकेशन को अनुमति दें कि यह अलार्म सेट कर सके और दूसरी कार्रवाइयां शेड्यूल कर सके. इस ऐप्लिकेशन का इस्तेमाल तब भी किया जा सकता है, जब आप अपने डिवाइस का इस्तेमाल नहीं कर रहे होते. इससे बैटरी ज़्यादा खर्च हो सकती है. अगर आप यह अनुमति नहीं देते हैं, तो हो सकता है कि यह ऐप्लिकेशन ठीक तरह से काम न करे. साथ ही, इसमें शेड्यूल किए गए अलार्म भी नहीं बजेंगे."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"शेड्यूल, अलार्म, रिमाइंडर, घड़ी"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"चालू करें"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\'परेशान न करें\' चालू करें"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"कभी नहीं"</string> @@ -547,7 +548,7 @@ <string name="user_add_profile_item_title" msgid="3111051717414643029">"प्रतिबंधित प्रोफ़ाइल"</string> <string name="user_add_user_title" msgid="5457079143694924885">"नया उपयोगकर्ता जोड़ें?"</string> <string name="user_add_user_message_long" msgid="1527434966294733380">"आप और ज़्यादा उपयोगकर्ता बनाकर इस डिवाइस को दूसरे लोगों के साथ शेयर कर सकते हैं. हर उपयोगकर्ता के पास अपनी जगह होती है, जिसमें वह मनपसंद तरीके से ऐप्लिकेशन, वॉलपेपर और दूसरी चीज़ों में बदलाव कर सकते हैं. उपयोगकर्ता वाई-फ़ाई जैसी डिवाइस सेटिंग में भी बदलाव कर सकते हैं, जिसका असर हर किसी पर पड़ेगा.\n\nजब आप कोई नया उपयोगकर्ता जोड़ते हैं तो उन्हें अपनी जगह सेट करनी होगी.\n\nकोई भी उपयोगकर्ता दूसरे सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकता है. ऐसा भी हो सकता है कि सुलभता सेटिंग और सेवाएं नए उपयोगकर्ता को ट्रांसफ़र न हो पाएं."</string> - <string name="user_add_user_message_short" msgid="3295959985795716166">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं तो उसे अपनी जगह सेट करनी होती है.\n\nकोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप अपडेट कर सकता है."</string> + <string name="user_add_user_message_short" msgid="3295959985795716166">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं, तो उसे अपनी जगह सेट करनी होती है.\n\nकोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकता है."</string> <string name="user_setup_dialog_title" msgid="8037342066381939995">"उपयोगकर्ता को अभी सेट करें?"</string> <string name="user_setup_dialog_message" msgid="269931619868102841">"पक्का करें कि व्यक्ति डिवाइस का इस्तेमाल करने और अपनी जगह सेट करने के लिए मौजूद है"</string> <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"प्रोफ़ाइल अभी सेट करें?"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"लॉक सेट करें"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> पर जाएं"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"नया उपयोगकर्ता बनाया जा रहा है…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"नया उपयोगकर्ता जोड़ा नहीं जा सका"</string> <string name="user_nickname" msgid="262624187455825083">"प्रचलित नाम"</string> <string name="guest_new_guest" msgid="3482026122932643557">"मेहमान जोड़ें"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"मेहमान हटाएं"</string> @@ -587,7 +587,7 @@ <string name="data_connection_3_5g_plus" msgid="6683055858295918170">"H+"</string> <string name="data_connection_4g" msgid="2581705503356752044">"4G"</string> <string name="data_connection_4g_plus" msgid="5194902328408751020">"4G+"</string> - <string name="data_connection_lte" msgid="7675461204366364124">"एलटीई"</string> + <string name="data_connection_lte" msgid="7675461204366364124">"LTE"</string> <string name="data_connection_lte_plus" msgid="6643158654804916653">"LTE+"</string> <string name="data_connection_carrier_wifi" msgid="8932949159370130465">"W+"</string> <string name="cell_data_off_content_description" msgid="2280700839891636498">"मोबाइल डेटा बंद है"</string> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index 82bd8aed536e..40e0a3aab950 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -155,8 +155,8 @@ <string name="running_process_item_user_label" msgid="3988506293099805796">"Korisnik: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"Postavljene su neke zadane postavke"</string> <string name="launch_defaults_none" msgid="8049374306261262709">"Nema zadanih postavki"</string> - <string name="tts_settings" msgid="8130616705989351312">"Postavke za tekst u govor"</string> - <string name="tts_settings_title" msgid="7602210956640483039">"Tekst u govor"</string> + <string name="tts_settings" msgid="8130616705989351312">"Postavke za pretvaranje teksta u govor"</string> + <string name="tts_settings_title" msgid="7602210956640483039">"Pretvaranje teksta u govor"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"Brzina govora"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"Brzina kojom se izgovara tekst"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"Visina glasa"</string> @@ -211,7 +211,7 @@ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Način otklanjanja pogrešaka kad je Wi-Fi povezan"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Pogreška"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Bežično otklanjanje pogrešaka"</string> - <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Da biste vidjeli dostupne uređaje i mogli se njima koristiti, uključite bežično otklanjanje pogrešaka"</string> + <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Da biste vidjeli i upotrebljavali dostupne uređaje, uključite bežično otklanjanje pogrešaka"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Uparivanje uređaja pomoću QR koda"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Uparivanje novih uređaja pomoću čitača QR koda"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Uparivanje uređaja pomoću koda za uparivanje"</string> @@ -275,7 +275,7 @@ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Pokreni odabir kodeka za Bluetooth Audio\nLDAC: kvaliteta reprodukcije"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Strujanje: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"Privatni DNS"</string> - <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Odaberi načina privatnog DNS-a"</string> + <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Odaberite način privatnog DNS-a"</string> <string name="private_dns_mode_off" msgid="7065962499349997041">"Isključeno"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automatski"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Naziv hosta davatelja usluge privatnog DNS-a"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Omogući konvertiranje"</string> <string name="transcode_default" msgid="3784803084573509491">"Pretpostavi da aplikacije podržavaju moderne formate"</string> <string name="transcode_notification" msgid="5560515979793436168">"Prikaži obavijesti o konvertiranju"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Onemogući predmemoriju za konvertiranje"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Pokrenute usluge"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Pregledajte i kontrolirajte pokrenute usluge"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementacija WebViewa"</string> @@ -423,7 +424,7 @@ <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Deuteranomalija (crveno – zeleno)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno – zeleno)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo – žuto)"</string> - <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcija boje"</string> + <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcija boja"</string> <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Prilagodite način prikazivanja boja na svojem uređaju. To može biti korisno kad želite:<br/><br/> <ol> <li>&nbsp;vidjeti boje točnije</li> <li>&nbsp;ukloniti boje kako biste se lakše usredotočili.</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Premošćeno postavkom <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet bi se uskoro mogao isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Uređaj bi se uskoro mogao isključiti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> do napunjenosti"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do napunjenosti"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimiziranje radi zdravlja baterije"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Nepoznato"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Punjenje"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Brzo punjenje"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Sporo punjenje"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Bežično punjenje"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ne puni se"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Uključen, trenutačno se ne može puniti"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Napunjeno"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolira administrator"</string> <string name="disabled" msgid="8017887509554714950">"Onemogućeno"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Dopušteno"</string> @@ -506,10 +505,12 @@ <string name="cancel" msgid="5665114069455378395">"Odustani"</string> <string name="okay" msgid="949938843324579502">"U redu"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi i podsjetnici"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Dopusti postavljanje alarma ili podsjetnika"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmi i podsjetnici"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Aplikaciji dopustite zakazivanje alarma ili drugih događaja koji se temelje na vremenskom rasporedu. Time će se aplikaciji omogućiti aktiviranje i pokretanje čak i dok ne koristite uređaj. Ako to dopuštenje opozovete, aplikacija bi mogla nepravilno raditi, odnosno nijedan alarm koji je zakazala neće više funkcionirati."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"raspored, alarm, podsjetnik, događaj"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Dopusti postavljanje alarma i podsjetnika"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmi i podsjetnici"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Aplikaciji omogućuje da postavlja alarme i zakazuje druge radnje. Aplikacija se može koristiti kad ne upotrebljavate telefon, što može dodatno trošiti bateriju. Ako je to dopuštenje isključeno, aplikacija možda neće funkcionirati kako treba i njezini se alarmi neće oglašavati prema rasporedu."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Aplikaciji omogućuje da postavlja alarme i zakazuje druge radnje. Aplikacija se može koristiti kad ne upotrebljavate tablet, što može dodatno trošiti bateriju. Ako je to dopuštenje isključeno, aplikacija možda neće funkcionirati kako treba i njezini se alarmi neće oglašavati prema rasporedu."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Aplikaciji omogućuje da postavlja alarme i zakazuje druge radnje. Aplikacija se može koristiti kad ne upotrebljavate uređaj, što može dodatno trošiti bateriju. Ako je to dopuštenje isključeno, aplikacija možda neće funkcionirati kako treba i njezini se alarmi neće oglašavati prema rasporedu."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"raspored, alarm, podsjetnik, sat"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Uključi"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Uključite opciju Ne uznemiravaj."</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nikada"</string> @@ -563,8 +564,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Postavi zaključavanje"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Prelazak na korisnika <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Izrada novog korisnika…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Izrada novog korisnika nije uspjela"</string> <string name="user_nickname" msgid="262624187455825083">"Nadimak"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Dodavanje gosta"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Uklanjanje gosta"</string> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index edea1405533f..8f0899700fc1 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -366,7 +366,7 @@ <string name="animator_duration_scale_title" msgid="7082913931326085176">"Animáció tempója"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Másodlagos kijelzők szimulálása"</string> <string name="debug_applications_category" msgid="5394089406638954196">"Alkalmazások"</string> - <string name="immediately_destroy_activities" msgid="1826287490705167403">"Törölje a tevékenységeket"</string> + <string name="immediately_destroy_activities" msgid="1826287490705167403">"Tevékenységek törlése"</string> <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Tevékenységek törlése, amint elhagyják azokat"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Háttérfolyamat-korlátozás"</string> <string name="show_all_anrs" msgid="9160563836616468726">"Háttérben lévő ANR-ek"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Átkódolás engedélyezése"</string> <string name="transcode_default" msgid="3784803084573509491">"Annak feltételezése, hogy az alkalmazások támogatják a modern formátumokat"</string> <string name="transcode_notification" msgid="5560515979793436168">"Átkódolási értesítések megjelenítése"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Átkódolási gyorsítótár kikapcsolása"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Futó szolgáltatások"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"A jelenleg futó szolgáltatások megtekintése és vezérlése"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-megvalósítás"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Előfordulhat, hogy a táblagép hamarosan kikapcsol (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Előfordulhat, hogy az eszköz hamarosan kikapcsol (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> a teljes töltöttségig"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> a teljes töltöttségig"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Akkumulátor-élettartam optimalizálása"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Ismeretlen"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Töltés"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Gyorstöltés"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Lassú töltés"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Vezeték nélküli töltés"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nem tölt"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Csatlakoztatva, jelenleg nem tölt"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Feltöltve"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Rendszergazda által irányítva"</string> <string name="disabled" msgid="8017887509554714950">"Letiltva"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Engedélyezett"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Mégse"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ébresztések és emlékeztetők"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Ébresztés/emlékeztető beállításának engedélyezése"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Ébresztések és emlékeztetők"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Ez az alkalmazás ütemezhet ébresztéseket és más időzítésalapú eseményeket. Ez lehetővé teszi, hogy az alkalmazás még akkor is felébredjen és fusson, amikor Ön éppen nem használja az eszközt. Az engedély visszavonása esetén előfordulhat, hogy az alkalmazás nem működik majd megfelelően. Ez különösen igaz azokra az ébresztésekre, amelyeket az alkalmazás már ütemezett."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ütemezés, ébresztés, emlékeztető, esemény"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Beállíthat ébresztéseket és emlékeztetőket"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Ébresztések és emlékeztetők"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Engedélyezheti ennek az alkalmazásnak, hogy ébresztéseket állítson be és további műveleteket ütemezzen. Ez az alkalmazás használatban lehet, amikor nem használja a telefonját, ami jobban igénybe veheti az akkumulátort. Ha ez az engedély ki van kapcsolva, előfordulhat, hogy az alkalmazás nem működik megfelelően, és az ébresztések nem működnek az ütemezésnek megfelelően."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Engedélyezheti ennek az alkalmazásnak, hogy ébresztéseket állítson be és további műveleteket ütemezzen. Ez az alkalmazás használatban lehet, amikor nem használja a táblagépét, ami jobban igénybe veheti az akkumulátort. Ha ez az engedély ki van kapcsolva, előfordulhat, hogy az alkalmazás nem működik megfelelően, és az ébresztések nem működnek az ütemezésnek megfelelően."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Engedélyezheti ennek az alkalmazásnak, hogy ébresztéseket állítson be és további műveleteket ütemezzen. Ez az alkalmazás használatban lehet, amikor nem használja az eszközét, ami jobban igénybe veheti az akkumulátort. Ha ez az engedély ki van kapcsolva, előfordulhat, hogy az alkalmazás nem működik megfelelően, és az ébresztések nem működnek az ütemezésnek megfelelően."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ütemezés, ébresztés, emlékeztető, óra"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Bekapcsolás"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"A Ne zavarjanak mód bekapcsolása"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Soha"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Képernyőzár beállítása"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Váltás erre: <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Új felhasználó létrehozása…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Az új felhasználó létrehozása sikertelen"</string> <string name="user_nickname" msgid="262624187455825083">"Becenév"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Vendég hozzáadása"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Vendég munkamenet eltávolítása"</string> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 4a7b0fe4b5b2..ea1c59a43776 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/strings.xml @@ -35,7 +35,7 @@ <string name="wifi_not_in_range" msgid="1541760821805777772">"Ընդգրկույթից դուրս է"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Չի միանա ավտոմատ"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"Ինտերնետ կապ չկա"</string> - <string name="saved_network" msgid="7143698034077223645">"Ով է պահել՝ <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="saved_network" msgid="7143698034077223645">"Պահվել է՝ <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="connected_to_metered_access_point" msgid="9179693207918156341">"Միացած է վճարովի թրաֆիկով ցանցի"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"Ավտոմատ կերպով կապակցվել է %1$s-ի միջոցով"</string> <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Ավտոմատ միացել է ցանցերի վարկանիշի մատակարարի միջոցով"</string> @@ -197,7 +197,7 @@ <string name="choose_profile" msgid="343803890897657450">"Ընտրեք պրոֆիլ"</string> <string name="category_personal" msgid="6236798763159385225">"Անձնական"</string> <string name="category_work" msgid="4014193632325996115">"Աշխատանքային"</string> - <string name="development_settings_title" msgid="140296922921597393">"Ծրագրավորողի ընտրանքներ"</string> + <string name="development_settings_title" msgid="140296922921597393">"Մշակողի ընտրանքներ"</string> <string name="development_settings_enable" msgid="4285094651288242183">"Միացնել մշակողի ընտրանքները"</string> <string name="development_settings_summary" msgid="8718917813868735095">"Կարգավորել ընտրանքները ծրագրի ծրագրավորման համար"</string> <string name="development_settings_not_available" msgid="355070198089140951">"Ծրագրավորման ընտրանքներն այլևս հասանելի չեն այս օգտատիրոջ"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Միացնել վերակոդավորումը"</string> <string name="transcode_default" msgid="3784803084573509491">"Ենթադրել, որ հավելվածներն աջակցում են ժամանակակից ձևաչափեր"</string> <string name="transcode_notification" msgid="5560515979793436168">"Ցույց տալ տրանսկոդավորման մասին ծանուցումները"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Անջատել տրանսկոդավորման քեշը"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Աշխատող ծառայություններ"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Դիտել և վերահսկել ընթացիկ աշխատող ծառայությունները"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ծառայություն"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Պլանշետը շուտով կանջատվի (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Սարքը շուտով կանջատվի (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> մինչև լրիվ լիցքավորումը"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> մինչև լրիվ լիցքավորումը"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Օպտիմալացվում է մարտկոցի պահպանման համար"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Անհայտ"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Լիցքավորում"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Արագ լիցքավորում"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Դանդաղ լիցքավորում"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Անլար լիցքավորում"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Չի լիցքավորվում"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Միացված է հոսանքին, այս պահին չի կարող լիցքավորվել"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Լիցքավորված է"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Վերահսկվում է ադմինիստրատորի կողմից"</string> <string name="disabled" msgid="8017887509554714950">"Կասեցված է"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Թույլատրված է"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Չեղարկել"</string> <string name="okay" msgid="949938843324579502">"Եղավ"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Զարթուցիչներ և հիշեցումներ"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Թույլատրել կարգավորել զարթուցիչներ և հիշեցումներ"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Զարթուցիչներ և հիշեցումներ"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Թույլ տվեք այս հավելվածին կարգավորել զարթուցիչներ և ժամանակացույցների հետ կապված այլ իրադարձություններ։ Հավելվածը կկարողանա միանալ և գործարկվել, նույնիսկ եթե չեք օգտագործում սարքը։ Նկատի ունեցեք, որ եթե չեղարկեք այս թույլտվությունը, հավելվածը կարող է աշխատել թերություններով, մասնավորապես, հավելվածի կողմից կարգավորված զարթուցիչներն այլևս չեն աշխատի։"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ժամանակացույց, զարթուցիչ, հիշեցում, իրադարձություն"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Թույլատրել զարթուցիչների/հիշեցումների կարգավորումը"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Զարթուցիչներ և հիշեցումներ"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Թույլ տվեք այս հավելվածին կարգավորել զարթուցիչներ և պլանավորել այլ գործողություններ։ Այս հավելվածը կարող է օգտագործվել այն ժամանակ, երբ դուք չեք օգտվում ձեր հեռախոսից, ինչը կարող է արագացնել մարտկոցի լիցքի սպառումը։ Եթե այս թույլտվությունն անջատված է, այս գործառույթը կարող է պատշաճ չաշխատել, իսկ զարթուցիչները պլանավորված ժամերին չեն աշխատի։"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Թույլ տվեք այս հավելվածին կարգավորել զարթուցիչներ և պլանավորել այլ գործողություններ։ Այս հավելվածը կարող է օգտագործվել այն ժամանակ, երբ դուք չեք օգտվում ձեր պլանշետից, ինչը կարող է արագացնել մարտկոցի լիցքի սպառումը։ Եթե այս թույլտվությունն անջատված է, այս գործառույթը կարող է պատշաճ չաշխատել, իսկ զարթուցիչները պլանավորված ժամերին չեն աշխատի։"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Թույլ տվեք այս հավելվածին կարգավորել զարթուցիչներ և պլանավորել այլ գործողություններ։ Այս հավելվածը կարող է օգտագործվել այն ժամանակ, երբ դուք չեք օգտվում ձեր սարքից, ինչը կարող է արագացնել մարտկոցի լիցքի սպառումը։ Եթե այս թույլտվությունն անջատված է, այս գործառույթը կարող է պատշաճ չաշխատել, իսկ զարթուցիչները պլանավորված ժամերին չեն աշխատի։"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ժամանակացույց, զարթուցիչ, հիշեցում, ժամացույց"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Միացնել"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Միացրեք «Չանհանգստացնել» ռեժիմը"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Երբեք"</string> @@ -520,7 +521,7 @@ <string name="alarm_template_far" msgid="6382760514842998629">"<xliff:g id="WHEN">%1$s</xliff:g>-ին"</string> <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"Տևողություն"</string> <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Ամեն անգամ հարցնել"</string> - <string name="zen_mode_forever" msgid="3339224497605461291">"Մինչև չանջատեք"</string> + <string name="zen_mode_forever" msgid="3339224497605461291">"Մինչև անջատեք"</string> <string name="time_unit_just_now" msgid="3006134267292728099">"Հենց նոր"</string> <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Հեռախոսի բարձրախոս"</string> <string name="media_transfer_this_phone" msgid="7194341457812151531">"Այս հեռախոսը"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Կարգավորել կողպումը"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Անցնել <xliff:g id="USER_NAME">%s</xliff:g> պրոֆիլին"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Ստեղծվում է օգտատիրոջ նոր պրոֆիլ…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Չհաջողվեց ստեղծել նոր օգտատեր"</string> <string name="user_nickname" msgid="262624187455825083">"Կեղծանուն"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Ավելացնել հյուր"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Հեռացնել հյուրին"</string> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 6c70022a25a3..20e6133f2a9c 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -117,8 +117,8 @@ <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"SAMBUNGKAN"</string> <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Batal"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Penyandingan memberi akses ke kontak dan histori panggilan saat tersambung"</string> - <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Tidak dapat menyandingkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Tidak dapat menyandingkan dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> karena PIN atau kode sandi salah."</string> + <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Tidak dapat menyambungkan ke <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Tidak dapat menyambungkan ke <xliff:g id="DEVICE_NAME">%1$s</xliff:g> karena PIN atau kode sandi salah."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Tidak dapat berkomunikasi dengan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Penyandingan ditolak oleh <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Komputer"</string> @@ -156,7 +156,7 @@ <string name="launch_defaults_some" msgid="3631650616557252926">"Beberapa setelan default"</string> <string name="launch_defaults_none" msgid="8049374306261262709">"Tidak ada setelan default"</string> <string name="tts_settings" msgid="8130616705989351312">"Setelan text-to-speech"</string> - <string name="tts_settings_title" msgid="7602210956640483039">"Keluaran text-to-speech"</string> + <string name="tts_settings_title" msgid="7602210956640483039">"Ouput text-to-speech"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"Kecepatan ucapan"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"Kecepatan teks diucapkan"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"Tinggi nada"</string> @@ -214,7 +214,7 @@ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Untuk melihat dan menggunakan perangkat yang tersedia, aktifkan proses debug nirkabel"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Sambungkan perangkat dengan kode QR"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Sambungkan perangkat baru menggunakan pemindai kode QR"</string> - <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Sambungkan perangkat dengan kode penghubung"</string> + <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Sambungkan perangkat dengan kode penyambungan"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Sambungkan perangkat baru menggunakan kode enam digit"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Perangkat disambungkan"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Saat ini tersambung"</string> @@ -253,7 +253,7 @@ <string name="wifi_verbose_logging" msgid="1785910450009679371">"Aktifkan Pencatatan Log Panjang Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Pembatasan pemindaian Wi‑Fi"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Pengacakan MAC yang ditingkatkan Wi-Fi"</string> - <string name="mobile_data_always_on" msgid="8275958101875563572">"Kuota selalu aktif"</string> + <string name="mobile_data_always_on" msgid="8275958101875563572">"Data seluler selalu aktif"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Akselerasi hardware tethering"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Tampilkan perangkat Bluetooth tanpa nama"</string> <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Nonaktifkan volume absolut"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Aktifkan transcoding"</string> <string name="transcode_default" msgid="3784803084573509491">"Asumsikan aplikasi mendukung format modern"</string> <string name="transcode_notification" msgid="5560515979793436168">"Tampilkan notifikasi transcoding"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Nonaktifkan cache transcoding"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Layanan yang sedang berjalan"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Melihat dan mengontrol layanan yang sedang berjalan"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Penerapan WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet akan segera dimatikan (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Perangkat akan segera dimatikan (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> lagi sampai penuh"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> lagi sampai penuh"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Mengoptimalkan untuk kesehatan baterai"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Tidak diketahui"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Mengisi daya"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Mengisi daya cepat"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Mengisi daya lambat"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Mengisi daya nirkabel"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Tidak mengisi daya"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Tercolok, tidak dapat mengisi baterai sekarang"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Terisi"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Dikontrol oleh admin"</string> <string name="disabled" msgid="8017887509554714950">"Dinonaktifkan"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Diizinkan"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Batal"</string> <string name="okay" msgid="949938843324579502">"Oke"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarm dan pengingat"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Izinkan untuk menyetel alarm atau pengingat"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarm dan pengingat"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Izinkan aplikasi ini menjadwalkan alarm atau acara berbasis waktu lainnya. Tindakan ini akan mengizinkan aplikasi aktif dan berjalan, meski Anda tidak menggunakan perangkat. Perlu diketahui bahwa pembatalan izin ini dapat menyebabkan aplikasi gagal berfungsi, khususnya alarm yang telah dijadwalkan oleh aplikasi tidak akan berfungsi lagi."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"jadwal, alarm, pengingat, acara"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Izinkan menyetel alarm dan pengingat"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarm & pengingat"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Izinkan aplikasi ini menyetel alarm dan menjadwalkan tindakan lainnya. Aplikasi ini dapat digunakan saat Anda tidak menggunakan ponsel, sehingga mungkin memerlukan daya baterai lebih besar. Jika izin ini dinonaktifkan, aplikasi mungkin tidak berfungsi normal dan alarmnya tidak bekerja sesuai yang dijadwalkan."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Izinkan aplikasi ini menyetel alarm dan menjadwalkan tindakan lainnya. Aplikasi ini dapat digunakan saat Anda tidak menggunakan tablet, sehingga mungkin memerlukan daya baterai lebih besar. Jika izin ini dinonaktifkan, aplikasi mungkin tidak berfungsi normal dan alarmnya tidak bekerja sesuai yang dijadwalkan."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Izinkan aplikasi ini menyetel alarm dan menjadwalkan tindakan lainnya. Aplikasi ini dapat digunakan saat Anda tidak menggunakan perangkat, sehingga mungkin memerlukan daya baterai lebih besar. Jika izin ini dinonaktifkan, aplikasi mungkin tidak berfungsi normal dan alarmnya tidak bekerja sesuai yang dijadwalkan."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"jadwal, alarm, pengingat, jam"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aktifkan"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Aktifkan mode Jangan Ganggu"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Tidak pernah"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Setel kunci"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Beralih ke <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Membuat pengguna baru …"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Gagal membuat pengguna baru"</string> <string name="user_nickname" msgid="262624187455825083">"Nama panggilan"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Tambahkan tamu"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Hapus tamu"</string> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index 541840ad973d..7d36dc9b555a 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Kveikja á umkóðun"</string> <string name="transcode_default" msgid="3784803084573509491">"Gera ráð fyrir að forrit styðji nútímasnið"</string> <string name="transcode_notification" msgid="5560515979793436168">"Sýna umkóðunartilkynningar"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Slökkva á skyndiminni umkóðunar"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Þjónustur í gangi"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Skoða og stjórna þjónustum í gangi"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Innleiðing WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Spjaldtölvan gæti slökkt á sér fljótlega (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Tækið gæti slökkt á sér fljótlega (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> fram að fullri hleðslu"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> fram að fullri hleðslu"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Fínstillir fyrir rafhlöðuendingu"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Óþekkt"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Í hleðslu"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Hröð hleðsla"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Hæg hleðsla"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Hleður þráðlaust"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ekki í hleðslu"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Í sambandi, ekki hægt að hlaða eins og er"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Fullhlaðin"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Stjórnað af kerfisstjóra"</string> <string name="disabled" msgid="8017887509554714950">"Óvirkt"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Heimilað"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Hætta við"</string> <string name="okay" msgid="949938843324579502">"Í lagi"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Vekjarar og áminningar"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Leyfa stillingu vekjara og áminninga"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Vekjarar og áminningar"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Leyfa þessu forriti að tímasetja vekjara eða aðra viðburði sem byggjast á tímasetningu. Með þessu móti getur forritið virkjast og keyrt jafnvel þótt þú sért ekki að nota tækið. Athugaðu að ef þú afturkallar þessa heimild gæti forritið hætt að virka, nánar tiltekið hætta vekjarar sem forritið hefur tímasett að virka."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"áætlun, vekjari, áminning, viðburður"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Leyfa stillingu vekjara og áminninga"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Vekjarar og áminningar"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Leyfa þessu forriti að stilla vekjara og tímasetja aðrar aðgerðir. Mögulegt er að þetta forrit verði notað þegar þú ert ekki að nota símann og því gæti rafhlaðan tæmst hraðar. Ef slökkt er á þessari heimild er óvíst að forritið starfi sem skyldi og vekjarar munu ekki fylgja áætlun."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Leyfa þessu forriti að stilla vekjara og tímasetja aðrar aðgerðir. Mögulegt er að þetta forrit verði notað þegar þú ert ekki að nota spjaldtölvuna og því gæti rafhlaðan tæmst hraðar. Ef slökkt er á þessari heimild er óvíst að forritið starfi sem skyldi og vekjarar munu ekki fylgja áætlun."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Leyfa þessu forriti að stilla vekjara og tímasetja aðrar aðgerðir. Mögulegt er að þetta forrit verði notað þegar þú ert ekki að nota tækið og því gæti rafhlaðan tæmst hraðar. Ef slökkt er á þessari heimild er óvíst að forritið starfi sem skyldi og vekjarar munu ekki fylgja áætlun."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"áætlun, vekjari, áminning, klukka"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Kveikja"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Kveikja á „Ónáðið ekki“"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Aldrei"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Velja lás"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Skipta yfir í <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Stofnar nýjan notanda…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Ekki tókst að stofna nýjan notanda"</string> <string name="user_nickname" msgid="262624187455825083">"Gælunafn"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Bæta gesti við"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Fjarlægja gest"</string> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index 58c001278c0d..b0e660e920fd 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -205,10 +205,10 @@ <string name="tethering_settings_not_available" msgid="266821736434699780">"Le impostazioni Tethering non sono disponibili per questo utente"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Le impostazioni del nome punto di accesso non sono disponibili per questo utente"</string> <string name="enable_adb" msgid="8072776357237289039">"Debug USB"</string> - <string name="enable_adb_summary" msgid="3711526030096574316">"Modalità debug quando è connesso tramite USB"</string> + <string name="enable_adb_summary" msgid="3711526030096574316">"Modalità debug in caso di connessione USB"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"Revoca autorizzazioni debug USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Debug wireless"</string> - <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Modalità debug quando il Wi-Fi è connesso"</string> + <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Modalità debug in caso di connessione Wi-Fi"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Errore"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Debug wireless"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Per trovare e utilizzare i dispositivi disponibili, attiva il debug wireless"</string> @@ -238,7 +238,7 @@ <string name="bugreport_in_power" msgid="8664089072534638709">"Scorciatoia segnalazione bug"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Mostra un pulsante per segnalare i bug nel menu di accensione"</string> <string name="keep_screen_on" msgid="1187161672348797558">"Rimani attivo"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"Lo schermo non va mai in stand-by se sotto carica"</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"Lo schermo non va mai in standby se sotto carica"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Attiva log di esame HCI Bluetooth"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Acquisisci pacchetti Bluetooth. Attiva/disattiva Bluetooth dopo aver modificato questa impostazione."</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"Sblocco OEM"</string> @@ -284,7 +284,7 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostra opzioni per la certificazione display wireless"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumenta livello di logging Wi-Fi, mostra SSID RSSI nel selettore Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Riduce il consumo della batteria e migliora le prestazioni della rete"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Quando questa modalità è attiva, l\'indirizzo MAC del dispositivo potrebbe cambiare ogni volta che si connette a una rete con randomizzazione MAC attivata."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Quando questa modalità è attiva, l\'indirizzo MAC del dispositivo potrebbe cambiare ogni volta che si connette a una rete con randomizzazione MAC attivata"</string> <string name="wifi_metered_label" msgid="8737187690304098638">"A consumo"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Non a consumo"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Dimensioni buffer logger"</string> @@ -311,14 +311,14 @@ <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Controlla che le app installate tramite ADB/ADT non abbiano un comportamento dannoso"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Verranno mostrati solo dispositivi Bluetooth senza nome (solo indirizzo MAC)"</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Disattiva la funzione del volume assoluto Bluetooth in caso di problemi con il volume dei dispositivi remoti, ad esempio un volume troppo alto o la mancanza di controllo"</string> - <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Consente di attivare lo stack delle funzionalità Bluetooth Gabeldorsche."</string> + <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Consente di attivare lo stack delle funzionalità Bluetooth Gabeldorsche"</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Consente di attivare la funzionalità Connettività migliorata."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Terminale locale"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"Abilita l\'app Terminale che offre l\'accesso alla shell locale"</string> <string name="hdcp_checking_title" msgid="3155692785074095986">"Verifica HDCP"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Comportamento di verifica HDCP"</string> <string name="debug_debugging_category" msgid="535341063709248842">"Debug"</string> - <string name="debug_app" msgid="8903350241392391766">"Seleziona l\'applicazione per il debug"</string> + <string name="debug_app" msgid="8903350241392391766">"Seleziona l\'app per il debug"</string> <string name="debug_app_not_set" msgid="1934083001283807188">"Nessuna applicazione impostata per il debug"</string> <string name="debug_app_set" msgid="6599535090477753651">"Debug dell\'applicazione: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"Seleziona applicazione"</string> @@ -360,7 +360,7 @@ <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Attiva livelli debug GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Consenti caricamento livelli debug GPU per app di debug"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Attiva log dettagliati fornitori"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Includi log aggiuntivi di fornitori relativi a un dispositivo specifico nelle segnalazioni di bug che potrebbero contenere informazioni private, causare un maggior consumo della batteria e/o utilizzare più spazio di archiviazione."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Includi log aggiuntivi di fornitori relativi a un dispositivo specifico nelle segnalazioni di bug che potrebbero contenere informazioni private, causare un maggior consumo della batteria e/o utilizzare più spazio di archiviazione"</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Scala animazione finestra"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Scala animazione transizione"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Scala durata animatore"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Attiva transcodifica"</string> <string name="transcode_default" msgid="3784803084573509491">"Presupponi che le app supportino i formati moderni"</string> <string name="transcode_notification" msgid="5560515979793436168">"Mostra notifiche relative alla transcodifica"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Disattiva memorizzazione nella cache per la transcodifica"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Servizi in esecuzione"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Visualizza e controlla i servizi attualmente in esecuzione"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementazione di WebView"</string> @@ -437,7 +438,7 @@ <string name="power_discharge_by_only_enhanced" msgid="3268796172652988877">"Ora stimata esaurimento batteria in base al tuo utilizzo: <xliff:g id="TIME">%1$s</xliff:g> circa"</string> <string name="power_discharge_by" msgid="4113180890060388350">"Ora stimata esaurimento batteria: <xliff:g id="TIME">%1$s</xliff:g> circa (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only" msgid="92545648425937000">"Ora stimata esaurimento batteria: <xliff:g id="TIME">%1$s</xliff:g> circa"</string> - <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Fino alle ore <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_discharge_by_only_short" msgid="5883041507426914446">"Fino a: <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"La batteria potrebbe esaurirsi entro le <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"Carica residua: meno di <xliff:g id="THRESHOLD">%1$s</xliff:g>"</string> <string name="power_remaining_less_than_duration" msgid="318215464914990578">"Carica residua: meno di <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> @@ -457,13 +458,14 @@ <string name="battery_info_status_charging" msgid="4279958015430387405">"In carica"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Ricarica veloce"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Ricarica lenta"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"In carica, wireless"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Non in carica"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Collegato alla corrente. Impossibile caricare al momento"</string> <string name="battery_info_status_full" msgid="1339002294876531312">"Carica"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Gestita dall\'amministratore"</string> <string name="disabled" msgid="8017887509554714950">"Disattivato"</string> - <string name="external_source_trusted" msgid="1146522036773132905">"Autorizzate"</string> - <string name="external_source_untrusted" msgid="5037891688911672227">"Non consentite"</string> + <string name="external_source_trusted" msgid="1146522036773132905">"Autorizzazione concessa"</string> + <string name="external_source_untrusted" msgid="5037891688911672227">"Autorizzazione non concessa"</string> <string name="install_other_apps" msgid="3232595082023199454">"Installa app sconosciute"</string> <string name="home" msgid="973834627243661438">"Home page Impostazioni"</string> <string-array name="battery_labels"> @@ -473,10 +475,10 @@ </string-array> <string name="charge_length_format" msgid="6941645744588690932">"<xliff:g id="ID_1">%1$s</xliff:g> fa"</string> <string name="remaining_length_format" msgid="4310625772926171089">"<xliff:g id="ID_1">%1$s</xliff:g> rimanenti"</string> - <string name="screen_zoom_summary_small" msgid="6050633151263074260">"Piccolo"</string> + <string name="screen_zoom_summary_small" msgid="6050633151263074260">"Piccole"</string> <string name="screen_zoom_summary_default" msgid="1888865694033865408">"Predefinite"</string> - <string name="screen_zoom_summary_large" msgid="4706951482598978984">"Grande"</string> - <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"Più grande"</string> + <string name="screen_zoom_summary_large" msgid="4706951482598978984">"Grandi"</string> + <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"Più grandi"</string> <string name="screen_zoom_summary_extremely_large" msgid="1438045624562358554">"Massimo"</string> <string name="screen_zoom_summary_custom" msgid="3468154096832912210">"Personalizzato (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="content_description_menu_button" msgid="6254844309171779931">"Menu"</string> @@ -502,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Annulla"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Sveglie e promemoria"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Consenti di impostare sveglie o promemoria"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Sveglie e promemoria"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Consenti a questa app di programmare sveglie o altri eventi basati sull\'orario. In questo modo potrai riattivare ed eseguire l\'app anche quando non usi il dispositivo. Tieni presente che la revoca di questa autorizzazione potrebbe causare il malfunzionamento dell\'app; in particolare, le eventuali sveglie programmate nell\'app non funzioneranno più."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"programmare, sveglia, promemoria, evento"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Consenti l\'impostazione di sveglie e promemoria"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Sveglie e promemoria"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Consenti a questa app di impostare sveglie e programmare altre azioni. Utilizzare quest\'app quando non stai usando il tuo telefono potrebbe consumare più batteria. Se questa autorizzazione è disattivata, l\'app potrebbe non funzionare normalmente e le relative sveglie potrebbero non avviarsi come programmato."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Consenti a questa app di impostare sveglie e programmare altre azioni. Utilizzare quest\'app quando non stai usando il tuo tablet potrebbe consumare più batteria. Se questa autorizzazione è disattivata, l\'app potrebbe non funzionare normalmente e le relative sveglie potrebbero non avviarsi come programmato."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Consenti a questa app di impostare sveglie e programmare altre azioni. Utilizzare quest\'app quando non stai usando il tuo dispositivo potrebbe consumare più batteria. Se questa autorizzazione è disattivata, l\'app potrebbe non funzionare normalmente e le relative sveglie potrebbero non avviarsi come programmato."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"programmare, sveglia, promemoria, orologio"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Attiva"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Attiva Non disturbare"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Mai"</string> @@ -559,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Imposta blocco"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Passa a <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Creazione nuovo utente…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Creazione nuovo utente non riuscita"</string> <string name="user_nickname" msgid="262624187455825083">"Nickname"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Aggiungi ospite"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Rimuovi ospite"</string> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index 8ab65d621ab9..9e0c4a639c7f 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -156,7 +156,7 @@ <string name="launch_defaults_some" msgid="3631650616557252926">"הוגדרו כמה ברירות מחדל"</string> <string name="launch_defaults_none" msgid="8049374306261262709">"לא הוגדרו ברירות מחדל"</string> <string name="tts_settings" msgid="8130616705989351312">"הגדרות טקסט לדיבור"</string> - <string name="tts_settings_title" msgid="7602210956640483039">"פלט טקסט לדיבור"</string> + <string name="tts_settings_title" msgid="7602210956640483039">"המרת טקסט לדיבור"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"קצב דיבור"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"המהירות שבה הטקסט נאמר"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"גובה צליל"</string> @@ -197,10 +197,10 @@ <string name="choose_profile" msgid="343803890897657450">"בחירת פרופיל"</string> <string name="category_personal" msgid="6236798763159385225">"אישי"</string> <string name="category_work" msgid="4014193632325996115">"עבודה"</string> - <string name="development_settings_title" msgid="140296922921597393">"אפשרויות מפתח"</string> - <string name="development_settings_enable" msgid="4285094651288242183">"הפעלת אפשרויות מפתח"</string> + <string name="development_settings_title" msgid="140296922921597393">"אפשרויות למפתחים"</string> + <string name="development_settings_enable" msgid="4285094651288242183">"הפעלת אפשרויות למפתחים"</string> <string name="development_settings_summary" msgid="8718917813868735095">"הגדרת אפשרויות לפיתוח אפליקציות"</string> - <string name="development_settings_not_available" msgid="355070198089140951">"אפשרויות מפתח אינן זמינות עבור משתמש זה"</string> + <string name="development_settings_not_available" msgid="355070198089140951">"אפשרויות למפתחים אינן זמינות עבור משתמש זה"</string> <string name="vpn_settings_not_available" msgid="2894137119965668920">"הגדרות VPN אינן זמינות עבור המשתמש הזה."</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"הגדרות עבור שיתוף של חיבור אינטרנט אינן זמינות עבור המשתמש הזה"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"הגדרות עבור שם נקודת גישה (APN) אינן זמינות עבור המשתמש הזה"</string> @@ -219,7 +219,7 @@ <string name="adb_paired_devices_title" msgid="5268997341526217362">"מכשירים מותאמים"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"מחובר עכשיו"</string> <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"פרטי מכשיר"</string> - <string name="adb_device_forget" msgid="193072400783068417">"אפשר לשכוח"</string> + <string name="adb_device_forget" msgid="193072400783068417">"הסרה"</string> <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"המזהה הייחודי של המכשיר: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string> <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"החיבור נכשל"</string> <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"עליך לוודא שהמכשיר <xliff:g id="DEVICE_NAME">%1$s</xliff:g> מחובר לרשת הנכונה"</string> @@ -267,7 +267,7 @@ <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"קצב דגימה של אודיו ל-Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"הפעלת Codec אודיו ל-Bluetooth\nבחירה: קצב דגימה"</string> <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"כשזה מופיע באפור, אין לזה תמיכה בטלפון או באוזניות"</string> - <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"מספר סיביות לדגימה באודיו ל-Bluetooth"</string> + <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"מספר ביטים לדגימה באודיו ל-Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"הפעלת Codec אודיו ל-Bluetooth\nבחירה: ביטים לדגימה"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"מצב של ערוץ אודיו ל-Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"הפעלת Codec אודיו ל-Bluetooth\nבחירה: מצב ערוץ"</string> @@ -275,9 +275,9 @@ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"הפעלת Codec אודיו LDAC ל-Bluetooth\nבחירה: איכות נגינה"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"סטרימינג: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"DNS פרטי"</string> - <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"יש לבחור במצב DNS פרטי"</string> + <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"בחירת מצב של DNS פרטי"</string> <string name="private_dns_mode_off" msgid="7065962499349997041">"מושבת"</string> - <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"באופן אוטומטי"</string> + <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"אוטומטי"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"שם מארח של ספק DNS פרטי"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"צריך להזין את שם המארח של ספק DNS"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"לא ניתן היה להתחבר"</string> @@ -285,7 +285,7 @@ <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"העלאת רמת הרישום של Wi‑Fi ביומן, הצגה לכל SSID RSSI ב-Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"אפשרות זו מפחיתה את קצב התרוקנות הסוללה ומשפרת את ביצועי הרשת"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"כשמצב זה מופעל, כתובת ה-MAC של המכשיר הזה עשויה להשתנות בכל פעם שהוא מתחבר לרשת שפועלת בה רנדומיזציה של כתובות MAC."</string> - <string name="wifi_metered_label" msgid="8737187690304098638">"נמדדת"</string> + <string name="wifi_metered_label" msgid="8737187690304098638">"חיוב לפי שימוש בנתונים"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"לא נמדדת"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"גודלי מאגר של יומן רישום"</string> <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"יש לבחור גדלים של יוצר יומן לכל מאגר יומן"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"הפעלת המרת קידוד"</string> <string name="transcode_default" msgid="3784803084573509491">"הנחת העבודה היא שאפליקציות תומכות בפורמטים מודרניים"</string> <string name="transcode_notification" msgid="5560515979793436168">"הצגת התראות לגבי המרת קידוד"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"השבתת השמירה של המרת הקידוד במטמון"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"שירותים פועלים"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"הצגת השירותים הפועלים כעת ושליטה בהם"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"יישום WebView"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"הטאבלט עלול להיכבות בקרוב (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"המכשיר עלול להיכבות בקרוב (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"הזמן הנותר לטעינה מלאה: <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – הזמן הנותר לטעינה מלאה: <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> ﹣ מופעל מיטוב לשמירה על תקינות הסוללה"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"לא ידוע"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"בטעינה"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"הסוללה נטענת מהר"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"הסוללה נטענת לאט"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"בטעינה אלחוטית"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"לא בטעינה"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"המכשיר מחובר, אבל לא ניתן לטעון עכשיו"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"הסוללה טעונה"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"נמצא בשליטת מנהל מערכת"</string> <string name="disabled" msgid="8017887509554714950">"מושבת"</string> <string name="external_source_trusted" msgid="1146522036773132905">"מורשה"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"לא מורשה"</string> - <string name="install_other_apps" msgid="3232595082023199454">"להתקין גם אם לא מוכר לך?"</string> + <string name="install_other_apps" msgid="3232595082023199454">"התקנת אפליקציות לא מוכרות"</string> <string name="home" msgid="973834627243661438">"דף הבית של ההגדרות"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0%"</item> @@ -507,10 +506,12 @@ <string name="cancel" msgid="5665114069455378395">"ביטול"</string> <string name="okay" msgid="949938843324579502">"אישור"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"השכמות ותזכורות"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"מאפשרת להגדיר השכמות ותזכורות"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"השכמות ותזכורות"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"הגדרה זו מתירה לאפליקציה לתזמן השכמות או אירועים אחרים הניתנים לתזמון. ההגדרה תאפשר לאפליקציה לצאת ממצב שינה ולפעול גם כשהמכשיר לא בשימוש. לתשומת ליבך, ביטול ההרשאה הזאת עלול לגרום לתקלה באפליקציה, כמו השכמות מתוזמנות שלא יפעלו יותר."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"תזמון, השכמה, תזכורת, אירוע"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"הרשאה להגדרה של שעונים מעוררים ותזכורות"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"שעונים מעוררים ותזכורות"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"הגדרה זו מתירה לאפליקציה להגדיר שעון מעורר ולתזמן אירועים אחרים. ייתכן שהאפליקציה תפעל גם כשלא נעשה שימוש בטלפון שלך, ולכן תגביר את צריכת הסוללה. אם ההרשאה הזו תושבת, ייתכן שהאפליקציה לא תפעל כראוי ושהשעונים המעוררים לא יפעלו כפי שתוזמנו."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"הגדרה זו מתירה לאפליקציה להגדיר שעון מעורר ולתזמן אירועים אחרים. ייתכן שהאפליקציה תפעל גם כשלא נעשה שימוש בטאבלט שלך, ולכן תגביר את צריכת הסוללה. אם ההרשאה הזו תושבת, ייתכן שהאפליקציה לא תפעל כראוי ושהשעונים המעוררים לא יפעלו כפי שתוזמנו."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"הגדרה זו מתירה לאפליקציה להגדיר שעון מעורר ולתזמן אירועים אחרים. ייתכן שהאפליקציה תפעל גם כשלא נעשה שימוש במכשיר שלך, ולכן תגביר את צריכת הסוללה. אם ההרשאה הזו תושבת, ייתכן שהאפליקציה לא תפעל כראוי ושהשעונים המעוררים לא יפעלו כפי שתוזמנו."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"תזמון, שעון מעורר, תזכורת, שעון"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"הפעלה"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"הפעלת מצב נא לא להפריע"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"אף פעם"</string> @@ -524,7 +525,7 @@ <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"יש לשאול בכל פעם"</string> <string name="zen_mode_forever" msgid="3339224497605461291">"עד הכיבוי"</string> <string name="time_unit_just_now" msgid="3006134267292728099">"הרגע"</string> - <string name="media_transfer_this_device_name" msgid="2716555073132169240">"רמקול של טלפון"</string> + <string name="media_transfer_this_device_name" msgid="2716555073132169240">"רמקול של הטלפון"</string> <string name="media_transfer_this_phone" msgid="7194341457812151531">"הטלפון הזה"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"יש בעיה בחיבור. עליך לכבות את המכשיר ולהפעיל אותו מחדש"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"התקן אודיו חוטי"</string> @@ -564,8 +565,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"הגדרת נעילה"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"מעבר אל <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"בתהליך יצירה של משתמש חדש…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"לא ניתן היה ליצור משתמש חדש"</string> <string name="user_nickname" msgid="262624187455825083">"כינוי"</string> <string name="guest_new_guest" msgid="3482026122932643557">"הוספת אורח"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"הסרת אורח"</string> diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml index f67d825d27c8..ff5f3c227a82 100644 --- a/packages/SettingsLib/res/values-ja/arrays.xml +++ b/packages/SettingsLib/res/values-ja/arrays.xml @@ -54,9 +54,9 @@ <item msgid="9048424957228926377">"常にチェック"</item> </string-array> <string-array name="hdcp_checking_summaries"> - <item msgid="4045840870658484038">"HDCPチェックを使用しない"</item> - <item msgid="8254225038262324761">"DRMコンテンツにのみHDCPチェックを使用する"</item> - <item msgid="6421717003037072581">"HDCPチェックを常に使用する"</item> + <item msgid="4045840870658484038">"HDCP チェックを使用しない"</item> + <item msgid="8254225038262324761">"DRM コンテンツにのみ HDCP チェックを使用する"</item> + <item msgid="6421717003037072581">"HDCP チェックを常に使用する"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> <item msgid="695678520785580527">"無効"</item> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index 19efad69c37e..4b484e54c11b 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -31,11 +31,11 @@ <string name="wifi_disabled_password_failure" msgid="6892387079613226738">"認証に問題"</string> <string name="wifi_cant_connect" msgid="5718417542623056783">"接続できません"</string> <string name="wifi_cant_connect_to_ap" msgid="3099667989279700135">"「<xliff:g id="AP_NAME">%1$s</xliff:g>」に接続できません"</string> - <string name="wifi_check_password_try_again" msgid="8817789642851605628">"パスワードを確認して、もう一度お試しください"</string> + <string name="wifi_check_password_try_again" msgid="8817789642851605628">"パスワードを再確認してください"</string> <string name="wifi_not_in_range" msgid="1541760821805777772">"圏外"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"自動的に接続されません"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"インターネット接続なし"</string> - <string name="saved_network" msgid="7143698034077223645">"<xliff:g id="NAME">%1$s</xliff:g>で保存"</string> + <string name="saved_network" msgid="7143698034077223645">"<xliff:g id="NAME">%1$s</xliff:g>により保存"</string> <string name="connected_to_metered_access_point" msgid="9179693207918156341">"従量制ネットワークに接続しました"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"%1$s 経由で自動的に接続しています"</string> <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"ネットワーク評価プロバイダ経由で自動的に接続しています"</string> @@ -213,7 +213,7 @@ <string name="adb_wireless_settings" msgid="2295017847215680229">"ワイヤレス デバッグ"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"利用可能なデバイスを確認して使用するには、ワイヤレス デバッグを ON にしてください"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR コードによるデバイスのペア設定"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR コードスキャナを使って新しいデバイスをペア設定します"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR コードをスキャンして新しいデバイスをペア設定します"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"ペア設定コードによるデバイスのペア設定"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"6 桁のコードを使って新しいデバイスをペア設定します"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"ペア設定済みのデバイス"</string> @@ -284,7 +284,7 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ワイヤレス ディスプレイ認証のオプションを表示"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi-Fi ログレベルを上げて、Wi-Fi 選択ツールで SSID RSSI ごとに表示します"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"電池の消耗が軽減され、ネットワーク パフォーマンスが改善されます"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"このモードが有効な場合、このデバイスは、MAC アドレスのランダム化が有効なネットワークに接続するたびに MAC アドレスが変わる可能性があります。"</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"ON にすると、MAC アドレスのランダム化が有効なネットワークに接続するたびに、このデバイスの MAC アドレスが変わる可能性があります。"</string> <string name="wifi_metered_label" msgid="8737187690304098638">"従量制"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"定額制"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ログバッファのサイズ"</string> @@ -298,7 +298,7 @@ <string name="allow_mock_location" msgid="2102650981552527884">"擬似ロケーションを許可"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"擬似ロケーションを許可する"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"表示属性検査を有効にする"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Wi‑Fiが(ネットワークの自動切り替えで)ONのときでもモバイルデータが常にONになります。"</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"ネットワークの切替速度を向上させるため、Wi‑Fi の利用時でもモバイルデータを常に ON にします。"</string> <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"テザリング時にハードウェア アクセラレーションを使用します(使用可能な場合)"</string> <string name="adb_warning_title" msgid="7708653449506485728">"USB デバッグを許可しますか?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"USB デバッグは開発専用に設計されています。パソコンとデバイスの間でデータをコピーする場合や、アプリを通知なしでデバイスにインストールする場合、ログデータを読み取る場合に使用できます。"</string> @@ -307,7 +307,7 @@ <string name="adb_keys_warning_message" msgid="2968555274488101220">"以前に許可したすべてのパソコンからの USB デバッグへのアクセスを取り消しますか?"</string> <string name="dev_settings_warning_title" msgid="8251234890169074553">"開発用の設定を許可しますか?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"これらの設定は開発専用に設計されています。そのためデバイスやデバイス上のアプリが故障したり正常に動作しなくなったりするおそれがあります。"</string> - <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"USB経由のアプリを確認"</string> + <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"USB 経由のアプリも検証"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"ADB/ADT経由でインストールされたアプリに不正な動作がないかを確認する"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth デバイスを名前なしで(MAC アドレスのみで)表示します"</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"リモートデバイスで音量に関する問題(音量が大きすぎる、制御できないなど)が発生した場合に、Bluetooth の絶対音量の機能を無効にする"</string> @@ -315,8 +315,8 @@ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"接続強化機能を有効にします。"</string> <string name="enable_terminal_title" msgid="3834790541986303654">"ローカルターミナル"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"ローカルシェルアクセスを提供するターミナルアプリを有効にします"</string> - <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCPチェック"</string> - <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCPチェック動作を設定"</string> + <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP チェック"</string> + <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP チェック動作を設定"</string> <string name="debug_debugging_category" msgid="535341063709248842">"デバッグ"</string> <string name="debug_app" msgid="8903350241392391766">"デバッグアプリを選択"</string> <string name="debug_app_not_set" msgid="1934083001283807188">"デバッグアプリケーションが設定されていません"</string> @@ -341,10 +341,10 @@ <string name="show_hw_screen_updates" msgid="2021286231267747506">"画面の更新を表示"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"描画時にウィンドウ内の表示を点滅させる"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"ハードウェア層の更新を表示"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"ハードウェア層が更新されると緑色に点滅する"</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"更新されたハードウェア層を緑で点滅させる"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPUオーバードローをデバッグ"</string> - <string name="disable_overlays" msgid="4206590799671557143">"HWオーバーレイを無効化"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"画面合成に常にGPUを使用する"</string> + <string name="disable_overlays" msgid="4206590799671557143">"HW オーバーレイを無効化"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"画面合成に常に GPU を使用する"</string> <string name="simulate_color_space" msgid="1206503300335835151">"色空間シミュレート"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGLトレースを有効化"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USBオーディオルーティングを無効化"</string> @@ -353,21 +353,21 @@ <string name="debug_layout_summary" msgid="8825829038287321978">"クリップの境界線、マージンなどを表示"</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTLレイアウト方向を使用"</string> <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"すべての言語/地域で画面レイアウト方向をRTLに設定"</string> - <string name="force_msaa" msgid="4081288296137775550">"4x MSAAを適用"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0アプリで4x MSAAを有効にする"</string> + <string name="force_msaa" msgid="4081288296137775550">"4x MSAA を適用"</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 アプリで 4x MSAA を有効にする"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"非矩形クリップ操作をデバッグ"</string> <string name="track_frame_time" msgid="522674651937771106">"HWUI レンダリングのプロファイル作成"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU デバッグレイヤの有効化"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"デバッグアプリに GPU デバッグレイヤの読み込みを許可"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ベンダーの詳細なロギングを有効にする"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"バグレポートには、その他のデバイス固有のベンダーログが含まれます。これには、非公開の情報が含まれることがあります。また、電池やストレージの使用量が増えることもあります。"</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"バグレポートには、その他のデバイス固有のベンダーログが含まれます。これには、非公開の情報が含まれることがあります。また、バッテリーやストレージの使用量が増えることもあります。"</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"ウィンドウアニメスケール"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"トランジションアニメスケール"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator再生時間スケール"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"2次画面シミュレート"</string> <string name="debug_applications_category" msgid="5394089406638954196">"アプリ"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"アクティビティを保持しない"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ユーザーが離れたアクティビティを直ちに破棄する"</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ユーザーが離れたアクティビティをただちに破棄します"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"バックグラウンドプロセスの上限"</string> <string name="show_all_anrs" msgid="9160563836616468726">"バックグラウンド ANR の表示"</string> <string name="show_all_anrs_summary" msgid="8562788834431971392">"バックグラウンド アプリが応答しない場合にダイアログを表示"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"コード変換を有効にする"</string> <string name="transcode_default" msgid="3784803084573509491">"アプリによる最新形式のサポートを想定"</string> <string name="transcode_notification" msgid="5560515979793436168">"コード変換に関する通知の表示"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"コード変換のキャッシュを無効にする"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"実行中のサービス"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"現在実行中のサービスを表示して制御する"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView の実装"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"タブレットの電源がもうすぐ切れます(<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"デバイスの電源がもうすぐ切れます(<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"完了まであと <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - 完了まであと <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - 電池の状態を最適化"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"不明"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"充電中"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"急速充電中"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"低速充電中"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"ワイヤレス充電中"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"充電していません"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"接続されていますが、現在、充電できません"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"充電が完了しました"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"管理者により管理されています"</string> <string name="disabled" msgid="8017887509554714950">"無効"</string> <string name="external_source_trusted" msgid="1146522036773132905">"許可"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"キャンセル"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"アラームとリマインダー"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"アラームやリマインダーの設定を許可"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"アラームとリマインダー"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"このアプリに、アラームやその他のタイミング ベースのイベントをスケジュールすることを許可します。これにより、ユーザーがデバイスを使用していないときでも、アプリが復帰して実行できるようになります。この権限を取り消すと、アプリの動作不良が発生することがあります。特に、アプリがスケジュールしたアラームはすべて動作しなくなります。"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"スケジュール, アラーム, リマインダー, イベント"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"アラームとリマインダーの設定を許可する"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"アラームとリマインダー"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"このアプリに、アラームの設定やその他のアクションのスケジュールを許可します。このアプリは、スマートフォンを使用していないときも使用される可能性があるため、バッテリーの使用量が増えることがあります。この権限が OFF の場合、このアプリは正常に機能しない可能性があり、アラームはスケジュールどおりに動作しません。"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"このアプリに、アラームの設定やその他のアクションのスケジュールを許可します。このアプリは、タブレットを使用していないときも使用される可能性があるため、バッテリーの使用量が増えることがあります。この権限が OFF の場合、このアプリは正常に機能しない可能性があり、アラームはスケジュールどおりに動作しません。"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"このアプリに、アラームの設定やその他のアクションのスケジュールを許可します。このアプリは、デバイスを使用していないときも使用される可能性があるため、バッテリーの使用量が増えることがあります。この権限が OFF の場合、このアプリは正常に機能しない可能性があり、アラームはスケジュールどおりに動作しません。"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"スケジュール, アラーム, リマインダー, 時計"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ON にする"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"サイレント モードを ON にする"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"なし"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"ロックを設定"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> に切り替え"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"新しいユーザーを作成しています…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"新しいユーザーを作成できませんでした"</string> <string name="user_nickname" msgid="262624187455825083">"ニックネーム"</string> <string name="guest_new_guest" msgid="3482026122932643557">"ゲストを追加"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"ゲストを削除"</string> diff --git a/packages/SettingsLib/res/values-ka/arrays.xml b/packages/SettingsLib/res/values-ka/arrays.xml index ecfe93f33acc..327a77f62496 100644 --- a/packages/SettingsLib/res/values-ka/arrays.xml +++ b/packages/SettingsLib/res/values-ka/arrays.xml @@ -231,7 +231,7 @@ <item msgid="7346816300608639624">"720p, 1080p (ორმაგი ეკრანი)"</item> </string-array> <string-array name="enable_opengl_traces_entries"> - <item msgid="4433736508877934305">"არც ერთი"</item> + <item msgid="4433736508877934305">"არცერთი"</item> <item msgid="9140053004929079158">"Logcat"</item> <item msgid="3866871644917859262">"Systrace (გრაფიკა)"</item> <item msgid="7345673972166571060">"გამოძახებების სია glGetError-ზე"</item> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index ef1110ec33b2..cc30ccea15d8 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ტრანსკოდირების ჩართვა"</string> <string name="transcode_default" msgid="3784803084573509491">"დაშვება, რომ აპებს აქვთ თანამედროვე ფორმატების მხარდაჭერა"</string> <string name="transcode_notification" msgid="5560515979793436168">"ტრანსკოდირების შეტყობინებების ჩვენება"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ტრანსკოდირების ქეშის გათიშვა"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"მიმდინარე სერვისები"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"ამჟამად მოქმედი სერვისების ნახვა და მართვა"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView რეალიზაცია"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ტაბლეტი შეიძლება მალე გაითიშოს (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"მოწყობილობა შეიძლება მალე გაითიშოს (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"სრულ დატენვამდე დარჩენილია <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> — სრულ დატენვამდე დარჩენილია <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> — ოპტიმიზაცია ბატარეის გამართულობისთვის"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"უცნობი"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"იტენება"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"სწრაფად იტენება"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"ნელა იტენება"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"უსადენოდ დატენა"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"არ იტენება"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"მიერთებულია, დატენვა ამჟამად ვერ ხერხდება"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"დატენილია"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"იმართება ადმინისტრატორის მიერ"</string> <string name="disabled" msgid="8017887509554714950">"გამორთული"</string> <string name="external_source_trusted" msgid="1146522036773132905">"დაშვებულია"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"გაუქმება"</string> <string name="okay" msgid="949938843324579502">"კარგი"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"მაღვიძარები და შეხსენებები"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"მაღვიძარებისა და შეხსენებების დაყენების დაშვება"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"მაღვიძარები და შეხსენებები"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"ამ აპს საშუალებას მისცემს, შეიტანოს განრიგში მაღვიძარები ან დროზე დაფუძნებული სხვა მოვლენები. ეს აპს საშუალებას მისცემს, გაიღვიძოს და გაიშვას, თუნდაც იმ მომენტში მოწყობილობით არ სარგებლობდეთ. გაითვალისწინეთ, რომ ამ ნებართვის გაუქმებამ შეიძლება აპის გაუმართაობა გამოიწვიოს, კონკრეტულად, აპის მიერ განრიგში შეტანილი არცერთი მაღვიძარა აღარ იმუშავებს."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"განრიგი, მაღვიძარა, შეხსენება, მოვლენა"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"დაუშვით მაღვიძარების და შეხსენებების დაყენება"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"მაღვიძარები და შეხსენებები"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"საშუალება მიეცით ამ აპს, დააყენოს მაღვიძარა და დაგეგმოს სხვა მოქმედებები. ამ აპის გამოყენება შესაძლებელია მაშინაც, როცა ტელეფონს არ იყენებთ, რადგან ის მეტ ენერგიას ხარჯავს. თუ ეს ნებართვა გამორთულია, აპმა და მაღვიძარამ შეიძლება სათანადოდ ვერ იმუშაონ."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"საშუალება მიეცით ამ აპს, დააყენოს მაღვიძარა და დაგეგმოს სხვა მოქმედებები. ამ აპის გამოყენება შესაძლებელია მაშინაც, როცა ტაბლეტს არ იყენებთ, რადგან ის მეტ ენერგიას ხარჯავს. თუ ეს ნებართვა გამორთულია, აპმა და მაღვიძარამ შეიძლება სათანადოდ ვერ იმუშაონ."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"საშუალება მიეცით ამ აპს, დააყენოს მაღვიძარა და დაგეგმოს სხვა მოქმედებები. ამ აპის გამოყენება შესაძლებელია მაშინაც, როცა მოწყობილობას არ იყენებთ, რადგან ის მეტ ენერგიას ხარჯავს. თუ ეს ნებართვა გამორთულია, აპმა და მაღვიძარამ შეიძლება სათანადოდ ვერ იმუშაონ."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"განრიგი, მაღვიძარა, შეხსენება, საათი"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ჩართვა"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"„არ შემაწუხოთ“ რეჟიმის ჩართვა"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"არასოდეს"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"საკეტის დაყენება"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g>-ზე გადართვა"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"მიმდინარეობს ახალი მომხმარებლის შექმნა…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"ახალი მომხმარებლის შექმნა ვერ მოხერხდა"</string> <string name="user_nickname" msgid="262624187455825083">"მეტსახელი"</string> <string name="guest_new_guest" msgid="3482026122932643557">"სტუმრის დამატება"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"სტუმრის ამოშლა"</string> diff --git a/packages/SettingsLib/res/values-kk/arrays.xml b/packages/SettingsLib/res/values-kk/arrays.xml index f3e396687825..28f91dab214e 100644 --- a/packages/SettingsLib/res/values-kk/arrays.xml +++ b/packages/SettingsLib/res/values-kk/arrays.xml @@ -217,7 +217,7 @@ <item msgid="2464080977843960236">"Анимация өлшемі 10x"</item> </string-array> <string-array name="overlay_display_devices_entries"> - <item msgid="4497393944195787240">"Ешқандай"</item> + <item msgid="4497393944195787240">"Жоқ"</item> <item msgid="8461943978957133391">"480p"</item> <item msgid="6923083594932909205">"480p (қауіпсіз)"</item> <item msgid="1226941831391497335">"720p"</item> @@ -231,7 +231,7 @@ <item msgid="7346816300608639624">"720p, 1080p (қос экранды)"</item> </string-array> <string-array name="enable_opengl_traces_entries"> - <item msgid="4433736508877934305">"Ешқандай"</item> + <item msgid="4433736508877934305">"Жоқ"</item> <item msgid="9140053004929079158">"Logcat"</item> <item msgid="3866871644917859262">"Systrace (Графика)"</item> <item msgid="7345673972166571060">"glGetError қоңыраулар тізімі"</item> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index 0a9db64a3248..97101f773755 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -21,7 +21,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="wifi_fail_to_scan" msgid="2333336097603822490">"Желілерді шолу мүмкін емес"</string> - <string name="wifi_security_none" msgid="7392696451280611452">"Ешқандай"</string> + <string name="wifi_security_none" msgid="7392696451280611452">"Жоқ"</string> <string name="wifi_remembered" msgid="3266709779723179188">"Сақталды"</string> <string name="wifi_disconnected" msgid="7054450256284661757">"Ажыратылған"</string> <string name="wifi_disabled_generic" msgid="2651916945380294607">"Өшірілген"</string> @@ -87,13 +87,13 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Файл жіберу"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Кіріс құрылғысы"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Интернетке қосылу"</string> - <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"Контактіні бөлісу"</string> + <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"Контакт бөлісу"</string> <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"Контактіні бөлісу үшін пайдалану"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Интернет байланысын ортақ қолдану"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Мәтіндік хабарлар"</string> <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM картасына кіру"</string> - <string name="bluetooth_profile_a2dp_high_quality" msgid="4739440941324792775">"HD форматты аудиомазмұн: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> - <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"HD форматты аудиомазмұн"</string> + <string name="bluetooth_profile_a2dp_high_quality" msgid="4739440941324792775">"HD форматты аудио: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> + <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"HD форматты аудио"</string> <string name="bluetooth_profile_hearing_aid" msgid="58154575573984914">"Есту аппараттары"</string> <string name="bluetooth_hearing_aid_profile_summary_connected" msgid="8191273236809964030">"Есту аппараттарына жалғанған"</string> <string name="bluetooth_a2dp_profile_summary_connected" msgid="7422607970115444153">"Медиа аудиосына жалғанған"</string> @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Бас тарту"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Жұптасқан кезде, контактілеріңіз бен қоңыраулар тарихын көру мүмкіндігі беріледі."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> жұпталу орындалмады."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысымен жұптала алмады, себебі PIN немесе кілтсөз дұрыс емес."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысымен жұптаса алмады, себебі PIN немесе құпия сөз дұрыс емес."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысымен қатынаса алмайды"</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> құрылғысы жұпталудан бас тартты."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Компьютер"</string> @@ -140,7 +140,7 @@ <string name="accessibility_wifi_signal_full" msgid="7165262794551355617">"Wi-Fi сигналы толық."</string> <string name="accessibility_wifi_security_type_none" msgid="162352241518066966">"Ашық желі"</string> <string name="accessibility_wifi_security_type_secured" msgid="2399774097343238942">"Қауіпсіз желі"</string> - <string name="process_kernel_label" msgid="950292573930336765">"Android операциялық жүйесі"</string> + <string name="process_kernel_label" msgid="950292573930336765">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"Алынған қолданбалар"</string> <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"Алынған қолданбалар және пайдаланушылар"</string> <string name="data_usage_ota" msgid="7984667793701597001">"Жүйелік жаңарту"</string> @@ -238,20 +238,20 @@ <string name="bugreport_in_power" msgid="8664089072534638709">"Қате туралы хабарлау"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Қуат мәзірінде қате туралы хабарлауға арналған түймені көрсету"</string> <string name="keep_screen_on" msgid="1187161672348797558">"Ояу тұру"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"Зарядтау кезінде экран ұйықтамайды"</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"Зарядтау кезінде экран өшпейді."</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Bluetooth HCI қадағалау журналын қосу"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Bluetooth пакеттерін алу (осы параметрді өзгерткен соң, Bluetooth-ды қосыңыз немесе өшіріңіз)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM құлып ашу функциясы"</string> - <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Жүктеуші бекітпесін ашуға рұқсат ету"</string> + <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Операциялық жүйені жүктеу құралының құлпыy ашуға рұқсат ету"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"OEM бекітпесін ашуға рұқсат ету керек пе?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ЕСКЕРТУ: осы параметр қосулы кезде, құрылғыны қорғау мүмкіндіктері жұмыс істемейді."</string> - <string name="mock_location_app" msgid="6269380172542248304">"Жалған орын қолданбасын таңдау"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"Ешқандай жалған орын қолданбасы орнатылмаған"</string> - <string name="mock_location_app_set" msgid="4706722469342913843">"Жалған орын қолданбасы: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> + <string name="mock_location_app" msgid="6269380172542248304">"Жалған локация қолданбасын таңдау"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"Ешқандай жалған локация қолданбасы орнатылмаған"</string> + <string name="mock_location_app_set" msgid="4706722469342913843">"Жалған локация қолданбасы: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Желі орнату"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Сымсыз дисплей сертификаты"</string> - <string name="wifi_verbose_logging" msgid="1785910450009679371">"Wi‑Fi егжей-тегжейлі журналы"</string> - <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi іздеуін шектеу"</string> + <string name="wifi_verbose_logging" msgid="1785910450009679371">"Толық мәліметті Wi‑Fi журналы"</string> + <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi желілерін іздеуді шектеу"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi жақсартылған MAC рандомизациясы"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Мобильдік интернет әрқашан қосулы"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Тетеринг режиміндегі аппараттық жеделдету"</string> @@ -285,13 +285,13 @@ <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi тіркеу деңгейін арттыру, Wi‑Fi таңдағанда әр SSID RSSI бойынша көрсету"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Батарея зарядының шығынын азайтады және желі жұмысын жақсартады."</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Бұл режим қосулы болса, құрылғының MAC мекенжайы MAC рандомизациясы қосулы желіге жалғанған сайын өзгеруі мүмкін."</string> - <string name="wifi_metered_label" msgid="8737187690304098638">"Трафик саналады"</string> + <string name="wifi_metered_label" msgid="8737187690304098638">"Трафик саналатын желі"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Трафик саналмайды"</string> - <string name="select_logd_size_title" msgid="1604578195914595173">"Журналға тіркеуші буферінің өлшемдері"</string> + <string name="select_logd_size_title" msgid="1604578195914595173">"Журнал буферінің өлшемдері"</string> <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Әр журнал буфері үшін журналға тіркеуші өлшемдерін таңдау"</string> <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"Тіркеуіштің тұрақты жадын тазарту керек пе?"</string> <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"Тұрақты тіркеуішпен бақылауды тоқтатқаннан кейін, құрылғыңыздағы ол сақтаған деректертің бәрін жоюымыз керек."</string> - <string name="select_logpersist_title" msgid="447071974007104196">"Тіркеуіш деректерін құрылғыға тұрақты түрде сақтау"</string> + <string name="select_logpersist_title" msgid="447071974007104196">"Журнал дерегін құрылғыға ұдайы сақтап отыру"</string> <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"Журнал буферлерін таңдап, құрылғыңызда тұрақты түрде сақтау"</string> <string name="select_usb_configuration_title" msgid="6339801314922294586">"USB конфигурациясын таңдау"</string> <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"USB конфигурациясын таңдау"</string> @@ -315,17 +315,17 @@ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Жетілдірілген байланыс функциясын қосады."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Жергілікті терминал"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"Жергілікті шелл-код қол жетімділігін ұсынатын терминалды қолданбаны қосу"</string> - <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP тексеру"</string> + <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP тексерісі"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP (кең жолақты сандық мазмұн қорғау) тексеру мүмкіндігін орнату"</string> <string name="debug_debugging_category" msgid="535341063709248842">"Түзету"</string> - <string name="debug_app" msgid="8903350241392391766">"Жөндеу қолданбасын таңдау"</string> + <string name="debug_app" msgid="8903350241392391766">"Түзету қолданбасын таңдау"</string> <string name="debug_app_not_set" msgid="1934083001283807188">"Жөндеу қолданбалары орнатылмаған"</string> <string name="debug_app_set" msgid="6599535090477753651">"Түзету қолданбасы: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"Қолданба таңдау"</string> <string name="no_application" msgid="9038334538870247690">"Ешнәрсе"</string> - <string name="wait_for_debugger" msgid="7461199843335409809">"Жөндеушіні күту"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Орындау алдында жөнделетін қолданба жөндеушіні күтеді"</string> - <string name="debug_input_category" msgid="7349460906970849771">"Кіріс"</string> + <string name="wait_for_debugger" msgid="7461199843335409809">"Түзеткішті күту"</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Орындау алдында түзелетін қолданба түзетушінің қосылуын күтеді"</string> + <string name="debug_input_category" msgid="7349460906970849771">"Енгізу"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"Сызу"</string> <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Бейнелеуді аппараттық жеделдету"</string> <string name="media_category" msgid="8122076702526144053">"Meдиа"</string> @@ -338,11 +338,11 @@ <string name="show_touches_summary" msgid="3692861665994502193">"Түрту қимылын экраннан көрсету"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Бедердің жаңарғанын көрсету"</string> <string name="show_screen_updates_summary" msgid="2126932969682087406">"Бедері жаңарғанда, терезені түгелдей жыпылықтату"</string> - <string name="show_hw_screen_updates" msgid="2021286231267747506">"Көру аумағын жаңартуды көрсету"</string> - <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Терезелерде жаңартылған аумақтарды жарықтандыру"</string> + <string name="show_hw_screen_updates" msgid="2021286231267747506">"Көріністің жаңарғанын көрсету"</string> + <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Терезелерде сызылған аумақтарды жыпылықтату"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Аппараттық қабат жаңартуларын көрсету"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Жаңартылғанда, аппараттық қабаттарды жасылмен жыпылықтату"</string> - <string name="debug_hw_overdraw" msgid="8944851091008756796">"Үстінен бастырылғанды жөндеу"</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Жаңарғанда аппараттық қабаттарды жасыл қылу"</string> + <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU-мен қабаттасуды түзету"</string> <string name="disable_overlays" msgid="4206590799671557143">"Аппараттық қабаттасуды өшіру"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"Экранды жасақтау үшін әрқашан GPU қолдану"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Түстер кеңістігінің симуляциясы"</string> @@ -355,11 +355,11 @@ <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Экранның орналасу бағытын барлық тілдер үшін оңнан солға қарату"</string> <string name="force_msaa" msgid="4081288296137775550">"4x MSAA қолдану"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"4x MSAA функциясын OpenGL ES 2.0 қолданбаларында іске қосу"</string> - <string name="show_non_rect_clip" msgid="7499758654867881817">"Тіктөртбұрышты емес қию қимылдарын жөндеу"</string> + <string name="show_non_rect_clip" msgid="7499758654867881817">"Тіктөртбұрыштан басқа пішінге қиюды түзету"</string> <string name="track_frame_time" msgid="522674651937771106">"Профиль бойынша HWUI рендерингі"</string> - <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU жөндеу қабаттарын қосу"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU жөндеу қабаттарының жүктелуіне рұқсат ету"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Жеткізушілерді журналға тіркеу"</string> + <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU түзету қабаттары"</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU түзету қабаттарының жүктелуіне рұқсат ету"</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Жеткізуші туралы толық мәліметті тіркеу"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Қате туралы есепте жеткізушінің құрылғыға қатысты қосымша ақпараты қамтылады. Мұнда жеке ақпарат көрсетілуі, батарея шығыны артуы және/немесе қосымша жад пайдаланылуы мүмкін."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Терезе анимациясының өлшемі"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Ауысу анимациясының өлшемі"</string> @@ -374,13 +374,13 @@ <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Хабарландыру арнасының ескертулерін көрсету"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Қолданба жарамсыз арна арқылы хабарландыру жариялағанда, экранға ескерту шығарады"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Сыртқы жадта қолданбаларға рұқсат ету"</string> - <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Манифест мәндеріне қарамастан, кез келген қолданбаны сыртқы жадқа жазу мүмкіндігін береді"</string> + <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Манифест мәндеріне қарамастан, кез келген қолданбаны сыртқы жадқа жазуға рұқсат беру"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Әрекеттердің өлшемін өзгертуге рұқсат ету"</string> <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Манифест мәндеріне қарамастан, бірнеше терезе режимінде барлық әрекеттердің өлшемін өзгертуге рұқсат беру"</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Еркін пішіндегі терезелерді қосу"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Еркін пішінді терезелерді құру эксперименттік функиясын қосу"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Компьютердегі сақтық көшірме құпия сөзі"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Компьютердегі толық сақтық көшірмелер қазір қорғалмаған"</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Компьютердегі толық сақтық көшірмелер қазір қорғалмаған."</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Үстелдік компьютердің толық сақтық көшірмелерінің кілтсөзін өзгерту немесе жою үшін түртіңіз"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Жаңа сақтық кілтсөзі тағайындалды"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Жаңа кілтсөз және растау сәйкес емес"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Қайта кодтауды қосу"</string> <string name="transcode_default" msgid="3784803084573509491">"Қолданбалар қазіргі заманғы форматтарды қолдайды делік"</string> <string name="transcode_notification" msgid="5560515979793436168">"Қайта кодтау хабарландыруларын көрсету"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Қайта кодтау кэшін өшіру"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Қосылып тұрған қызметтер"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Қазір істеп тұрған қызметтерді көру және басқару"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView қызметі"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Планшет көп ұзамай өшуі мүмкін (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Құрылғы көп ұзамай өшуі мүмкін (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Толық зарядталғанға дейін <xliff:g id="TIME">%1$s</xliff:g> қалды."</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – толық зарядталғанға дейін <xliff:g id="TIME">%2$s</xliff:g> қалды."</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Батарея жұмысын оңтайландыру"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Белгісіз"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Зарядталуда"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Жылдам зарядталуда"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Баяу зарядталуда"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Сымсыз зарядталуда"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Зарядталу орындалып жатқан жоқ"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Қосылған, зарядталмайды"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Зарядталды"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Әкімші басқарады"</string> <string name="disabled" msgid="8017887509554714950">"Өшірілген"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Рұқсат етілген"</string> @@ -504,11 +503,13 @@ <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Азырақ уақыт."</string> <string name="cancel" msgid="5665114069455378395">"Бас тарту"</string> <string name="okay" msgid="949938843324579502">"Жарайды"</string> - <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Дабылдар мен еске салғыштар"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Дабылдар не еске салғыштар орнатуға рұқсат беру"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Дабылдар мен еске салғыштар"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Қолданбаға дабылдарды немесе уақытқа негізделген басқа да іс-шараларды жоспарлауға рұқсат береді. Сіз құрылғыны пайдаланып жатпасаңыз да қолданбаның іске қосылып, жұмыс істеуіне мүмкіндік береді. Рұқсатты жойсаңыз, қолданба дұрыс жұмыс істемейтінін, әсіресе қолданба жоспарлаған дабылдардың шықпайтынын ескеріңіз."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"кесте, дабыл, еске салғыш, іс-шара"</string> + <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Оятқыш және еске салғыш"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Оятқыштар мен еске салғыштарды орнатуға рұқсат беру"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Оятқыштар мен еске салғыштар"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Қолданбаға оятқыштарды орнатуға және басқа да әрекеттерді жоспарлауға рұқсат беру. Телефоныңыз қолданылмай тұрған кезде де бұл қолданба жұмыс істеуі және батарея шығынын арттыруы мүмкін. Егер бұл рұқсат өшірулі болса, қолданба дұрыс жұмыс істемеуі, оның оятқыштары жоспарланғандай іске қосылмауы мүмкін."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Қолданбаға оятқыштарды орнатуға және басқа да әрекеттерді жоспарлауға рұқсат беру. Планшетіңіз қолданылмай тұрған кезде де бұл қолданба жұмыс істеуі және батарея шығынын арттыруы мүмкін. Егер бұл рұқсат өшірулі болса, қолданба дұрыс жұмыс істемеуі, оның оятқыштары жоспарланғандай іске қосылмауы мүмкін."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Қолданбаға оятқыштарды орнатуға және басқа да әрекеттерді жоспарлауға рұқсат беру. Құрылғыңыз қолданылмай тұрған кезде де бұл қолданба жұмыс істеуі және батарея шығынын арттыруы мүмкін. Егер бұл рұқсат өшірулі болса, қолданба дұрыс жұмыс істемеуі, оның оятқыштары жоспарланғандай іске қосылмауы мүмкін."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"кесте, оятқыш, еске салғыш, сағат"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Қосу"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Мазаламау режимін қосу"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Ешқашан"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Бекітпе тағайындау"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> пайдаланушысына ауысу"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Жаңа пайдаланушы профилі жасалуда…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Жаңа пайдаланушы жасалмады."</string> <string name="user_nickname" msgid="262624187455825083">"Лақап ат"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Қонақ қосу"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Қонақты жою"</string> @@ -571,7 +571,7 @@ <string name="user_image_take_photo" msgid="467512954561638530">"Фотосуретке түсіру"</string> <string name="user_image_choose_photo" msgid="1363820919146782908">"Сурет таңдау"</string> <string name="user_image_photo_selector" msgid="433658323306627093">"Фотосурет таңдау"</string> - <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"Құрылғыны әдепкісінше реттеу"</string> + <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"Құрылғының әдепкі параметрлері"</string> <string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"Өшірулі"</string> <string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"Қосулы"</string> <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"Бұл өзгеріс күшіне енуі үшін, құрылғыны қайта жүктеу керек. Қазір қайта жүктеңіз не бас тартыңыз."</string> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index 3635c82f7d9c..086a8293ed7c 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"បោះបង់"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"ការផ្គូផ្គងដើម្បីចូលដំណើរការទំនាក់ទំនង និងប្រវត្តិហៅរបស់អ្នក ពេលបានតភ្ជាប់។"</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"មិនអាចផ្គូផ្គងជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ។"</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"មិនអាចផ្គូផ្គងជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ព្រោះកូដ PIN ឬលេខកូដមិនត្រឹមត្រូវ។"</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"មិនអាចផ្គូផ្គងជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> បានទេ ដោយសារកូដ PIN ឬកូដសម្ងាត់មិនត្រឹមត្រូវ។"</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"មិនអាចទាក់ទងជាមួយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ។"</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"ការផ្គូផ្គងបានបដិសេធដោយ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ។"</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"កុំព្យូទ័រ"</string> @@ -179,7 +179,7 @@ <string name="tts_status_checking" msgid="8026559918948285013">"កំពុងពិនិត្យ..."</string> <string name="tts_engine_settings_title" msgid="7849477533103566291">"ការកំណត់សម្រាប់ <xliff:g id="TTS_ENGINE_NAME">%s</xliff:g>"</string> <string name="tts_engine_settings_button" msgid="477155276199968948">"ចាប់ផ្ដើមការកំណត់ម៉ាស៊ីនផ្សេង"</string> - <string name="tts_engine_preference_section_title" msgid="3861562305498624904">"ម៉ាស៊ីនដែលពេញចិត្ត"</string> + <string name="tts_engine_preference_section_title" msgid="3861562305498624904">"ម៉ាស៊ីនដែលចង់ប្រើ"</string> <string name="tts_general_section_title" msgid="8919671529502364567">"ទូទៅ"</string> <string name="tts_reset_speech_pitch_title" msgid="7149398585468413246">"កំណត់កម្រិតសំឡេងនៃការនិយាយ"</string> <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"កំណត់កម្រិតសំឡេងនៃការបន្លឺអត្ថបទទៅលំនាំដើមឡើងវិញ។"</string> @@ -197,7 +197,7 @@ <string name="choose_profile" msgid="343803890897657450">"ជ្រើសរើសកម្រងព័ត៌មាន"</string> <string name="category_personal" msgid="6236798763159385225">"ផ្ទាល់ខ្លួន"</string> <string name="category_work" msgid="4014193632325996115">"កន្លែងធ្វើការ"</string> - <string name="development_settings_title" msgid="140296922921597393">"ជម្រើសអ្នកអភិវឌ្ឍន៍"</string> + <string name="development_settings_title" msgid="140296922921597393">"ជម្រើសសម្រាប់អ្នកអភិវឌ្ឍន៍"</string> <string name="development_settings_enable" msgid="4285094651288242183">"បើកដំណើរការជម្រើសអ្នកអភិវឌ្ឍន៍"</string> <string name="development_settings_summary" msgid="8718917813868735095">"កំណត់ជម្រើសសម្រាប់ការអភិវឌ្ឍកម្មវិធី"</string> <string name="development_settings_not_available" msgid="355070198089140951">"ជម្រើសអ្នកអភិវឌ្ឍមិនអាចប្រើបានសម្រាប់អ្នកប្រើនេះ"</string> @@ -235,8 +235,8 @@ <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"ផ្គូផ្គងឧបករណ៍តាមរយៈ Wi‑Fi ដោយស្កេនកូដ QR"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"សូមភ្ជាប់ទៅបណ្តាញ Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ជួសជុល, dev"</string> - <string name="bugreport_in_power" msgid="8664089072534638709">"ផ្លូវកាត់រាយការណ៍កំហុស"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"បង្ហាញប៊ូតុងក្នុងម៉ឺនុយប៊ូតុងថាមពលសម្រាប់ការទទួលយករបាយការណ៍កំហុស"</string> + <string name="bugreport_in_power" msgid="8664089072534638709">"ផ្លូវកាត់រាយការណ៍អំពីបញ្ហា"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"បង្ហាញប៊ូតុងក្នុងម៉ឺនុយថាមពលសម្រាប់ការយករបាយការណ៍អំពីបញ្ហា"</string> <string name="keep_screen_on" msgid="1187161672348797558">"ទុកឲ្យបើកចោល"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"អេក្រង់នឹងមិនដេកពេលបញ្ចូលថ្ម"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"បើកកំណត់ហេតុ HCI snoop ប៊្លូធូស"</string> @@ -245,16 +245,16 @@ <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"អនុញ្ញាតឲ្យដោះសោកម្មវិធីចាប់ផ្តើមប្រព័ន្ធ"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"អនុញ្ញាតការដោះសោ OEM?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ព្រមាន៖ លក្ខណៈពិសេសការពារឧបករណ៍នឹងមិនដំណើរការនៅលើឧបករណ៍នេះទេ ខណៈពេលដែលការកំណត់នេះត្រូវបានបើក។"</string> - <string name="mock_location_app" msgid="6269380172542248304">"ជ្រើសរើសកម្មវិធីទីតាំងបញ្ឆោត"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"គ្មានកម្មវិធីទីតាំងបញ្ឆោតត្រូវបានកំណត់ទេ"</string> + <string name="mock_location_app" msgid="6269380172542248304">"ជ្រើសរើសកម្មវិធីទីតាំងសាកល្បង"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"គ្មានកម្មវិធីទីតាំងសាកល្បងត្រូវបានកំណត់ទេ"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"កម្មវិធីទីតាំងបញ្ឆោត៖ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"ការភ្ជាប់បណ្ដាញ"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"សេចក្តីបញ្ជាក់ការបង្ហាញឥតខ្សែ"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"បើកកំណត់ហេតុរៀបរាប់ Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"ការពន្យឺតការស្កេន Wi‑Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"ការតម្រៀប MAC តាមលំដាប់ចៃដន្យដែលកែលម្អតាម Wi-Fi"</string> + <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"ការប្រើ MAC ចៃដន្យដែលកែលម្អតាម Wi-Fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"ទិន្នន័យទូរសព្ទចល័តដំណើរការជានិច្ច"</string> - <string name="tethering_hardware_offload" msgid="4116053719006939161">"ការបង្កើនល្បឿនផ្នែករឹងសម្រាប់ការភ្ជាប់"</string> + <string name="tethering_hardware_offload" msgid="4116053719006939161">"ការពន្លឿនល្បឿនភ្ជាប់ដោយប្រើហាតវែរ"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"បង្ហាញឧបករណ៍ប្ល៊ូធូសគ្មានឈ្មោះ"</string> <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"បិទកម្រិតសំឡេងលឺខ្លាំង"</string> <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"បើក Gabeldorsche"</string> @@ -284,7 +284,7 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"បង្ហាញជម្រើសសម្រាប់សេចក្តីបញ្ជាក់ការបង្ហាញឥតខ្សែ"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"បង្កើនកម្រិតកំណត់ហេតុ Wi-Fi បង្ហាញក្នុង SSID RSSI ក្នុងកម្មវិធីជ្រើសរើស Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"កាត់បន្ថយការប្រើប្រាស់ថ្ម និងកែលម្អប្រតិបត្តិការបណ្ដាញ"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"នៅពេលបើកមុខងារនេះ អាសយដ្ឋាន MAC របស់ឧបករណ៍នេះអាចផ្លាស់ប្ដូរ រាល់ពេលដែលវាភ្ជាប់ជាមួយបណ្ដាញដែលបានបើកការតម្រៀប MAC តាមលំដាប់ចៃដន្យ។"</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"នៅពេលបើកមុខងារនេះ អាសយដ្ឋាន MAC របស់ឧបករណ៍នេះអាចផ្លាស់ប្ដូរ រាល់ពេលដែលវាភ្ជាប់ជាមួយបណ្ដាញដែលបានបើកការប្រើ MAC ចៃដន្យ។"</string> <string name="wifi_metered_label" msgid="8737187690304098638">"មានការកំណត់"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"មិនមានការកំណត់"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"ទំហំកន្លែងផ្ទុករបស់ logger"</string> @@ -299,7 +299,7 @@ <string name="allow_mock_location_summary" msgid="179780881081354579">"អនុញ្ញាតទីតាំងក្លែងក្លាយ"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"បើកការត្រួតពិនិត្យគុណលក្ខណៈទិដ្ឋភាព"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"រក្សាទិន្នន័យទូរសព្ទចល័តឲ្យដំណើរការជានិច្ច ទោះបីជា Wi‑Fi ដំណើរការហើយក៏ដោយ (ដើម្បីប្តូរបណ្តាញឲ្យបានរហ័ស)។"</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"ប្រើការបង្កើនល្បឿនផ្នែករឹងសម្រាប់ការភ្ជាប់ ប្រសិនបើអាចប្រើបាន"</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"ប្រើការពន្លឿនល្បឿនភ្ជាប់ដោយប្រើហាតវែរ បើមាន"</string> <string name="adb_warning_title" msgid="7708653449506485728">"អនុញ្ញាតការកែកំហុសតាម USB ឬ?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"ការកែកំហុសយូអេសប៊ីគឺសម្រាប់តែការអភិវឌ្ឍប៉ុណ្ណោះ។ ប្រើវាដើម្បីចម្លងទិន្នន័យរវាងកុំព្យូទ័រ និងឧបករណ៍របស់អ្នក ដំឡើងកម្មវិធីក្នុងឧបករណ៍របស់អ្នកដោយមិនជូនដំណឹង និងអានទិន្នន័យកំណត់ហេតុ។"</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"អនុញ្ញាតការជួសជុលដោយឥតខ្សែឬ?"</string> @@ -317,17 +317,17 @@ <string name="enable_terminal_summary" msgid="2481074834856064500">"បើកកម្មវិធីស្ថានីយដែលផ្ដល់ការចូលសែលមូលដ្ឋាន"</string> <string name="hdcp_checking_title" msgid="3155692785074095986">"ពិនិត្យ HDCP"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"កំណត់ឥរិយាបថពិនិត្យ HDCP"</string> - <string name="debug_debugging_category" msgid="535341063709248842">"កែកំហុស"</string> - <string name="debug_app" msgid="8903350241392391766">"ជ្រើសកម្មវិធីកែកំហុស"</string> - <string name="debug_app_not_set" msgid="1934083001283807188">"គ្មានកម្មវិធីកែកំហុសបានកំណត់ទេ"</string> + <string name="debug_debugging_category" msgid="535341063709248842">"ការជួសជុល"</string> + <string name="debug_app" msgid="8903350241392391766">"ជ្រើសរើសកម្មវិធីជួសជុល"</string> + <string name="debug_app_not_set" msgid="1934083001283807188">"គ្មានកម្មវិធីជួសជុលដែលបានកំណត់ទេ"</string> <string name="debug_app_set" msgid="6599535090477753651">"កម្មវិធីកែកំហុស៖ <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"ជ្រើសកម្មវិធី"</string> <string name="no_application" msgid="9038334538870247690">"គ្មានអ្វីទេ"</string> - <string name="wait_for_debugger" msgid="7461199843335409809">"រង់ចាំកម្មវិធីកែកំហុស"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"កម្មវិធីបានកែកំហុសរង់ចាំឲ្យភ្ជាប់កម្មវិធីកែកំហុសមុនពេលអនុវត្ត"</string> + <string name="wait_for_debugger" msgid="7461199843335409809">"រង់ចាំកម្មវិធីជួសជុល"</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"កម្មវិធីដែលត្រូវបានជួសជុលរង់ចាំឲ្យកម្មវិធីជួសជុលភ្ជាប់សិន មុននឹងអនុវត្ត"</string> <string name="debug_input_category" msgid="7349460906970849771">"បញ្ចូល"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"គំនូរ"</string> - <string name="debug_hw_drawing_category" msgid="5830815169336975162">"បង្ហាញផ្នែករឹងបានបង្កើនល្បឿន"</string> + <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ការបំប្លែងដែលពន្លឿនដោយប្រើហាតវែរ"</string> <string name="media_category" msgid="8122076702526144053">"មេឌៀ"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"តាមដាន"</string> <string name="strict_mode" msgid="889864762140862437">"បានបើកមុខងារតឹងរ៉ឹង"</string> @@ -337,15 +337,15 @@ <string name="show_touches" msgid="8437666942161289025">"បង្ហាញការចុច"</string> <string name="show_touches_summary" msgid="3692861665994502193">"បង្ហាញដានចុច នៅពេលចុច"</string> <string name="show_screen_updates" msgid="2078782895825535494">"បង្ហាញបច្ចុប្បន្នភាពផ្ទៃ"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"ផ្ទៃវីនដូទាំងមូលបាញ់ពន្លឺពេលពួកវាធ្វើបច្ចុប្បន្នភាព"</string> - <string name="show_hw_screen_updates" msgid="2021286231267747506">"បង្ហាញការធ្វើបច្ចុប្បន្នភាពនៃការមើល"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"ផ្ទៃវីនដូទាំងមូលបញ្ចេញពន្លឺនៅពេលធ្វើបច្ចុប្បន្នភាព"</string> + <string name="show_hw_screen_updates" msgid="2021286231267747506">"បង្ហាញបច្ចុប្បន្នភាពទិដ្ឋភាព"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"ទិដ្ឋភាពបញ្ចេញពន្លឺភ្លឹបភ្លែតនៅក្នុងវិនដូនៅពេលគូរ"</string> - <string name="show_hw_layers_updates" msgid="5268370750002509767">"បង្ហាញបច្ចុប្បន្នភាពស្រទាប់ផ្នែករឹង"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"ស្រទាប់ផ្នែករឹងបញ្ចេញពន្លឺបៃតង ពេលពួកវាធ្វើបច្ចុប្បន្នភាព"</string> - <string name="debug_hw_overdraw" msgid="8944851091008756796">"កែកំហុសការលើស GPU"</string> + <string name="show_hw_layers_updates" msgid="5268370750002509767">"បង្ហាញបច្ចុប្បន្នភាពស្រទាប់ហាតវែរ"</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"ស្រទាប់ហាតវែរបញ្ចេញពន្លឺបៃតងនៅពេលធ្វើបច្ចុប្បន្នភាព"</string> + <string name="debug_hw_overdraw" msgid="8944851091008756796">"ជួសជុលការគូរលើស GPU"</string> <string name="disable_overlays" msgid="4206590799671557143">"បិទការត្រួត HW"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"ប្រើ GPU ជានិច្ចសម្រាប់ផ្សំអេក្រង់"</string> - <string name="simulate_color_space" msgid="1206503300335835151">"ក្លែងធ្វើចន្លោះពណ៌"</string> + <string name="simulate_color_space" msgid="1206503300335835151">"ត្រាប់តាមគំរូពណ៌"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"បើកដាន OpenGL"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"បិទការនាំផ្លូវសំឡេងតាម USB"</string> <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"បិទការនាំផ្លូវស្វ័យប្រវត្តិទៅឧបករណ៍សំឡេងតាម USB"</string> @@ -359,8 +359,8 @@ <string name="track_frame_time" msgid="522674651937771106">"ការបំប្លែងកម្រងព័ត៌មាន HWUI"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"បើកស្រទាប់ជួសជុល GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"អនុញ្ញាតឱ្យផ្ទុកស្រទាប់ជួសជុល GPU សម្រាប់កម្មវិធីជួសជុល"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"បើកកំណត់ហេតុរៀបរាប់អំពីអ្នកលក់"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"រួមមានកំណត់ហេតុបន្ថែមអំពីអ្នកផ្គត់ផ្គង់សម្រាប់ឧបករណ៍ជាក់លាក់នៅក្នុងរបាយការណ៍អំពីបញ្ហា ដែលអាចមានព័ត៌មានឯកជន ប្រើប្រាស់ថ្មច្រើនជាងមុន និង/ឬប្រើប្រាស់ទំហំផ្ទុកច្រើនជាងមុន។"</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"បើកការកត់ត្រាឥតសំចៃអំពីអ្នកផ្គត់ផ្គង់"</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"រួមបញ្ចូលកំណត់ហេតុបន្ថែមអំពីអ្នកផ្គត់ផ្គង់សម្រាប់ឧបករណ៍ជាក់លាក់នៅក្នុងរបាយការណ៍អំពីបញ្ហា ដែលអាចមានផ្ទុកព័ត៌មានឯកជន ប្រើប្រាស់ថ្មច្រើនជាង និង/ឬប្រើប្រាស់ទំហំផ្ទុកច្រើនជាង។"</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"មាត្រដ្ឋានចលនាវិនដូ"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"មាត្រដ្ឋានដំណើរផ្លាស់ប្ដូរចលនា"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"មាត្រដ្ឋានរយៈពេលនៃកម្មវិធីចលនា"</string> @@ -374,9 +374,9 @@ <string name="show_notification_channel_warnings" msgid="3448282400127597331">"បង្ហាញការព្រមានអំពីបណ្តាញជូនដំណឹង"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"បង្ហាញការព្រមាននៅលើអេក្រង់ នៅពេលកម្មវិធីបង្ហោះការជូនដំណឹងដោយមិនមានបណ្តាញត្រឹមត្រូវ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"បង្ខំឲ្យអនុញ្ញាតកម្មវិធីលើឧបករណ៍ផ្ទុកខាងក្រៅ"</string> - <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ធ្វើឲ្យកម្មវិធីទាំងឡាយមានសិទ្ធិសរសេរទៅកាន់ឧបករណ៍ផ្ទុកខាងក្រៅ ដោយមិនគិតពីតម្លៃជាក់លាក់"</string> + <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ធ្វើឲ្យកម្មវិធីទាំងឡាយមានសិទ្ធិសរសេរទៅកាន់ឧបករណ៍ផ្ទុកខាងក្រៅ ដោយមិនគិតពីតម្លៃមេនីហ្វេសថ៍"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"បង្ខំឲ្យសកម្មភាពអាចប្តូរទំហំបាន"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"កំណត់ឲ្យសកម្មភាពទាំងអស់អាចប្តូរទំហំបានសម្រាប់ពហុផ្ទាំងវិនដូ ដោយមិនគិតពីតម្លៃជាក់លាក់ឡើយ។"</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"ធ្វើឲ្យសកម្មភាពទាំងអស់អាចប្តូរទំហំបានសម្រាប់ពហុវិនដូ ដោយមិនគិតពីតម្លៃមេនីហ្វេសថ៍។"</string> <string name="enable_freeform_support" msgid="7599125687603914253">"បើកដំណើរការផ្ទាំងវិនដូទម្រង់សេរី"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"បើកដំណើរការគាំទ្រផ្ទាំងវិនដូទម្រង់សេរីសាកល្បង"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"ពាក្យសម្ងាត់បម្រុងទុកលើកុំព្យូទ័រ"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"បើកការបំប្លែងកូដ"</string> <string name="transcode_default" msgid="3784803084573509491">"សន្មតថាកម្មវិធីអាចប្រើទម្រង់ទំនើបបាន"</string> <string name="transcode_notification" msgid="5560515979793436168">"បង្ហាញការជូនដំណឹងអំពីការបំប្លែងកូដ"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"បិទឃ្លាំងបម្រុងសម្រាប់ការបំប្លែងកូដ"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"សេវាកម្មកំពុងដំណើរការ"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"មើល និងគ្រប់គ្រងសេវាកម្មកំពុងដំណើរការបច្ចុប្បន្ន"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"ការអនុវត្ត WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ថេប្លេតអាចនឹងបិទក្នុងពេលបន្តិចទៀត (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ឧបករណ៍អាចនឹងបិទក្នុងពេលបន្តិចទៀត (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"នៅសល់ <xliff:g id="TIME">%1$s</xliff:g> ទៀតទើបពេញ"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - នៅសល់ <xliff:g id="TIME">%2$s</xliff:g> ទៀតទើបពេញ"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - កំពុងបង្កើនប្រសិទ្ធភាពគុណភាពថ្ម"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"មិនស្គាល់"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"កំពុងបញ្ចូលថ្ម"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"កំពុងសាកថ្មយ៉ាងឆាប់រហ័ស"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"កំពុងសាកថ្មយឺត"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"កំពុងសាកថ្មឥតខ្សែ"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"មិនកំពុងបញ្ចូលថ្ម"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ដោតសាកថ្មរួចហើយ ប៉ុន្តែសាកថ្មមិនចូលទេឥឡូវនេះ"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"បានសាកថ្ម"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"គ្រប់គ្រងដោយអ្នកគ្រប់គ្រង"</string> <string name="disabled" msgid="8017887509554714950">"បិទ"</string> <string name="external_source_trusted" msgid="1146522036773132905">"បានអនុញ្ញាត"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"បោះបង់"</string> <string name="okay" msgid="949938843324579502">"យល់ព្រម"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ម៉ោងរោទ៍ និងការរំលឹក"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"អនុញ្ញាតឱ្យកំណត់ម៉ោងរោទ៍ ឬការរំលឹក"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"ម៉ោងរោទ៍ និងការរំលឹក"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"អនុញ្ញាតឱ្យកម្មវិធីនេះកំណត់កាលវិភាគម៉ោងរោទ៍ ឬព្រឹត្តិការណ៍ដែលមានការកំណត់ពេលផ្សេងទៀត។ ការធ្វើបែបនេះនឹងអនុញ្ញាតឱ្យកម្មវិធីនេះចាប់ផ្ដើម និងដំណើរការ ទោះបីជានៅពេលអ្នកមិនប្រើឧបករណ៍ក៏ដោយ។ សូមចំណាំថា ការដកការអនុញ្ញាតនេះអាចបណ្ដាលឱ្យកម្មវិធីដំណើរការខុសប្រក្រតី ជាពិសេសម៉ោងរោទ៍ទាំងឡាយដែលកម្មវិធីបានកំណត់កាលវិភាគនឹងលែងដំណើរការ។"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"កាលវិភាគ ម៉ោងរោទ៍ ការរំលឹក ព្រឹត្តិការណ៍"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"អនុញ្ញាតឱ្យកំណត់ម៉ោងរោទ៍ និងការរំលឹក"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"ម៉ោងរោទ៍ និងការរំលឹក"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"អនុញ្ញាតឱ្យកម្មវិធីនេះកំណត់ម៉ោងរោទ៍ និងកំណត់កាលវិភាគសកម្មភាពផ្សេងទៀត។ កម្មវិធីនេះអាចត្រូវបានប្រើ នៅពេលដែលអ្នកមិនកំពុងប្រើទូរសព្ទរបស់អ្នក។ សកម្មភាពនេះអាចនឹងប្រើប្រាស់ថ្មច្រើនជាងមុន។ ប្រសិនបើបិទការអនុញ្ញាតនេះ កម្មវិធីនេះមិនអាចដំណើរការតាមធម្មតាទេ ហើយម៉ោងរោទ៍របស់វានឹងមិនដំណើរការតាមកាលវិភាគឡើយ។"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"អនុញ្ញាតឱ្យកម្មវិធីនេះកំណត់ម៉ោងរោទ៍ និងកំណត់កាលវិភាគសកម្មភាពផ្សេងទៀត។ កម្មវិធីនេះអាចត្រូវបានប្រើ នៅពេលដែលអ្នកមិនកំពុងប្រើថេប្លេតរបស់អ្នក។ សកម្មភាពនេះអាចនឹងប្រើប្រាស់ថ្មច្រើនជាងមុន។ ប្រសិនបើបិទការអនុញ្ញាតនេះ កម្មវិធីនេះមិនអាចដំណើរការតាមធម្មតាទេ ហើយម៉ោងរោទ៍របស់វានឹងមិនដំណើរការតាមកាលវិភាគឡើយ។"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"អនុញ្ញាតឱ្យកម្មវិធីនេះកំណត់ម៉ោងរោទ៍ និងកំណត់កាលវិភាគសកម្មភាពផ្សេងទៀត។ កម្មវិធីនេះអាចត្រូវបានប្រើ នៅពេលដែលអ្នកមិនកំពុងប្រើឧបករណ៍របស់អ្នក។ សកម្មភាពនេះអាចនឹងប្រើប្រាស់ថ្មច្រើនជាងមុន។ ប្រសិនបើបិទការអនុញ្ញាតនេះ កម្មវិធីនេះមិនអាចដំណើរការតាមធម្មតាទេ ហើយម៉ោងរោទ៍របស់វានឹងមិនដំណើរការតាមកាលវិភាគឡើយ។"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"កាលវិភាគ ម៉ោងរោទ៍ ការរំលឹក នាឡិកា"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"បើក"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"បើកមុខងារកុំរំខាន"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"កុំឱ្យសោះ"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"កំណត់ការចាក់សោ"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"ប្ដូរទៅ <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"កំពុងបង្កើតអ្នកប្រើប្រាស់ថ្មី…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"មិនអាចបង្កើតអ្នកប្រើប្រាស់ថ្មីបានទេ"</string> <string name="user_nickname" msgid="262624187455825083">"ឈ្មោះហៅក្រៅ"</string> <string name="guest_new_guest" msgid="3482026122932643557">"បញ្ចូលភ្ញៀវ"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"ដកភ្ញៀវចេញ"</string> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index a261d2103fd1..54d31cb57504 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -31,7 +31,7 @@ <string name="wifi_disabled_password_failure" msgid="6892387079613226738">"ಪ್ರಮಾಣೀಕರಣ ಸಮಸ್ಯೆ"</string> <string name="wifi_cant_connect" msgid="5718417542623056783">"ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string> <string name="wifi_cant_connect_to_ap" msgid="3099667989279700135">"\'<xliff:g id="AP_NAME">%1$s</xliff:g>\' ಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ"</string> - <string name="wifi_check_password_try_again" msgid="8817789642851605628">"ಪಾಸ್ವರ್ಡ್ ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string> + <string name="wifi_check_password_try_again" msgid="8817789642851605628">"ಪಾಸ್ವರ್ಡ್ ಪರಿಶೀಲಿಸಿ, ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string> <string name="wifi_not_in_range" msgid="1541760821805777772">"ವ್ಯಾಪ್ತಿಯಲ್ಲಿಲ್ಲ"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವಿಲ್ಲ"</string> @@ -162,7 +162,7 @@ <string name="tts_default_pitch_title" msgid="6988592215554485479">"ಪಿಚ್"</string> <string name="tts_default_pitch_summary" msgid="9132719475281551884">"ಸಂಯೋಜಿತ ಧ್ವನಿಯ ಟೋನ್ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರುತ್ತದೆ"</string> <string name="tts_default_lang_title" msgid="4698933575028098940">"ಭಾಷೆ"</string> - <string name="tts_lang_use_system" msgid="6312945299804012406">"ಸಿಸ್ಟಂ ಭಾಷೆಯನ್ನು ಬಳಸು"</string> + <string name="tts_lang_use_system" msgid="6312945299804012406">"ಸಿಸ್ಟಂ ಭಾಷೆ ಬಳಸಿ"</string> <string name="tts_lang_not_selected" msgid="7927823081096056147">"ಭಾಷೆಯನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗಿಲ್ಲ"</string> <string name="tts_default_lang_summary" msgid="9042620014800063470">"ಮಾತಿನ ಪಠ್ಯಕ್ಕೆ ಭಾಷಾ-ನಿರ್ದಿಷ್ಟ ಧ್ವನಿಯನ್ನು ಹೊಂದಿಸುತ್ತದೆ"</string> <string name="tts_play_example_title" msgid="1599468547216481684">"ಉದಾಹರಣೆಯೊಂದನ್ನು ಆಲಿಸಿ"</string> @@ -207,10 +207,10 @@ <string name="enable_adb" msgid="8072776357237289039">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆ"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"USB ಸಂಪರ್ಕಗೊಂಡಾಗ ಡೀಬಗ್ ಮೋಡ್"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆಯ ಅಧಿಕೃತಗೊಳಿಸುವಿಕೆಗಳನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳಿ"</string> - <string name="enable_adb_wireless" msgid="6973226350963971018">"ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆ"</string> + <string name="enable_adb_wireless" msgid="6973226350963971018">"ವೈರ್ಲೆಸ್ ಡೀಬಗಿಂಗ್"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"ವೈ-ಫೈ ಕನೆಕ್ಟ್ ಆದಾಗ ಡೀಬಗ್ ಮೋಡ್"</string> <string name="adb_wireless_error" msgid="721958772149779856">"ದೋಷ"</string> - <string name="adb_wireless_settings" msgid="2295017847215680229">"ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆ"</string> + <string name="adb_wireless_settings" msgid="2295017847215680229">"ವೈರ್ಲೆಸ್ ಡೀಬಗಿಂಗ್"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"ಲಭ್ಯವಿರುವ ಸಾಧನಗಳನ್ನು ನೋಡಲು ಮತ್ತು ಬಳಸಲು, ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಆನ್ ಮಾಡಿ"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR ಕೋಡ್ ಬಳಸಿ ಸಾಧನವನ್ನು ಜೋಡಿಸಿ"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR ಕೋಡ್ ಸ್ಕ್ಯಾನರ್ ಬಳಸಿ ಹೊಸ ಸಾಧನಗಳನ್ನು ಜೋಡಿಸಿ"</string> @@ -226,7 +226,7 @@ <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"ಸಾಧನದ ಜೊತೆಗೆ ಜೋಡಿಸಿ"</string> <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"ವೈ-ಫೈ ಜೋಡಿಸುವಿಕೆ ಕೋಡ್"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"ಜೋಡಿಸುವಿಕೆ ವಿಫಲವಾಗಿದೆ"</string> - <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"ಸಾಧನವು ಒಂದೇ ನೆಟ್ವರ್ಕ್ಗೆ ಕನೆಕ್ಟ್ ಆಗಿದೆಯೇ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."</string> + <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"ಸಾಧನವು ಒಂದೇ ನೆಟ್ವರ್ಕ್ಗೆ ಕನೆಕ್ಟ್ ಆಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."</string> <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR ಕೋಡ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುವ ಮೂಲಕ ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ಸಾಧನವನ್ನು ಜೋಡಿಸಿ"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"ಸಾಧನವನ್ನು ಜೋಡಿಸಲಾಗುತ್ತಿದೆ…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"ಸಾಧನವನ್ನು ಜೋಡಿಸಲು ವಿಫಲವಾಗಿದೆ. QR ಕೋಡ್ ತಪ್ಪಾಗಿದೆ ಅಥವಾ ಸಾಧನವು ಒಂದೇ ನೆಟ್ವರ್ಕ್ಗೆ ಕನೆಕ್ಟ್ ಆಗಿಲ್ಲ."</string> @@ -241,7 +241,7 @@ <string name="keep_screen_on_summary" msgid="1510731514101925829">"ಚಾರ್ಜ್ ಮಾಡುವಾಗ ಪರದೆಯು ಎಂದಿಗೂ ನಿದ್ರಾವಸ್ಥೆಗೆ ಹೋಗುವುದಿಲ್ಲ"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"ಬ್ಲೂಟೂತ್ HCI ಸ್ನೂಪ್ ಲಾಗ್ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"ಬ್ಲೂಟೂತ್ ಪ್ಯಾಕೆಟ್ಗಳನ್ನು ಕ್ಯಾಪ್ಚರ್ ಮಾಡಿ. (ಈ ಸೆಟ್ಟಿಂಗ್ ಅನ್ನು ಬದಲಾಯಿಸಿದ ನಂತರ ಬ್ಲೂಟೂತ್ ಟಾಗಲ್ ಮಾಡಿ)"</string> - <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM ಅನ್ಲಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> + <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM ಅನ್ಲಾಕ್ ಮಾಡುವಿಕೆ"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"ಬೂಟ್ಲೋಡರ್ ಅನ್ಲಾಕ್ ಮಾಡಲು ಅನುಮತಿಸಿ"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"OEM ಅನ್ಲಾಕ್ ಮಾಡುವಿಕೆಯನ್ನು ಅನುಮತಿಸುವುದೇ?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ಎಚ್ಚರಿಕೆ: ಈ ಸೆಟ್ಟಿಂಗ್ ಆನ್ ಇರುವಾಗ ಈ ಸಾಧನದಲ್ಲಿ ಸಾಧನ ಸಂರಕ್ಷಣಾ ವೈಶಿಷ್ಟ್ಯಗಳು ಕಾರ್ಯ ನಿರ್ವಹಿಸುವುದಿಲ್ಲ."</string> @@ -336,7 +336,7 @@ <string name="pointer_location_summary" msgid="957120116989798464">"ಪ್ರಸ್ತುತ ಸ್ಪರ್ಶ ಡೇಟಾ ತೋರಿಸುವ ಪರದೆಯ ಓವರ್ಲೇ"</string> <string name="show_touches" msgid="8437666942161289025">"ಟ್ಯಾಪ್ಗಳನ್ನು ತೋರಿಸು"</string> <string name="show_touches_summary" msgid="3692861665994502193">"ಟ್ಯಾಪ್ಗಳಿಗೆ ದೃಶ್ಯ ಪ್ರತಿಕ್ರಿಯೆ ತೋರಿಸು"</string> - <string name="show_screen_updates" msgid="2078782895825535494">"ಸರ್ಫೇಸ್ ಅಪ್ಡೇಟ್"</string> + <string name="show_screen_updates" msgid="2078782895825535494">"ಸರ್ಫೇಸ್ ಅಪ್ಡೇಟ್ ತೋರಿಸಿ"</string> <string name="show_screen_updates_summary" msgid="2126932969682087406">"ಅಪ್ಡೇಟ್ ಆಗುವಾಗ ವಿಂಡೋದ ಸರ್ಫೇಸ್ ಫ್ಲ್ಯಾಶ್ ಆಗುತ್ತದೆ"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"\'ಅಪ್ಡೇಟ್ಗಳನ್ನು ವೀಕ್ಷಿಸಿ\' ತೋರಿಸಿ"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"ಡ್ರಾ ಮಾಡಿದಾಗ ವಿಂಡೊದಲ್ಲಿ ವೀಕ್ಷಣೆ ಫ್ಲ್ಯಾಶ್"</string> @@ -351,9 +351,9 @@ <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB ಆಡಿಯೊ ಸಲಕರಣೆಗಳಿಗೆ ಸ್ವಯಂ ರೂಟಿಂಗ್ ನಿಷ್ಕ್ರಿಯ."</string> <string name="debug_layout" msgid="1659216803043339741">"ಲೇಔಟ್ ಪರಿಮಿತಿಗಳನ್ನು ತೋರಿಸು"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"ಕ್ಲಿಪ್ನ ಗಡಿಗಳು, ಅಂಚುಗಳು, ಇತ್ಯಾದಿ ತೋರಿಸು."</string> - <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL ಲೇಔಟ್ ಪರಿಮಿತಿ ಬಲಗೊಳಿಸಿ"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"ಎಲ್ಲ ಸ್ಥಳಗಳಿಗಾಗಿ RTL ಗೆ ಸ್ಕ್ರೀನ್ ಲೇಔಟ್ ದಿಕ್ಕನ್ನು ಪ್ರಬಲಗೊಳಿಸಿ"</string> - <string name="force_msaa" msgid="4081288296137775550">"4x MSAA ಪ್ರಬಲಗೊಳಿಸಿ"</string> + <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL ಲೇಔಟ್ ಡೈರೆಕ್ಷನ್ ಫೋರ್ಸ್ ಮಾಡುವಿಕೆ"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"ಎಲ್ಲ ಭಾಷೆಗಳಿಗಾಗಿ, RTL ಗೆ ಸ್ಕ್ರೀನ್ ಲೇಔಟ್ ಡೈರೆಕ್ಷನ್ ಅನ್ನು ಫೋರ್ಸ್ ಮಾಡಿ"</string> + <string name="force_msaa" msgid="4081288296137775550">"4x MSAA ಫೋರ್ಸ್ ಮಾಡಿ"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ 4x MSAA ಸಕ್ರಿಯಗೊಳಿಸಿ"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"ಆಯತಾಕಾರವಲ್ಲದ ಕ್ಲಿಪ್ ಕಾರ್ಯಾಚರಣೆ ಡೀಬಗ್"</string> <string name="track_frame_time" msgid="522674651937771106">"ಪ್ರೊಫೈಲ್ HWUI ಸಲ್ಲಿಸಲಾಗುತ್ತಿದೆ"</string> @@ -366,7 +366,7 @@ <string name="animator_duration_scale_title" msgid="7082913931326085176">"ಅನಿಮೇಟರ್ ಅವಧಿಯ ಪ್ರಮಾಣ"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"ಮಾಧ್ಯಮಿಕ ಡಿಸ್ಪ್ಲೇ ಸಿಮ್ಯುಲೇಟ್"</string> <string name="debug_applications_category" msgid="5394089406638954196">"ಅಪ್ಲಿಕೇಶನ್ಗಳು"</string> - <string name="immediately_destroy_activities" msgid="1826287490705167403">"ಚಟುವಟಿಕೆಗಳನ್ನು ಇರಿಸದಿರು"</string> + <string name="immediately_destroy_activities" msgid="1826287490705167403">"ಚಟುವಟಿಕೆಗಳನ್ನು ಇರಿಸಬೇಡಿ"</string> <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ಬಳಕೆದಾರರು ಹೊರಹೋಗುತ್ತಿದ್ದಂತೆಯೇ ಚಟುವಟಿಕೆ ನಾಶಪಡಿಸು"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"ಹಿನ್ನೆಲೆ ಪ್ರಕ್ರಿಯೆ ಮಿತಿ"</string> <string name="show_all_anrs" msgid="9160563836616468726">"ಹಿನ್ನೆಲೆ ANR ಗಳನ್ನು ತೋರಿಸಿ"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ಟ್ರಾನ್ಸ್ಕೋಡಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string> <string name="transcode_default" msgid="3784803084573509491">"ಆ್ಯಪ್ಗಳು ಆಧುನಿಕ ಫಾರ್ಮ್ಯಾಟ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ ಎಂದು ಊಹಿಸಿ"</string> <string name="transcode_notification" msgid="5560515979793436168">"ಟ್ರಾನ್ಸ್ಕೋಡಿಂಗ್ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಿ"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ಟ್ರಾನ್ಸ್ಕೋಡಿಂಗ್ ಕ್ಯಾಷ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"ರನ್ ಆಗುತ್ತಿರುವ ಸೇವೆಗಳು"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"ಈಗ ರನ್ ಆಗುತ್ತಿರುವ ಸೇವೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ಹೊಂದಿಸಿ"</string> @@ -423,7 +424,7 @@ <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"ಡ್ಯೂಟರ್ನೋಮಲಿ (ಕೆಂಪು-ಹಸಿರು)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ಪ್ರೊಟನೋಮಲಿ (ಕೆಂಪು-ಹಸಿರು)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ಟ್ರಿಟನೋಮಲಿ (ನೀಲಿ-ಹಳದಿ)"</string> - <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ಬಣ್ಣದ ತಿದ್ದುಪಡಿ"</string> + <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ಬಣ್ಣ ತಿದ್ದುಪಡಿ"</string> <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಬಣ್ಣಗಳು ಹೇಗೆ ಡಿಸ್ಪ್ಲೇ ಆಗುತ್ತವೆ ಎಂಬುದನ್ನು ಹೊಂದಿಸಿ. ನೀವು ಬಣ್ಣಗಳನ್ನು ಹೆಚ್ಚು ನಿಖರವಾಗಿ ನೋಡಲು ಬಯಸಿದಾಗ:<br/><br/> <ol> <li>&nbsp;ಇದು ಸಹಾಯಕವಾಗಿರುತ್ತದೆ</li> <li>&nbsp;ನಿಮಗೆ ಗಮನಹರಿಸಲು ಸಹಾಯ ಮಾಡಲು ಬಣ್ಣಗಳನ್ನು ತೆಗೆದುಹಾಕಿ</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ಮೂಲಕ ಅತಿಕ್ರಮಿಸುತ್ತದೆ"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> @@ -433,10 +434,10 @@ <string name="power_discharging_duration_enhanced" msgid="1800465736237672323">"ನಿಮ್ಮ ಬಳಕೆಯ (<xliff:g id="LEVEL">%2$s</xliff:g>) ಆಧಾರದ ಮೇಲೆ ಸುಮಾರು <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ಉಳಿದಿದೆ"</string> <!-- no translation found for power_remaining_duration_only_short (7438846066602840588) --> <skip /> - <string name="power_discharge_by_enhanced" msgid="563438403581662942">"ನಿಮ್ಮ ಬಳಕೆ (<xliff:g id="LEVEL">%2$s</xliff:g>) ಆಧರಿಸಿ <xliff:g id="TIME">%1$s</xliff:g> ಸಮಯದವರೆಗೆ ಫೋನ್ ರನ್ ಆಗಬೇಕು"</string> - <string name="power_discharge_by_only_enhanced" msgid="3268796172652988877">"ನಿಮ್ಮ ಬಳಕೆ ಆಧರಿಸಿ <xliff:g id="TIME">%1$s</xliff:g> ಸಮಯದವರೆಗೆ ಫೋನ್ ರನ್ ಆಗಬೇಕು"</string> - <string name="power_discharge_by" msgid="4113180890060388350">"<xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) ಸಮಯದವರೆಗೆ ಫೋನ್ ರನ್ ಆಗಬೇಕು"</string> - <string name="power_discharge_by_only" msgid="92545648425937000">"<xliff:g id="TIME">%1$s</xliff:g> ಸಮಯದವರೆಗೆ ಫೋನ್ ರನ್ ಆಗಬೇಕು"</string> + <string name="power_discharge_by_enhanced" msgid="563438403581662942">"ನಿಮ್ಮ ಬಳಕೆ (<xliff:g id="LEVEL">%2$s</xliff:g>) ಆಧರಿಸಿ <xliff:g id="TIME">%1$s</xliff:g> ವರೆಗೆ ರನ್ ಆಗಲಿದೆ"</string> + <string name="power_discharge_by_only_enhanced" msgid="3268796172652988877">"ನಿಮ್ಮ ಬಳಕೆ ಆಧರಿಸಿ <xliff:g id="TIME">%1$s</xliff:g> ವರೆಗೆ ರನ್ ಆಗಲಿದೆ"</string> + <string name="power_discharge_by" msgid="4113180890060388350">"<xliff:g id="TIME">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>) ಸಮಯದವರೆಗೆ ರನ್ ಆಗಲಿದೆ"</string> + <string name="power_discharge_by_only" msgid="92545648425937000">"<xliff:g id="TIME">%1$s</xliff:g> ಸಮಯದವರೆಗೆ ರನ್ ಆಗಲಿದೆ"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> ರವರೆಗೆ"</string> <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"<xliff:g id="TIME">%1$s</xliff:g> ಗಳಲ್ಲಿ ಬ್ಯಾಟರಿ ಮುಕ್ತಾಯವಾಗಬಹುದು"</string> <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> ಕ್ಕಿಂತ ಕಡಿಮೆ ಸಮಯ ಉಳಿದಿದೆ"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ಟ್ಯಾಬ್ಲೆಟ್ ಶೀಘ್ರದಲ್ಲೇ ಶಟ್ ಡೌನ್ ಆಗಬಹುದು (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ಸಾಧನವು ಶೀಘ್ರದಲ್ಲೇ ಶಟ್ ಡೌನ್ ಆಗಬಹುದು (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"ಭರ್ತಿಯಾಗುವವರೆಗೂ <xliff:g id="TIME">%1$s</xliff:g> - ಉಳಿದಿದೆ"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"ಭರ್ತಿಯಾಗುವವರೆಗೂ <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ಉಳಿದಿದೆ"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ಬ್ಯಾಟರಿಯ ಸುಸ್ಥಿತಿಗಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"ಅಪರಿಚಿತ"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"ವೇಗದ ಚಾರ್ಜಿಂಗ್"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"ನಿಧಾನ ಗತಿಯ ಚಾರ್ಜಿಂಗ್"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"ವೈರ್ಲೆಸ್ ಚಾರ್ಜಿಂಗ್"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ಚಾರ್ಜ್ ಆಗುತ್ತಿಲ್ಲ"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ಪ್ಲಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ, ಇದೀಗ ಚಾರ್ಜ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ಚಾರ್ಜ್ ಆಗಿದೆ"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ನಿರ್ವಾಹಕರ ಮೂಲಕ ನಿಯಂತ್ರಿಸಲಾಗಿದೆ"</string> <string name="disabled" msgid="8017887509554714950">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string> <string name="external_source_trusted" msgid="1146522036773132905">"ಅನುಮತಿಸಲಾಗಿದೆ"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"ರದ್ದುಮಾಡಿ"</string> <string name="okay" msgid="949938843324579502">"ಸರಿ"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ಅಲಾರಾಮ್ಗಳು ಮತ್ತು ರಿಮೈಂಡರ್ಗಳು"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"ಅಲಾರಾಮ್ಗಳು ಅಥವಾ ರಿಮೈಂಡರ್ಗಳನ್ನು ಹೊಂದಿಸಲು ಅನುಮತಿಸಿ"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"ಅಲಾರಾಮ್ಗಳು ಮತ್ತು ರಿಮೈಂಡರ್ಗಳು"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"ಅಲಾರಾಮ್ಗಳು ಅಥವಾ ಸಮಯಾಧಾರಿತ ಈವೆಂಟ್ಗಳನ್ನು ನಿಗದಿಪಡಿಸಲು ಈ ಆ್ಯಪ್ಗೆ ಅನುಮತಿ ನೀಡಿ. ನೀವು ಸಾಧನವನ್ನು ಬಳಸದೇ ಇದ್ದಾಗಲೂ, ಜಾಗೃತಗೊಳಿಸಲು ಮತ್ತು ರನ್ ಆಗಲು ಇದು ಈ ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ. ಈ ಅನುಮತಿಯನ್ನು ಹಿಂತೆಗೆದುಕೊಳ್ಳುವುದು ಆ್ಯಪ್ ಅನ್ನು ಅಸಮರ್ಪಕಗೊಳಿಸುತ್ತದೆ, ನಿರ್ದಿಷ್ಟವಾಗಿ ಆ್ಯಪ್ ನಿಗದಿಪಡಿಸಿದ ಯಾವುದೇ ಅಲಾರಾಮ್ಗಳು ಇನ್ನು ಮುಂದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ವೇಳಾಪಟ್ಟಿ, ಅಲಾರಾಮ್, ರಿಮೈಂಡರ್, ಈವೆಂಟ್"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"ಅಲಾರಂಗಳು ಮತ್ತು ರಿಮೈಂಡರ್ಗಳನ್ನು ಹೊಂದಿಸಲು ಅನುಮತಿಸಿ"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"ಅಲಾರಂಗಳು ಮತ್ತು ರಿಮೈಂಡರ್ಗಳು"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"ಅಲಾರಂಗಳನ್ನು ಹೊಂದಿಸಲು ಮತ್ತು ಇತರ ಕ್ರಿಯೆಗಳನ್ನು ನಿಗದಿಪಡಿಸಲು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸಿ. ನಿಮ್ಮ ಫೋನ್ ಬಳಸದಿದ್ದಾಗ ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸಬಹುದು, ಅದು ಹೆಚ್ಚು ಬ್ಯಾಟರಿ ಬಳಸಬಹುದು. ಈ ಅನುಮತಿ ಆಫ್ ಆಗಿದ್ದರೆ, ಈ ಆ್ಯಪ್ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೆ ಇರಬಹುದು ಮತ್ತು ಅದರ ಅಲಾರಂಗಳು ನಿಗದಿಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"ಅಲಾರಂಗಳನ್ನು ಹೊಂದಿಸಲು ಮತ್ತು ಇತರ ಕ್ರಿಯೆಗಳನ್ನು ನಿಗದಿಪಡಿಸಲು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸಿ. ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಅನ್ನು ನೀವು ಬಳಸದಿದ್ದಾಗ ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸಬಹುದು, ಅದು ಹೆಚ್ಚಿನ ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸಬಹುದು. ಈ ಅನುಮತಿ ಆಫ್ ಆಗಿದ್ದರೆ, ಈ ಆ್ಯಪ್ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೆ ಇರಬಹುದು ಮತ್ತು ಅದರ ಅಲಾರಂಗಳು ನಿಗದಿಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"ಅಲಾರಂಗಳನ್ನು ಹೊಂದಿಸಲು ಮತ್ತು ಇತರ ಕ್ರಿಯೆಗಳನ್ನು ನಿಗದಿಪಡಿಸಲು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸಿ. ನಿಮ್ಮ ಸಾಧನವನ್ನು ನೀವು ಬಳಸದಿದ್ದಾಗ ಈ ಆ್ಯಪ್ ಅನ್ನು ಬಳಸಬಹುದು, ಅದು ಹೆಚ್ಚಿನ ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸಬಹುದು. ಈ ಅನುಮತಿ ಆಫ್ ಆಗಿದ್ದರೆ, ಈ ಆ್ಯಪ್ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸದೆ ಇರಬಹುದು ಮತ್ತು ಅದರ ಅಲಾರಂಗಳು ನಿಗದಿಯಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುವುದಿಲ್ಲ."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ವೇಳಾಪಟ್ಟಿ, ಅಲಾರಂ, ರಿಮೈಂಡರ್, ಗಡಿಯಾರ"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ಆನ್ ಮಾಡಿ"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ಎಂದೂ ಇಲ್ಲ"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"ಲಾಕ್ ಹೊಂದಿಸಿ"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> ಗೆ ಬದಲಿಸಿ"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು ವಿಫಲವಾಗಿದೆ"</string> <string name="user_nickname" msgid="262624187455825083">"ಅಡ್ಡ ಹೆಸರು"</string> <string name="guest_new_guest" msgid="3482026122932643557">"ಅತಿಥಿಯನ್ನು ಸೇರಿಸಿ"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"ಅತಿಥಿಯನ್ನು ತೆಗೆದುಹಾಕಿ"</string> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index 14d5d1ca66de..465467b2b6f2 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"트랜스코딩 사용"</string> <string name="transcode_default" msgid="3784803084573509491">"앱이 최신 형식을 지원하는 것으로 가정"</string> <string name="transcode_notification" msgid="5560515979793436168">"트랜스코딩 알림 표시"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"트랜스코딩 캐시 사용 중지"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"실행 중인 서비스"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"현재 실행 중인 서비스 보기 및 제어"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView 구현"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"태블릿이 곧 종료될 수 있음(<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"기기가 곧 종료될 수 있음(<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> 후 충전 완료"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> 후 충전 완료"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - 배터리 상태 최적화 중"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"알 수 없음"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"충전 중"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"고속 충전 중"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"저속 충전 중"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"무선 충전 중"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"충전 안함"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"전원이 연결되었지만 현재 충전할 수 없음"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"청구됨"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"관리자가 제어"</string> <string name="disabled" msgid="8017887509554714950">"사용 안함"</string> <string name="external_source_trusted" msgid="1146522036773132905">"허용됨"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"취소"</string> <string name="okay" msgid="949938843324579502">"확인"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"알람 및 리마인더"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"알람 또는 리마인더를 설정하도록 허용"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"알람 및 리마인더"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"이 앱에서 알람 또는 다른 시간 기반 일정을 예약하도록 허용합니다. 이렇게 하면 기기를 사용하고 있지 않더라도 앱이 절전 모드에서 해제된 후 실행됩니다. 이 권한을 취소하면 앱이 오작동할 수 있으며 특히 이 앱에서 예약한 모든 알람은 더 이상 작동하지 않습니다."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"일정 예약, 알람, 리마인더, 이벤트"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"알람 및 리마인더 설정 허용"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"알람 및 리마인더"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"앱에서 알람을 설정하고 다른 작업의 일정을 예약할 수 있도록 허용합니다. 휴대전화를 사용하지 않을 때 앱이 사용될 수 있으며 이로 인해 배터리 사용량이 증가할 수 있습니다. 이 권한을 사용 중지하면 앱이 정상 작동하지 않고 알람이 일정대로 실행되지 않을 수 있습니다."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"앱에서 알람을 설정하고 다른 작업의 일정을 예약할 수 있도록 허용합니다. 태블릿을 사용하지 않을 때 앱이 사용될 수 있으며 이로 인해 배터리 사용량이 증가할 수 있습니다. 이 권한을 사용 중지하면 앱이 정상 작동하지 않고 알람이 일정대로 실행되지 않을 수 있습니다."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"앱에서 알람을 설정하고 다른 작업의 일정을 예약할 수 있도록 허용합니다. 기기를 사용하지 않을 때 앱이 사용될 수 있으며 이로 인해 배터리 사용량이 증가할 수 있습니다. 이 권한을 사용 중지하면 앱이 정상 작동하지 않고 알람이 일정대로 실행되지 않을 수 있습니다."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"일정 예약, 알람, 리마인더, 시계"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"사용 설정"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"방해 금지 모드 사용 설정"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"사용 안함"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"잠금 설정"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g>(으)로 전환"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"새로운 사용자를 만드는 중…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"새 사용자를 만들지 못함"</string> <string name="user_nickname" msgid="262624187455825083">"닉네임"</string> <string name="guest_new_guest" msgid="3482026122932643557">"게스트 추가"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"게스트 삭제"</string> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index a52cad637386..538fe68d1dd2 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -154,7 +154,7 @@ <string name="unknown" msgid="3544487229740637809">"Белгисиз"</string> <string name="running_process_item_user_label" msgid="3988506293099805796">"Колдонуучу: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"Айрым демейки параметрлер туураланды"</string> - <string name="launch_defaults_none" msgid="8049374306261262709">"Демейкилер коюлган жок"</string> + <string name="launch_defaults_none" msgid="8049374306261262709">"Демейки маанилер коюлган жок"</string> <string name="tts_settings" msgid="8130616705989351312">"Кеп синтезаторунун жөндөөлөрү"</string> <string name="tts_settings_title" msgid="7602210956640483039">"Кеп синтезатору"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"Кеп ылдамдыгы"</string> @@ -230,7 +230,7 @@ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR кодун скандап, түзмөктү Wi‑Fi аркылуу жупташтырыңыз"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Түзмөк жупташтырылууда…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Түзмөк жупташтырылган жок. QR коду туура эмес же түзмөк бир тармакка туташпай турат."</string> - <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP дареги жана Оюкча"</string> + <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP дарек жана порт"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR кодун скандоо"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"QR кодун скандап, түзмөктү Wi‑Fi аркылуу жупташтырыңыз"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Wi-Fi тармагына туташыңыз"</string> @@ -250,7 +250,7 @@ <string name="mock_location_app_set" msgid="4706722469342913843">"Жалган жайгашкан жерлерди көрсөткөн колдонмо: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Тармактар"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Зымсыз мониторлорду тастыктамалоо"</string> - <string name="wifi_verbose_logging" msgid="1785910450009679371">"Wi‑Fi дайын-даректүү журналы"</string> + <string name="wifi_verbose_logging" msgid="1785910450009679371">"Wi‑Fi таржымалы"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi тармактарын издөөнү жөнгө салуу"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi иштетилген MAC даректерин башаламан түзүү"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Мобилдик Интернет иштей берет"</string> @@ -283,7 +283,7 @@ <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Туташпай койду"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Зымсыз мониторлорду тастыктамалоо параметрлери көрүнүп турат"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi-Fi тандалганда ар бир SSID үчүн RSSI көрүнүп турат"</string> - <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Батареянын коротулушун чектеп, тармактын иштешин жакшыртат"</string> + <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Батареяны үнөмдөп, тармактын иштешин жакшыртат"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Бул режим өчүрүлгөндөн кийин түзмөк MAC даректи башаламан иретте түзүү функциясы иштетилген тармакка туташкан сайын анын MAC дареги өзгөрүшү мүмкүн."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Трафик ченелет"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Чектелбеген тармак"</string> @@ -352,15 +352,15 @@ <string name="debug_layout" msgid="1659216803043339741">"Элементтрдн чектрин көрст"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Кесилген нерсенин чектери жана жээктери көрүнөт"</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Интерфейсти чагылдыруу"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Интерфейстин элементтери бардык тилдерде оңдон солго карай жайгаштырылат"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Интерфейстин элементтери бардык тилдерде оңдон солго карай жайгашат"</string> <string name="force_msaa" msgid="4081288296137775550">"4x MSAA иштетүү"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 колдонмолорунда 4x MSAA иштетилет"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Татаал формаларды кесүү операцияларынын мүчүлүштүктөрүн оңдоо"</string> <string name="track_frame_time" msgid="522674651937771106">"HWUI профили түзүлүүдө"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU мүчүлүштүктөрдү оңдоо катмарларын иштетүү"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU мүчүлүштүктөрдү оңдоо катмарларын иштетет"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Кызмат көрсөтүүчүнү оозеки киргизүүнү иштетет"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Түзмөккө байланыштуу кызмат көрсөтүүчүнүн кирүүлөрү боюнча мүчүлүштүк тууралуу кабарлоо камтылсын. Анда купуя маалымат көрсөтүлүп, батарея тезирээк отуруп жана/же сактагычтан көбүрөөк орун ээлениши мүмкүн."</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Кызмат көрсөтүүчүнүн журналы"</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Кызмат көрсөтүүчүнүн түзмөккө байланыштуу кошумча жазуулары мүчүлүштүк тууралуу кабарларга кошулат. Анда купуя маалымат камтылып, батарея тезирээк отуруп жана/же сактагычтан көбүрөөк орун ээлеши мүмкүн."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Терезелердин анимациясы"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Өткөрүү анимацснн шкаласы"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Анимациянын узактыгы"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Транскоддоо жүргүзүүнү иштетүү"</string> <string name="transcode_default" msgid="3784803084573509491">"Колдонмолордо заманбап форматтар колдоого алынат"</string> <string name="transcode_notification" msgid="5560515979793436168">"Транскоддоо билдирмелерин көрсөтүү"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Транскоддоо кешин өчүрүү"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Иштеп жаткан кызматтар"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Учурда иштеп жаткан кызматтарды көрүп, көзөмөлдөп турасыз"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView кызматы"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Планшет бир аздан кийин өчүп калышы мүмкүн (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Түзмөк бир аздан кийин өчүп калышы мүмкүн (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> кийин толук кубатталат"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> кийин толук кубатталат"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Батареянын кубатын үнөмдөө иштетилди"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Белгисиз"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Кубатталууда"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Ыкчам кубатталууда"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Жай кубатталууда"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Зымсыз кубатталууда"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Кубат алган жок"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"сайылып турат, бирок кубатталган жок"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Кубатталды"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Администратор тарабынан көзөмөлдөнөт"</string> <string name="disabled" msgid="8017887509554714950">"Өчүрүлгөн"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Уруксат берилген"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Жокко чыгаруу"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ойготкучтар жана эстеткичтер"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Ойготкучтарды, эстеткичтерди коюуга уруксат берүү"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Ойготкучтар жана эстеткичтер"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Бул колдонмого ойготкучтарды жана белгилүү бир убакытка иш-чараларды коюуга уруксат бериңиз. Ушуну менен түзмөктү колдонбой турганыңызда да, колдонмо өзү иштеп баштайт. Бул уруксаттан баш тартсаңыз, колдонмо туура эмес иштеп, ал койгон бардык ойготкучтар мындан ары иштебей калат."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"график, ойготкуч, эстеткич, иш-чара"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Ойготкуч жана эстеткичтерди коюуга уруксат берүү"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Ойготкучтар жана эстеткичтер"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Бул колдонмого ойготкучтарды коюуга жана башка аракеттерди графикке киргизүүгө уруксат берүү. Бул колдонмо телефонуңуз колдонулбай турганда да иштей алат. Мында батареянын кубаты көбүрөөк керектелиши мүмкүн. Бул параметр өчүрүлгөн болсо, бул колдонмо жана анын ойготкучтары жакшы иштебеши мүмкүн."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Бул колдонмого ойготкучтарды коюуга жана башка аракеттерди графикке киргизүүгө уруксат берүү. Бул колдонмо планшетиңиз колдонулбай турганда да иштей алат. Мында батареянын кубаты көбүрөөк керектелиши мүмкүн. Бул параметр өчүрүлгөн болсо, бул колдонмо жана анын ойготкучтары жакшы иштебеши мүмкүн."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Бул колдонмого ойготкучтарды коюуга жана башка аракеттерди графикке киргизүүгө уруксат берүү. Бул колдонмо түзмөгүңүз колдонулбай турганда да иштей алат. Мында батареянын кубаты көбүрөөк керектелиши мүмкүн. Бул параметр өчүрүлгөн болсо, бул колдонмо жана анын ойготкучтары жакшы иштебеши мүмкүн."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"график, ойготкуч, эстеткич, саат"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Күйгүзүү"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\"Тынчымды алба\" режимин күйгүзүү"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Эч качан"</string> @@ -530,7 +531,7 @@ <string name="storage_category" msgid="2287342585424631813">"Сактагыч"</string> <string name="shared_data_title" msgid="1017034836800864953">"Бөлүшүлгөн маалымат"</string> <string name="shared_data_summary" msgid="5516326713822885652">"Бөлүшүлгөн маалыматты көрүп, өзгөртүү"</string> - <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Бул колдонуучу үчүн бөлүшүлгөн маалымат жок."</string> + <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Бул колдонуучу менен бөлүшүлгөн маалымат жок."</string> <string name="shared_data_query_failure_text" msgid="3489828881998773687">"Бөлүшүлгөн маалыматты алууда ката кетти. Кайталоо."</string> <string name="blob_id_text" msgid="8680078988996308061">"Бөлүшүлгөн маалыматты идентификатору: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> <string name="blob_expires_text" msgid="7882727111491739331">"Мөөнөтү <xliff:g id="DATE">%s</xliff:g> бүтөт"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Бөгөт коюу"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> аккаунтуна которулуу"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Жаңы колдонуучу түзүлүүдө…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Жаңы колдонуучу түзүлбөй калды"</string> <string name="user_nickname" msgid="262624187455825083">"Ылакап аты"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Конок кошуу"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Конокту өчүрүү"</string> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index 565fd300861a..59fdbc349b74 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -205,7 +205,7 @@ <string name="tethering_settings_not_available" msgid="266821736434699780">"ຜູ່ໃຊ້ນີ້ບໍ່ສາມາດຕັ້ງຄ່າການປ່ອຍສັນຍານໄດ້"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"ຜູ່ໃຊ້ນີ້ບໍ່ສາມາດຕັ້ງຄ່າຊື່ເອດເຊສພອຍໄດ້"</string> <string name="enable_adb" msgid="8072776357237289039">"ການດີບັກຜ່ານ USB"</string> - <string name="enable_adb_summary" msgid="3711526030096574316">"ເປີດໃຊ້ໂໝດດີບັ໊ກເມື່ອເຊື່ອມຕໍ່ USB"</string> + <string name="enable_adb_summary" msgid="3711526030096574316">"ເປີດໃຊ້ໂໝດດີບັກເມື່ອເຊື່ອມຕໍ່ USB"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"ຖອດຖອນການອະນຸຍາດການດີບັກຜ່ານ USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"ການດີບັກໄຮ້ສາຍ"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"ໂໝດດີບັກເມື່ອເຊື່ອມຕໍ່ Wi‑Fi"</string> @@ -317,23 +317,23 @@ <string name="enable_terminal_summary" msgid="2481074834856064500">"ເປີດນຳໃຊ້ແອັບຯ Terminal ທີ່ໃຫ້ການເຂົ້າເຖິງ shell ໃນໂຕເຄື່ອງໄດ້"</string> <string name="hdcp_checking_title" msgid="3155692785074095986">"ການກວດສອບ HDCP"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"ຕັ້ງວິທີການກວດສອບ HDCP"</string> - <string name="debug_debugging_category" msgid="535341063709248842">"ການດີບັ໊ກ"</string> - <string name="debug_app" msgid="8903350241392391766">"ເລືອກແອັບສຳລັບດີບັ໊ກ"</string> - <string name="debug_app_not_set" msgid="1934083001283807188">"ບໍ່ໄດ້ຕັ້ງການດີບັ໊ກແອັບພລິເຄຊັນ"</string> + <string name="debug_debugging_category" msgid="535341063709248842">"ການດີບັກ"</string> + <string name="debug_app" msgid="8903350241392391766">"ເລືອກແອັບສຳລັບດີບັກ"</string> + <string name="debug_app_not_set" msgid="1934083001283807188">"ບໍ່ໄດ້ຕັ້ງການດີບັກແອັບພລິເຄຊັນ"</string> <string name="debug_app_set" msgid="6599535090477753651">"ແອັບພລິເຄຊັນສຳລັບການດີບັ໊ກ: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"ເລືອກແອັບພລິເຄຊັນ"</string> <string name="no_application" msgid="9038334538870247690">"ບໍ່ມີຫຍັງ"</string> - <string name="wait_for_debugger" msgid="7461199843335409809">"ລໍຖ້າໂຕດີບັ໊ກ"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"ແອັບພລິເຄຊັນທີ່ດີບັ໊ກແລ້ວ ຈະຖ້າໂຕດີບັ໊ກກ່ອນການເຮັດວຽກ"</string> + <string name="wait_for_debugger" msgid="7461199843335409809">"ລໍຖ້າໂຕດີບັກ"</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"ແອັບພລິເຄຊັນທີ່ດີບັກແລ້ວ ຈະຖ້າໂຕດີບັກກ່ອນການເຮັດວຽກ"</string> <string name="debug_input_category" msgid="7349460906970849771">"ການປ້ອນຂໍ້ມູນ"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"ການແຕ້ມ"</string> <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ການສະແດງຜົນໂດຍໃຊ້ຮາດແວຊ່ວຍ"</string> <string name="media_category" msgid="8122076702526144053">"ມີເດຍ"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"ກຳລັງກວດສອບ"</string> - <string name="strict_mode" msgid="889864762140862437">"ເປີດໃຊ້ໂໝດເຂັ່ງຂັດ"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"ກະພິບໜ້າຈໍເມື່ອມີແອັບຯ ເຮັດວຽກດົນເກີນໄປໃນເທຣດຫຼັກ"</string> + <string name="strict_mode" msgid="889864762140862437">"ເປີດໃຊ້ໂໝດເຄັ່ງຄັດ"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"ກະພິບໜ້າຈໍເມື່ອມີແອັບ ເຮັດວຽກດົນເກີນໄປໃນເທຣດຫຼັກ"</string> <string name="pointer_location" msgid="7516929526199520173">"ຕຳແໜ່ງໂຕຊີ້"</string> - <string name="pointer_location_summary" msgid="957120116989798464">"ການວາງຊ້ອນໜ້າຈໍກຳລັງ ສະແດງຂໍ້ມູນການສຳພັດໃນປັດຈຸບັນ"</string> + <string name="pointer_location_summary" msgid="957120116989798464">"ການວາງຊ້ອນໜ້າຈໍກຳລັງສະແດງຂໍ້ມູນການສຳຜັດໃນປັດຈຸບັນ"</string> <string name="show_touches" msgid="8437666942161289025">"ສະແດງການແຕະ"</string> <string name="show_touches_summary" msgid="3692861665994502193">"ສະແດງຄໍາຕິຊົມທາງຮູບພາບສຳລັບການແຕະ"</string> <string name="show_screen_updates" msgid="2078782895825535494">"ສະແດງການອັບເດດພື້ນຜິວ"</string> @@ -355,14 +355,14 @@ <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"ບັງຄັບໃຫ້ຮູບຮ່າງໜ້າຈໍ ຂຽນຈາກຂວາໄປຊ້າຍ ສຳລັບທຸກພາສາ"</string> <string name="force_msaa" msgid="4081288296137775550">"ບັງຄັບໃຊ້ 4x MSAA"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"ເປິດໃຊ້ 4x MSAA ໃນແອັບ OpenGL ES 2.0"</string> - <string name="show_non_rect_clip" msgid="7499758654867881817">"ດີບັ໊ກການເຮັດວຽກຂອງຄລິບທີ່ບໍ່ແມ່ນສີ່ຫຼ່ຽມ"</string> + <string name="show_non_rect_clip" msgid="7499758654867881817">"ດີບັກການເຮັດວຽກຂອງຄລິບທີ່ບໍ່ແມ່ນສີ່ຫຼ່ຽມ"</string> <string name="track_frame_time" msgid="522674651937771106">"ການປະມວນຜົນໂປຣໄຟລ໌ HWUI"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"ເປີດໃຊ້ຊັ້ນຂໍ້ມູນດີບັກ GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ອະນຸຍາດການໂຫລດຊັ້ນຂໍ້ມູນດີບັກ GPU ສຳລັບແອັບດີບັກ"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ເປີດໃຊ້ການບັນທຶກຜູ້ຂາຍແບບລະອຽດ"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ຮວມທັງການລາຍງານຂໍ້ຜິດພາດການເຂົ້າສູ່ລະບົບຂອງຜູ້ຂາຍສະເພາະອຸປະກອນເພີ່ມເຕີມ, ເຊິ່ງອາດມີຂໍ້ມູນສ່ວນຕົວ, ໃຊ້ແບັດເຕີຣີຫຼາຍຂຶ້ນ ແລະ/ຫຼື ໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່ມເຕີມ."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"ຂະໜາດໜ້າຈໍຂອງອະນິເມຊັນ"</string> - <string name="transition_animation_scale_title" msgid="1278477690695439337">"ຂະໜາດອະນິເມຊັນ"</string> + <string name="transition_animation_scale_title" msgid="1278477690695439337">"ຂະໜາດສະຫຼັບອະນິເມຊັນ"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"ໄລຍະເວລາອະນິເມຊັນ"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"ຈຳລອງຈໍສະແດງຜົນທີ່ສອງ"</string> <string name="debug_applications_category" msgid="5394089406638954196">"ແອັບ"</string> @@ -405,8 +405,9 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ເປີດການນຳໃຊ້ການປ່ຽນຮູບແບບລະຫັດ"</string> <string name="transcode_default" msgid="3784803084573509491">"ສົມມຸດວ່າແອັບຮອງຮັບຮູບແບບສະໄໝໃໝ່"</string> <string name="transcode_notification" msgid="5560515979793436168">"ສະແດງການແຈ້ງເຕືອນການປ່ຽນຮູບແບບລະຫັດ"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ປິດການນຳໃຊ້ແຄສການປ່ຽນຮູບແບບລະຫັດ"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"ບໍລິການທີ່ເຮັດວຽກຢູ່"</string> - <string name="runningservices_settings_summary" msgid="1046080643262665743">"ເບິ່ງ ແລະຈັດການບໍລິການທີ່ກຳລັງເຮັດວຽກຢູ່ໃນປັດຈຸບັນ"</string> + <string name="runningservices_settings_summary" msgid="1046080643262665743">"ເບິ່ງ ແລະ ຈັດການບໍລິການທີ່ກຳລັງເຮັດວຽກຢູ່ໃນປັດຈຸບັນ"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"ການຈັດຕັ້ງປະຕິບັດ WebView"</string> <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"ຕັ້ງການຈັດຕັ້ງປະຕິບັດ WebView"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ບໍ່ສາມາດໃຊ້ການເລືອກນີ້ໄດ້ອີກຕໍ່ໄປແລ້ວ. ກະລຸນາລອງໃໝ່."</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ແທັບເລັດອາດປິດໃນໄວໆນີ້ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ອຸປະກອນອາດປິດໃນໄວໆນີ້ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"ຍັງເຫຼືອອີກ <xliff:g id="TIME">%1$s</xliff:g> ຈຶ່ງຈະສາກເຕັມ"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"ຍັງເຫຼືອອີກ <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ຈຶ່ງຈະສາກເຕັມ"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ກຳລັງເພີ່ມປະສິດທິພາບເພື່ອສຸຂະພາບແບັດເຕີຣີ"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"ບໍ່ຮູ້ຈັກ"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ກຳລັງສາກໄຟ"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"ກຳລັງສາກໄຟດ່ວນ"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"ກຳລັງສາກໄຟຊ້າໆ"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"ກຳລັງສາກໄຟໄຮ້ສາຍ"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ບໍ່ໄດ້ສາກໄຟ"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ສຽບສາຍແລ້ວ, ບໍ່ສາມາດສາກໄດ້ໃນຕອນນີ້"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ສາກເຕັມແລ້ວ"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ຄວບຄຸມໂດຍຜູ້ເບິ່ງແຍງ"</string> <string name="disabled" msgid="8017887509554714950">"ປິດການນຳໃຊ້"</string> <string name="external_source_trusted" msgid="1146522036773132905">"ອະນຸຍາດແລ້ວ"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"ຍົກເລີກ"</string> <string name="okay" msgid="949938843324579502">"ຕົກລົງ"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ໂມງປຸກ ແລະ ການແຈ້ງເຕືອນ"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"ອະນຸຍາດໃຫ້ຕັ້ງໂມງປຸກ ຫຼື ການແຈ້ງເຕືອນ"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"ໂມງປຸກ ແລະ ການແຈ້ງເຕືອນ"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"ອະນຸຍາດໃຫ້ແອັບນີ້ກຳນົດເວລາໂມງປຸກ ຫຼື ເຫດການທີ່ອ້າງອີງເວລາອື່ນໆ. ນີ້ຈະເຮັດໃຫ້ແອັບສາມາດປຸກ ແລະ ເຮັດວຽກໄດ້ເຖິງແມ່ນວ່າທ່ານຈະບໍ່ໄດ້ໃຊ້ອຸປະກອນຢູ່ກໍຕາມ. ກະລຸນາຮັບຊາບວ່າການຖອດຖອນການອະນຸຍາດນີ້ອາດສົ່ງຜົນໃຫ້ແອັບເຮັດວຽກຜິດປົກກະຕິໄດ້, ໂດຍສະເພາະແມ່ນໂມງປຸກໃດກໍຕາມທີ່ແອັບໄດ້ກຳນົດເວລາໄວ້ຈະບໍ່ສາມາດເຮັດວຽໄດ້ອີກຕໍ່ໄປ."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ກຳນົດເວລາ, ໂມງປຸກ, ການແຈ້ງເຕືອນ, ນັດໝາຍ"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"ອະນຸຍາດໃຫ້ຕັ້ງໂມງປຸກ ແລະ ການແຈ້ງເຕືອນ"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"ໂມງປຸກ ແລະ ການແຈ້ງເຕືອນ"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"ອະນຸຍາດໃຫ້ແອັບນີ້ຕັ້ງໂມງປຸກ ແລະ ກຳນົດເວລາຄຳສັ່ງອື່ນໆ. ແອັບນີ້ອາດຖືກໃຊ້ເມື່ອທ່ານບໍ່ໄດ້ກຳລັງໃຊ້ໂທລະສັບຂອງທ່ານຢູ່, ເຊິ່ງອາດໃຊ້ແບັດເຕີຣີຫຼາຍຂຶ້ນ. ຫາກການອະນຸຍາດນີ້ຖືກປິດໄວ້, ແອັບນີ້ອາດບໍ່ສາມາດເຮັດວຽກໄດ້ຕາມປົກກະຕິ ແລະ ໂມງປຸກຂອງມັນອາດບໍ່ປຸກຕາມທີ່ກຳນົດເວລາໄວ້."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"ອະນຸຍາດໃຫ້ແອັບນີ້ຕັ້ງໂມງປຸກ ແລະ ກຳນົດເວລາຄຳສັ່ງອື່ນໆ. ແອັບນີ້ອາດຖືກໃຊ້ເມື່ອທ່ານບໍ່ໄດ້ກຳລັງໃຊ້ແທັບເລັດຂອງທ່ານຢູ່, ເຊິ່ງອາດໃຊ້ແບັດເຕີຣີຫຼາຍຂຶ້ນ. ຫາກການອະນຸຍາດນີ້ຖືກປິດໄວ້, ແອັບນີ້ອາດບໍ່ສາມາດເຮັດວຽກໄດ້ຕາມປົກກະຕິ ແລະ ໂມງປຸກຂອງມັນອາດບໍ່ປຸກຕາມທີ່ກຳນົດເວລາໄວ້."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"ອະນຸຍາດໃຫ້ແອັບນີ້ຕັ້ງໂມງປຸກ ແລະ ກຳນົດເວລາຄຳສັ່ງອື່ນໆ. ແອັບນີ້ອາດຖືກໃຊ້ເມື່ອທ່ານບໍ່ໄດ້ກຳລັງໃຊ້ອຸປະກອນຂອງທ່ານຢູ່, ເຊິ່ງອາດໃຊ້ແບັດເຕີຣີຫຼາຍຂຶ້ນ. ຫາກການອະນຸຍາດນີ້ຖືກປິດໄວ້, ແອັບນີ້ອາດບໍ່ສາມາດເຮັດວຽກໄດ້ຕາມປົກກະຕິ ແລະ ໂມງປຸກຂອງມັນອາດບໍ່ປຸກຕາມທີ່ກຳນົດເວລາໄວ້."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ກຳນົດເວລາ, ໂມງປຸກ, ການແຈ້ງເຕືອນ, ໂມງ"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ເປີດ"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"ເປີດໂໝດຫ້າມລົບກວນ"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ບໍ່ໃຊ້"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"ຕັ້ງການລັອກ"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"ສະຫຼັບໄປ <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"ກຳລັງສ້າງຜູ້ໃຊ້ໃໝ່…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"ສ້າງຜູ້ໃຊ້ໃໝ່ບໍ່ສຳເລັດ"</string> <string name="user_nickname" msgid="262624187455825083">"ຊື່ຫຼິ້ນ"</string> <string name="guest_new_guest" msgid="3482026122932643557">"ເພີ່ມແຂກ"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"ລຶບແຂກອອກ"</string> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index e35a3088c885..021ecce0f400 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Perkodavimo įgalinimas"</string> <string name="transcode_default" msgid="3784803084573509491">"Manoma, kad programos palaiko modernius formatus"</string> <string name="transcode_notification" msgid="5560515979793436168">"Rodyti perkodavimo pranešimus"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Išjungti talpyklos perkodavimą"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Vykdomos paslaugos"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Žiūrėti ir valdyti dabar vykdomas paslaugas"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"„WebView“ diegimas"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Planšetinis komp. netrukus gali būti išjungtas (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Įrenginys netrukus gali būti išjungtas (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Liko <xliff:g id="TIME">%1$s</xliff:g>, kol bus visiškai įkrauta"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – liko <xliff:g id="TIME">%2$s</xliff:g>, kol bus visiškai įkrauta"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – optimizuoj. siekiant apsaugoti akum."</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Nežinomas"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Kraunasi..."</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Greitai įkraunama"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Lėtai įkraunama"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Kraunama be laidų"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nekraunama"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Įjungta į maitinimo lizdą, bet šiuo metu įkrauti neįmanoma"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Įkrauta"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Valdo administratorius"</string> <string name="disabled" msgid="8017887509554714950">"Neleidžiama"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Leidžiama"</string> @@ -507,10 +506,12 @@ <string name="cancel" msgid="5665114069455378395">"Atšaukti"</string> <string name="okay" msgid="949938843324579502">"Gerai"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Signalai ir priminimai"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Leisti nustatyti signalus arba priminimus"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Signalai ir priminimai"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Leisti šiai programai planuoti signalus ar kitą laiką pagal įvykius. Bus leidžiama pažadinti programą ir vykdyti įvykį, kai nenaudojate įrenginio. Atminkite, kad anuliavus šį leidimą programa gali veikti netinkamai, ypač nebeveiks programos suplanuoti signalai."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"tvarkaraštis, signalas, priminimas, įvykis"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Leisti nustatyti signalus ir priminimus"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Signalai ir priminimai"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Leiskite šiai programai nustatyti signalus ir suplanuoti kitus veiksmus. Ši programa gali būti naudojama, kai nenaudojate telefono, todėl gali būti išeikvojama daugiau akumuliatoriaus energijos. Jei šis leidimas išjungtas, ši programa gali tinkamai neveikti ir jos signalai neveiks, kaip suplanuota."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Leiskite šiai programai nustatyti signalus ir suplanuoti kitus veiksmus. Ši programa gali būti naudojama, kai nenaudojate planšetinio kompiuterio, todėl gali būti išeikvojama daugiau akumuliatoriaus energijos. Jei šis leidimas išjungtas, ši programa gali tinkamai neveikti ir jos signalai neveiks, kaip suplanuota."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Leiskite šiai programai nustatyti signalus ir suplanuoti kitus veiksmus. Ši programa gali būti naudojama, kai nenaudojate įrenginio, todėl gali būti išeikvojama daugiau akumuliatoriaus energijos. Jei šis leidimas išjungtas, ši programa gali tinkamai neveikti ir jos signalai neveiks, kaip suplanuota."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"tvarkaraštis, signalas, priminimas, laikrodis"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Įjungti"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Netrukdymo režimo įjungimas"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Niekada"</string> @@ -564,8 +565,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Nustatyti užraktą"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Perjungti į <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Kuriamas naujas naudotojas…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Nepavyko sukurti naujo naudotojo"</string> <string name="user_nickname" msgid="262624187455825083">"Slapyvardis"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Pridėti svečią"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Pašalinti svečią"</string> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index eb8c8088e66d..ecf915b1a80b 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Iespējot pārkodēšanu"</string> <string name="transcode_default" msgid="3784803084573509491">"Pieņemt, ka lietotnēs tiek atbalstīti moderni formāti"</string> <string name="transcode_notification" msgid="5560515979793436168">"Rādīt paziņojumus par pārkodēšanu"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Atspējot saglabāšanu kešatmiņā pārkodēšanai"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Aktīvie pakalpojumi"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Pašreiz darbojošos pakalpojumu skatīšana un vadība"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ieviešana"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Planšetdators, iespējams, drīz izslēgsies (<xliff:g id="LEVEL">%1$s</xliff:g>)."</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Ierīce, iespējams, drīz izslēgsies (<xliff:g id="LEVEL">%1$s</xliff:g>)."</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> — <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> līdz pilnai uzlādei"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> — <xliff:g id="TIME">%2$s</xliff:g> līdz pilnai uzlādei"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g>: akumulatora darbības optimizēšana"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Nezināms"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Uzlāde"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Notiek ātrā uzlāde"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Notiek lēnā uzlāde"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Bezvadu uzlāde"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nenotiek uzlāde"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Pievienots, taču pašlaik nevar veikt uzlādi"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Uzlādēts"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolē administrators"</string> <string name="disabled" msgid="8017887509554714950">"Atspējots"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Atļauts"</string> @@ -506,10 +505,12 @@ <string name="cancel" msgid="5665114069455378395">"Atcelt"</string> <string name="okay" msgid="949938843324579502">"LABI"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Signāli un atgādinājumi"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Atļaut iestatīt signālus vai atgādinājumus"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Signāli un atgādinājumi"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Atļaujiet šai lietotnei ieplānot signālus vai citus no laika atkarīgus notikumus. Tādējādi lietotne tiks aktivizēta un darbosies, pat ja neizmantosiet ierīci. Ņemiet vērā — atsaucot šo atļauju, var tikt traucēta lietotnes darbība, konkrētāk, vairs nedarbosies lietotnes ieplānotie signāli."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ieplānot, signāls, atgādinājums, notikums"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Atļaut iestatīt signālus un atgādinājumus"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Signāli un atgādinājumi"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Atļaut šai lietotnei iestatīt signālus un ieplānot citas darbības. Šī lietotne var tikt izmantota, kamēr jūs neizmantojat tālruni, tāpēc var tikt patērēts vairāk akumulatora enerģijas. Ja šī atļauja ir izslēgta, šī lietotne var nedarboties, kā paredzēts, un tās signāli netiek rādīti ieplānotajā laikā."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Atļaut šai lietotnei iestatīt signālus un ieplānot citas darbības. Šī lietotne var tikt izmantota, kamēr jūs neizmantojat planšetdatoru, tāpēc var tikt patērēts vairāk akumulatora enerģijas. Ja šī atļauja ir izslēgta, šī lietotne var nedarboties, kā paredzēts, un tās signāli netiek rādīti ieplānotajā laikā."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Atļaut šai lietotnei iestatīt signālus un ieplānot citas darbības. Šī lietotne var tikt izmantota, kamēr jūs neizmantojat ierīci, tāpēc var tikt patērēts vairāk akumulatora enerģijas. Ja šī atļauja ir izslēgta, šī lietotne var nedarboties, kā paredzēts, un tās signāli netiek rādīti ieplānotajā laikā."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ieplānot, signāls, atgādinājums, pulkstenis"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Ieslēgt"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Režīma “Netraucēt” ieslēgšana"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nekad"</string> @@ -563,8 +564,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Iestatīt bloķēšanu"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Pārslēgties uz: <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Notiek jauna lietotāja izveide…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Neizdevās izveidot jaunu lietotāju"</string> <string name="user_nickname" msgid="262624187455825083">"Segvārds"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Pievienot viesi"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Noņemt viesi"</string> diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml index 03128c17c784..56fa0ecadd55 100644 --- a/packages/SettingsLib/res/values-mk/arrays.xml +++ b/packages/SettingsLib/res/values-mk/arrays.xml @@ -29,7 +29,7 @@ <item msgid="4613015005934755724">"Поврзано"</item> <item msgid="3763530049995655072">"Суспендирана"</item> <item msgid="7852381437933824454">"Се исклучува..."</item> - <item msgid="5046795712175415059">"Исклучено"</item> + <item msgid="5046795712175415059">"Не е поврзано"</item> <item msgid="2473654476624070462">"Неуспешна"</item> <item msgid="9146847076036105115">"Блокирана"</item> <item msgid="4543924085816294893">"Привремено избегнува лоша врска"</item> @@ -43,7 +43,7 @@ <item msgid="1043944043827424501">"Поврзано на <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item> <item msgid="7445993821842009653">"Суспендирана"</item> <item msgid="1175040558087735707">"Исклучување од <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item> - <item msgid="699832486578171722">"Исклучено"</item> + <item msgid="699832486578171722">"Не е поврзано"</item> <item msgid="522383512264986901">"Неуспешна"</item> <item msgid="3602596701217484364">"Блокирано"</item> <item msgid="1999413958589971747">"Привремено избегнува лоша врска"</item> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index d0e5996e24ff..9dbe24c0c1c5 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -21,9 +21,9 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="wifi_fail_to_scan" msgid="2333336097603822490">"Не може да скенира за мрежи"</string> - <string name="wifi_security_none" msgid="7392696451280611452">"Ниедна"</string> + <string name="wifi_security_none" msgid="7392696451280611452">"Нема"</string> <string name="wifi_remembered" msgid="3266709779723179188">"Зачувано"</string> - <string name="wifi_disconnected" msgid="7054450256284661757">"Прекината врска"</string> + <string name="wifi_disconnected" msgid="7054450256284661757">"Не е поврзано"</string> <string name="wifi_disabled_generic" msgid="2651916945380294607">"Оневозможено"</string> <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"Конфигурирањето ИП не успеа"</string> <string name="wifi_disabled_by_recommendation_provider" msgid="1302938248432705534">"Не е поврзано поради нискиот квалитет на мрежата"</string> @@ -64,7 +64,7 @@ <string name="speed_label_very_fast" msgid="8215718029533182439">"Многу брза"</string> <string name="wifi_passpoint_expired" msgid="6540867261754427561">"Истечено"</string> <string name="preference_summary_default_combination" msgid="2644094566845577901">"<xliff:g id="STATE">%1$s</xliff:g>/<xliff:g id="DESCRIPTION">%2$s</xliff:g>"</string> - <string name="bluetooth_disconnected" msgid="7739366554710388701">"Исклучено"</string> + <string name="bluetooth_disconnected" msgid="7739366554710388701">"Не е поврзано"</string> <string name="bluetooth_disconnecting" msgid="7638892134401574338">"Се исклучува..."</string> <string name="bluetooth_connecting" msgid="5871702668260192755">"Се поврзува..."</string> <string name="bluetooth_connected" msgid="8065345572198502293">"Поврзан со <xliff:g id="ACTIVE_DEVICE">%1$s</xliff:g>"</string> @@ -86,7 +86,7 @@ <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Телефонски повици"</string> <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Пренос на датотека"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Влезен уред"</string> - <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Пристап на интернет"</string> + <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Пристап до интернет"</string> <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"Споделување контакти"</string> <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"Користи за споделување контакти"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Споделување конекција на интернет"</string> @@ -198,15 +198,15 @@ <string name="category_personal" msgid="6236798763159385225">"Лични"</string> <string name="category_work" msgid="4014193632325996115">"Работа"</string> <string name="development_settings_title" msgid="140296922921597393">"Програмерски опции"</string> - <string name="development_settings_enable" msgid="4285094651288242183">"Овозможете ги опциите за програмери"</string> + <string name="development_settings_enable" msgid="4285094651288242183">"Овозможете ги програмерските опции"</string> <string name="development_settings_summary" msgid="8718917813868735095">"Постави опции за развој на апликација"</string> <string name="development_settings_not_available" msgid="355070198089140951">"Опциите на програмерот не се достапни за овој корисник"</string> <string name="vpn_settings_not_available" msgid="2894137119965668920">"Поставките за ВПН не се достапни за овој корисник"</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"Поставките за спојување не се достапни за овој корисник"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Поставките за името на пристапната точка не се достапни за овој корисник"</string> - <string name="enable_adb" msgid="8072776357237289039">"Отстранување грешки на USB"</string> + <string name="enable_adb" msgid="8072776357237289039">"Отстранување грешки преку USB"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"Режим за отстранување грешки кога е поврзано USB"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"Отповикај овластувања за отстранување грешки од USB"</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"Отповикај овластувања за отстранување грешки преку USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Безжично отстранување грешки"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Режим за отстранување грешки кога е поврзано Wi‑Fi"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Грешка"</string> @@ -226,7 +226,7 @@ <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Спарете со уред"</string> <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Код за спарување преку Wi‑Fi"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Спарувањето е неуспешно"</string> - <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Уверете се дека уредот е поврзан на истата мрежа."</string> + <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Погрижете се уредот да биде поврзан на истата мрежа."</string> <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Спарете го уредот преку Wi‑Fi со скенирање QR-код"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Се спарува уред…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Уредот не успеа да се спари. Или QR-кодот беше погрешен или уредот не е поврзан на истата мрежа."</string> @@ -246,7 +246,7 @@ <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Дозволете отклучување со OEM?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ПРЕДУПРЕДУВАЊЕ: функциите за заштита на уредот нема да работат на овој уред додека е вклучена оваа поставка."</string> <string name="mock_location_app" msgid="6269380172542248304">"Изберете апликација за лажна локација"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"Нема поставено апликација за лажна локација"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"Не е поставена апликација за лажна локација"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"Апликација за лажна локација: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Вмрежување"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Приказ на сертификација на безжична мрежа"</string> @@ -325,7 +325,7 @@ <string name="no_application" msgid="9038334538870247690">"Ништо"</string> <string name="wait_for_debugger" msgid="7461199843335409809">"Почекај ја програмата за отстранување грешки"</string> <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Пред да се изврши, апликација за отстранување грешки чека програмата за отстранување грешки да се закачи"</string> - <string name="debug_input_category" msgid="7349460906970849771">"Внес"</string> + <string name="debug_input_category" msgid="7349460906970849771">"Внесување"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"Цртање"</string> <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Хардверско забрзување"</string> <string name="media_category" msgid="8122076702526144053">"Медиуми"</string> @@ -388,7 +388,7 @@ <string name="loading_injected_setting_summary" msgid="8394446285689070348">"Се вчитува…"</string> <string-array name="color_mode_names"> <item msgid="3836559907767149216">"Динамично (стандардно)"</item> - <item msgid="9112200311983078311">"Природно"</item> + <item msgid="9112200311983078311">"Природни"</item> <item msgid="6564241960833766170">"Стандардно"</item> </string-array> <string-array name="color_mode_descriptions"> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Овозможи транскодирање"</string> <string name="transcode_default" msgid="3784803084573509491">"Претпостави дека апликациите поддржуваат модерни формати"</string> <string name="transcode_notification" msgid="5560515979793436168">"Прикажувај известувања за транскодирање"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Оневозможи го кешот на транскодирањето"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Активни услуги"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Погледнете и контролирајте услуги што се моментално активни"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Воведување WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Таблетот може да се исклучи наскоро (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Уредот може да се исклучи наскоро (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> до полна батерија"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> до полна батерија"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Се оптимизира за состојба на батерија"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Непознато"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Се полни"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Брзо полнење"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Бавно полнење"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Се полни безжично"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не се полни"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Приклучен е, но батеријата не може да се полни во моментов"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Полна"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Контролирано од администраторот"</string> <string name="disabled" msgid="8017887509554714950">"Оневозможено"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Дозволено"</string> @@ -475,7 +474,7 @@ <item msgid="7529124349186240216">"100%"</item> </string-array> <string name="charge_length_format" msgid="6941645744588690932">"Пред <xliff:g id="ID_1">%1$s</xliff:g>"</string> - <string name="remaining_length_format" msgid="4310625772926171089">"Преостанаа <xliff:g id="ID_1">%1$s</xliff:g>"</string> + <string name="remaining_length_format" msgid="4310625772926171089">"Преостануваат <xliff:g id="ID_1">%1$s</xliff:g>"</string> <string name="screen_zoom_summary_small" msgid="6050633151263074260">"Мал"</string> <string name="screen_zoom_summary_default" msgid="1888865694033865408">"Стандардно"</string> <string name="screen_zoom_summary_large" msgid="4706951482598978984">"Голем"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Откажи"</string> <string name="okay" msgid="949938843324579502">"Во ред"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Аларми и потсетници"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Дозволете поставување аларми или потсетници"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Аларми и потсетници"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Дозволете ѝ на апликацијава да закажува аларми и други временски базирани настани. Ова ќе ѝ дозволи на апликацијата да се разбуди и да се извршува дури и кога не го користите уредот. Имајте предвид дека повлекувањето на дозволава може да предизвика неправилно работење на апликацијата, односно алармите што апликацијата ги закажала веќе нема да функционираат."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"закажување, аларм, потсетник, наастан"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Дозволете поставување аларми и потсетници"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Аларми и потсетници"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Дозволете ѝ на апликацијава да поставува аларми и да закажува други дејства. Апликацијава може да се користи кога не го користите телефонот, а тоа може да користи повеќе батерија. Ако дозволава е исклучена, апликацијава можеби нема да функционира нормално, а алармите нема да работат според закажаното."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Дозволете ѝ на апликацијава да поставува аларми и да закажува други дејства. Апликацијава може да се користи кога не го користите таблетот, а тоа може да користи повеќе батерија. Ако дозволава е исклучена, апликацијава можеби нема да функционира нормално, а алармите нема да работат според закажаното."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Дозволете ѝ на апликацијава да поставува аларми и да закажува други дејства. Апликацијава може да се користи кога не го користите уредот, а тоа може да користи повеќе батерија. Ако дозволава е исклучена, апликацијава можеби нема да функционира нормално, а алармите нема да работат според закажаното."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"закажување, аларм, потсетник, часовник"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Вклучи"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Исклучување на „Не вознемирувај“"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Никогаш"</string> @@ -521,7 +522,7 @@ <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"Времетраење"</string> <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Секогаш прашувај"</string> <string name="zen_mode_forever" msgid="3339224497605461291">"Додека не го исклучите"</string> - <string name="time_unit_just_now" msgid="3006134267292728099">"Неодамнешни"</string> + <string name="time_unit_just_now" msgid="3006134267292728099">"Пред малку"</string> <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Телефонски звучник"</string> <string name="media_transfer_this_phone" msgid="7194341457812151531">"Овој телефон"</string> <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Проблем со поврзување. Исклучете го уредот и повторно вклучете го"</string> @@ -562,10 +563,9 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Постави заклучување"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Префрли на <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Се создава нов корисник…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Не успеа да создаде нов корисник"</string> <string name="user_nickname" msgid="262624187455825083">"Прекар"</string> - <string name="guest_new_guest" msgid="3482026122932643557">"Додај гостин"</string> + <string name="guest_new_guest" msgid="3482026122932643557">"Додајте гостин"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Отстрани гостин"</string> <string name="guest_nickname" msgid="6332276931583337261">"Гостин"</string> <string name="user_image_take_photo" msgid="467512954561638530">"Фотографирајте"</string> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index f5bf135693e6..a99d864fa2f2 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"റദ്ദാക്കുക"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"കണക്റ്റുചെയ്തിരിക്കുമ്പോൾ, ജോടിയാക്കുന്നത് നിങ്ങളുടെ കോൺടാക്റ്റുകളിലേക്കും കോൾ ചരിത്രത്തിലേക്കും ആക്സസ്സ് അനുവദിക്കുന്നു."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതുമായി ജോടിയാക്കാനായില്ല."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"ഒരു തെറ്റായ പിൻ അല്ലെങ്കിൽ പാസ്കീ കാരണം <xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതുമായി ജോടിയാക്കാനായില്ല."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"തെറ്റായ പിൻ/പാസ്കീ കാരണം <xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതുമായി ജോടിയാക്കാനായില്ല."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എന്നതുമായി ആശയവിനിമയം നടത്താനായില്ല."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>, ജോടിയാക്കൽ നിരസിച്ചു."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"കമ്പ്യൂട്ടർ"</string> @@ -239,19 +239,19 @@ <string name="bugreport_in_power_summary" msgid="1885529649381831775">"ബഗ് റിപ്പോർട്ട് എടുക്കുന്നതിന് പവർ മെനുവിൽ ഒരു ബട്ടൺ കാണിക്കുക"</string> <string name="keep_screen_on" msgid="1187161672348797558">"സജീവമായി തുടരുക"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"ചാർജ് ചെയ്യുമ്പോൾ സ്ക്രീൻ ഒരിക്കലും സ്ലീപ്പ് മോഡിലാകില്ല"</string> - <string name="bt_hci_snoop_log" msgid="7291287955649081448">"ബ്ലൂടൂത്ത് HCI സ്നൂപ്പ് ലോഗ് സജീവമാക്കൂ"</string> + <string name="bt_hci_snoop_log" msgid="7291287955649081448">"ബ്ലൂടൂത്ത് HCI സ്നൂപ്പ് ലോഗ് പ്രവർത്തനക്ഷമമാക്കുക"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Bluetooth പായ്ക്കറ്റുകൾ ക്യാപ്ചർ ചെയ്യുക. (ഈ ക്രമീകരണം മാറ്റിയ ശേഷം Bluetooth മാറ്റുക)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM അൺലോക്ക് ചെയ്യൽ"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"അൺലോക്കാകാൻ ബൂട്ട്ലോഡറിനെ അനുവദിക്കുക"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"OEM അൺലോക്കുചെയ്യൽ അനുവദിക്കണോ?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"മുന്നറിയിപ്പ്: ഈ ക്രമീകരണം ഓണായിരിക്കുമ്പോൾ, ഉപകരണ സുരക്ഷാ ഫീച്ചറുകൾ ഈ ഉപകരണത്തിൽ പ്രവർത്തിക്കില്ല."</string> <string name="mock_location_app" msgid="6269380172542248304">"മോക്ക്ലൊക്കേഷൻ ആപ്പ് തിരഞ്ഞെടുക്കൂ"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"മോക്ക് ലൊക്കേഷൻ ആപ്പ് സജ്ജമാക്കിയിട്ടില്ല"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"മോക്ക് ലൊക്കേഷൻ ആപ്പ് സജ്ജീകരിച്ചിട്ടില്ല"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"മോക്ക് ലൊക്കേഷൻ ആപ്പ്: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"നെറ്റ്വര്ക്കിംഗ്"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"വയർലെസ് ഡിസ്പ്ലേ സർട്ടിഫിക്കേഷൻ"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"വൈഫൈ വെർബോസ് ലോഗിംഗ് പ്രവർത്തനക്ഷമമാക്കുക"</string> - <string name="wifi_scan_throttling" msgid="2985624788509913617">"വൈഫൈ സ്കാൻ പ്രവർത്തനരഹിതമാക്കുന്നു"</string> + <string name="wifi_scan_throttling" msgid="2985624788509913617">"വൈഫൈ സ്കാൻ ത്രോട്ടിലിംഗ്"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"വൈഫൈ മെച്ചപ്പെടുത്തിയ MAC ക്രമരഹിതമാക്കൽ"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"മൊബൈൽ ഡാറ്റ എല്ലായ്പ്പോഴും സജീവം"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"ടെതറിംഗ് ഹാർഡ്വെയർ ത്വരിതപ്പെടുത്തൽ"</string> @@ -267,7 +267,7 @@ <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"Bluetooth ഓഡിയോ സാമ്പിൾ നിരക്ക്"</string> <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"Bluetooth Audio Codec\nSelection ട്രിഗ്ഗര് ചെയ്യുക: സാമ്പിൾ റേറ്റ്"</string> <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"ചാരനിറത്തിലാക്കിയിട്ടുണ്ടെങ്കിൽ, ഫോണോ ഹെഡ്സെറ്റോ പിന്തുണയ്ക്കുന്നില്ലെന്നാണ് അർത്ഥം"</string> - <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"പ്രതി സാമ്പിളിലെ Bluetooth ഓഡിയോ ബിറ്റ് നി"</string> + <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"ഓരോ സാമ്പിളിലെയും Bluetooth ഓഡിയോ ബിറ്റുകൾ"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Bluetooth Audio Codec\nSelection ട്രിഗ്ഗര് ചെയ്യുക: ഓരോ സാമ്പിളിനുള്ള ബിറ്റുകൾ"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Bluetooth ഓഡിയോ ചാനൽ മോഡ്"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Bluetooth Audio Codec\nSelection ട്രിഗ്ഗര് ചെയ്യുക: ചാനൽ മോഡ്"</string> @@ -297,7 +297,7 @@ <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"USB കോൺഫിഗറേഷൻ തിരഞ്ഞെടുക്കൂ"</string> <string name="allow_mock_location" msgid="2102650981552527884">"വ്യാജ ലൊക്കേഷനുകൾ അനുവദിക്കുക"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"വ്യാജ ലൊക്കേഷനുകൾ അനുവദിക്കുക"</string> - <string name="debug_view_attributes" msgid="3539609843984208216">"ആട്രിബ്യൂട്ട് പരിശോധന കാണൽ സജീവമാക്കൂ"</string> + <string name="debug_view_attributes" msgid="3539609843984208216">"ആട്രിബ്യൂട്ട് പരിശോധന കാണൽ പ്രവർത്തനക്ഷമമാക്കുക"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"വൈഫൈ സജീവമാണെങ്കിലും, മൊബൈൽ ഡാറ്റ സജീവമായി നിർത്തുക (വേഗത്തിൽ നെറ്റ്വർക്ക് മാറുന്നതിനായി)."</string> <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"ലഭ്യമാണെങ്കിൽ \'ടെതറിംഗ് ഹാർഡ്വെയർ ത്വരിതപ്പെടുത്തൽ\' ഉപയോഗിക്കുക"</string> <string name="adb_warning_title" msgid="7708653449506485728">"USB ഡീബഗ്ഗുചെയ്യാൻ അനുവദിക്കണോ?"</string> @@ -317,21 +317,21 @@ <string name="enable_terminal_summary" msgid="2481074834856064500">"പ്രാദേശിക ഷെൽ ആക്സസ് നൽകുന്ന ടെർമിനൽ അപ്ലിക്കേഷൻ പ്രവർത്തനക്ഷമമാക്കുക"</string> <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP പരിശോധന"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP ചെക്കിംഗ്രീതി സജ്ജമാക്കുക"</string> - <string name="debug_debugging_category" msgid="535341063709248842">"ഡീബഗ് ചെയ്യുന്നു"</string> + <string name="debug_debugging_category" msgid="535341063709248842">"ഡീബഗ്ഗിംഗ്"</string> <string name="debug_app" msgid="8903350241392391766">"ഡീബഗ് ആപ്പ് തിരഞ്ഞെടുക്കുക"</string> - <string name="debug_app_not_set" msgid="1934083001283807188">"ഡീബഗ് അപ്ലിക്കേഷനുകളൊന്നും സജ്ജമാക്കിയിട്ടില്ല"</string> + <string name="debug_app_not_set" msgid="1934083001283807188">"ഡീബഗ് ആപ്പുകളൊന്നും സജ്ജീകരിച്ചിട്ടില്ല"</string> <string name="debug_app_set" msgid="6599535090477753651">"ഡീബഗ്ഗുചെയ്യൽ അപ്ലിക്കേഷൻ: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"ആപ്പ് തിരഞ്ഞെടുക്കൂ"</string> <string name="no_application" msgid="9038334538870247690">"ഒന്നുമില്ല"</string> <string name="wait_for_debugger" msgid="7461199843335409809">"ഡീബഗ്ഗറിനായി കാത്തിരിക്കുക"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"ഡീബഗ്ഗുചെയ്ത അപ്ലിക്കേഷൻ നിർവ്വഹണത്തിനുമുമ്പായി അറ്റാച്ചുചെയ്യുന്നതിന് ഡീബഗ്ഗറിനായി കാത്തിരിക്കുന്നു."</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"നിർവ്വഹണത്തിന് മുമ്പായി അറ്റാച്ച് ചെയ്യാൻ ഡീബഗ് ചെയ്ത ആപ്പ്, ഡീബഗ്ഗറിനായി കാത്തിരിക്കുന്നു."</string> <string name="debug_input_category" msgid="7349460906970849771">"ഇൻപുട്ട്"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"ഡ്രോയിംഗ്"</string> - <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ഹാർഡ്വെയർ ത്വരിതപ്പെടുത്തിയ റെൻഡർ ചെയ്യൽ"</string> + <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ഹാർഡ്വെയർ ത്വരിതപ്പെടുത്തിയ റെൻഡറിംഗ്"</string> <string name="media_category" msgid="8122076702526144053">"മീഡിയ"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"മോണിറ്ററിംഗ്"</string> <string name="strict_mode" msgid="889864762140862437">"ഫോഴ്സ്മോഡ് സജീവമാക്കി"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"പ്രധാന ത്രെഡിൽ അപ്ലിക്കേഷനുകൾ ദൈർഘ്യമേറിയ പ്രവർത്തനങ്ങൾ നടത്തുമ്പോൾ സ്ക്രീൻ ഫ്ലാഷ് ചെയ്യുക"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"പ്രധാന ത്രെഡിൽ ആപ്പുകൾ ദൈർഘ്യമേറിയ പ്രവർത്തനങ്ങൾ നടത്തുമ്പോൾ സ്ക്രീൻ ഫ്ലാഷ് ചെയ്യുക"</string> <string name="pointer_location" msgid="7516929526199520173">"പോയിന്റർ ലൊക്കേഷൻ"</string> <string name="pointer_location_summary" msgid="957120116989798464">"സ്ക്രീൻ ഓവർലേ നിലവിലെ ടച്ച് ഡാറ്റ ദൃശ്യമാക്കുന്നു"</string> <string name="show_touches" msgid="8437666942161289025">"ടാപ്പുകൾ കാണിക്കുക"</string> @@ -355,14 +355,14 @@ <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"എല്ലാ ഭാഷകൾക്കുമായി സ്ക്രീൻ ലേഔട്ട് ഡയറക്ഷൻ RTL-ലേക്ക് നിർബന്ധമാക്കുക"</string> <string name="force_msaa" msgid="4081288296137775550">"4x MSAA നിർബന്ധമാക്കുക"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 ആപ്പുകളിൽ 4x MSAA പ്രവർത്തനക്ഷമമാക്കൂ"</string> - <string name="show_non_rect_clip" msgid="7499758654867881817">"ചതുരാകൃതിയിലല്ലാത്ത ക്ലിപ്പ്പ്രവർത്തനം ഡീബഗുചെയ്യൂ"</string> + <string name="show_non_rect_clip" msgid="7499758654867881817">"ചതുരമല്ലാത്ത ക്ലിപ്പ് പ്രവർത്തനം ഡീബഗ്ഗ് ചെയ്യുക"</string> <string name="track_frame_time" msgid="522674651937771106">"HWUI റെൻഡറിംഗ് പ്രൊഫൈൽ"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ഡീബഗ് ലെയറുകൾ പ്രവർത്തനക്ഷമമാക്കൂ"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ഡീബഗ് ആപ്പുകൾക്കായി GPU ഡീബഗ് ലെയറുകൾ ലോഡ് ചെയ്യാൻ അനുവദിക്കുക"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"വെർബോസ് വെണ്ടർ ലോഗ് ചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കൂ"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ബഗ് റിപ്പോർട്ടുകളിൽ ഉപകരണ-നിർദ്ദിഷ്ട വെണ്ടർ അധിക ലോഗുകൾ ഉൾപ്പെടുത്തുക, അതിൽ സ്വകാര്യ വിവരങ്ങൾ അടങ്ങിയിരിക്കാം, കൂടുതൽ ബാറ്ററി ഉപയോഗിക്കാം കൂടാതെ/അല്ലെങ്കിൽ കൂടുതൽ സ്റ്റോറേജ് ഇടം ഉപയോഗിക്കാം."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"വിൻഡോ ആനിമേഷൻ സ്കെയിൽ"</string> - <string name="transition_animation_scale_title" msgid="1278477690695439337">"സംക്രമണ ആനിമേഷൻ സ്കെയിൽ"</string> + <string name="transition_animation_scale_title" msgid="1278477690695439337">"ട്രാൻസിഷൻ ആനിമേഷൻ സ്കെയിൽ"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"ആനിമേറ്റർ ദൈർഘ്യ സ്കെയിൽ"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"രണ്ടാം ഡിസ്പ്ലേകൾ പ്രവർത്തിപ്പിക്കുക"</string> <string name="debug_applications_category" msgid="5394089406638954196">"ആപ്പുകൾ"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ട്രാൻസ്കോഡ് ചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കുക"</string> <string name="transcode_default" msgid="3784803084573509491">"ആപ്പുകൾ ആധുനിക ഫോർമാറ്റുകളെ പിന്തുണയ്ക്കുമെന്ന് കരുതുക"</string> <string name="transcode_notification" msgid="5560515979793436168">"ട്രാൻസ്കോഡ് ചെയ്യൽ അറിയിപ്പുകൾ കാണിക്കുക"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ട്രാൻസ്കോഡ് ചെയ്യൽ കാഷെ പ്രവർത്തനരഹിതമാക്കുക"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"പ്രവർത്തിക്കുന്ന സേവനങ്ങൾ"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"നിലവിൽ പ്രവർത്തിക്കുന്ന സേവനങ്ങൾ കാണുക, നിയന്ത്രിക്കുക"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView നടപ്പാക്കൽ"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ടാബ്ലെറ്റ് ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ഉപകരണം ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"പൂർണ്ണമാകാൻ <xliff:g id="TIME">%1$s</xliff:g> ശേഷിക്കുന്നു"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - പൂർണ്ണമാകാൻ <xliff:g id="TIME">%2$s</xliff:g> ശേഷിക്കുന്നു"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ബാറ്ററിയുടെ ആയുസിനായി ഒപ്റ്റിമൈസ് ചെയ്യുന്നു"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"അജ്ഞാതം"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ചാർജ് ചെയ്യുന്നു"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"അതിവേഗ ചാർജിംഗ്"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"പതുക്കെയുള്ള ചാർജിംഗ്"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"വയർലെസായി ചാർജുചെയ്യുന്നു"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ചാർജ്ജുചെയ്യുന്നില്ല"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"പ്ലഗ് ഇൻ ചെയ്തു, ഇപ്പോൾ ചാർജ് ചെയ്യാനാവില്ല"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ചാർജായി"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"അഡ്മിൻ നിയന്ത്രിക്കുന്നത്"</string> <string name="disabled" msgid="8017887509554714950">"പ്രവർത്തനരഹിതമാക്കി"</string> <string name="external_source_trusted" msgid="1146522036773132905">"അനുവദനീയം"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"റദ്ദാക്കുക"</string> <string name="okay" msgid="949938843324579502">"ശരി"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"അലാറങ്ങളും റിമെെൻഡറുകളും"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"അലാറങ്ങളോ റിമെെൻഡറുകളോ സജ്ജീകരിക്കാൻ അനുവദിക്കുക"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"അലാറങ്ങളും റിമെെൻഡറുകളും"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"അലാറങ്ങളോ സമയാധിഷ്ഠിതമായ മറ്റ് ഇവന്റുകളോ ഷെഡ്യൂൾ ചെയ്യാൻ ഈ ആപ്പിനെ അനുവദിക്കുക. നിങ്ങൾ ഉപകരണം ഉപയോഗിക്കാതിരിക്കുന്ന സമയത്തും സജീവമാകാനും റൺ ചെയ്യാനും ഇത് ആപ്പിനെ അനുവദിക്കും. ഈ അനുമതി പിൻവലിക്കുന്നത് ആപ്പിന്റെ പ്രവർത്തനത്തിൽ തകരാറ് സംഭവിക്കാൻ കാരണമായേക്കാമെന്നത് ശ്രദ്ധിക്കുക പ്രത്യേകിച്ച്, ആപ്പ് ഷെഡ്യൂൾ ചെയ്ത ഒരു അലാറവും തുടർന്ന് പ്രവർത്തിക്കില്ല."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ഷെഡ്യൂൾ, അലാറം, റിമെെൻഡർ, ഇവന്റ്"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"അലാറവും റിമെെൻഡറും സജ്ജീകരിക്കാൻ അനുവദിക്കുക"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"അലാറങ്ങളും റിമെെൻഡറുകളും"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"അലാറങ്ങൾ സജ്ജീകരിക്കാനും മറ്റ് പ്രവർത്തനങ്ങൾ ഷെഡ്യൂൾ ചെയ്യാനും ഈ ആപ്പിനെ അനുവദിക്കുക. കൂടുതൽ ബാറ്ററി ഉപയോഗിച്ചേക്കാവുന്ന നിങ്ങളുടെ ഫോൺ ഉപയോഗിക്കാത്തപ്പോൾ ഈ ആപ്പ് ഉപയോഗിച്ചേക്കാം. ഈ അനുമതി ഓഫാണെങ്കിൽ, ഈ ആപ്പ് സ്വാഭാവികമായി പ്രവർത്തിച്ചേക്കില്ല, ഷെഡ്യൂൾ ചെയ്ത പോലെ അതിന്റെ അലാറങ്ങളും പ്രവർത്തിക്കില്ല."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"അലാറങ്ങൾ സജ്ജീകരിക്കാനും മറ്റ് പ്രവർത്തനങ്ങൾ ഷെഡ്യൂൾ ചെയ്യാനും ഈ ആപ്പിനെ അനുവദിക്കുക. കൂടുതൽ ബാറ്ററി ഉപയോഗിച്ചേക്കാവുന്ന നിങ്ങളുടെ ടാബ്ലെറ്റ് ഉപയോഗിക്കാത്തപ്പോൾ ഈ ആപ്പ് ഉപയോഗിച്ചേക്കാം. ഈ അനുമതി ഓഫാണെങ്കിൽ, ഈ ആപ്പ് സ്വാഭാവികമായി പ്രവർത്തിച്ചേക്കില്ല, ഷെഡ്യൂൾ ചെയ്ത പോലെ അതിന്റെ അലാറങ്ങളും പ്രവർത്തിക്കില്ല."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"അലാറങ്ങൾ സജ്ജീകരിക്കാനും മറ്റ് പ്രവർത്തനങ്ങൾ ഷെഡ്യൂൾ ചെയ്യാനും ഈ ആപ്പിനെ അനുവദിക്കുക. കൂടുതൽ ബാറ്ററി ഉപയോഗിച്ചേക്കാവുന്ന നിങ്ങളുടെ ഉപകരണം ഉപയോഗിക്കാത്തപ്പോൾ ഈ ആപ്പ് ഉപയോഗിച്ചേക്കാം. ഈ അനുമതി ഓഫാണെങ്കിൽ, ഈ ആപ്പ് സ്വാഭാവികമായി പ്രവർത്തിച്ചേക്കില്ല, ഷെഡ്യൂൾ ചെയ്ത പോലെ അതിന്റെ അലാറങ്ങളും പ്രവർത്തിക്കില്ല."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ഷെഡ്യൂൾ, അലാറം, റിമെെൻഡർ, ക്ലോക്ക്"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ഓണാക്കുക"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\'ശല്യപ്പെടുത്തരുത്\' ഓണാക്കുക"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ഒരിക്കലും വേണ്ട"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"ലോക്ക് സജ്ജീകരിക്കുക"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> എന്നതിലേക്ക് മാറുക"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"പുതിയ ഉപയോക്താവിനെ സൃഷ്ടിക്കുന്നു…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"പുതിയ ഉപയോക്താവിനെ സൃഷ്ടിക്കാനായില്ല"</string> <string name="user_nickname" msgid="262624187455825083">"വിളിപ്പേര്"</string> <string name="guest_new_guest" msgid="3482026122932643557">"അതിഥിയെ ചേർക്കുക"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"അതിഥിയെ നീക്കം ചെയ്യുക"</string> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 3d3f710025e4..b96a4f5119f1 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -206,7 +206,7 @@ <string name="apn_settings_not_available" msgid="1147111671403342300">"Энэ хэрэглэгчийн хувьд Хандалтын цэгийн нэрийн тохиргоог ашиглах боломжгүй"</string> <string name="enable_adb" msgid="8072776357237289039">"USB дебаг"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"USB холбодсон үеийн согог засах горим"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"USB дебагын зөвшөөрлийг хураах"</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"USB дебагийн зөвшөөрлийг цуцлах"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Wireless debugging"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Wi-Fi холбогдсон үед дебаг хийх горим"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Алдаа"</string> @@ -256,7 +256,7 @@ <string name="mobile_data_always_on" msgid="8275958101875563572">"Мобайл дата байнга идэвхтэй"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Модем болгох техник хангамжийн хурдасгуур"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Нэргүй Bluetooth төхөөрөмжийг харуулах"</string> - <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Үнэмлэхүй дууны түвшинг идэвхгүй болгох"</string> + <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Үнэмлэхүй дууны түвшнийг идэвхгүй болгох"</string> <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche-г идэвхжүүлэх"</string> <string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP хувилбар"</string> <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP хувилбарыг сонгох"</string> @@ -282,9 +282,9 @@ <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS-н үйлчилгээ үзүүлэгчийн хостын нэрийг оруулах"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Холбогдож чадсангүй"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Утасгүй дэлгэцийн сертификатын сонголтыг харуулах"</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi лог-н түвшинг нэмэгдүүлэх, Wi‑Fi Сонгогч дээрх SSID-д ногдох RSSI-г харуулах"</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi‑Fi логийн түвшнийг нэмэгдүүлэх, Wi‑Fi Сонгогч дээрх SSID-д ногдох RSSI-г харуулах"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Батарей зарцуулалтыг бууруулж, сүлжээний гүйцэтгэлийг сайжруулдаг"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Энэ горимыг идэхвжүүлсэн үед энэ төхөөрөмжийг MAC-н санамсаргүй байдлаар эмхлэх явцыг идэвхжүүлсэн сүлжээнд холбогдох бүрд үүний MAC хаягийг өөрчилж болзошгүй."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Энэ горимыг идэвхжүүлсэн үед энэ төхөөрөмжийг MAC-н санамсаргүй байдлаар эмхлэх явцыг идэвхжүүлсэн сүлжээнд холбогдох бүрд үүний MAC хаягийг өөрчилж болзошгүй."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Хязгаартай"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Хязгааргүй"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Логгерын буферын хэмжээ"</string> @@ -310,7 +310,7 @@ <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Апп-г USB-р баталгаажуулах"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"ADB/ADT-р суулгасан апп-уудыг хорлонтой авиртай эсэхийг шалгах."</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Нэргүй Bluetooth төхөөрөмжийг (зөвхөн MAC хаяг) харуулна"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Хэт чанга дуугаралт эсвэл муу тохиргоо зэрэг алсын зайн төхөөрөмжийн дуугаралттай холбоотой асуудлын үед Bluetooth-ийн үнэмлэхүй дууны түвшинг идэвхгүй болго."</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Хэт чанга дуугаралт эсвэл муу тохиргоо зэрэг алсын зайн төхөөрөмжийн дуугаралттай холбоотой асуудлын үед Bluetooth-ийн үнэмлэхүй дууны түвшнийг идэвхгүй болго."</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche онцлогийн өрөлтийг идэвхжүүлдэг."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Сайжруулсан холболтын онцлогийг идэвхжүүлдэг."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Локал терминал"</string> @@ -347,8 +347,8 @@ <string name="disable_overlays_summary" msgid="1954852414363338166">"Дэлгэц нийлүүлэхэд GPU-г байнга ашиглах"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Өнгөний орчныг дууриах"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL тэмдэглэлийг идэвхжүүлэх"</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB аудио роутинг идэвхгүйжүүлэх"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB аудио периферал руу автоматаар роутинг хийхийг идэвхгүйжүүлэх"</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB аудио чиглүүлэхийг идэвхгүйжүүлэх"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB аудио нэмэлт хэрэгсэл рүү автоматаар чиглүүлэхийг идэвхгүйжүүлэх"</string> <string name="debug_layout" msgid="1659216803043339741">"Байршлын хүрээг харуулах"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Клипийн зах, хязгаар зэргийг харуулах"</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL байрлалын чиглэлийг хүчээр тогтоох"</string> @@ -358,7 +358,7 @@ <string name="show_non_rect_clip" msgid="7499758654867881817">"Тэгш өнцөгт бус клипийн үйлдлүүдийн согогийг засах"</string> <string name="track_frame_time" msgid="522674651937771106">"Профайл HWUI-н буулгалт"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU дебаг хийх давхаргыг идэвхжүүлэх"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Дебаг хийх аппад GPU дебаг хийх давхарга ачааллахыг зөвшөөрөх"</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Дебаг хийх аппад GPU дебаг хийх давхарга ачаалахыг зөвшөөрөх"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Нийлүүлэгчийн дэлгэрэнгүй логийг идэвхжүүлэх"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Төхөөрөмжийн тодорхойосон нийлүүлэгчийн нэвтрэх үеийн алдааны нэмэлт мэдээг оруулах бөгөөд энэ нь хувийн мэдээлэл агуулж, батарейг илүү ашиглах болон/эсвэл хадгалах сан илүү ашиглаж болзошгүй."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Цонхны дүрс амилуулалтын далайц"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Хөрвүүлгийг идэвхжүүлэх"</string> <string name="transcode_default" msgid="3784803084573509491">"Аппыг орчин үеийн форматыг дэмждэг гэж үздэг"</string> <string name="transcode_notification" msgid="5560515979793436168">"Хөрвүүлгийн мэдэгдэл харуулах"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Хөрвүүлгийн завсрын санах ойг идэвхгүй болгох"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Ажиллаж байгаа үйлчилгээнүүд"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Одоо ажиллаж байгаа үйлчилгээнүүдийг харах болон хянах"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView хэрэгжилт"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Таблет удахгүй унтарч болзошгүй (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Төхөөрөмж удахгүй унтарч болзошгүй (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Дүүрэх хүртэл <xliff:g id="TIME">%1$s</xliff:g> үлдсэн"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - дүүрэх хүртэл <xliff:g id="TIME">%2$s</xliff:g> үлдсэн"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Батарейн барилтыг оновчилж байна"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Тодорхойгүй"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Цэнэглэж байна"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Хурдан цэнэглэж байна"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Удаан цэнэглэж байна"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Утасгүй цэнэглэж байна"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Цэнэглэхгүй байна"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Залгаастай тул одоо цэнэглэх боломжгүй"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Цэнэглэсэн"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Админ удирдсан"</string> <string name="disabled" msgid="8017887509554714950">"Идэвхгүйжүүлсэн"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Зөвшөөрсөн"</string> @@ -503,12 +502,14 @@ <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Их хугацаа."</string> <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Бага хугацаа."</string> <string name="cancel" msgid="5665114069455378395">"Цуцлах"</string> - <string name="okay" msgid="949938843324579502">"ТИЙМ"</string> + <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Сэрүүлэг болон сануулагч"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Сэрүүлэг эсвэл сануулагч тохируулахыг зөвшөөрөх"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Сэрүүлэг болон сануулагч"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Энэ аппад сэрүүлэг эсвэл бусад цагт тулгуурласан үйл явдлын хуваарь гаргахыг зөвшөөрнө үү. Энэ нь таныг төхөөрөмжийг ашиглаагүй байсан ч аппад сэрэх болон ажиллахыг нь зөвшөөрнө. Энэ зөвшөөрлийг цуцалснаар аппыг доголдоход хүргэж болзошгүй бөгөөд ялангуяа тухайн аппын хуваарь гаргасан аливаа сэрүүлэг цаашид ажиллахгүй болохыг анхаарна уу."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"хуваарь, сэрүүлэг, сануулагч, үйл явдал"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Сэрүүлэг болон сануулагч тохируулахыг зөвшөөрөх"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Сэрүүлэг, сануулагч"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Энэ аппад сэрүүлэг тавих болон бусад үйлдлийн хуваарь гаргахыг зөвшөөрнө үү. Таныг утсаа ашиглаагүй үед энэ аппыг ашиглаж магадгүй бөгөөд үүнд илүү их батарей зарцуулж магадгүй. Энэ зөвшөөрлийг унтраасан үед энэ апп хэвийн ажиллахгүй байж магадгүй бөгөөд сэрүүлэг нь хуваарийн дагуу ажиллахгүй."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Энэ аппад сэрүүлэг тавих болон бусад үйлдлийн хуваарь гаргахыг зөвшөөрнө үү. Таныг таблетаа ашиглаагүй үед энэ аппыг ашиглаж магадгүй бөгөөд үүнд илүү их батарей зарцуулж магадгүй. Энэ зөвшөөрлийг унтраасан үед энэ апп хэвийн ажиллахгүй байж магадгүй бөгөөд сэрүүлэг нь хуваарийн дагуу ажиллахгүй."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Энэ аппад сэрүүлэг тавих болон бусад үйлдлийн хуваарь гаргахыг зөвшөөрнө үү. Таныг төхөөрөмжөө ашиглаагүй үед энэ аппыг ашиглаж магадгүй бөгөөд үүнд илүү их батарей зарцуулж магадгүй. Энэ зөвшөөрлийг унтраасан үед энэ апп хэвийн ажиллахгүй байж магадгүй бөгөөд сэрүүлэг нь хуваарийн дагуу ажиллахгүй."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"хуваарь, сэрүүлэг, сануулагч, цаг"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Асаах"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Бүү саад бол горимыг асаах"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Хэзээ ч үгүй"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Түгжээг тохируулах"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> руу сэлгэх"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Шинэ хэрэглэгч үүсгэж байна…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Шинэ хэрэглэгч үүсгэж чадсангүй"</string> <string name="user_nickname" msgid="262624187455825083">"Хоч"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Зочин нэмэх"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Зочин хасах"</string> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index f57b164e085b..332d16889320 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -345,7 +345,7 @@ <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU ओव्हरड्रॉ डीबग करा"</string> <string name="disable_overlays" msgid="4206590799671557143">"HW ओव्हरले बंद करा"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"स्क्रीन तयार करण्यासाठी नेहमी GPU वापरा"</string> - <string name="simulate_color_space" msgid="1206503300335835151">"रंग स्थानाची बतावणी करा"</string> + <string name="simulate_color_space" msgid="1206503300335835151">"रंग स्थान सिम्युलेट करा"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL ट्रेस सुरू करा"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB ऑडिओ राउटिंग बंद करा"</string> <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB ऑडिओ परिधीय वरील स्वयंचलित राउटिंग बंद करा"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ट्रान्सकोडिंग सुरू करा"</string> <string name="transcode_default" msgid="3784803084573509491">"असे गृहीत धरा की, ॲप्स आधुनिक फॉरमॅटना सपोर्ट करतात"</string> <string name="transcode_notification" msgid="5560515979793436168">"ट्रान्सकोडिंग सूचना दाखवा"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ट्रान्सकोडिंग कॅशे बंद करा"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"सुरू सेवा"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"सध्या सुरू असलेल्या सेवा पहा आणि नियंत्रित करा"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"वेबदृश्य अंमलबजावणी"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"टॅबलेट लवकरच बंद होऊ शकतो (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"डिव्हाइस लवकरच बंद होऊ शकते (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"पूर्ण चार्ज होण्यासाठी <xliff:g id="TIME">%1$s</xliff:g> शिल्लक आहे"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - पूर्ण चार्ज होण्यासाठी <xliff:g id="TIME">%2$s</xliff:g> शिल्लक आहे"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - बॅटरीची क्षमता वाढवण्यासाठी ऑप्टिमाइझ करत आहे"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"अज्ञात"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"चार्ज होत आहे"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"वेगाने चार्ज होत आहे"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"हळूहळू चार्ज होत आहे"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"वायरलेसने चार्ज होत आहे"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"चार्ज होत नाही"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"प्लग इन केलेले आहे, आता चार्ज करू शकत नाही"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"चार्ज झाली"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"प्रशासकाने नियंत्रित केलेले"</string> <string name="disabled" msgid="8017887509554714950">"अक्षम"</string> <string name="external_source_trusted" msgid="1146522036773132905">"अनुमती आहे"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"रद्द करा"</string> <string name="okay" msgid="949938843324579502">"ठीक आहे"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"अलार्म आणि रिमाइंडर"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"अलार्म किंवा रिमाइंडर सेट करण्याची अनुमती द्या"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"अलार्म आणि रिमाइंडर"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"या अॅपला अलार्म किंवा वेळेवर आधारित इतर इव्हेंट शेड्युल करण्याची अनुमती द्या. यामुळे तुम्ही डिव्हाइस वापरत नसतानादेखील अॅपला सुरू आणि रन करण्याची अनुमती मिळते. लक्षात ठेवा की, ही परवानगी नाकारल्याने ॲप कदाचित नीट काम करणार नाही, विशेषतः अॅपने शेड्युल केलेले कोणतेही अलार्म यापुढे काम करणार नाहीत."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"शेड्युल, अलार्म, रिमाइंडर, इव्हेंट"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"अलार्म आणि रिमाइंडर सेट करण्याची अनुमती द्या"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"अलार्म आणि रिमाइंडर"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"या ॲपला अलार्म सेट करण्याची आणि इतर कृती शेड्युल करण्याची अनुमती द्या. तुम्ही तुमचा फोन वापरत नसताना हे ॲप वापरले जाऊ शकते, ज्यामुळे जास्त बॅटरी वापरली जाऊ शकते. ही परवानगी नसल्यास, हे ॲप सामान्यपणे काम करू शकणार नाही आणि त्याचे अलार्म शेड्युल केल्याप्रमाणे काम करणार नाहीत."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"या ॲपला अलार्म सेट करण्याची आणि इतर कृती शेड्युल करण्याची अनुमती द्या. तुम्ही तुमचा टॅबलेट वापरत नसताना हे ॲप वापरले जाऊ शकते, ज्यामुळे जास्त बॅटरी वापरली जाऊ शकते. ही परवानगी नसल्यास, हे ॲप सामान्यपणे काम करू शकणार नाही आणि त्याचे अलार्म शेड्युल केल्याप्रमाणे काम करणार नाहीत."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"या ॲपला अलार्म सेट करण्याची आणि इतर कृती शेड्युल करण्याची अनुमती द्या. तुम्ही तुमचे डिव्हाइस वापरत नसताना हे ॲप वापरले जाऊ शकते, ज्यामुळे जास्त बॅटरी वापरली जाऊ शकते. ही परवानगी नसल्यास, हे ॲप सामान्यपणे काम करू शकणार नाही आणि त्याचे अलार्म शेड्युल केल्याप्रमाणे काम करणार नाहीत."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"शेड्युल, अलार्म, रिमाइंडर, घड्याळ"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"सुरू करा"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"व्यत्यय आणू नका सुरू करा"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"कधीही नाही"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"लॉक सेट करा"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> वर स्विच करा"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"नवीन वापरकर्ता तयार करत आहे…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"नवीन वापरकर्ता तयार करता आला नाही"</string> <string name="user_nickname" msgid="262624187455825083">"टोपणनाव"</string> <string name="guest_new_guest" msgid="3482026122932643557">"अतिथी जोडा"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"अतिथी काढून टाका"</string> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index 28d9e8e26d84..25c44cf950e9 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -291,7 +291,7 @@ <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Pilih saiz Pengelog bagi setiap penimbal log"</string> <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"Kosongkan storan gigih pengelog?"</string> <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"Apabila kami tidak lagi memantau menggunakan pengelog gigih, kami dikehendaki untuk memadamkan data pengelog yang menghuni peranti anda."</string> - <string name="select_logpersist_title" msgid="447071974007104196">"Smpn data pengelog secara gigih pd prnti"</string> + <string name="select_logpersist_title" msgid="447071974007104196">"Sentiasa simpan data pengelog pada peranti"</string> <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"Pilih penimbal log untuk menyimpan secara gigih pada peranti"</string> <string name="select_usb_configuration_title" msgid="6339801314922294586">"Pilih Konfigurasi USB"</string> <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"Pilih Konfigurasi USB"</string> @@ -347,7 +347,7 @@ <string name="disable_overlays_summary" msgid="1954852414363338166">"Sentiasa gunakan GPU untuk komposit skrin"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Tiru ruang warna"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Dayakan kesan OpenGL"</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Lmpuhkn phalaan audio USB"</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Lumpuhkan penghalaan audio USB"</string> <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Lumpuhkan penghalaan automatik ke persisian audio USB"</string> <string name="debug_layout" msgid="1659216803043339741">"Tunjukkan batas reka letak"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Tunjukkan batas klip, margin dll."</string> @@ -357,9 +357,9 @@ <string name="force_msaa_summary" msgid="9070437493586769500">"Dayakan 4x MSAA dalam apl OpenGL ES 2.0"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Nyahpepijat operasi keratan bukan segi empat tepat"</string> <string name="track_frame_time" msgid="522674651937771106">"Pemaparan HWUI profil"</string> - <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Dayakan lpsn nyhppjat GPU"</string> + <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Dayakan lepasan nyahpepijat GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Bnrkn pemuatan lpsn nyhppjt GPU utk apl pnyhppjtn"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Dayakn pngelogan vendor brjela"</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Dayakan pengelogan vendor berjela"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sertakan log tambahan vendor khusus peranti dalam laporan pepijat, yang mungkin mengandungi maklumat peribadi, menggunakan lebih banyak kuasa bateri dan/atau menggunakan lebih banyak storan."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animasi tetingkap"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animasi peralihan"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Dayakan transpengekodan"</string> <string name="transcode_default" msgid="3784803084573509491">"Mengambil alih sokongan apl format moden"</string> <string name="transcode_notification" msgid="5560515979793436168">"Tunjukkan pemberitahuan transpengekodan"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Lumpuhkan cache transpengekodan"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Perkhidmatan dijalankan"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Lihat dan kawal perkhidmatan yang sedang dijalankan"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Pelaksanaan WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet mungkin ditutup tidak lama lagi (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Peranti mungkin ditutup tidak lama lagi (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> lagi hingga penuh"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> lagi hingga penuh"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Pengoptimuman untuk kesihatan bateri"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Tidak diketahui"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Mengecas"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Mengecas dgn cepat"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Mengecas dgn prlahan"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Mengecas tanpa wayar"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Tidak mengecas"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Dipalamkan, tidak boleh mengecas sekarang"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Sudah dicas"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Dikawal oleh pentadbir"</string> <string name="disabled" msgid="8017887509554714950">"Dilumpuhkan"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Dibenarkan"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Batal"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Penggera dan peringatan"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Benarkan untuk menetapkan penggera atau peringatan"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Penggera dan peringatan"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Benarkan apl ini untuk menjadualkan penggera atau peristiwa berdasarkan pemasaan yang lain. Tindakan ini akan membenarkan apl untuk bangkit dan berfungsi walaupun anda tidak menggunakan peranti. Harap maklum bahawa pembatalan kebenaran ini mungkin menyebabkan apl tidak berfungsi, khususnya mana-mana penggera yang telah dijadualkan oleh apl tidak lagi akan berfungsi."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"jadual, penggera, peringatan, peristiwa"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Benarkan penetapan penggera dan peringatan"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Penggera & peringatan"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Benarkan apl ini menetapkan penggera dan menjadualkan tindakan lain. Apl ini mungkin digunakan ketika anda tidak menggunakan telefon, apl mungkin menggunakan lebih banyak bateri. Jika kebenaran ini dimatikan, apl ini mungkin tidak berfungsi seperti biasa dan penggera tidak akan berfungsi seperti yang dijadualkan."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Benarkan apl ini menetapkan penggera dan menjadualkan tindakan lain. Apl ini mungkin digunakan ketika anda tidak menggunakan tablet, apl mungkin menggunakan lebih banyak bateri. Jika kebenaran ini dimatikan, apl ini mungkin tidak berfungsi seperti biasa dan penggera tidak akan berfungsi seperti yang dijadualkan."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Benarkan apl ini menetapkan penggera dan menjadualkan tindakan lain. Apl ini mungkin digunakan ketika anda tidak menggunakan peranti, apl mungkin menggunakan lebih banyak bateri. Jika kebenaran ini dimatikan, apl ini mungkin tidak berfungsi seperti biasa dan penggera tidak akan berfungsi seperti yang dijadualkan."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"jadual, penggera, peringatan, jam"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Hidupkan"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Hidupkan Jangan Ganggu"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Jangan sekali-kali"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Tetapkan kunci"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Tukar kepada <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Mencipta pengguna baharu…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Gagal membuat pengguna baharu"</string> <string name="user_nickname" msgid="262624187455825083">"Nama panggilan"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Tambah tetamu"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Alih keluar tetamu"</string> diff --git a/packages/SettingsLib/res/values-my/arrays.xml b/packages/SettingsLib/res/values-my/arrays.xml index 6267fe9d4ff4..cb97802039d5 100644 --- a/packages/SettingsLib/res/values-my/arrays.xml +++ b/packages/SettingsLib/res/values-my/arrays.xml @@ -156,7 +156,7 @@ <item msgid="5001852592115448348">"၊ ဖွင့်ထားသည် (ဖုန်း)"</item> </string-array> <string-array name="select_logd_size_titles"> - <item msgid="1191094707770726722">"ပိတ်ရန်"</item> + <item msgid="1191094707770726722">"ပိတ်"</item> <item msgid="7839165897132179888">"64K"</item> <item msgid="2715700596495505626">"256K"</item> <item msgid="7099386891713159947">"1M"</item> @@ -164,13 +164,13 @@ <item msgid="6078203297886482480">"8M"</item> </string-array> <string-array name="select_logd_size_lowram_titles"> - <item msgid="1145807928339101085">"ပိတ်ရန်"</item> + <item msgid="1145807928339101085">"ပိတ်"</item> <item msgid="4064786181089783077">"64K"</item> <item msgid="3052710745383602630">"256K"</item> <item msgid="3691785423374588514">"1M"</item> </string-array> <string-array name="select_logd_size_summaries"> - <item msgid="409235464399258501">"ပိတ်ရန်"</item> + <item msgid="409235464399258501">"ပိတ်"</item> <item msgid="4195153527464162486">"မှတ်တမ်းယာယီကြားခံနယ်တစ်ခုလျှင် 64K"</item> <item msgid="7464037639415220106">"မှတ်တမ်းယာယီကြားခံနယ်တစ်ခုလျှင် 256K"</item> <item msgid="8539423820514360724">"မှတ်တမ်းကြားခံနယ် တစ်ခုလျှင် 1M"</item> @@ -178,13 +178,13 @@ <item msgid="2983219471251787208">"မှတ်တမ်းယာယီကြားခံနယ်တစ်ခုလျှင် 8M"</item> </string-array> <string-array name="select_logpersist_titles"> - <item msgid="704720725704372366">"ပိတ်ရန်"</item> + <item msgid="704720725704372366">"ပိတ်"</item> <item msgid="6014837961827347618">"အားလုံး"</item> <item msgid="7387060437894578132">"ရေဒီယိုမှလွဲ၍ အားလုံး"</item> <item msgid="7300881231043255746">"ကာနယ်သာ"</item> </string-array> <string-array name="select_logpersist_summaries"> - <item msgid="97587758561106269">"ပိတ်ရန်"</item> + <item msgid="97587758561106269">"ပိတ်"</item> <item msgid="7126170197336963369">"မှတ်တမ်းသိမ်းဆည်းရန် လျာထားချက်များ အားလုံး"</item> <item msgid="7167543126036181392">"ရေဒီယို မှတ်တမ်းသိမ်းဆည်းရန်လျာထားချက်မှလွဲ၍ အားလုံး"</item> <item msgid="5135340178556563979">"ကာနယ်မှတ်တမ်းသိမ်းဆည်းရန် လျာထားချက်သာ"</item> @@ -237,17 +237,17 @@ <item msgid="7345673972166571060">"glGetError အမှားတက်လျှင်ခေါ်သောလုပ်ငန်းစဉ်"</item> </string-array> <string-array name="show_non_rect_clip_entries"> - <item msgid="2482978351289846212">"ပိတ်ရန်"</item> + <item msgid="2482978351289846212">"ပိတ်"</item> <item msgid="3405519300199774027">"စတုဂံမဟုတ်သော ဖောက်ရန်အပိုင်းကို အပြာရောင်ဖြင့်ဆွဲပါ"</item> <item msgid="1212561935004167943">"စမ်းသပ်ထားသော ပုံဆွဲရန်ညွှန်ကြားချက်များကို အစိမ်းရောင်ဖြင့် အသားပေး ဖော်ပြပါ"</item> </string-array> <string-array name="track_frame_time_entries"> - <item msgid="634406443901014984">"ပိတ်ရန်"</item> + <item msgid="634406443901014984">"ပိတ်"</item> <item msgid="1288760936356000927">"ဖန်သားပြင်ပေါ်မှာ မျဉ်းတန်းကဲ့သို့"</item> <item msgid="5023908510820531131">"<xliff:g id="AS_TYPED_COMMAND">adb shell dumpsys gfxinfo</xliff:g> ဖြင့်"</item> </string-array> <string-array name="debug_hw_overdraw_entries"> - <item msgid="1968128556747588800">"ပိတ်ရန်"</item> + <item msgid="1968128556747588800">"ပိတ်"</item> <item msgid="3033215374382962216">"ရှိရင်းစွဲထက်ပိုသော ဧရိယာများကိုပြရန်"</item> <item msgid="3474333938380896988">"အစိမ်းရောင် မမြင်ရသောဧရိယာများ ပြရန်"</item> </string-array> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index e5df8cbfa1c9..f247c3704fa1 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -113,12 +113,12 @@ <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"ဖိုင်လွဲပြောင်းရန်အတွက်အသုံးပြုရန်"</string> <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"ထည့်သွင်းရန်အသုံးပြုသည်"</string> <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"နားကြားကိရိယာအတွက် အသုံးပြုသည်"</string> - <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"အတူတွဲပါ"</string> - <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"ချိတ်တွဲရန်"</string> + <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"တွဲချိတ်ရန်"</string> + <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"တွဲချိတ်ရန်"</string> <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"မလုပ်တော့"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"ချိတ်တွဲမှုက ချိတ်ဆက်ထားလျှင် သင်၏ အဆက်အသွယ်များ နှင့် ခေါ်ဆိုမှု မှတ်တမ်းကို ရယူခွင့် ပြုသည်။"</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> နှင့် တွဲချိတ်မရပါ"</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"ပင်နံပါတ် သို့မဟုတ် ဖြတ်သန်းခွင့်ကီးမမှန်ကန်သောကြောင့်<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့် တွဲချိတ်မရပါ။"</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"ပင်နံပါတ် သို့မဟုတ် ဖြတ်သန်းခွင့်ကီး မမှန်ကန်သောကြောင့် <xliff:g id="DEVICE_NAME">%1$s</xliff:g> နှင့် တွဲချိတ်မရပါ။"</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့်ဆက်သွယ်မရပါ"</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>နှင့်တွဲချိတ်ရန် ပယ်ချခံရသည်"</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"ကွန်ပျူတာ"</string> @@ -147,7 +147,7 @@ <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB သုံး၍ချိတ်ဆက်ခြင်း"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"ရွေ့လျားနိုင်သောဟော့စပေါ့"</string> <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ဘလူးတုသ်သုံးချိတ်ဆက်ခြင်း"</string> - <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"တဆင့်ပြန်လည်ချိတ်ဆက်ခြင်း"</string> + <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"မိုဘိုင်းသုံးတွဲချိတ်ခြင်း"</string> <string name="tether_settings_title_all" msgid="8910259483383010470">"တဆင့်ချိတ်ဆက်ခြင်း၊ ဟော့စပေါ့"</string> <string name="managed_user_title" msgid="449081789742645723">"အလုပ်သုံးအက်ပ်များအားလုံး"</string> <string name="user_guest" msgid="6939192779649870792">"ဧည့်သည်"</string> @@ -197,10 +197,10 @@ <string name="choose_profile" msgid="343803890897657450">"ပရိုဖိုင်ကို ရွေးရန်"</string> <string name="category_personal" msgid="6236798763159385225">"ကိုယ်ရေး"</string> <string name="category_work" msgid="4014193632325996115">"အလုပ်"</string> - <string name="development_settings_title" msgid="140296922921597393">"ဆော့ဝဲလ်ရေးသူ ရွေးစရာများ"</string> - <string name="development_settings_enable" msgid="4285094651288242183">"တီထွင်သူများ ရွေးစရာကို ဖွင့်ပါ"</string> + <string name="development_settings_title" msgid="140296922921597393">"ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများ"</string> + <string name="development_settings_enable" msgid="4285094651288242183">"ဆော့ဖ်ဝဲရေးသူအတွက် ရွေးစရာများကို ဖွင့်ပါ"</string> <string name="development_settings_summary" msgid="8718917813868735095">"အပလီကေးရှင်းတိုးတက်မှုအတွက် ရွေးချယ်မှုကိုသတ်မှတ်သည်"</string> - <string name="development_settings_not_available" msgid="355070198089140951">"ဤသုံးစွဲသူအတွက် တည်ဆောက်သူ ရွေးချယ်ခွင့်များ မရနိုင်ပါ"</string> + <string name="development_settings_not_available" msgid="355070198089140951">"ဤအသုံးပြုသူအတွက် ဆော့ဖ်ဝဲရေးသူ ရွေးစရာများ မရနိုင်ပါ"</string> <string name="vpn_settings_not_available" msgid="2894137119965668920">"ဤ အသုံးပြုသူ အတွက် VPN ဆက်တင်များကို မရယူနိုင်"</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"ဤ အသုံးပြုသူ အတွက် ချိတ်တွဲရေး ဆက်တင်များကို မရယူနိုင်"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"ဤ အသုံးပြုသူ အတွက် ဝင်လိုသည့် နေရာ အမည်၏ ဆက်တင်များကို မရယူနိုင်"</string> @@ -238,7 +238,7 @@ <string name="bugreport_in_power" msgid="8664089072534638709">"ချွတ်ယွင်းမှု အစီရင်ခံရန် ဖြတ်လမ်း"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"ချွတ်ယွင်းမှု အစီရင်ခံစာကို တင်ရန် ပါဝါမီနူးမှ ခလုတ်ကို ပြပါ"</string> <string name="keep_screen_on" msgid="1187161672348797558">"ဖွင့်လျက်သား"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"အားသွင်းနေစဉ် ဖန်သားပြင်မှာဘယ်သောအခါမှ ပိတ်မည်မဟုတ်ပါ။"</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"အားသွင်းနေချိန် ဖန်သားပြင် ပိတ်သွားမည် မဟုတ်ပါ"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"ဘလူးတုသ် HCI snoop မှတ်တမ်းကို ဖွင့်ခြင်း"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"ဘလူးတုသ် အတွဲများ သိမ်းယူပါ။ (ဤဆက်တင်ကို ပြောင်းပြီးသည့်အခါ ဘလူးတုသ် ဖွင့်/ပိတ် လုပ်ပါ)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM သော့ဖွင့်ခြင်း"</string> @@ -276,7 +276,7 @@ <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"တိုက်ရိုက်လွှင့်နေသည်− <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"သီးသန့် DNS"</string> <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"သီးသန့် DNS မုဒ်ကို ရွေးပါ"</string> - <string name="private_dns_mode_off" msgid="7065962499349997041">"ပိတ်ရန်"</string> + <string name="private_dns_mode_off" msgid="7065962499349997041">"ပိတ်"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"အလိုအလျောက်"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"သီးသန့် DNS ဝန်ဆောင်မှုပေးသူအမည်"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS ဝန်ဆောင်ပေးသူအမည်ကို ထည့်ပါ"</string> @@ -330,7 +330,7 @@ <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ဟာ့ဒ်ဝဲ အရှိန်မြှင့် ပုံဖော်ခြင်း"</string> <string name="media_category" msgid="8122076702526144053">"မီဒီယာ"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"စောင့်ကြည့်စစ်ဆေးခြင်း"</string> - <string name="strict_mode" msgid="889864762140862437">"တင်းကြပ်သောစနစ် ဖြစ်နေမည်"</string> + <string name="strict_mode" msgid="889864762140862437">"တင်းကြပ်သောစနစ် ဖွင့်ရန်"</string> <string name="strict_mode_summary" msgid="1838248687233554654">"အက်ပ်လုပ်ဆောင်မှု ရှည်ကြာလျှင် စကရင်ပြန်စပါ"</string> <string name="pointer_location" msgid="7516929526199520173">"မြား၏တည်နေရာ"</string> <string name="pointer_location_summary" msgid="957120116989798464">"လက်ရှိထိတွေ့မှုဒေတာကို ဖန်သားပေါ်တွင်ထပ်၍ ပြသသည်"</string> @@ -357,7 +357,7 @@ <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 အက်ပ်များတွင် 4x MSAA ဖွင့်သည်"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"စတုဂံပုံမကျသောဖြတ်ပိုင်း လုပ်ဆောင်ချက်များကို အမှားဖယ်ရှားသည်"</string> <string name="track_frame_time" msgid="522674651937771106">"HWUI ပရိုဖိုင် ဆောင်ရွက်ခြင်း"</string> - <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU အမှားရှာ အလွှာများဖွင့်ထားပါ"</string> + <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU အမှားရှာအလွှာဖွင့်ရန်"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"အမှားရှာအက်ပ်များအတွက် GPU အမှားရှာအလွှာများ ထည့်သွင်းခွင့်ပြုပါ"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"verbose vendor မှတ်တမ်းဖွင့်ရန်"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ချွတ်ယွင်းမှု အစီရင်ခံချက်တွင် စက်ပစ္စည်းအလိုက် ထုတ်လုပ်သူမှတ်တမ်းများကို ထည့်သွင်းခြင်းဖြင့် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ ပါဝင်ခြင်း၊ ဘက်ထရီပိုသုံးခြင်း နှင့်/သို့မဟုတ် သိုလှောင်ခန်းပိုသုံးခြင်းတို့ ဖြစ်စေနိုင်သည်။"</string> @@ -367,11 +367,11 @@ <string name="overlay_display_devices_title" msgid="5411894622334469607">"ဆင့်ပွားမျက်နှာပြင် အသွင်ဆောင်ခြင်း"</string> <string name="debug_applications_category" msgid="5394089406638954196">"အက်ပ်များ"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"ဆောင်ရွက်မှုများကို သိမ်းမထားပါနှင့်"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"အသုံးပြုသူထွက်ခွါသွားသည်နှင့် လုပ်ဆောင်ချက်များကို ဖျက်ပစ်မည်"</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"သုံးသူထွက်သွားသည်နှင့် လုပ်ဆောင်ချက်များ ဖျက်ရန်"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"နောက်ခံလုပ်ငန်းစဉ်ကန့်သတ်ခြင်း"</string> <string name="show_all_anrs" msgid="9160563836616468726">"နောက်ခံ ANR များကို ပြရန်"</string> <string name="show_all_anrs_summary" msgid="8562788834431971392">"နောက်ခံ အက်ပ်များအတွက် \'အက်ပ်တုံ့ပြန်မှုမရှိ\' ဟု ပြရန်"</string> - <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ချန်နယ်သတိပေးချက်များပြပါ"</string> + <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ချန်နယ်သတိပေးချက်များပြရန်"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ချန်နယ်မရှိဘဲ အကြောင်းကြားလျှင် စကရင်တွင်သတိပေးသည်"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ပြင်ပစက်တွင် အက်ပ်များခွင့်ပြုရန်"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"တိကျစွာ သတ်မှတ်ထားသည့်တန်ဖိုးများရှိသော်လည်း၊ ပြင်ပသိုလှောင်ခန်းများသို့ မည်သည့်အက်ပ်ကိုမဆို ဝင်ရောက်ခွင့်ပြုပါ"</string> @@ -380,8 +380,8 @@ <string name="enable_freeform_support" msgid="7599125687603914253">"အခမဲ့ပုံစံ ဝင်းဒိုးကို ဖွင့်ပါ"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"ပုံစံမျိုးစုံဝင်းဒိုးများ စမ်းသပ်မှုအတွက် အထောက်အပံ့ကို ဖွင့်ပါ"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"ဒက်စ်တော့ အရန်စကားဝှက်"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"အလုပ်ခုံတွင် အရန်သိမ်းဆည်းခြင်းများကို လောလောဆယ် မကာကွယ်နိုင်ပါ။"</string> - <string name="local_backup_password_summary_change" msgid="1707357670383995567">"စားပွဲတင်ကွန်ပျူတာကို အပြည့်အဝအရံကူးထားရန်အတွက် စကားဝှက်ကို ပြောင်းရန် သို့မဟုတ် ဖယ်ရှားရန် တို့ပါ။"</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"ဒက်စ်တော့ အရန်သိမ်းဆည်းခြင်းအားလုံးကို လောလောဆယ် ကာကွယ်မထားပါ"</string> + <string name="local_backup_password_summary_change" msgid="1707357670383995567">"ဒက်စ်တော့ အပြည့်အဝ အရန်သိမ်းခြင်းအတွက် စကားဝှက်ကို ပြောင်းရန် သို့မဟုတ် ဖယ်ရှားရန် တို့ပါ။"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"အရန်သိမ်းဆည်းခြင်းအတွက် စကားဝှက်အသစ်ကို သတ်မှတ်ပြီးပြီ။"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"စကားဝှက်အသစ်နှင့် အတည်ပြုချက် ကွဲလွဲနေသည်။"</string> <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"အရန်သိမ်းဆည်းခြင်းအတွက် စကားဝှက်သတ်မှတ်ချက် မအောင်မြင်ပါ။"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"အမျိုးအစားပြောင်းခြင်းကို ဖွင့်ရန်"</string> <string name="transcode_default" msgid="3784803084573509491">"ဤအက်ပ်များက ဖော်မက်အသစ်များကို ပံ့ပိုးသည်"</string> <string name="transcode_notification" msgid="5560515979793436168">"အမျိုးအစားပြောင်းခြင်း အကြောင်းကြားချက်များကို ပြရန်"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"အမျိူးအစားပြောင်းခြင်း ကက်ရှ်ကို ပိတ်ရန်"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"အလုပ်လုပ်နေသောဝန်ဆောင်မှုများ"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"လက်ရှိ ဝန်ဆောင်မှုများကို ကြည့်ရှု ထိန်းသိမ်းသည်"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView အကောင်အထည်ဖော်မှု"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"မကြာမီ တက်ဘလက် ပိတ်သွားနိုင်သည် (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"မကြာမီ စက်ပိတ်သွားနိုင်သည် (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"အားပြည့်ရန် <xliff:g id="TIME">%1$s</xliff:g> လိုသည်"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"အားပြည့်ရန် <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> လိုသည်"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ဘက်ထရီအခြေအနေကို အကောင်းဆုံးဖြစ်အောင် လုပ်နေသည်"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"မသိ"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"အားသွင်းနေပါသည်"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"အမြန် အားသွင်းနေသည်"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"နှေးကွေးစွာ အားသွင်း"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"ကြိုးမဲ့ အားသွင်းနေသည်"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"အားသွင်းမနေပါ"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ပလပ်ထိုးထားသောကြောင့် ယခုအားသွင်း၍ မရသေးပါ"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"အားသွင်းပြီးပါပြီ"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"စီမံခန့်ခွဲသူမှ ထိန်းချုပ်ပါသည်"</string> <string name="disabled" msgid="8017887509554714950">"ပိတ်ထားပြီး"</string> <string name="external_source_trusted" msgid="1146522036773132905">"ခွင့်ပြုထားသည်"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"မလုပ်တော့"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"နှိုးစက်နှင့် သတိပေးချက်များ"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"နှိုးစက် (သို့) သတိပေးချက်များ သတ်မှတ်ခွင့်ပြုရန်"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"နှိုးစက်နှင့် သတိပေးချက်များ"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"နှိုးစက်သတ်မှတ်ရန် (သို့) အချိန်သတ်မှတ်ချက်ပါသည့် အစီအစဉ်များဆွဲရန် ဤအက်ပ်ကို ခွင့်ပြုပါ။ သင်က စက်ကိုအသုံးမပြုနေသည့် အချိန်တွင်လည်း စတင်ရန်နှင့် အလုပ်လုပ်နေရန် အက်ပ်ကို ခွင့်ပြုပါမည်။ ဤခွင့်ပြုချက်ကို ရုတ်သိမ်းခြင်းက အက်ပ်ကို ချွတ်ယွင်းစေမည်ဖြစ်ကြောင်း သတိပြုပါ၊ အထူးသဖြင့် အက်ပ်က သတ်မှတ်ထားသော မည်သည့်နှိုးစက်မျှ အလုပ်မလုပ်တော့ပါ။"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"အချိန်ဇယား၊ နှိုးစက်၊ သတိပေးချက်၊ အစီအစဉ်"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"နှိုးစက်နှင့် သတိပေးချက်များ သတ်မှတ်ခွင့်ပြုရန်"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"နှိုးစက်နှင့် သတိပေးချက်များ"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"နှိုးစက်များသတ်မှတ်ရန်နှင့် အခြားလုပ်ဆောင်ချက်များ အစီအစဉ်ဆွဲရန် ဤအက်ပ်အား ခွင့်ပြုပါ။ သင့်ဖုန်းကို အသုံးမပြုသောအခါ ဤအက်ပ်ကိုသုံးနိုင်ပြီး ၎င်းက ဘက်ထရီပိုသုံးနိုင်သည်။ ဤခွင့်ပြုချက်ကို ပိတ်ထားပါက ဤအက်ပ်သည် ပုံမှန်လုပ်ဆောင်နိုင်ခြင်းမရှိ၍ ၎င်း၏နှိုးစက်များလည်း သတ်မှတ်ထားသည့်အတိုင်း အလုပ်လုပ်တော့မည်မဟုတ်ပါ။"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"နှိုးစက်များသတ်မှတ်ရန်နှင့် အခြားလုပ်ဆောင်ချက်များ အစီအစဉ်ဆွဲရန် ဤအက်ပ်အား ခွင့်ပြုပါ။ သင့်တက်ဘလက်ကို အသုံးမပြုသောအခါ ဤအက်ပ်ကိုသုံးနိုင်ပြီး ၎င်းက ဘက်ထရီပိုသုံးနိုင်သည်။ ဤခွင့်ပြုချက်ကို ပိတ်ထားပါက ဤအက်ပ်သည် ပုံမှန်လုပ်ဆောင်နိုင်ခြင်းမရှိ၍ ၎င်း၏နှိုးစက်များလည်း သတ်မှတ်ထားသည့်အတိုင်း အလုပ်လုပ်တော့မည်မဟုတ်ပါ။"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"နှိုးစက်များသတ်မှတ်ရန်နှင့် အခြားလုပ်ဆောင်ချက်များ အစီအစဉ်ဆွဲရန် ဤအက်ပ်အား ခွင့်ပြုပါ။ သင့်စက်ကို အသုံးမပြုသောအခါ ဤအက်ပ်ကိုသုံးနိုင်ပြီး ၎င်းက ဘက်ထရီပိုသုံးနိုင်သည်။ ဤခွင့်ပြုချက်ကို ပိတ်ထားပါက ဤအက်ပ်သည် ပုံမှန်လုပ်ဆောင်နိုင်ခြင်းမရှိ၍ ၎င်း၏နှိုးစက်များလည်း သတ်မှတ်ထားသည့်အတိုင်း အလုပ်လုပ်တော့မည်မဟုတ်ပါ။"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"အချိန်ဇယား၊ နှိုးစက်၊ သတိပေးချက်၊ နာရီ"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ဖွင့်ရန်"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\'မနှောင့်ယှက်ရ\' ဖွင့်ခြင်း"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ဘယ်တော့မှ"</string> @@ -519,7 +520,7 @@ <string name="alarm_template" msgid="3346777418136233330">"<xliff:g id="WHEN">%1$s</xliff:g> တွင်"</string> <string name="alarm_template_far" msgid="6382760514842998629">"<xliff:g id="WHEN">%1$s</xliff:g> တွင်"</string> <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"ကြာချိန်"</string> - <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"အမြဲမေးပါ"</string> + <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"အမြဲမေးရန်"</string> <string name="zen_mode_forever" msgid="3339224497605461291">"သင်ပိတ်လိုက်သည် အထိ"</string> <string name="time_unit_just_now" msgid="3006134267292728099">"ယခုလေးတင်"</string> <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ဖုန်းစပီကာ"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"သော့ချရန် သတ်မှတ်ပါ"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> သို့ ပြောင်းရန်"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"အသုံးပြုသူအသစ် ပြုလုပ်နေသည်…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"အသုံးပြုသူအသစ် ပြုလုပ်၍မရပါ"</string> <string name="user_nickname" msgid="262624187455825083">"နာမည်ပြောင်"</string> <string name="guest_new_guest" msgid="3482026122932643557">"ဧည့်သည့် ထည့်ရန်"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"ဧည့်သည်ကို ဖယ်ထုတ်ရန်"</string> @@ -576,8 +576,8 @@ <string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"ဖွင့်ထားသည်"</string> <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"ဤအပြောင်းအလဲ ထည့်သွင်းရန် သင့်စက်ကို ပြန်လည်စတင်ရမည်။ ယခု ပြန်လည်စတင်ပါ သို့မဟုတ် ပယ်ဖျက်ပါ။"</string> <string name="media_transfer_wired_usb_device_name" msgid="7699141088423210903">"ကြိုးတပ်နားကြပ်"</string> - <string name="wifi_hotspot_switch_on_text" msgid="9212273118217786155">"ဖွင့်ထားသည်"</string> - <string name="wifi_hotspot_switch_off_text" msgid="7245567251496959764">"ပိတ်ထားသည်"</string> + <string name="wifi_hotspot_switch_on_text" msgid="9212273118217786155">"ဖွင့်"</string> + <string name="wifi_hotspot_switch_off_text" msgid="7245567251496959764">"ပိတ်"</string> <string name="carrier_network_change_mode" msgid="4257621815706644026">"ဝန်ဆောင်မှုပေးသူ ကွန်ရက် ပြောင်းလဲနေသည်။"</string> <string name="data_connection_3g" msgid="931852552688157407">"3G"</string> <string name="data_connection_edge" msgid="4625509456544797637">"EDGE"</string> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index a0c5651dac6d..c28bf27e6e03 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -249,7 +249,7 @@ <string name="mock_location_app_not_set" msgid="6972032787262831155">"Ingen app for fiktiv plassering er angitt"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"App for fiktiv plassering: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Nettverk"</string> - <string name="wifi_display_certification" msgid="1805579519992520381">"Trådløs skjermsertifisering"</string> + <string name="wifi_display_certification" msgid="1805579519992520381">"Trådløs skjerm-sertifisering"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Slå på detaljert Wi-Fi-loggføring"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Begrensning av Wi‑Fi-skanning"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑forbedret MAC-tilfeldiggjøring"</string> @@ -279,7 +279,7 @@ <string name="private_dns_mode_off" msgid="7065962499349997041">"Av"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automatisk"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Vertsnavn for privat DNS-leverandør"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Skriv inn vertsnavnet til DNS-leverandøren"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Skriv inn DNS-leverandørens vertsnavn"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Kunne ikke koble til"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Vis alternativer for sertifisering av trådløs skjerm"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Øk Wi-Fi-loggenivå – vis per SSID RSSI i Wi-Fi-velgeren"</string> @@ -345,7 +345,7 @@ <string name="debug_hw_overdraw" msgid="8944851091008756796">"Feilsøk GPU-overtegning"</string> <string name="disable_overlays" msgid="4206590799671557143">"Slå av maskinvareoverlegg"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"Bruk alltid GPU for skjermsammensetting"</string> - <string name="simulate_color_space" msgid="1206503300335835151">"Simuler fargeområde"</string> + <string name="simulate_color_space" msgid="1206503300335835151">"Simuler fargerom"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Slå på OpenGL-spor"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Slå av lydomkobling via USB"</string> <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Slå av automatisk lydomkobling til USB-enheter"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Slå på omkoding"</string> <string name="transcode_default" msgid="3784803084573509491">"Anta at apper støtter moderne formater"</string> <string name="transcode_notification" msgid="5560515979793436168">"Vis omkodingsvarsler"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Slå av omkodingsbuffer"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Aktive tjenester"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Se og kontrollér tjenester som kjører"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Nettbrettet slås kanskje av snart (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Enheten slås kanskje av snart (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Fulladet om <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – Fulladet om <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – optimaliserer batteritilstanden"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Ukjent"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Lader"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Lader raskt"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Lader sakte"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Lader trådløst"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Lader ikke"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Laderen er koblet til – kan ikke lade akkurat nå"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Ladet"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrollert av administratoren"</string> <string name="disabled" msgid="8017887509554714950">"Slått av"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Tillatt"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Avbryt"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmer og påminnelser"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Gi tillatelse til å angi alarmer og påminnelser"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmer og påminnelser"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Tillat denne appen å planlegge alarmer eller andre tidsbaserte hendelser. Dette gjør at appen kan starte og kjøre, selv når du ikke bruker enheten. Hvis du opphever denne tillatelsen, kan det føre til feil med appen, blant annet at alarmer som appen har planlagt, ikke fungerer lenger."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"tidsplan, alarm, påminnelse, hendelse"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Tillat innstilling av alarmer og påminnelser"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmer og påminnelser"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Tillat at denne appen stiller inn alarmer og planlegger andre handlinger. Denne appen kan brukes når du ikke bruker telefonen, noe som kan bruke mer batteri. Hvis denne tillatelsen er av, fungerer appen muligens ikke som normalt, og alarmene i den fungerer ikke som planlagt."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Tillat at denne appen stiller inn alarmer og planlegger andre handlinger. Denne appen kan brukes når du ikke bruker nettbrettet, noe som kan bruke mer batteri. Hvis denne tillatelsen er av, fungerer appen muligens ikke som normalt, og alarmene i den fungerer ikke som planlagt."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Tillat at denne appen stiller inn alarmer og planlegger andre handlinger. Denne appen kan brukes når du ikke bruker enheten, noe som kan bruke mer batteri. Hvis denne tillatelsen er av, fungerer appen muligens ikke som normalt, og alarmene i den fungerer ikke som planlagt."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"tidsplan, alarm, påminnelse, klokke"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Slå på"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Slå på Ikke forstyrr"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Aldri"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Angi lås"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Bytt til <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Oppretter en ny bruker …"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Kunne ikke opprette noen ny bruker"</string> <string name="user_nickname" msgid="262624187455825083">"Kallenavn"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Legg til en gjest"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Fjern gjesten"</string> diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml index 6ae3a736b83b..34afb084bba9 100644 --- a/packages/SettingsLib/res/values-ne/arrays.xml +++ b/packages/SettingsLib/res/values-ne/arrays.xml @@ -25,7 +25,7 @@ <item msgid="3288373008277313483">"स्क्यान गरिँदै..."</item> <item msgid="6050951078202663628">"जडान हुँदै..."</item> <item msgid="8356618438494652335">"प्रमाणित गर्दै ..."</item> - <item msgid="2837871868181677206">"IP ठेगाना पत्ता लगाउँदै ..."</item> + <item msgid="2837871868181677206">"IP एड्रेस पत्ता लगाउँदै ..."</item> <item msgid="4613015005934755724">"जडान गरिएको"</item> <item msgid="3763530049995655072">"निलम्बित"</item> <item msgid="7852381437933824454">"विच्छेदन गर्दै..."</item> @@ -39,8 +39,8 @@ <item msgid="1818677602615822316">"स्क्यान गर्दै..."</item> <item msgid="8339720953594087771">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>सँग जडान हुँदै..."</item> <item msgid="3028983857109369308">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>को साथ प्रमाणित गर्दै…"</item> - <item msgid="4287401332778341890">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>बाट IP ठेगाना प्राप्त गर्दै…"</item> - <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> मा जोडिएको छ"</item> + <item msgid="4287401332778341890">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>बाट IP एड्रेस प्राप्त गर्दै…"</item> + <item msgid="1043944043827424501">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> मा कनेक्ट भएको छ छ"</item> <item msgid="7445993821842009653">"निलम्बित"</item> <item msgid="1175040558087735707">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g>बाट विच्छेदन गर्दै..."</item> <item msgid="699832486578171722">"विच्छेदन भएको"</item> @@ -64,7 +64,7 @@ <item msgid="2779123106632690576">"सक्षम पारिएको छ"</item> </string-array> <string-array name="bluetooth_avrcp_versions"> - <item msgid="6603880723315236832">"AVRCP १.५ (पूर्वनिर्धारित)"</item> + <item msgid="6603880723315236832">"AVRCP १.५ (डिफल्ट)"</item> <item msgid="1637054408779685086">"AVRCP १.३"</item> <item msgid="5896162189744596291">"AVRCP १.४"</item> <item msgid="7556896992111771426">"AVRCP १.६"</item> @@ -76,7 +76,7 @@ <item msgid="1963366694959681026">"avrcp १६"</item> </string-array> <string-array name="bluetooth_map_versions"> - <item msgid="8786402640610987099">"MAP १.२ (पूर्वनिर्धारित)"</item> + <item msgid="8786402640610987099">"MAP १.२ (डिफल्ट)"</item> <item msgid="6817922176194686449">"MAP १.३"</item> <item msgid="3423518690032737851">"MAP १.४"</item> </string-array> @@ -86,7 +86,7 @@ <item msgid="8147982633566548515">"map14"</item> </string-array> <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item> + <item msgid="2494959071796102843">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="4055460186095649420">"SBC"</item> <item msgid="720249083677397051">"AAC"</item> <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> अडियो"</item> @@ -94,7 +94,7 @@ <item msgid="3825367753087348007">"LDAC"</item> </string-array> <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item> + <item msgid="8868109554557331312">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="9024885861221697796">"SBC"</item> <item msgid="4688890470703790013">"AAC"</item> <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> अडियो"</item> @@ -102,38 +102,38 @@ <item msgid="2553206901068987657">"LDAC"</item> </string-array> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> - <item msgid="926809261293414607">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item> + <item msgid="926809261293414607">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="8003118270854840095">"४४.१ kHz"</item> <item msgid="3208896645474529394">"४८.० kHz"</item> <item msgid="8420261949134022577">"८८.२ kHz"</item> <item msgid="8887519571067543785">"९६.० kHz"</item> </string-array> <string-array name="bluetooth_a2dp_codec_sample_rate_summaries"> - <item msgid="2284090879080331090">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item> + <item msgid="2284090879080331090">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="1872276250541651186">"४४.१ kHz"</item> <item msgid="8736780630001704004">"४८.० kHz"</item> <item msgid="7698585706868856888">"८८.२ kHz"</item> <item msgid="8946330945963372966">"९६.० kHz"</item> </string-array> <string-array name="bluetooth_a2dp_codec_bits_per_sample_titles"> - <item msgid="2574107108483219051">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item> + <item msgid="2574107108483219051">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="4671992321419011165">"१६ बिट/नमूना"</item> <item msgid="1933898806184763940">"२४ बिट/नमूना"</item> <item msgid="1212577207279552119">"३२ बिट/नमूना"</item> </string-array> <string-array name="bluetooth_a2dp_codec_bits_per_sample_summaries"> - <item msgid="9196208128729063711">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item> + <item msgid="9196208128729063711">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="1084497364516370912">"१६ बिट/नमूना"</item> <item msgid="2077889391457961734">"२४ बिट/नमूना"</item> <item msgid="3836844909491316925">"३२ बिट/नमूना"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_titles"> - <item msgid="3014194562841654656">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item> + <item msgid="3014194562841654656">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="5982952342181788248">"मोनो"</item> <item msgid="927546067692441494">"स्टेरियो"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_summaries"> - <item msgid="1997302811102880485">"प्रणालीको चयन प्रयोग गर्नुहोस् (पूर्वनिर्धारित)"</item> + <item msgid="1997302811102880485">"सिस्टमको छनौट प्रयोग गरियोस् (डिफल्ट)"</item> <item msgid="8005696114958453588">"मोनो"</item> <item msgid="1333279807604675720">"स्टेरियो"</item> </string-array> @@ -185,36 +185,36 @@ </string-array> <string-array name="select_logpersist_summaries"> <item msgid="97587758561106269">"निष्क्रिय"</item> - <item msgid="7126170197336963369">"सबै लग सम्बन्धी बफरहरू"</item> + <item msgid="7126170197336963369">"सबै लग बफर"</item> <item msgid="7167543126036181392">"रेडियो सम्बन्धी लगका बफरहरू बाहेक सबै"</item> <item msgid="5135340178556563979">"कर्नेलको लग सम्बन्धी बफर मात्र"</item> </string-array> <string-array name="window_animation_scale_entries"> <item msgid="2675263395797191850">"सजीविकरण बन्द"</item> - <item msgid="5790132543372767872">"सजीविकरण मापन .5x"</item> - <item msgid="2529692189302148746">"सजीविकरण मापन 1x"</item> - <item msgid="8072785072237082286">"सजीविकरण मापन 1.5x"</item> + <item msgid="5790132543372767872">"एनिमेसन स्केल .5x"</item> + <item msgid="2529692189302148746">"एनिमेसन स्केल 1x"</item> + <item msgid="8072785072237082286">"एनिमेसन स्केल 1.5x"</item> <item msgid="3531560925718232560">"एनिमेसन मापन 2x"</item> <item msgid="4542853094898215187">"एनिमेसन मापन 5x"</item> - <item msgid="5643881346223901195">"सजीविकरण मापन 10x"</item> + <item msgid="5643881346223901195">"एनिमेसन स्केल 10x"</item> </string-array> <string-array name="transition_animation_scale_entries"> <item msgid="3376676813923486384">"एनिमेसन बन्द छ"</item> - <item msgid="753422683600269114">"सजीविकरण मापन .5x"</item> - <item msgid="3695427132155563489">"सजीविकरण मापन 1x"</item> - <item msgid="9032615844198098981">"सजीविकरण मापन 1.5x"</item> - <item msgid="8473868962499332073">"सजीविकरण मापन 2x"</item> + <item msgid="753422683600269114">"एनिमेसन स्केल .5x"</item> + <item msgid="3695427132155563489">"एनिमेसन स्केल 1x"</item> + <item msgid="9032615844198098981">"एनिमेसन स्केल 1.5x"</item> + <item msgid="8473868962499332073">"एनिमेसन स्केल 2x"</item> <item msgid="4403482320438668316">"एनिमेसन मापन 5x"</item> - <item msgid="169579387974966641">"10x सजीविकरण स्केल"</item> + <item msgid="169579387974966641">"10x एनिमेसन स्केल"</item> </string-array> <string-array name="animator_duration_scale_entries"> <item msgid="6416998593844817378">"सजीविकरण बन्द"</item> - <item msgid="875345630014338616">"सजीविकरण मापन .5x"</item> - <item msgid="2753729231187104962">"सजीविकरण स्केल १x"</item> - <item msgid="1368370459723665338">"सजीविकरण मापन 1.5x"</item> - <item msgid="5768005350534383389">"सजीविकरण मापन 2x"</item> - <item msgid="3728265127284005444">"सजीविकरण मापन 5x"</item> - <item msgid="2464080977843960236">"सजीविकरण मापन 10x"</item> + <item msgid="875345630014338616">"एनिमेसन स्केल .5x"</item> + <item msgid="2753729231187104962">"एनिमेसन स्केल १x"</item> + <item msgid="1368370459723665338">"एनिमेसन स्केल 1.5x"</item> + <item msgid="5768005350534383389">"एनिमेसन स्केल 2x"</item> + <item msgid="3728265127284005444">"एनिमेसन स्केल 5x"</item> + <item msgid="2464080977843960236">"एनिमेसन स्केल 10x"</item> </string-array> <string-array name="overlay_display_devices_entries"> <item msgid="4497393944195787240">"कुनै पनि होइन"</item> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index c98b4aea4aaa..ca185e2192ff 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -21,9 +21,9 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="wifi_fail_to_scan" msgid="2333336097603822490">"सञ्जालका लागि स्क्यान गर्न सक्दैन"</string> - <string name="wifi_security_none" msgid="7392696451280611452">"कुनै पनि होइन"</string> - <string name="wifi_remembered" msgid="3266709779723179188">"सुरक्षित गरियो"</string> - <string name="wifi_disconnected" msgid="7054450256284661757">"विच्छेद गरियो"</string> + <string name="wifi_security_none" msgid="7392696451280611452">"छैन"</string> + <string name="wifi_remembered" msgid="3266709779723179188">"सेभ गरिएको छ"</string> + <string name="wifi_disconnected" msgid="7054450256284661757">"डिस्कनेक्ट गरिएको छ"</string> <string name="wifi_disabled_generic" msgid="2651916945380294607">"असक्षम पारियो"</string> <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"IP विन्यास असफल"</string> <string name="wifi_disabled_by_recommendation_provider" msgid="1302938248432705534">"कम गुणस्तरको नेटवर्कका कारण जडान गर्न सकिएन"</string> @@ -35,10 +35,10 @@ <string name="wifi_not_in_range" msgid="1541760821805777772">"दायराभित्र छैन"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"स्वतः जडान हुने छैन"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"इन्टरनेटमाथिको पहुँच छैन"</string> - <string name="saved_network" msgid="7143698034077223645">"<xliff:g id="NAME">%1$s</xliff:g> द्वारा सुरक्षित गरियो"</string> + <string name="saved_network" msgid="7143698034077223645">"<xliff:g id="NAME">%1$s</xliff:g> द्वारा सेभ गरियो"</string> <string name="connected_to_metered_access_point" msgid="9179693207918156341">"प्रयोगसम्बन्धी सीमा तोकिएको नेटवर्कमा कनेक्ट गरियो"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"%1$s मार्फत् स्वतः जडान गरिएको"</string> - <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"नेटवर्कको दर्जा प्रदायक मार्फत स्वत: जडान गरिएको"</string> + <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"नेटवर्क मूल्याङ्कनकर्ता मार्फत स्वत: जडान गरिएको"</string> <string name="connected_via_passpoint" msgid="7735442932429075684">"%1$s मार्फत जडित"</string> <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> मार्फत जडान गरिएको"</string> <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s मार्फत उपलब्ध"</string> @@ -87,7 +87,7 @@ <string name="bluetooth_profile_opp" msgid="6692618568149493430">"फाइल स्थानान्तरण"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"इनपुट उपकरण"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"इन्टरनेट पहुँच"</string> - <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"सम्पर्क साझेदारी"</string> + <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"सम्पर्क ठेगानाको सेयरिङ"</string> <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"सम्पर्क साझेदारीका लागि प्रयोग"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"इन्टरनेट जडान साझेदारी गर्दै"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"टेक्स्ट म्यासेजहरू"</string> @@ -103,7 +103,7 @@ <string name="bluetooth_sap_profile_summary_connected" msgid="1280297388033001037">"SAP मा जडित"</string> <string name="bluetooth_opp_profile_summary_not_connected" msgid="3959741824627764954">"फाइल ट्रान्सफर सर्भरसँग जडान गरिएको छैन"</string> <string name="bluetooth_hid_profile_summary_connected" msgid="3923653977051684833">"इनपुट उपकरणसँग जोडिएको छ"</string> - <string name="bluetooth_pan_user_profile_summary_connected" msgid="380469653827505727">"इन्टरनेटमाथिको पहुँचका लागि यन्त्रमा जडान गरियो"</string> + <string name="bluetooth_pan_user_profile_summary_connected" msgid="380469653827505727">"इन्टरनेटमाथिको पहुँचका लागि डिभाइसमा जडान गरियो"</string> <string name="bluetooth_pan_nap_profile_summary_connected" msgid="3744773111299503493">"यन्त्रसँग स्थानीय इन्टरनेट जडान साझा गर्दै"</string> <string name="bluetooth_pan_profile_summary_use_for" msgid="7422039765025340313">"इन्टरनेटमाथि पहुँच राख्न प्रयोग गर्नुहोस्"</string> <string name="bluetooth_map_profile_summary_use_for" msgid="4453622103977592583">"नक्साको लागि प्रयोग गर्नुहोस्"</string> @@ -113,12 +113,12 @@ <string name="bluetooth_opp_profile_summary_use_for" msgid="461981154387015457">"फाइल ट्रान्सफरका लागि प्रयोग गर्नुहोस्"</string> <string name="bluetooth_hid_profile_summary_use_for" msgid="4289460627406490952">"इनपुटको लागि प्रयोग गर्नुहोस्"</string> <string name="bluetooth_hearing_aid_profile_summary_use_for" msgid="7689393730163320483">"श्रवण यन्त्रहरूका लागि प्रयोग गर्नुहोस्"</string> - <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"जोडा बनाउनुहोस्"</string> + <string name="bluetooth_pairing_accept" msgid="2054232610815498004">"कनेक्ट गर्नुहोस्"</string> <string name="bluetooth_pairing_accept_all_caps" msgid="2734383073450506220">"जोडी"</string> <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"रद्द गर्नुहोस्"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"जब जडान हुन्छ जोडी अनुदानले तपाईँको सम्पर्कहरू पहुँच गर्छ र इतिहास सम्झाउँछ।"</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>सँग जोडा मिलाउन सकेन"</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>गलत PIN वा पासकिका कारण सँग जोडा बाँध्न सक्दैन।"</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"गलत PIN वा पासकीका कारणले <xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग कनेक्ट गर्न सकिएन।"</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सँग कुराकानी हुन सक्दैन।"</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> द्वारा जोडा बाँध्ने कार्य अस्वीकृत"</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"कम्प्युटर"</string> @@ -128,8 +128,8 @@ <string name="bluetooth_talkback_headphone" msgid="8613073829180337091">"हेडफोन"</string> <string name="bluetooth_talkback_input_peripheral" msgid="5133944817800149942">"इनपुट सम्बन्धी बाह्य यन्त्र"</string> <string name="bluetooth_talkback_bluetooth" msgid="1143241359781999989">"ब्लुटुथ"</string> - <string name="bluetooth_hearingaid_left_pairing_message" msgid="8561855779703533591">"दायाँतर्फको श्रवण यन्त्रको जोडा बनाउँदै…"</string> - <string name="bluetooth_hearingaid_right_pairing_message" msgid="2655347721696331048">"बायाँतर्फको श्रवण यन्त्रको जोडा बनाउँदै…"</string> + <string name="bluetooth_hearingaid_left_pairing_message" msgid="8561855779703533591">"दायाँतर्फको श्रवण डिभाइसको जोडा बनाउँदै…"</string> + <string name="bluetooth_hearingaid_right_pairing_message" msgid="2655347721696331048">"बायाँतर्फको श्रवण डिभाइसको जोडा बनाउँदै…"</string> <string name="bluetooth_hearingaid_left_battery_level" msgid="7375621694748104876">"बायाँ - ब्याट्रीको स्तर: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string> <string name="bluetooth_hearingaid_right_battery_level" msgid="1850094448499089312">"दायाँ - ब्याट्रीको स्तर: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string> <string name="accessibility_wifi_off" msgid="1195445715254137155">"Wi-Fi बन्द।"</string> @@ -140,11 +140,11 @@ <string name="accessibility_wifi_signal_full" msgid="7165262794551355617">"पूर्ण Wi-Fi सिंग्नल।"</string> <string name="accessibility_wifi_security_type_none" msgid="162352241518066966">"खुला नेटवर्क"</string> <string name="accessibility_wifi_security_type_secured" msgid="2399774097343238942">"सुरक्षित नेटवर्क"</string> - <string name="process_kernel_label" msgid="950292573930336765">"एन्ड्रोइड OS"</string> + <string name="process_kernel_label" msgid="950292573930336765">"Android OS"</string> <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"हटाइएका एपहरू"</string> <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"एपहरू र प्रयोगकर्ताहरू हटाइयो।"</string> <string name="data_usage_ota" msgid="7984667793701597001">"प्रणालीसम्बन्धी अद्यावधिकहरू"</string> - <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB टेदर गर्दै"</string> + <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB टेदरिङ"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"पोर्टेबल हटस्पट"</string> <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"ब्लुटुथ टेदर गर्दै"</string> <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"टेदर गर्दै"</string> @@ -154,9 +154,9 @@ <string name="unknown" msgid="3544487229740637809">"अज्ञात"</string> <string name="running_process_item_user_label" msgid="3988506293099805796">"प्रयोगकर्ता: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"केही पूर्वनिर्धारितहरू सेट गरिएका छन्"</string> - <string name="launch_defaults_none" msgid="8049374306261262709">"कुनै पूर्वनिर्धारित सेट गरिएको छैन"</string> + <string name="launch_defaults_none" msgid="8049374306261262709">"कुनै डिफल्ट सेट गरिएको छैन"</string> <string name="tts_settings" msgid="8130616705989351312">"पाठ-वाचन सेटिङहरू"</string> - <string name="tts_settings_title" msgid="7602210956640483039">"पाठवाचकको आउटपुट"</string> + <string name="tts_settings_title" msgid="7602210956640483039">"टेक्स्ट टु स्पिच आउटपुट"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"वाणी दर"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"पाठ वाचन हुने गति"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"पिच"</string> @@ -172,7 +172,7 @@ <string name="tts_engine_security_warning" msgid="3372432853837988146">"यो वाणी संश्लेषण इन्जिनले पासवर्ड र क्रेडिट कार्ड नम्बर जस्ता निजी डेटासहित बोलिने सबै पाठ जम्मा गर्न सक्षम हुन सक्छ। यो <xliff:g id="TTS_PLUGIN_ENGINE_NAME">%s</xliff:g> इन्जिनबाट आउँछ। यो वाणी संश्लेषण इन्जिनको उपयोग सक्षम गर्नुहुन्छ?"</string> <string name="tts_engine_network_required" msgid="8722087649733906851">"पाठ वाचकको आउटपुटका लागि यस भाषालाई काम गरिरहेको सञ्जाल जडान आवाश्यक पर्छ।"</string> <string name="tts_default_sample_string" msgid="6388016028292967973">"यो वाणी संश्लेषणको एउटा उदाहरण हो।"</string> - <string name="tts_status_title" msgid="8190784181389278640">"पूर्वनिर्धारित भाषाको वस्तुस्थिति"</string> + <string name="tts_status_title" msgid="8190784181389278640">"डिफल्ट भाषाको वस्तुस्थिति"</string> <string name="tts_status_ok" msgid="8583076006537547379">"<xliff:g id="LOCALE">%1$s</xliff:g> पूर्ण रूपले समर्थित छ"</string> <string name="tts_status_requires_network" msgid="8327617638884678896">"<xliff:g id="LOCALE">%1$s</xliff:g> नेटवर्क जडान चाहिन्छ"</string> <string name="tts_status_not_supported" msgid="2702997696245523743">"<xliff:g id="LOCALE">%1$s</xliff:g> समर्थित छैन"</string> @@ -182,7 +182,7 @@ <string name="tts_engine_preference_section_title" msgid="3861562305498624904">"रुचाइएको इन्जिन"</string> <string name="tts_general_section_title" msgid="8919671529502364567">"सामान्य"</string> <string name="tts_reset_speech_pitch_title" msgid="7149398585468413246">"बोलीको पिचलाई रिसेट गर्नुहोस्"</string> - <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"पाठ बोलिने पिचलाई पूर्वनिर्धारितमा रिसेट गर्नुहोस्।"</string> + <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"पाठ बोलिने पिचलाई रिसेट गरी डिफल्ट बनाउनुहोस्।"</string> <string-array name="tts_rate_entries"> <item msgid="9004239613505400644">"निकै बिस्तारै"</item> <item msgid="1815382991399815061">"ढिलो"</item> @@ -204,60 +204,60 @@ <string name="vpn_settings_not_available" msgid="2894137119965668920">"VPN सेटिङहरू यो प्रयोगकर्ताको लागि उपलब्ध छैन"</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"कार्यक्षेत्र सीमा सेटिङहरू यो प्रयोगकर्ताको लागि उपलब्ध छैन"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"पहुँच बिन्दु नामको सेटिङहरू यो प्रयोगकर्ताको लागि उपलब्ध छैन"</string> - <string name="enable_adb" msgid="8072776357237289039">"USB डिबग गर्दै"</string> - <string name="enable_adb_summary" msgid="3711526030096574316">"USB जडित हुँदा डिबग मोड"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"USB डिबग गर्ने प्राधिकरणहरू उल्टाउनुहोस्"</string> + <string name="enable_adb" msgid="8072776357237289039">"USB डिबगिङ"</string> + <string name="enable_adb_summary" msgid="3711526030096574316">"USB कनेक्ट गरिएको बेलामा डिबग मोड"</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"USB डिबग गर्ने अधिकार फिर्ता लिइयोस्"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"वायरलेस डिबगिङ"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Wi‑Fi मा जोडिँदा डिबग मोड सक्षम पार्ने कि नपार्ने"</string> <string name="adb_wireless_error" msgid="721958772149779856">"त्रुटि"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"वायरलेस डिबगिङ"</string> - <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"उपलब्ध यन्त्रहरू हेर्न र प्रयोग गर्न वायरलेस डिबगिङ सेवा सक्रिय गर्नुहोस्"</string> - <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR कोडमार्फत यन्त्रको जोडा बनाउनुहोस्"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR कोड स्क्यानर प्रयोग गरी नयाँ यन्त्रहरूको जोडा बनाउनुहोस्"</string> - <string name="adb_pair_method_code_title" msgid="1122590300445142904">"जोडा मिलाउने कोडमार्फत यन्त्रको जोडा बनाउनुहोस्"</string> - <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"छ अङ्कको कोड प्रयोग गरी नयाँ यन्त्रहरूको जोडा बनाउनुहोस्"</string> - <string name="adb_paired_devices_title" msgid="5268997341526217362">"जोडा बनाइएका यन्त्रहरू"</string> + <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"उपलब्ध डिभाइस हेर्न र प्रयोग गर्न वायरलेस डिबगिङ अन गर्नुहोस्"</string> + <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR कोड प्रयोग गरी डिभाइस कनेक्ट गरियोस्"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR कोड स्क्यानर प्रयोग गरी नयाँ डिभाइसहरूको जोडा बनाउनुहोस्"</string> + <string name="adb_pair_method_code_title" msgid="1122590300445142904">"पेयरिङ कोड प्रयोग गरी कनेक्ट गरियोस्"</string> + <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"छ अङ्कको कोड प्रयोग गरी नयाँ डिभाइसहरू कनेक्ट गरियोस्"</string> + <string name="adb_paired_devices_title" msgid="5268997341526217362">"कनेक्ट गरिएका डिभाइस"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"हाल जोडिएको छ"</string> <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"यन्त्रसम्बन्धी विवरणहरू"</string> <string name="adb_device_forget" msgid="193072400783068417">"बिर्सनुहोस्"</string> - <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"यन्त्रको फिंगरप्रिन्ट: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string> + <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"डिभाइसको फिंगरप्रिन्ट: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string> <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"वायरलेसमा जोड्न सकिएन"</string> <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> सही नेटवर्कमा जोडिएको कुरा सुनिश्चित गर्नुहोस्"</string> <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"यन्त्रसँग जोडा बनाउनुहोस्"</string> - <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wi‑Fi सँग जोडा मिलाउने कोड"</string> + <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wi‑Fi मा कनेक्ट गर्ने कोड"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"जोडा बनाउने प्रक्रिया सफल भएन"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"यन्त्र उही नेटवर्कमा जोडिएको कुरा सुनिश्चित गर्नुहोस्।"</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR कोड स्क्यान गरेर Wi‑Fi प्रयोग गरी यन्त्रको जोडा बनाउनुहोस्"</string> - <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"यन्त्रसँग जोडा मिलाउँदै…"</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR कोड स्क्यान गरेर Wi‑Fi प्रयोग गरी डिभाइसको जोडा बनाउनुहोस्"</string> + <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"डिभाइस कनेक्ट गर्दै…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"यन्त्रसँग जोडा बनाउन सकिएन। कि त QR कोड गलत छ कि यन्त्र उही नेटवर्कमा जोडिएको छैन।"</string> - <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP ठेगाना र पोर्ट"</string> + <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP एड्रेस र पोर्ट"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR कोड स्क्यान गर्नुहोस्"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"QR कोड स्क्यान गरी Wi‑Fi मार्फत यन्त्रको जोडा बनाउनुहोस्"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"QR कोड स्क्यान गरी Wi‑Fi मार्फत डिभाइस कनेक्ट गर्नुहोस्"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"कृपया कुनै Wi-Fi मा कनेक्ट गर्नुहोस्"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string> - <string name="bugreport_in_power" msgid="8664089072534638709">"बग प्रतिवेदन सर्टकट"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"बग रिपोर्ट लिनका लागि पावर मेनुमा बटन देखाउनुहोस्"</string> - <string name="keep_screen_on" msgid="1187161672348797558">"जागा रहनुहोस्"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"चार्ज गर्ने बेलामा स्क्रिन कहिल्यै सुत्दैन।"</string> - <string name="bt_hci_snoop_log" msgid="7291287955649081448">"ब्लुटुथ HCI snoop लग सक्षम पार्नुहोस्"</string> + <string name="bugreport_in_power" msgid="8664089072534638709">"बग रिपोर्टको सर्टकट"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"बग रिपोर्ट प्राप्त गर्न पावर मेनुमा बटन देखाइयोस्"</string> + <string name="keep_screen_on" msgid="1187161672348797558">"डिस्प्ले अफ नहोस्"</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"चार्ज गर्दा स्क्रिन कहिल्यै अफ हुँदैन।"</string> + <string name="bt_hci_snoop_log" msgid="7291287955649081448">"ब्लुटुथ HCI snoop लग अन गर्नुहोस्"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"ब्लुटुथका प्याकेटहरू समावेश गर्नुहोस्। (यो सेटिङ परिवर्तन गरेपछि ब्लुटुथ टगल गर्नुहोस्)"</string> - <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM अनलक गर्दै"</string> + <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM अनलकिङ"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"अनलक हुन बूटलोडरलाई अनुमति दिनुहोस्"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"OEM अनलक गर्न अनुमति दिने?"</string> - <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"चेतावनी: यो सेटिङ खुला हुँदा, यस उपकरणमा उपकरण सुरक्षा सुविधाहरूले काम गर्ने छैनन्।"</string> - <string name="mock_location_app" msgid="6269380172542248304">"नमूना स्थान एप चयन गर्नुहोस्"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"कुनै नमूना स्थान एप सेट गरिएन"</string> + <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"चेतावनी: यो सेटिङ खुला हुँदा, यस उपकरणमा डिभाइसको सुरक्षा गर्ने सुविधाहरूले काम गर्ने छैनन्।"</string> + <string name="mock_location_app" msgid="6269380172542248304">"नमूना लोकेसन एप छान्नुहोस्"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"कुनै नमूना लोकेसन एप सेट गरिएको छैन"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"नमूना स्थान एप: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"नेटवर्किङ"</string> - <string name="wifi_display_certification" msgid="1805579519992520381">"ताररहित प्रदर्शन प्रमाणीकरण"</string> - <string name="wifi_verbose_logging" msgid="1785910450009679371">"Wi-Fi वर्बोज लग सक्षम पार्नुहोस्"</string> + <string name="wifi_display_certification" msgid="1805579519992520381">"वायरलेस डिस्प्ले प्रयोग गर्ने वा नगर्ने"</string> + <string name="wifi_verbose_logging" msgid="1785910450009679371">"Wi-Fi भर्बोज लग अन गरियोस्"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi स्क्यान थ्रोटलिङ"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi द्वारा परिष्कृत MAC ठेगाना बदल्ने सुविधा"</string> - <string name="mobile_data_always_on" msgid="8275958101875563572">"मोबाइल डेटा सधैँ सक्रिय राख्नुहोस्"</string> + <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi द्वारा परिष्कृत MAC एड्रेस बदल्ने सुविधा"</string> + <string name="mobile_data_always_on" msgid="8275958101875563572">"मोबाइल डेटा सधैँ अन होस्"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"टेदरिङको लागि हार्डवेयरको प्रवेग"</string> - <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"नामकरण नगरिएका ब्लुटुथ यन्त्रहरू देखाउनुहोस्"</string> - <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"निरपेक्ष आवाज असक्षम गर्नुहोस्"</string> - <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche सक्षम पार्नुहोस्"</string> + <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"नामकरण नगरिएका ब्लुटुथ डिभाइस देखाइयोस्"</string> + <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"निरपेक्ष भोल्युम अफ गरियोस्"</string> + <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche अन गरियोस्"</string> <string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ब्लुटुथको AVRCP संस्करण"</string> <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ब्लुटुथको AVRCP संस्करण चयन गर्नुहोस्"</string> <string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ब्लुटुथको MAP संस्करण"</string> @@ -276,111 +276,111 @@ <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"स्ट्रिमिङ: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"निजी DNS"</string> <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"निजी DNS मोड चयन गर्नुहोस्"</string> - <string name="private_dns_mode_off" msgid="7065962499349997041">"निष्क्रिय छ"</string> + <string name="private_dns_mode_off" msgid="7065962499349997041">"अफ छ"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"स्वचालित"</string> - <string name="private_dns_mode_provider" msgid="3619040641762557028">"निजी DNS प्रदायकको होस्टनाम"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS प्रदायकको होस्टनाम प्रविष्टि गर्नुहोस्"</string> + <string name="private_dns_mode_provider" msgid="3619040641762557028">"निजी DNS प्रदायकको होस्टनेम"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS प्रदायकको होस्टनेम हाल्नुहोस्"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"जडान गर्न सकिएन"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ताररहित प्रदर्शन प्रमाणीकरणका लागि विकल्पहरू देखाउनुहोस्"</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi-Fi लग स्तर बढाउनुहोस्, Wi-Fi चयनकर्तामा प्रति SSID RSSI देखाइन्छ"</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"वायरलेस डिस्प्लेसम्बन्धी विकल्प देखाइयोस्"</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Wi-Fi लगिङ लेभल बढाइयोस्, Wi-Fi पिकरमा प्रति SSID RSSI देखाइयोस्"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ब्याट्रीको खपत कम गरी नेटवर्कको कार्यसम्पादनमा सुधार गर्दछ"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"यो मोड अन गरिएका बेला यो यन्त्र MAC ठेगाना बदल्ने सुविधा अन गरिएको कुनै इन्टरनेटसँग जति पटक कनेक्ट हुन्छ त्यति नै पटक यस यन्त्रको MAC ठेगाना पनि परिवर्तन हुन सक्छ।"</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"यो मोड अन गरिएका बेला यो डिभाइस MAC एड्रेस बदल्ने सुविधा अन गरिएको नेटवर्कमा जति पटक कनेक्ट हुन्छ त्यति नै पटक यस डिभाइसको MAC एड्रेस पनि परिवर्तन हुन सक्छ।"</string> <string name="wifi_metered_label" msgid="8737187690304098638">"सशुल्क वाइफाइ"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"मिटर नगरिएको"</string> - <string name="select_logd_size_title" msgid="1604578195914595173">"लगर बफर आकारहरू"</string> + <string name="select_logd_size_title" msgid="1604578195914595173">"लगर बफरका आकारहरू"</string> <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"लग बफर प्रति लगर आकार चयन गर्नुहोस्"</string> <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"लगरको निरन्तर भण्डारणलाई खाली गर्ने हो?"</string> - <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"हामी अब निरन्तर लगर मार्फत अनुगमन गरिरहेका छैनौँ, त्यसैले हामीले तपाईँको यन्त्रमा रहेको लगर सम्बन्धी डेटा मेटाउन आवश्यक छ।"</string> - <string name="select_logpersist_title" msgid="447071974007104196">"लगर सम्बन्धी डेटालाई निरन्तर यन्त्रमा भण्डारण गर्नुहोस्"</string> - <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"यन्त्रमा निरन्तर भण्डारण गरिने लग सम्बन्धी बफरहरूलाई चयन गर्नुहोस्"</string> + <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"हामी अब निरन्तर लगर मार्फत अनुगमन गरिरहेका छैनौँ, त्यसैले हामीले तपाईँको डिभाइसमा रहेको लगर सम्बन्धी डेटा मेटाउन आवश्यक छ।"</string> + <string name="select_logpersist_title" msgid="447071974007104196">"लगरसम्बन्धी डेटा निरन्तर डिभाइसमा भण्डारण गर्नुहोस्"</string> + <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"डिभाइसमा निरन्तर भण्डारण गरिने लग सम्बन्धी बफरहरूलाई चयन गर्नुहोस्"</string> <string name="select_usb_configuration_title" msgid="6339801314922294586">"USB विन्यास चयन गर्नुहोस्"</string> <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"USB विन्यास चयन गर्नुहोस्"</string> <string name="allow_mock_location" msgid="2102650981552527884">"नक्कली स्थानहरूलाई अनुमति दिनुहोस्"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"नक्कली स्थानहरूलाई अनुमति दिनुहोस्"</string> - <string name="debug_view_attributes" msgid="3539609843984208216">"दृष्टिकोण विशेषता निरीक्षण सक्षम पार्नुहोस्"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Wi-Fi सक्रिय हुँदा पनि मोबाइल डेटा सधैँ सक्रिय राख्नुहोस् (द्रूत नेटवर्क स्विच गर्नको लागि)।"</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"उपलब्ध भएमा टेदरिङको लागि हार्डवेयरको प्रवेग प्रयोग गर्नुहोस्"</string> + <string name="debug_view_attributes" msgid="3539609843984208216">"भ्युको एट्रिब्युट हेर्ने सुविधा अन गरियोस्"</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Wi-Fi अन हुँदा पनि मोबाइल डेटा सधैँ अन होस् (द्रुत रूपमा नेटवर्क बदल्न)।"</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"उपलब्ध हुँदा टेदरिङ हार्डवेयर एक्सलरेसन प्रयोग गरियोस्"</string> <string name="adb_warning_title" msgid="7708653449506485728">"USB डिबग गर्न लागि अनुमति दिने हो?"</string> - <string name="adb_warning_message" msgid="8145270656419669221">"युएसबी डिबगिङ विकास प्रयोजनका लागि मात्र निर्मित हुन्छ। यसलाई तपाईँको कम्प्युटर र तपाईँको उपकरणका बीच डेटा प्रतिलिपि गर्न, बिना सूचना तपाईँको उपकरणमा एपहरू स्थापना गर्न र लग डेटा पढ्नका लागि प्रयोग गर्नुहोस्।"</string> + <string name="adb_warning_message" msgid="8145270656419669221">"युएसबी डिबगिङ विकास प्रयोजनका लागि मात्र निर्मित हुन्छ। यसलाई तपाईँको कम्प्युटर र तपाईँको उपकरणका बीच डेटा प्रतिलिपि गर्न, बिना सूचना तपाईँको उपकरणमा एपहरू इन्स्टल गर्न र लग डेटा पढ्नका लागि प्रयोग गर्नुहोस्।"</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"वायरलेस डिबगिङ सेवा सक्षम पार्ने हो?"</string> - <string name="adbwifi_warning_message" msgid="8005936574322702388">"वायरलेस डिबगिङ डिभलपमेन्ट प्रयोजनका लागि मात्रै हो। यसलाई आफ्ना कम्प्युटर र उपकरणका बिच डेटा प्रतिलिपि गर्न, सूचना नदिई आफ्नो उपकरणमा एपहरू स्थापना गर्न र लग डेटा पढ्न प्रयोग गर्नुहोस्।"</string> + <string name="adbwifi_warning_message" msgid="8005936574322702388">"वायरलेस डिबगिङ डिभलपमेन्ट प्रयोजनका लागि मात्रै हो। यसलाई आफ्ना कम्प्युटर र उपकरणका बिच डेटा प्रतिलिपि गर्न, सूचना नदिई आफ्नो उपकरणमा एपहरू इन्स्टल गर्न र लग डेटा पढ्न प्रयोग गर्नुहोस्।"</string> <string name="adb_keys_warning_message" msgid="2968555274488101220">"तपाईं पहिले नै अधिकृत गर्नुभएका सबै कम्प्यूटरबाट USB डिबग गर्नको लागि पहुँच रद्द गर्ने हो?"</string> <string name="dev_settings_warning_title" msgid="8251234890169074553">"विकास सेटिङहरू अनुमति दिने हो?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"यी सेटिङहरू केवल विकास प्रयोगको लागि विचार गरिएको हो। तिनीहरूले तपाईंको उपकरण र एपहरूलाई विच्छेदन गर्न वा दुर्व्यवहार गर्न सक्दछ।"</string> - <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"USB मा एपहरू रुजु गर्नुहोस्"</string> - <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"हानिकारक व्यवहारको लागि ADB/ADT को माध्यमबाट स्थापित अनुप्रयोगहरूको जाँच गर्नुहोस्।"</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"नामकरण नगरिएका ब्लुटुथ यन्त्रहरू (MAC ठेगाना भएका मात्र) देखाइनेछ"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"रिमोट यन्त्रहरूमा अस्वीकार्य चर्को आवाज वा नियन्त्रणमा कमी जस्ता आवाज सम्बन्धी समस्याहरूको अवस्थामा ब्लुटुथ निरपेक्ष आवाज सुविधालाई असक्षम गराउँछ।"</string> - <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ब्लुटुथ Gabeldorsche सुविधाको स्ट्याक सक्षम पार्नुहोस्।"</string> + <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"USB मा एपको पुष्टि गरियोस्"</string> + <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"हानिकारक व्यवहार पत्ता लगाउन ADB/ADT बाट इन्स्टल गरिएका एपको जाँच गरियोस्"</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"नामकरण नगरिएका ब्लुटुथ डिभाइस (MAC एड्रेस भएका मात्र) देखाइने छ"</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"रिमोट डिभाइसमा अस्वीकार्य भोल्युम बज्ने वा सो भोल्युम नियन्त्रण गर्न नसकिने आदि अवस्थामा ब्लुटुथ निरपेक्ष भोल्युम अफ गर्छ।"</string> + <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ब्लुटुथ Gabeldorsche सुविधाको स्ट्याक अन गरियोस्।"</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"यसले परिष्कृत जडानको सुविधा सक्षम पार्छ।"</string> <string name="enable_terminal_title" msgid="3834790541986303654">"स्थानीय टर्मिनल"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"स्थानीय सेल पहुँच प्रदान गर्ने टर्मिनल एप सक्षम गर्नुहोस्"</string> - <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP जाँच गर्दै"</string> + <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP जाँच"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP जाँच व्यवहार सेट गर्नुहोस्"</string> <string name="debug_debugging_category" msgid="535341063709248842">"डिबग गरिँदै"</string> <string name="debug_app" msgid="8903350241392391766">"डिबग एप चयन गर्नुहोस्"</string> - <string name="debug_app_not_set" msgid="1934083001283807188">"कुनै पनि डिबग एप सेट छैन"</string> + <string name="debug_app_not_set" msgid="1934083001283807188">"कुनै पनि डिबग एप सेट गरिएको छैन"</string> <string name="debug_app_set" msgid="6599535090477753651">"डिबग गर्ने एप: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"एप चयन गर्नुहोस्"</string> <string name="no_application" msgid="9038334538870247690">"केही पनि होइन"</string> - <string name="wait_for_debugger" msgid="7461199843335409809">"डिबग गर्नेलाई पर्खनुहोस्"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"डिबग भएको एप कार्यन्वयन हुनु अघि संलग्न हुन डिबग गर्नेलाई पर्खन्छ"</string> + <string name="wait_for_debugger" msgid="7461199843335409809">"डिबगरलाई पर्खौँ"</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"डिबग भएको एप चल्नुअघि डिबगरलाई पर्खिन्छ"</string> <string name="debug_input_category" msgid="7349460906970849771">"इनपुट"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"रेखाचित्र"</string> - <string name="debug_hw_drawing_category" msgid="5830815169336975162">"हार्डवेयर प्रतिपादन फुर्तिलो बनाइयो"</string> + <string name="debug_hw_drawing_category" msgid="5830815169336975162">"हार्डवेयर एक्सेलेरेटड रेन्डरिङ फुर्तिलो बनाइयो"</string> <string name="media_category" msgid="8122076702526144053">"मिडिया"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"अनुगमन गर्दै"</string> - <string name="strict_mode" msgid="889864762140862437">"स्ट्रिक्ट मोड सक्षम पारियो"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"मुख्य थ्रेडमा लामा कार्यहरू अनुप्रयोगले सञ्चालन गर्दा स्क्रिनमा फ्ल्यास गर्नुहोस्"</string> - <string name="pointer_location" msgid="7516929526199520173">"सूचक स्थान"</string> - <string name="pointer_location_summary" msgid="957120116989798464">"स्क्रिन ओवरले हालको छुने डेटा देखाउँदै"</string> - <string name="show_touches" msgid="8437666942161289025">"ट्यापहरू देखाउनुहोस्"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"ट्यापका लागि दृश्य प्रतिक्रिया देखाउनुहोस्"</string> - <string name="show_screen_updates" msgid="2078782895825535494">"सतह अद्यावधिक देखाउनुहोस्"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"तिनीहरू अपडेट हुँदा पुरै विन्डो सतहहरूमा फ्यास गर्नुहोस्"</string> - <string name="show_hw_screen_updates" msgid="2021286231267747506">"दृश्यसम्बन्धी अद्यावधिकहरू देखाउनुहोस्"</string> - <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"कोरिएको बेला विन्डोभित्रका फ्ल्यास दृश्यहरू"</string> - <string name="show_hw_layers_updates" msgid="5268370750002509767">"हार्डवेयर तह अद्यावधिक देखाउनुहोस्"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"फ्ल्यास हार्डवेयर तहहरू अपडेट हुँदा हरिया हुन्छन्"</string> + <string name="strict_mode" msgid="889864762140862437">"स्ट्रिक्ट मोड अन गरियोस्"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"एपले मुख्य थ्रेडमा लामा गतिविधि गर्दा स्क्रिन फ्ल्यास गरियोस्"</string> + <string name="pointer_location" msgid="7516929526199520173">"पोइन्टरको स्थान"</string> + <string name="pointer_location_summary" msgid="957120116989798464">"स्क्रिन ओवरले हालको टच डेटा देखाउँदै छ"</string> + <string name="show_touches" msgid="8437666942161289025">"ट्याप देखाइयोस्"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"ट्यापका लागि भिजुअल प्रतिक्रिया देखाइयोस्"</string> + <string name="show_screen_updates" msgid="2078782895825535494">"सर्फेस अपडेट देखाइयोस्"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"अपडेट हुँदा विन्डोका पूरै सतहमा देखाइयोस्"</string> + <string name="show_hw_screen_updates" msgid="2021286231267747506">"GPU भ्युको अपडेट देखाइयोस् देखाउनुहोस्"</string> + <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"GPU ले बनाएको भ्यु विन्डोमा फ्ल्यास गरियोस्"</string> + <string name="show_hw_layers_updates" msgid="5268370750002509767">"हार्डवेयर लेयरको अपडेट देखाइयोस्"</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"हार्डवेयर लेयर अपडेट हुँदा ती लेयर हरिया देखिऊन्"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU overdraw डिबग गर्नुहोस्"</string> - <string name="disable_overlays" msgid="4206590799671557143">"HW ओवरले असक्षम पार्नुहोस्"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"स्क्रिन कोम्पजिट गर्न लागि सधैँ GPU प्रयोग गर्नुहोस्"</string> - <string name="simulate_color_space" msgid="1206503300335835151">"रंग स्पेस अनुकरण गर्नुहोस्"</string> + <string name="disable_overlays" msgid="4206590799671557143">"HW ओवरले अफ गरियोस्"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"स्क्रिन कोम्पजिट गर्न लागि सधैँ GPU प्रयोग गरियोस्"</string> + <string name="simulate_color_space" msgid="1206503300335835151">"कलर स्पेसको नक्कल गरियोस्"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL ट्रेसहरू सक्षम गर्नुहोस्"</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB अडियो अनुमार्ग बन्द"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB अडियो परिधीयलाई स्वचालित अनुमार्ग असक्षम"</string> - <string name="debug_layout" msgid="1659216803043339741">"लेआउट सीमाहरू देखाउनुहोस्"</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB अडियो राउटिङ अफ गरियोस्"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB अडियोमा स्वत: राउट नगरियोस्"</string> + <string name="debug_layout" msgid="1659216803043339741">"लेआउटका सीमाहरू देखाइयोस्"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"क्लिप सीमा, मार्जिन, इत्यादि देखाउनुहोस्।"</string> - <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL लेआउट दिशामा जबर्जस्ती गर्नुहोस्"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"सबै लोकेलहरूको लागि RTLमा स्क्रिन लेआउट दिशामा जबर्जस्ती गर्नुहोस्"</string> - <string name="force_msaa" msgid="4081288296137775550">"4x MSAA जोड गर्नुहोस्"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES २.० अनुप्रयोगमा ४x MSAA सक्षम पार्नुहोस्"</string> + <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"RTL लेआउट बलपूर्वक प्रयोग गरियोस्"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"सबै लोकेलमा RTLमा स्क्रिन लेआउट बलपूर्वक प्रयोग गरियोस्"</string> + <string name="force_msaa" msgid="4081288296137775550">"बलपूर्वक 4x MSAA प्रयोग गरियोस्"</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES २.० एपमा ४x MSAA अन गरियोस्"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"गैर आयातकर क्लिप कार्यहरू डिबग गर्नुहोस्"</string> - <string name="track_frame_time" msgid="522674651937771106">"प्रोफाइल HWUI रेन्डर गरिँदै छ"</string> - <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU का डिबग तहहरूलाई सक्षम पार्नुहोस्"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"डिबगसम्बन्धी अनुप्रयोगहरूका लागि GPU का डिबग तहहरूलाई लोड गर्न दिनुहोस्"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"भर्वस भेन्डर लगिङ सक्षम पार्नु…"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"बग रिपोर्टहरूमा यन्त्र विशेष विक्रेताका अतिरिक्त लगहरू समावेश गर्नुहोस्। यी लगमा निजी जानकारी समावेश हुन सक्छन्, यिनले ब्याट्रीको खपत बढाउन र/वा थप भण्डारण प्रयोग गर्न सक्छन्।"</string> - <string name="window_animation_scale_title" msgid="5236381298376812508">"विन्डो सजीविकरण स्केल"</string> - <string name="transition_animation_scale_title" msgid="1278477690695439337">"संक्रमण सजीविकरण मापन"</string> - <string name="animator_duration_scale_title" msgid="7082913931326085176">"सजीविकरण अवधि मापन"</string> - <string name="overlay_display_devices_title" msgid="5411894622334469607">"सहायक प्रदर्शनलाई सिमुलेट गर्नुहोस्"</string> + <string name="track_frame_time" msgid="522674651937771106">"प्रोफाइलको HWUI रेन्डरिङ"</string> + <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU का डिबग लेयर अन गरियोस्"</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"डिबग एपका लागि GPU का डिबग लेयर लोड गरियोस्"</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"भर्बोज भेन्डर लगिङ अन गरियोस्"</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"बग रिपोर्टहरूमा डिभाइस विशेषका विक्रेताका अतिरिक्त लगहरू समावेश गरियोस्। यी लगमा निजी जानकारी समावेश हुन सक्छन्, यिनले ब्याट्रीको खपत बढाउन र/वा थप भण्डारण प्रयोग गर्न सक्छन्।"</string> + <string name="window_animation_scale_title" msgid="5236381298376812508">"विन्डो एनिमेसन स्केल"</string> + <string name="transition_animation_scale_title" msgid="1278477690695439337">"संक्रमण एनिमेसन स्केल"</string> + <string name="animator_duration_scale_title" msgid="7082913931326085176">"एनिमेसनको अवधि मापन"</string> + <string name="overlay_display_devices_title" msgid="5411894622334469607">"सहायक डिस्प्लेको नक्कल गरियोस्"</string> <string name="debug_applications_category" msgid="5394089406638954196">"एपहरू"</string> - <string name="immediately_destroy_activities" msgid="1826287490705167403">"गतिविधिहरू नराख्नुहोस्"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"प्रयोगकर्ताले यसलाई छोड्ने बित्तिकै जति सक्दो चाँडो हरेक गतिविधि ध्वस्त पार्नुहोस्"</string> - <string name="app_process_limit_title" msgid="8361367869453043007">"पृष्ठभूमि प्रक्रिया सीमा"</string> - <string name="show_all_anrs" msgid="9160563836616468726">"पृष्ठभूमिका ANR हरू देखाउनुहोस्"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"पृष्ठभूमिका एपहरूको संवादको प्रतिक्रिया नदिइरहेका एपहरू प्रदर्शन गर्नुहोस्"</string> - <string name="show_notification_channel_warnings" msgid="3448282400127597331">"सूचना च्यानलका चेतावनी देखाउनुहोस्"</string> - <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"अनुप्रयोगले कुनै मान्य च्यानल बिना सूचना पोस्ट गर्दा स्क्रिनमा चेतावनी देखाउँछ"</string> - <string name="force_allow_on_external" msgid="9187902444231637880">"बाह्यमा बल प्रयोगको अनुमति प्राप्त एपहरू"</string> - <string name="force_allow_on_external_summary" msgid="8525425782530728238">"म्यानिफेेस्टका मानहरूको ख्याल नगरी कुनै पनि एपलाई बाह्य भण्डारणमा लेख्न सकिने खाले बनाउँछ"</string> - <string name="force_resizable_activities" msgid="7143612144399959606">"आकार बदल्न योग्य हुने बनाउन गतिविधिहरूलाई बाध्यात्मक बनाउनुहोस्।"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"म्यानिफेेस्ट मानहरूको ख्याल नगरी, बहु-विन्डोको लागि सबै रिसाइज गर्न सकिने गतिविधिहरू बनाउनुहोस्।"</string> - <string name="enable_freeform_support" msgid="7599125687603914253">"फ्रिफर्म विन्डोहरू सक्रिय गर्नुहोस्"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"प्रयोगात्मक फ्रिफर्म विन्डोहरूका लागि समर्थन सक्रिय गर्नुहोस्।"</string> + <string name="immediately_destroy_activities" msgid="1826287490705167403">"गतिविधि नराखियोस्"</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"प्रयोगकर्ता कुनै गतिविधिबाट बाहिरिने बित्तिकै उक्त गतिविधि अन्त्य गरियोस्"</string> + <string name="app_process_limit_title" msgid="8361367869453043007">"ब्याकग्राउन्ड प्रक्रियाको सीमा सीमा"</string> + <string name="show_all_anrs" msgid="9160563836616468726">"ब्याकग्राउन्डमा ANR देखाइयोस्"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"ब्याकग्राउन्डका एपको हकमा \'नचलिरहेका एप\' सन्देश देखाइयोस्"</string> + <string name="show_notification_channel_warnings" msgid="3448282400127597331">"सूचना च्यानलसम्बन्धी चेतावनी देखाइयोस्"</string> + <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"एपले मान्य च्यानलबिना सूचना पोस्ट गर्दा स्क्रिनमा चेतावनी देखाइयोस्"</string> + <string name="force_allow_on_external" msgid="9187902444231637880">"बहिरी मेमोरीमा पनि चल्न दिइयोस् प्राप्त एपहरू"</string> + <string name="force_allow_on_external_summary" msgid="8525425782530728238">"तोकिएको नियमको ख्याल नगरी एपलाई बाह्य भण्डारणमा चल्ने बनाउँछ"</string> + <string name="force_resizable_activities" msgid="7143612144399959606">"बलपूर्वक एपहरूको आकार मिलाउन मिल्ने बनाइयोस्"</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"तोकिएको नियमको ख्याल नगरी एपलाई एकभन्दा बढी विन्डोमा रिसाइन गर्न सकिने बनाइयोस्।"</string> + <string name="enable_freeform_support" msgid="7599125687603914253">"फ्रिफर्म विन्डोहरू अन गरियोस्"</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"प्रयोगात्मक फ्रिफर्म विन्डोहरू चल्ने बनाइयोस्"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"डेस्कटप ब्याकअप पासवर्ड"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"डेस्कटप पूर्ण जगेडाहरू हाललाई सुरक्षित छैनन्"</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"हाल डेस्कटपका सबै ब्याकअप पासवर्ड सुरक्षित छैनन्"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"डेस्कटप पूर्ण ब्याकअपको लागि पासवर्ड बदल्न वा हटाउन ट्याप गर्नुहोस्"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"नयाँ जगेडा पासवर्ड सेट गर्नुहोस्"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"नयाँ पासवर्ड र पुष्टिकरण मेल खाँदैनन्"</string> @@ -401,10 +401,11 @@ <string name="inactive_app_active_summary" msgid="8047630990208722344">"सक्रिय। टगल गर्न ट्याप गर्नुहोस्।"</string> <string name="standby_bucket_summary" msgid="5128193447550429600">"एपको स्ट्यान्डबाई अवस्था:<xliff:g id="BUCKET"> %s</xliff:g>"</string> <string name="transcode_settings_title" msgid="2581975870429850549">"मिडिया ट्रान्सकोडिङ सेटिङ"</string> - <string name="transcode_user_control" msgid="6176368544817731314">"ट्रान्सकोडिङसम्बन्धी पूर्वनिर्धारित सेटिङ परिवर्तन गर्नुहोस्"</string> + <string name="transcode_user_control" msgid="6176368544817731314">"ट्रान्सकोडिङसम्बन्धी डिफल्ट सेटिङ परिवर्तन गर्नुहोस्"</string> <string name="transcode_enable_all" msgid="2411165920039166710">"ट्रान्सकोडिङ अन गर्नुहोस्"</string> <string name="transcode_default" msgid="3784803084573509491">"एपहरूमा आधुनिक फर्म्याट प्रयोग गर्न मिल्छ भनी मान्नुहोस्"</string> <string name="transcode_notification" msgid="5560515979793436168">"ट्रान्सकोडिङसम्बन्धी सूचना देखाइयोस्"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ट्रान्सकोडिङको क्यास अफ गर्नुहोस्"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"चलिरहेका सेवाहरू"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"हाल चालु भइरहेका सेवाहरू हेर्नुहोस् र नियन्त्रण गर्नुहोस्"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView कार्यान्वयन"</string> @@ -423,8 +424,8 @@ <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"ड्युटरएनोमली (रातो-हरियो)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"प्रोटानेमली (रातो, हरियो)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ट्रिटानोमेली (निलो-पंहेलो)"</string> - <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रङ्ग सुधार"</string> - <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"तपाईंको यन्त्रमा रङहरू कस्ता देखिन्छन् भन्ने कुरा मिलाउनुहोस्। यो सुविधा निम्न अवस्थामा उपयोगी हुन सक्छ:<br/><br/> <ol> <li>&nbsp;तपाईं अझ सटीक रूपमा रङहरू देख्न चाहनुहुन्छ भने</li> <li>&nbsp;तपाईं कुनै कुरामा ध्यान केन्द्रित गर्न रङहरू हटाउन चाहनुहुन्छ भने</li> </ol>"</string> + <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रङ्गको सुधार"</string> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"तपाईंको डिभाइसमा रङ्गहरू कस्ता देखिन्छन् भन्ने कुरा मिलाउनुहोस्। यो सुविधा निम्न अवस्थामा उपयोगी हुन सक्छ:<br/><br/> <ol> <li>&nbsp;तपाईं अझ सटीक रूपमा रङ्गहरू देख्न चाहनुहुन्छ भने</li> <li>&nbsp;तपाईं कुनै कुरामा ध्यान केन्द्रित गर्न रङ्गहरू हटाउन चाहनुहुन्छ भने</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> द्वारा अधिरोहित"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"लगभग <xliff:g id="TIME_REMAINING">%1$s</xliff:g> बाँकी छ"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ट्याब्लेट चाँडै बन्द हुन सक्छ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"यन्त्र चाँडै बन्द हुन सक्छ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"पूरा चार्ज हुन <xliff:g id="TIME">%1$s</xliff:g> लाग्ने छ"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - पूरा चार्ज हुन <xliff:g id="TIME">%2$s</xliff:g> लाग्ने छ"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ब्याट्री लामो समयसम्म टिक्ने बनाउन अप्टिमाइज गरिँदै छ"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"अज्ञात"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"चार्ज हुँदै"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"द्रुत गतिमा चार्ज गरिँदै"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"बिस्तारै चार्ज गरिँदै"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"वायरलेस तरिकाले चार्ज गरिँदै छ"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"चार्ज भइरहेको छैन"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"प्लगइन गरिएको छ, अहिले नै चार्ज गर्न सकिँदैन"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"चार्ज भयो"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"प्रशासकद्वारा नियन्त्रित"</string> <string name="disabled" msgid="8017887509554714950">"असक्षम पारियो"</string> <string name="external_source_trusted" msgid="1146522036773132905">"अनुमति छ"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"अनुमति छैन"</string> - <string name="install_other_apps" msgid="3232595082023199454">"अज्ञात एपहरू स्थापना गर्नुहोस्"</string> + <string name="install_other_apps" msgid="3232595082023199454">"अज्ञात एपहरू इन्स्टल गर्नुहोस्"</string> <string name="home" msgid="973834627243661438">"सेटिङहरूको गृहपृष्ठ"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"०%"</item> @@ -477,7 +476,7 @@ <string name="charge_length_format" msgid="6941645744588690932">"<xliff:g id="ID_1">%1$s</xliff:g> पहिले"</string> <string name="remaining_length_format" msgid="4310625772926171089">"<xliff:g id="ID_1">%1$s</xliff:g> बाँकी"</string> <string name="screen_zoom_summary_small" msgid="6050633151263074260">"सानो"</string> - <string name="screen_zoom_summary_default" msgid="1888865694033865408">"पूर्वनिर्धारित"</string> + <string name="screen_zoom_summary_default" msgid="1888865694033865408">"डिफल्ट"</string> <string name="screen_zoom_summary_large" msgid="4706951482598978984">"ठुलो"</string> <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"अझ ठुलो"</string> <string name="screen_zoom_summary_extremely_large" msgid="1438045624562358554">"सबैभन्दा ठुलो"</string> @@ -487,7 +486,7 @@ <string name="retail_demo_reset_next" msgid="3688129033843885362">"अर्को"</string> <string name="retail_demo_reset_title" msgid="1866911701095959800">"पासवर्ड आवश्यक छ"</string> <string name="active_input_method_subtypes" msgid="4232680535471633046">"आगत विधिहरू सक्रिय गर्नुहोस्"</string> - <string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"प्रणालीका भाषाहरू प्रयोग गर्नुहोस्"</string> + <string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"सिष्टममा भएका भाषा प्रयोग गरियोस्"</string> <string name="failed_to_open_app_settings_toast" msgid="764897252657692092">"<xliff:g id="SPELL_APPLICATION_NAME">%1$s</xliff:g>का लागि सेटिङहरू खोल्न विफल भयो।"</string> <string name="ime_security_warning" msgid="6547562217880551450">"यस इनपुट विधिले तपाईँले टाइप गर्नुहुने सम्पूर्ण पाठ बटु्ल्न सक्छ, व्यक्तिगत डेटा जस्तै पासवर्ड र क्रेडिट कार्ड नम्बर लगायतका। यो <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g> अनुप्रयोगबाट आउँदछ। यो इनपुट विधि प्रयोग गर्ने हो?"</string> <string name="direct_boot_unaware_dialog_message" msgid="7845398276735021548">"टिपोट: पुनःबुट पछि तपाईँले आफ्नो फोनलाई अनलक नगरेसम्म यो एप सुरु हुन सक्दैन"</string> @@ -497,7 +496,7 @@ <string name="status_unavailable" msgid="5279036186589861608">"अनुपलब्ध"</string> <string name="wifi_status_mac_randomized" msgid="466382542497832189">"MAC क्रमरहित छ"</string> <plurals name="wifi_tether_connected_summary" formatted="false" msgid="6317236306047306139"> - <item quantity="other">%1$d यन्त्रहरू जडान गरिए</item> + <item quantity="other">%1$d डिभाइस कनेक्ट गरिएको छ</item> <item quantity="one">%1$d यन्त्र जडान गरियो</item> </plurals> <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"थप समय।"</string> @@ -505,21 +504,23 @@ <string name="cancel" msgid="5665114069455378395">"रद्द गर्नुहोस्"</string> <string name="okay" msgid="949938843324579502">"ठिक छ"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"अलार्म र रिमाइन्डरहरू"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"अलार्म वा रिमाइन्डर सेट गर्ने अनुमति दिनुहोस्"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"अलार्म र रिमाइन्डरहरू"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"यो एपलाई अलार्म वा समयमा आधारित अन्य कार्यक्रमहरूको समय तोक्ने अनुमति दिनुहोस्। यसका सहायताले तपाईंले यो यन्त्र प्रयोग नगरेका बेला पनि यो एपले अन भई काम गर्न सक्छ। स्मरण रहोस्, तपाईंले यो एपलाई दिनुभएको अनुमति रद्द गर्नुभयो भने यसले राम्रोसँग काम नगर्न सक्छ। खास गरी, यो एपले तोकेको कुनै पनि अलार्म बज्ने छैन।"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"कार्यतालिका, अलार्म, रिमाइन्डर, कार्यक्रम"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"अलार्म तथा रिमाइन्डर सेट गर्न दिनुहोस्"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"घडी तथा रिमाइन्डरहरू"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"यो एपलाई अलार्म सेट गर्न तथा अन्य कार्यको समयतालिका तोक्न दिनुहोस्। तपाईंले आफ्नो फोन नचलाएका बेला पनि यो एप प्रयोग गरिन सक्छ। यसले गर्दा थप ब्याट्री खपत हुन सक्छ। यो अनुमति नदिइएका खण्डमा यो एप राम्ररी नचल्न सक्छ र यो एपका अलार्म पनि तोकिएको समयमा बज्ने छैनन्।"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"यो एपलाई अलार्म सेट गर्न तथा अन्य कार्यको समयतालिका तोक्न दिनुहोस्। तपाईंले आफ्नो ट्याब्लेट नचलाएका बेला पनि यो एप प्रयोग गरिन सक्छ। यसले गर्दा थप ब्याट्री खपत हुन सक्छ। यो अनुमति नदिइएका खण्डमा यो एप राम्ररी नचल्न सक्छ र यो एपका अलार्म पनि तोकिएको समयमा बज्ने छैनन्।"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"यो एपलाई अलार्म सेट गर्न तथा अन्य कार्यको समयतालिका तोक्न दिनुहोस्। तपाईंले आफ्नो डिभाइस नचलाएका बेला पनि यो एप प्रयोग गरिन सक्छ। यसले गर्दा थप ब्याट्री खपत हुन सक्छ। यो अनुमति नदिइएका खण्डमा यो एप राम्ररी नचल्न सक्छ र यो एपका अलार्म पनि तोकिएको समयमा बज्ने छैनन्।"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"समयतालिका, अलार्म, रिमाइन्डर, घडी"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"सक्रिय गर्नुहोस्"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"बाधा नपुऱ्याउनुहोस् नामक मोडलाई सक्रिय गर्नुहोस्"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"कहिल्यै होइन"</string> - <string name="zen_interruption_level_priority" msgid="5392140786447823299">"प्राथमिकता मात्र"</string> + <string name="zen_interruption_level_priority" msgid="5392140786447823299">"प्राथमिकता दिइएको मात्र"</string> <string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>। <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string> <string name="zen_alarm_warning_indef" msgid="4146527909616457163">"तपाईंले <xliff:g id="WHEN">%1$s</xliff:g> मा बज्ने अर्को अलार्मको समयअघि नै यसलाई निष्क्रिय पार्नुभएन भने तपाईं उक्त अलार्म सुन्नु हुने छैन"</string> <string name="zen_alarm_warning" msgid="245729928048586280">"तपाईं <xliff:g id="WHEN">%1$s</xliff:g> मा बज्ने आफ्नो अर्को अलार्म सुन्नु हुने छैन"</string> <string name="alarm_template" msgid="3346777418136233330">"<xliff:g id="WHEN">%1$s</xliff:g> मा"</string> <string name="alarm_template_far" msgid="6382760514842998629">"<xliff:g id="WHEN">%1$s</xliff:g> मा"</string> <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"अवधि"</string> - <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"प्रत्येक पटक सोध्नुहोस्"</string> + <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"प्रत्येक पटक सोधियोस्"</string> <string name="zen_mode_forever" msgid="3339224497605461291">"तपाईंले निष्क्रिय नपार्दासम्म"</string> <string name="time_unit_just_now" msgid="3006134267292728099">"अहिले भर्खरै"</string> <string name="media_transfer_this_device_name" msgid="2716555073132169240">"फोनको स्पिकर"</string> @@ -528,7 +529,7 @@ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"तारयुक्त अडियो यन्त्र"</string> <string name="help_label" msgid="3528360748637781274">"मद्दत र प्रतिक्रिया"</string> <string name="storage_category" msgid="2287342585424631813">"भण्डारण"</string> - <string name="shared_data_title" msgid="1017034836800864953">"साझा डेटा"</string> + <string name="shared_data_title" msgid="1017034836800864953">"सेयर गरिएको डेटा"</string> <string name="shared_data_summary" msgid="5516326713822885652">"साझा डेटा हेर्नुहोस् र परिमार्जन गर्नुहोस्"</string> <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"यो प्रयोगकर्तासँग कुनै पनि डेटा सेयर गरिएको छैन।"</string> <string name="shared_data_query_failure_text" msgid="3489828881998773687">"सेयर गरिएको डेटा प्राप्त गर्ने क्रममा कुनै त्रुटि भयो। फेरि प्रयास गर्नुहोस्।"</string> @@ -537,7 +538,7 @@ <string name="shared_data_delete_failure_text" msgid="3842701391009628947">"सेयर गरिएको डेटा मेट्ने क्रममा त्रुटि भयो।"</string> <string name="shared_data_no_accessors_dialog_text" msgid="8903738462570715315">"सेयर गरिएको यो डेटाका लागि कुनै ठेक्का पट्टा लिएको छैन। तपाईं यसलाई मेट्न चाहनुहुन्छ?"</string> <string name="accessor_info_title" msgid="8289823651512477787">"साझा डेटा प्रयोग गर्ने एपहरू"</string> - <string name="accessor_no_description_text" msgid="7510967452505591456">"यो अनुप्रयोगले कुनै विवरण प्रदान गरेको छैन।"</string> + <string name="accessor_no_description_text" msgid="7510967452505591456">"यो एपले कुनै विवरण प्रदान गरेको छैन।"</string> <string name="accessor_expires_text" msgid="4625619273236786252">"लिजको म्याद <xliff:g id="DATE">%s</xliff:g> मा सकिन्छ"</string> <string name="delete_blob_text" msgid="2819192607255625697">"साझा डेटा मेट्नुहोस्"</string> <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"तपाईंले यो साझा डेटा मेटाउन खोज्नुभएकै हो?"</string> @@ -546,10 +547,10 @@ <string name="user_add_user_item_title" msgid="2394272381086965029">"प्रयोगकर्ता"</string> <string name="user_add_profile_item_title" msgid="3111051717414643029">"प्रतिबन्धित प्रोफाइल"</string> <string name="user_add_user_title" msgid="5457079143694924885">"नयाँ प्रयोगकर्ता थप्ने हो?"</string> - <string name="user_add_user_message_long" msgid="1527434966294733380">"तपाईं थप प्रयोगकर्ताहरू सिर्जना गरेर ती प्रयोगकर्तालाई यो यन्त्र प्रयोग गर्न दिन सक्नुहुन्छ। हरेक प्रयोगकर्ताको आफ्नै ठाउँ हुन्छ। उनीहरू यो ठाउँमा आफ्नै एप, वालपेपर आदिका लागि प्रयोग गर्न सक्छन्। उनीहरू सबैजनालाई असर पार्ने Wi-Fi जस्ता यन्त्रका सेटिङहरू पनि परिवर्तन गर्न सक्छन्।\n\nतपाईंले नयाँ प्रयोगकर्ता थप्दा उक्त व्यक्तिले आफ्नो ठाउँ सेटअप गर्नु पर्ने हुन्छ।\n\nसबै प्रयोगकर्ता अन्य सबै प्रयोगकर्ताले प्रयोग गर्ने एपहरू अद्यावधिक गर्न सक्छन्। तर पहुँचसम्बन्धी सेटिङ तथा सेवाहरू नयाँ प्रयोगकर्तामा नसर्न सक्छ।"</string> + <string name="user_add_user_message_long" msgid="1527434966294733380">"तपाईं थप प्रयोगकर्ताहरू सिर्जना गरेर ती प्रयोगकर्तालाई यो डिभाइस प्रयोग गर्न दिन सक्नुहुन्छ। हरेक प्रयोगकर्ताको आफ्नै ठाउँ हुन्छ। उनीहरू यो ठाउँमा आफ्नै एप, वालपेपर आदिका लागि प्रयोग गर्न सक्छन्। उनीहरू सबैजनालाई असर पार्ने Wi-Fi जस्ता डिभाइसका सेटिङहरू पनि परिवर्तन गर्न सक्छन्।\n\nतपाईंले नयाँ प्रयोगकर्ता थप्दा उक्त व्यक्तिले आफ्नो ठाउँ सेटअप गर्नु पर्ने हुन्छ।\n\nसबै प्रयोगकर्ता अन्य सबै प्रयोगकर्ताले प्रयोग गर्ने एपहरू अद्यावधिक गर्न सक्छन्। तर पहुँचसम्बन्धी सेटिङ तथा सेवाहरू नयाँ प्रयोगकर्तामा नसर्न सक्छ।"</string> <string name="user_add_user_message_short" msgid="3295959985795716166">"तपाईंले नयाँ प्रयोगकर्ता थप्नुभयो भने ती प्रयोगकर्ताले आफ्नो स्पेस सेट गर्नु पर्ने हुन्छ।\n\nसबै प्रयोगकर्ताले अरू प्रयोगकर्ताका एपहरू अपडेट गर्न सक्छन्।"</string> <string name="user_setup_dialog_title" msgid="8037342066381939995">"अहिले प्रयोगकर्ता सेटअप गर्ने हो?"</string> - <string name="user_setup_dialog_message" msgid="269931619868102841">"यी व्यक्ति यन्त्र यो यन्त्र चलाउन र आफ्नो ठाउँ सेट गर्न उपलब्ध छन् भन्ने कुरा सुनिश्चित गर्नुहोस्"</string> + <string name="user_setup_dialog_message" msgid="269931619868102841">"यी व्यक्ति यन्त्र यो डिभाइस चलाउन र आफ्नो ठाउँ सेट गर्न उपलब्ध छन् भन्ने कुरा सुनिश्चित गर्नुहोस्"</string> <string name="user_setup_profile_dialog_message" msgid="4788197052296962620">"अहिले प्रोफाइल सेटअप गर्ने हो?"</string> <string name="user_setup_button_setup_now" msgid="1708269547187760639">"अब सेटअप गर्नुहोस्"</string> <string name="user_setup_button_setup_later" msgid="8712980133555493516">"अहिले होइन"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"लक सेट गर्नुहोस्"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"प्रयोगकर्ता बदलेर <xliff:g id="USER_NAME">%s</xliff:g> पार्नुहोस्"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"नयाँ प्रयोगकर्ता बनाउँदै…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"नयाँ प्रयोगकर्ता सिर्जना गर्न सकिएन"</string> <string name="user_nickname" msgid="262624187455825083">"उपनाम"</string> <string name="guest_new_guest" msgid="3482026122932643557">"अतिथि थप्नुहोस्"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"अतिथि हटाउनुहोस्"</string> @@ -571,7 +571,7 @@ <string name="user_image_take_photo" msgid="467512954561638530">"फोटो खिच्नुहोस्"</string> <string name="user_image_choose_photo" msgid="1363820919146782908">"कुनै फोटो छनौट गर्नुहोस्"</string> <string name="user_image_photo_selector" msgid="433658323306627093">"फोटो चयन गर्नुहोस्"</string> - <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"पूर्वनिर्धारित यन्त्र"</string> + <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"डिफल्ट डिभाइस"</string> <string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"असक्षम पारिएको छ"</string> <string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"सक्षम पारिएको छ"</string> <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"यो परिवर्तन लागू गर्न तपाईंको यन्त्र अनिवार्य रूपमा रिबुट गर्नु पर्छ। अहिले रिबुट गर्नुहोस् वा रद्द गर्नुहोस्।"</string> diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml index db43d2b51b83..e73a33b18753 100644 --- a/packages/SettingsLib/res/values-nl/arrays.xml +++ b/packages/SettingsLib/res/values-nl/arrays.xml @@ -55,7 +55,7 @@ </string-array> <string-array name="hdcp_checking_summaries"> <item msgid="4045840870658484038">"HDCP-controle nooit gebruiken"</item> - <item msgid="8254225038262324761">"HDCP-controle alleen voor DRM-content gebruiken"</item> + <item msgid="8254225038262324761">"Gebruik HDCP-controle alleen voor DRM-content"</item> <item msgid="6421717003037072581">"HDCP-controle altijd gebruiken"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> @@ -94,7 +94,7 @@ <item msgid="3825367753087348007">"LDAC"</item> </string-array> <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"Systeemselectie gebruiken (standaard)"</item> + <item msgid="8868109554557331312">"Gebruik systeemselectie (standaard)"</item> <item msgid="9024885861221697796">"SBC"</item> <item msgid="4688890470703790013">"AAC"</item> <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> audio"</item> @@ -109,7 +109,7 @@ <item msgid="8887519571067543785">"96,0 kHz"</item> </string-array> <string-array name="bluetooth_a2dp_codec_sample_rate_summaries"> - <item msgid="2284090879080331090">"Systeemselectie gebruiken (standaard)"</item> + <item msgid="2284090879080331090">"Gebruik systeemselectie (standaard)"</item> <item msgid="1872276250541651186">"44,1 kHz"</item> <item msgid="8736780630001704004">"48,0 kHz"</item> <item msgid="7698585706868856888">"88,2 kHz"</item> @@ -122,7 +122,7 @@ <item msgid="1212577207279552119">"32 bits per sample"</item> </string-array> <string-array name="bluetooth_a2dp_codec_bits_per_sample_summaries"> - <item msgid="9196208128729063711">"Systeemselectie gebruiken (standaard)"</item> + <item msgid="9196208128729063711">"Gebruik systeemselectie (standaard)"</item> <item msgid="1084497364516370912">"16 bits per sample"</item> <item msgid="2077889391457961734">"24 bits per sample"</item> <item msgid="3836844909491316925">"32 bits per sample"</item> @@ -133,7 +133,7 @@ <item msgid="927546067692441494">"Stereo"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_summaries"> - <item msgid="1997302811102880485">"Systeemselectie gebruiken (standaard)"</item> + <item msgid="1997302811102880485">"Gebruik systeemselectie (standaard)"</item> <item msgid="8005696114958453588">"Mono"</item> <item msgid="1333279807604675720">"Stereo"</item> </string-array> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index 8139fe3ec839..9889b22ac9b7 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Annuleren"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Koppelen verleent toegang tot je contacten en gespreksgeschiedenis wanneer de apparaten zijn verbonden."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Kan niet koppelen aan <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Kan niet koppelen aan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> vanwege een onjuiste pincode of toegangscode."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Kan niet koppelen aan <xliff:g id="DEVICE_NAME">%1$s</xliff:g> door een onjuiste pincode of toegangscode."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Kan niet communiceren met <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Koppeling geweigerd door <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Computer"</string> @@ -162,7 +162,7 @@ <string name="tts_default_pitch_title" msgid="6988592215554485479">"Toonhoogte"</string> <string name="tts_default_pitch_summary" msgid="9132719475281551884">"Is van invloed op de toon van de synthetisch gegenereerde spraak"</string> <string name="tts_default_lang_title" msgid="4698933575028098940">"Taal"</string> - <string name="tts_lang_use_system" msgid="6312945299804012406">"Systeemtaal gebruiken"</string> + <string name="tts_lang_use_system" msgid="6312945299804012406">"Gebruik systeemtaal"</string> <string name="tts_lang_not_selected" msgid="7927823081096056147">"Taal niet geselecteerd"</string> <string name="tts_default_lang_summary" msgid="9042620014800063470">"De taalspecifieke stem voor de gesproken tekst instellen"</string> <string name="tts_play_example_title" msgid="1599468547216481684">"Luisteren naar een voorbeeld"</string> @@ -213,9 +213,9 @@ <string name="adb_wireless_settings" msgid="2295017847215680229">"Draadloze foutopsporing"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Zet draadloze foutopsporing aan om beschikbare apparaten te bekijken en te gebruiken"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Apparaat koppelen met QR-code"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Nieuwe apparaten koppelen via QR-codescanner"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Koppel nieuwe apparaten via QR-codescanner"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Apparaat koppelen met koppelingscode"</string> - <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Nieuwe apparaten koppelen via een zescijferige code"</string> + <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Koppel nieuwe apparaten via een zescijferige code"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Gekoppelde apparaten"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Momenteel verbonden"</string> <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Apparaatgegevens"</string> @@ -227,16 +227,16 @@ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wifi-koppelingscode"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Koppeling mislukt"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Zorg dat het apparaat is verbonden met hetzelfde netwerk."</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Apparaat koppelen via wifi door een QR-code te scannen"</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Koppel apparaat via wifi door een QR-code te scannen"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Apparaat koppelen…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Kan het apparaat niet koppelen. De QR-code was onjuist of het apparaat is niet verbonden met hetzelfde netwerk."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-adres en poort"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR-code scannen"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Apparaat koppelen via wifi door een QR-code te scannen"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Koppel apparaat via wifi door een QR-code te scannen"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Maak verbinding met een wifi-netwerk"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, foutopsporing, ontwikkeling"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Snelle link naar bugrapport"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Een knop in het aan/uit-menu tonen om een bugrapport te maken"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Toon een knop in het aan/uit-menu om een bugrapport te maken"</string> <string name="keep_screen_on" msgid="1187161672348797558">"Stand-by"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"Scherm gaat nooit uit tijdens het opladen"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Snoop-logbestand voor bluetooth-HCI aanzetten"</string> @@ -250,7 +250,7 @@ <string name="mock_location_app_set" msgid="4706722469342913843">"App voor neplocatie: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Netwerken"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Certificering van draadloze weergave"</string> - <string name="wifi_verbose_logging" msgid="1785910450009679371">"Uitgebreide wifi-logregistratie insch."</string> + <string name="wifi_verbose_logging" msgid="1785910450009679371">"Uitgebreide wifi-logregistr. aanzetten"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wifi-scannen beperken"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Via wifi ondersteunde MAC-herschikking"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobiele data altijd actief"</string> @@ -275,31 +275,31 @@ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"LDAC-codec voor Bluetooth-audio activeren\nSelectie: Afspeelkwaliteit"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Streaming: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"Privé-DNS"</string> - <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Selecteer de modus Privé-DNS"</string> + <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Selecteer de privé-DNS-modus"</string> <string name="private_dns_mode_off" msgid="7065962499349997041">"Uit"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automatisch"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Hostnaam van privé-DNS-provider"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Geef hostnaam van DNS-provider op"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Kan geen verbinding maken"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Opties tonen voor certificering van draadloze weergave"</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Logniveau voor wifi verhogen, tonen per SSID RSSI in wifi-kiezer"</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Toon opties voor certificering van draadloze weergave"</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Verhoog het logniveau voor wifi, toon per SSID RSSI in wifi-kiezer"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Verlaagt het batterijverbruik en verbetert de netwerkprestaties"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Als deze modus aanstaat, kan het MAC-adres van dit apparaat wijzigen telkens als het apparaat verbinding maakt met een netwerk waarvoor MAC-herschikking aanstaat."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Als deze modus aanstaat, kan het MAC-adres van dit apparaat veranderen telkens als het apparaat verbinding maakt met een netwerk waarvoor MAC-herschikking aanstaat."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Met datalimiet"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Gratis"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logger-buffergrootten"</string> <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Kies Logger-grootten per logbuffer"</string> <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"Persistente loggeropslag wissen?"</string> <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"Wanneer we niet meer controleren met de persistente logger, zijn we verplicht de logger-gegevens op je apparaat te wissen."</string> - <string name="select_logpersist_title" msgid="447071974007104196">"Logger-gegev. persistent opslaan"</string> + <string name="select_logpersist_title" msgid="447071974007104196">"Logger-gegevens persistent opslaan"</string> <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"Logboekbuffers selecteren die persistent op het apparaat worden opgeslagen"</string> <string name="select_usb_configuration_title" msgid="6339801314922294586">"USB-configuratie selecteren"</string> <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"USB-configuratie selecteren"</string> <string name="allow_mock_location" msgid="2102650981552527884">"Neplocaties toestaan"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"Neplocaties toestaan"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Inspectie van weergavekenmerk aanzetten"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mobiele data altijd actief houden, ook als wifi actief is (voor sneller schakelen tussen netwerken)."</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Hardwareversnelling voor tethering gebruiken indien beschikbaar"</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Houd mobiele data altijd actief, ook als wifi actief is (voor sneller schakelen tussen netwerken)."</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Gebruik hardwareversnelling voor tethering indien beschikbaar"</string> <string name="adb_warning_title" msgid="7708653449506485728">"USB-foutopsporing toestaan?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"USB-foutopsporing is alleen bedoeld voor ontwikkeldoeleinden. Het kan worden gebruikt om gegevens te kopiëren tussen je computer en je apparaat, apps zonder melding op je apparaat te installeren en loggegevens te lezen."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"Draadloze foutopsporing toestaan?"</string> @@ -308,10 +308,10 @@ <string name="dev_settings_warning_title" msgid="8251234890169074553">"Ontwikkelingsinstellingen toestaan?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"Deze instellingen zijn uitsluitend bedoeld voor ontwikkelingsgebruik. Je apparaat en apps kunnen hierdoor vastlopen of anders reageren."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Apps verifiëren via USB"</string> - <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Apps die zijn geïnstalleerd via ADB/ADT, controleren op schadelijk gedrag"</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-apparaten zonder naam (alleen MAC-adressen) worden weergegeven"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Hiermee wordt de functie voor absoluut volume van Bluetooth uitgezet in geval van volumeproblemen met externe apparaten, zoals een onacceptabel hoog volume of geen volumeregeling."</string> - <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Hierdoor wordt de Gabeldorsche-functiestack voor bluetooth aangezet."</string> + <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Controleer apps die zijn geïnstalleerd via ADB/ADT op schadelijk gedrag"</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Toon bluetooth-apparaten zonder naam (alleen MAC-adressen)"</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Zet de functie voor absoluut volume van Bluetooth uit in geval van volumeproblemen met externe apparaten, zoals een onacceptabel hoog volume of geen volumeregeling."</string> + <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Zet de Gabeldorsche-functiestack voor bluetooth aan."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Hiermee wordt de functie voor verbeterde connectiviteit aangezet."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Lokale terminal"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"Terminal-app aanzetten die lokale shell-toegang biedt"</string> @@ -335,50 +335,50 @@ <string name="pointer_location" msgid="7516929526199520173">"Cursorlocatie"</string> <string name="pointer_location_summary" msgid="957120116989798464">"Schermoverlay met huidige aanraakgegevens"</string> <string name="show_touches" msgid="8437666942161289025">"Tikken tonen"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"Visuele feedback tonen voor tikken"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"Toon visuele feedback voor tikken"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Oppervlakupdates tonen"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"Volledige vensteroppervlakken flashen bij updates"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"Flash volledige vensteroppervlakken bij updates"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"Weergave-updates tonen"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Flash-weergaven in vensters bij update"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Hardwarelayer-upd. tonen"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Hardwarelagen knipperen groen bij updates"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Foutopsporing GPU-overbelasting"</string> <string name="disable_overlays" msgid="4206590799671557143">"HW-overlays uitzetten"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"GPU altijd gebruiken voor schermcompositing"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"Gebruik altijd GPU voor schermcompositing"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Kleurruimte simuleren"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL-sporen aanzetten"</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB-audiorouting uitsch."</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Autom. routing naar USB-randapparatuur uitsch."</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB-audiorouting uitzetten"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Zet autom. routing naar USB-randapparatuur uit"</string> <string name="debug_layout" msgid="1659216803043339741">"Indelingsgrenzen tonen"</string> - <string name="debug_layout_summary" msgid="8825829038287321978">"Clipgrenzen, marges en meer tonen"</string> + <string name="debug_layout_summary" msgid="8825829038287321978">"Toon clipgrenzen, marges en meer"</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"V.r.n.l.-indelingsrichting afdwingen"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Schermindelingsrichting geforceerd instellen op v.r.n.l. voor alle talen"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Stel de schermindelingsrichting geforceerd in op v.r.n.l. voor alle talen"</string> <string name="force_msaa" msgid="4081288296137775550">"4x MSAA forceren"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"4x MSAA aanzetten in OpenGL ES 2.0-apps"</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"Zet 4x MSAA aan in OpenGL ES 2.0-apps"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Foutopsporing niet-rechthoekig bijsnijden"</string> <string name="track_frame_time" msgid="522674651937771106">"HWUI-weergave van profiel"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU-foutopsporingslagen aanzetten"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Laden van GPU-foutopsporingslagen toestaan voor foutopsporingsapps"</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Sta laden van GPU-foutopsporingslagen toe voor foutopsporingsapps"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Uitgebreide leverancierslogboeken aanzetten"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Aanvullende apparaatspecifieke leverancierslogboeken opnemen in bugrapporten. Deze kunnen privégegevens bevatten, meer batterijlading gebruiken en/of meer opslagruimte gebruiken."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Neem aanvullende apparaatspecifieke leverancierslogboeken op in bugrapporten. Deze kunnen privégegevens bevatten, meer batterijlading gebruiken en/of meer opslagruimte gebruiken."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Vensteranimatieschaal"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Overgangsanimatieschaal"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Duur van animatieschaal"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Secundaire displays simuleren"</string> <string name="debug_applications_category" msgid="5394089406638954196">"Apps"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"Activiteiten niet opslaan"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Activiteit wissen zodra de gebruiker deze verlaat"</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Wis activiteit zodra de gebruiker ermee stopt"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Achtergrondproceslimiet"</string> <string name="show_all_anrs" msgid="9160563836616468726">"ANR\'s op de achtergrond"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"Dialoogvenster \'App reageert niet\' weergeven voor achtergrond-apps"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"Toon dialoogvenster App reageert niet voor achtergrond-apps"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Kanaalwaarschuwingen voor meldingen tonen"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Geeft een waarschuwing op het scherm weer wanneer een app een melding post zonder geldig kanaal"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Toestaan van apps op externe opslag afdwingen"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Hiermee komt elke app in aanmerking voor schrijven naar externe opslag, ongeacht de manifestwaarden"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Formaat activiteiten geforceerd aanpasbaar maken"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Het formaat van alle activiteiten aanpasbaar maken, ongeacht de manifestwaarden."</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Maak het formaat van alle activiteiten aanpasbaar, ongeacht de manifestwaarden."</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Vensters met vrije vorm aanzetten"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Ondersteuning voor vensters met experimentele vrije vorm aanzetten."</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Zet ondersteuning voor vensters met experimentele vrije vorm aan."</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Wachtwoord desktopback-up"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Volledige back-ups naar desktops zijn momenteel niet beveiligd"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Tik om het wachtwoord voor volledige back-ups naar desktops te wijzigen of te verwijderen"</string> @@ -405,8 +405,9 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Transcodering aanzetten"</string> <string name="transcode_default" msgid="3784803084573509491">"Aannemen dat apps moderne indelingen ondersteunen"</string> <string name="transcode_notification" msgid="5560515979793436168">"Transcoderingsmeldingen tonen"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Transcodering van cache uitzetten"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Actieve services"</string> - <string name="runningservices_settings_summary" msgid="1046080643262665743">"Services die momenteel actief zijn, bekijken en beheren"</string> + <string name="runningservices_settings_summary" msgid="1046080643262665743">"Bekijk en beheer services die momenteel actief zijn"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementatie"</string> <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView-implementatie instellen"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Deze keuze is niet meer geldig. Probeer het opnieuw."</string> @@ -424,7 +425,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rood-groen)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (blauw-geel)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Kleurcorrectie"</string> - <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Aanpassen hoe kleuren worden getoond op je apparaat. In de volgende gevallen kan dit handig zijn:<br/><br/> <ol> <li>&nbsp;Je wilt kleuren duidelijker zien.</li> <li>&nbsp;Je wilt kleuren verwijderen zodat je je beter kunt focussen.</li> </ol>"</string> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Pas aan hoe kleuren worden getoond op je apparaat. In de volgende gevallen kan dit handig zijn:<br/><br/> <ol> <li>&nbsp;Je wilt kleuren duidelijker zien.</li> <li>&nbsp;Je wilt kleuren verwijderen zodat je je beter kunt focussen.</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overschreven door <xliff:g id="TITLE">%1$s</xliff:g>"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"Nog ongeveer <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet wordt binnenkort mogelijk uitgezet (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Apparaat wordt binnenkort mogelijk uitgezet (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Vol over <xliff:g id="TIME">%1$s</xliff:g>"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - vol over <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Optimaliseren voor batterijduur"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Onbekend"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Opladen"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Snel opladen"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Langzaam opladen"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Draadloos opladen"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Wordt niet opgeladen"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Aangesloten, kan nu niet opladen"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Opgeladen"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Ingesteld door beheerder"</string> <string name="disabled" msgid="8017887509554714950">"Uitgezet"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Toegestaan"</string> @@ -487,7 +486,7 @@ <string name="retail_demo_reset_next" msgid="3688129033843885362">"Volgende"</string> <string name="retail_demo_reset_title" msgid="1866911701095959800">"Wachtwoord vereist"</string> <string name="active_input_method_subtypes" msgid="4232680535471633046">"Actieve invoermethoden"</string> - <string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"Systeemtalen gebruiken"</string> + <string name="use_system_language_to_select_input_method_subtypes" msgid="4865195835541387040">"Gebruik systeemtalen"</string> <string name="failed_to_open_app_settings_toast" msgid="764897252657692092">"Instellingen openen voor <xliff:g id="SPELL_APPLICATION_NAME">%1$s</xliff:g> mislukt"</string> <string name="ime_security_warning" msgid="6547562217880551450">"Deze invoermethode verzamelt mogelijk alle tekst die je typt, inclusief persoonsgegevens zoals wachtwoorden en creditcardnummers. De methode is afkomstig uit de app <xliff:g id="IME_APPLICATION_NAME">%1$s</xliff:g>. Deze invoermethode aanzetten?"</string> <string name="direct_boot_unaware_dialog_message" msgid="7845398276735021548">"Opmerking: Wanneer je telefoon opnieuw is opgestart, kan deze app pas worden gestart nadat je je telefoon hebt ontgrendeld"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Annuleren"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Wekkers en herinneringen"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Instellen van wekkers en herinneringen toestaan"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Wekkers en herinneringen"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Toestaan dat deze app wekkers of andere op tijd gebaseerde afspraken plant. Hiermee kan de app worden geactiveerd en uitgevoerd, ook als je het apparaat niet gebruikt. Als je dit recht intrekt, kan de werking van de app worden verstoord (met name wekkers die de app heeft ingesteld, werken niet meer)."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"schema, wekker, herinnering, afspraak"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Wekkers en herinneringen laten instellen"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Wekkers en herinneringen"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Sta deze app toe om wekkers te zetten en andere acties te plannen. Deze app kan worden gebruikt als je je telefoon niet gebruikt, waardoor er meer batterijlading wordt verbruikt. Als deze toestemming uit staat, werkt deze app mogelijk niet naar behoren en werken de wekkers niet zoals gepland."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Sta deze app toe om wekkers te zetten en andere acties te plannen. Deze app kan worden gebruikt als je je tablet niet gebruikt, waardoor er meer batterijlading wordt verbruikt. Als deze toestemming uit staat, werkt deze app mogelijk niet naar behoren en werken de wekkers niet zoals gepland."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Sta deze app toe om wekkers te zetten en andere acties te plannen. Deze app kan worden gebruikt als je je apparaat niet gebruikt, waardoor er meer batterijlading wordt verbruikt. Als deze toestemming uit staat, werkt deze app mogelijk niet naar behoren en werken de wekkers niet zoals gepland."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"plannen, schema, wekker, alarm, herinnering, klok"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aanzetten"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Zet Niet storen aan."</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nooit"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Vergrendeling instellen"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Overschakelen naar <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Nieuwe gebruiker maken…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Kan geen nieuwe gebruiker maken"</string> <string name="user_nickname" msgid="262624187455825083">"Bijnaam"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Gast toevoegen"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Gast verwijderen"</string> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index db404b8ad0b0..66b1d61041ca 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -156,7 +156,7 @@ <string name="launch_defaults_some" msgid="3631650616557252926">"କିଛି ପୂର୍ବ-ନିର୍ଦ୍ଧାରିତ ମାନ ସେଟ୍ ହୋଇଛି"</string> <string name="launch_defaults_none" msgid="8049374306261262709">"କୌଣସି ଡିଫଲ୍ଟ ସେଟ୍ ହୋଇନାହିଁ"</string> <string name="tts_settings" msgid="8130616705989351312">"ଟେକ୍ସଟ-ରୁ-ସ୍ପିଚ୍ ସେଟିଂସ୍"</string> - <string name="tts_settings_title" msgid="7602210956640483039">"ଟେକ୍ସଟ-ରୁ-ସ୍ପିଚ୍ ଆଉଟପୁଟ୍"</string> + <string name="tts_settings_title" msgid="7602210956640483039">"ଟେକ୍ସଟ୍-ଟୁ-ସ୍ପିଚ୍ ଆଉଟ୍ପୁଟ୍"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"ସ୍ପିଚ୍ ରେଟ୍"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"ଲେଖା ପଢ଼ିବାର ବେଗ"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"ପିଚ୍"</string> @@ -237,7 +237,7 @@ <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ଡିବଗ୍, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"ବଗ୍ ରିପୋର୍ଟ ସର୍ଟକଟ୍"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"ବଗ୍ ରିପୋର୍ଟ ଦେବା ପାଇଁ ପାୱାର୍ ମେନୁରେ ଏକ ବଟନ୍ ଦେଖାନ୍ତୁ"</string> - <string name="keep_screen_on" msgid="1187161672348797558">"ଜାଗ୍ରତ ରଖନ୍ତୁ"</string> + <string name="keep_screen_on" msgid="1187161672348797558">"ସତର୍କ ରୁହନ୍ତୁ"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"ଚାର୍ଜ ହେବାବେଳେ ସ୍କ୍ରୀନ୍ ଆଦୌ ବନ୍ଦ ହେବନାହିଁ"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"ବ୍ଲୁଟୂଥ୍ HCI ସ୍ନୁପ୍ ଲଗ୍ ସକ୍ଷମ କରନ୍ତୁ"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"ବ୍ଲୁଟୁଥ୍ ପ୍ୟାକେଟ୍ କ୍ୟାପଚର୍ କରନ୍ତୁ (ଏହି ସେଟିଂ ବଦଳାଇବା ପରେ ବ୍ଲୁଟୁଥ୍କୁ ଟୋଗଲ୍ କରନ୍ତୁ)"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ଟ୍ରାନ୍ସକୋଡିଂକୁ ସକ୍ଷମ କରନ୍ତୁ"</string> <string name="transcode_default" msgid="3784803084573509491">"ଧରିନିଅନ୍ତୁ ଆପଗୁଡ଼ିକ ଆଧୁନିକ ଫର୍ମାଟଗୁଡ଼ିକୁ ସମର୍ଥନ କରେ"</string> <string name="transcode_notification" msgid="5560515979793436168">"ଟ୍ରାନ୍ସକୋଡିଂ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ଟ୍ରାନ୍ସକୋଡିଂ କ୍ୟାଶକୁ ଅକ୍ଷମ କରନ୍ତୁ"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"ଚାଲୁଥିବା ସେବାଗୁଡ଼ିକ"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"ଏବେ ଚାଲୁଥିବା ସେବାଗୁଡ଼ିକୁ ଦେଖନ୍ତୁ ଓ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"ୱେବ୍ଭ୍ୟୁ ପ୍ରୟୋଗ"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ଟାବଲେଟ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯାଇପାରେ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ଡିଭାଇସ୍ ଶୀଘ୍ର ବନ୍ଦ ହୋଇଯାଇପାରେ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"ପୂର୍ଣ୍ଣ ହେବାକୁ ଆଉ <xliff:g id="TIME">%1$s</xliff:g> ବାକି ଅଛି"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - ପୂର୍ଣ୍ଣ ହେବାକୁ ଆଉ <xliff:g id="TIME">%2$s</xliff:g> ବାକି ଅଛି"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ବ୍ୟାଟେରୀ ହେଲ୍ଥ ପାଇଁ ଅପ୍ଟିମାଇଜ୍ ହେଉଛି"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"ଅଜ୍ଞାତ"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ଚାର୍ଜ ହେଉଛି"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"ଶୀଘ୍ର ଚାର୍ଜ ହେଉଛି"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"ଧୀରେ ଚାର୍ଜ ହେଉଛି"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"ୱେୟରଲେସ ଭାବେ ଚାର୍ଜିଂ"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ଚାର୍ଜ ହେଉନାହିଁ"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ପ୍ଲଗ୍ରେ ଲାଗିଛି, ହେଲେ ଏବେ ଚାର୍ଜ କରିପାରିବ ନାହିଁ"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ଚାର୍ଜ ହୋଇଯାଇଛି"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ଆଡ୍ମିନ୍ ଦ୍ୱାରା ନିୟନ୍ତ୍ରିତ"</string> <string name="disabled" msgid="8017887509554714950">"ଅକ୍ଷମ ହୋଇଛି"</string> <string name="external_source_trusted" msgid="1146522036773132905">"ଅନୁମତି ଦିଆଯାଇଛି"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"ବାତିଲ୍"</string> <string name="okay" msgid="949938843324579502">"ଠିକ୍ ଅଛି"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ଆଲାରାମ୍ ଏବଂ ରିମାଇଣ୍ଡରଗୁଡ଼ିକ"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"ଆଲାରାମ୍ ବା ରିମାଇଣ୍ଡର୍ ସେଟ୍ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"ଆଲାରାମ୍ ଏବଂ ରିମାଇଣ୍ଡରଗୁଡ଼ିକ"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"ଆଲାରାମ୍ କିମ୍ବା ଅନ୍ୟ ସମୟ ଆଧାରିତ ଇଭେଣ୍ଟଗୁଡ଼ିକ ସିଡୁଲ୍ କରିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆପଣ ଡିଭାଇସ୍ ବ୍ୟବହାର କରୁନଥିଲେ ମଧ୍ୟ ଏହା ଆପକୁ ସକ୍ରିୟ ହେବା ଏବଂ ଚାଲିବାକୁ ଅନୁମତି ଦେବ। ଧ୍ୟାନ ଦିଅନ୍ତୁ ଯେ ଏହି ଅନୁମତି ପ୍ରତ୍ୟାହାର କରିବା ଫଳରେ ଆପ୍ ଠିକରେ କାମ ନକରିପାରେ, ନିର୍ଦ୍ଦିଷ୍ଟ ଭାବେ ଆପ୍ ସିଡୁଲ୍ କରିଥିବା ଯେ କୌଣସି ଆଲାରାମ୍ ଆଉ କାମ କରିବ ନାହିଁ।"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ସିଡୁଲ୍, ଆଲାରାମ, ରିମାଇଣ୍ଡର୍, ଇଭେଣ୍ଟ"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"ଆଲାରାମ ଓ ରିମାଇଣ୍ଡରଗୁଡ଼ିକ ସେଟ କରିବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"ଆଲାରାମ୍ ଏବଂ ରିମାଇଣ୍ଡରଗୁଡ଼ିକ"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"ଆଲାରାମଗୁଡ଼ିକୁ ସେଟ୍ କରିବା ଏବଂ ଅନ୍ୟ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ସିଡୁଲ୍ କରିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆପଣ ଆପଣଙ୍କ ଫୋନ୍ ବ୍ୟବହାର କରୁନଥିବା ସମୟରେ ଏହି ଆପକୁ ବ୍ୟବହାର କରାଯାଇପାରେ, ଯାହା ଅଧିକ ବ୍ୟାଟେରୀ ବ୍ୟବହାର କରିପାରେ। ଯଦି ଏହି ଅନୁମତି ବନ୍ଦ ଥାଏ, ଏହି ଆପ୍ ସାମାନ୍ୟ ରୂପେ କାର୍ଯ୍ୟ କରିନପାରେ ଏବଂ ଏହାର ଆଲାରାମଗୁଡ଼ିକ ସିଡୁଲ୍ କରାଯାଇଥିବା ପରି କାମ କରିବ ନାହିଁ।"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"ଆଲାରାମଗୁଡ଼ିକୁ ସେଟ୍ କରିବା ଏବଂ ଅନ୍ୟ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ସିଡୁଲ୍ କରିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆପଣ ଆପଣଙ୍କ ଟାବଲେଟ୍ ବ୍ୟବହାର କରୁନଥିବା ସମୟରେ ଏହି ଆପକୁ ବ୍ୟବହାର କରାଯାଇପାରେ, ଯାହା ଅଧିକ ବ୍ୟାଟେରୀ ବ୍ୟବହାର କରିପାରେ। ଯଦି ଏହି ଅନୁମତି ବନ୍ଦ ଥାଏ, ଏହି ଆପ୍ ସାମାନ୍ୟ ରୂପେ କାର୍ଯ୍ୟ କରିନପାରେ ଏବଂ ଏହାର ଆଲାରାମଗୁଡ଼ିକ ସିଡୁଲ୍ କରାଯାଇଥିବା ପରି କାମ କରିବ ନାହିଁ।"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"ଆଲାରାମଗୁଡ଼ିକୁ ସେଟ୍ କରିବା ଏବଂ ଅନ୍ୟ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ସିଡୁଲ୍ କରିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଅନ୍ତୁ। ଆପଣ ଆପଣଙ୍କ ଡିଭାଇସ୍ ବ୍ୟବହାର କରୁନଥିବା ସମୟରେ ଏହି ଆପକୁ ବ୍ୟବହାର କରାଯାଇପାରେ, ଯାହା ଅଧିକ ବ୍ୟାଟେରୀ ବ୍ୟବହାର କରିପାରେ। ଯଦି ଏହି ଅନୁମତି ବନ୍ଦ ଥାଏ, ଏହି ଆପ୍ ସାମାନ୍ୟ ରୂପେ କାର୍ଯ୍ୟ କରିନପାରେ ଏବଂ ଏହାର ଆଲାରାମଗୁଡ଼ିକ ସିଡୁଲ୍ କରାଯାଇଥିବା ପରି କାମ କରିବ ନାହିଁ।"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ସିଡୁଲ୍, ଆଲାରାମ୍, ରିମାଇଣ୍ଡର୍, ଘଣ୍ଟା"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ଚାଲୁ କରନ୍ତୁ"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ଅନ୍ କରନ୍ତୁ"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"କଦାପି ନୁହେଁ"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"ଲକ୍ ସେଟ୍ କରନ୍ତୁ"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g>କୁ ସ୍ୱିଚ୍ କରନ୍ତୁ"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରାଯାଉଛି…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରିବାକୁ ବିଫଳ ହେଲା"</string> <string name="user_nickname" msgid="262624187455825083">"ଡାକନାମ"</string> <string name="guest_new_guest" msgid="3482026122932643557">"ଅତିଥି ଯୋଗ କରନ୍ତୁ"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"ଅତିଥିଙ୍କୁ କାଢ଼ି ଦିଅନ୍ତୁ"</string> diff --git a/packages/SettingsLib/res/values-pa/arrays.xml b/packages/SettingsLib/res/values-pa/arrays.xml index c6116aa48bdb..ac816890f38e 100644 --- a/packages/SettingsLib/res/values-pa/arrays.xml +++ b/packages/SettingsLib/res/values-pa/arrays.xml @@ -86,7 +86,7 @@ <item msgid="8147982633566548515">"map14"</item> </string-array> <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item> + <item msgid="2494959071796102843">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="4055460186095649420">"SBC"</item> <item msgid="720249083677397051">"AAC"</item> <item msgid="1049450003868150455">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ਆਡੀਓ"</item> @@ -94,7 +94,7 @@ <item msgid="3825367753087348007">"LDAC"</item> </string-array> <string-array name="bluetooth_a2dp_codec_summaries"> - <item msgid="8868109554557331312">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item> + <item msgid="8868109554557331312">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="9024885861221697796">"SBC"</item> <item msgid="4688890470703790013">"AAC"</item> <item msgid="8627333814413492563">"<xliff:g id="QUALCOMM">Qualcomm®</xliff:g> <xliff:g id="APTX">aptX™</xliff:g> ਆਡੀਓ"</item> @@ -102,38 +102,38 @@ <item msgid="2553206901068987657">"LDAC"</item> </string-array> <string-array name="bluetooth_a2dp_codec_sample_rate_titles"> - <item msgid="926809261293414607">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item> + <item msgid="926809261293414607">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="8003118270854840095">"44.1 kHz"</item> <item msgid="3208896645474529394">"48.0 kHz"</item> <item msgid="8420261949134022577">"88.2 kHz"</item> <item msgid="8887519571067543785">"96.0 kHz"</item> </string-array> <string-array name="bluetooth_a2dp_codec_sample_rate_summaries"> - <item msgid="2284090879080331090">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item> + <item msgid="2284090879080331090">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="1872276250541651186">"44.1 kHz"</item> <item msgid="8736780630001704004">"48.0 kHz"</item> <item msgid="7698585706868856888">"88.2 kHz"</item> <item msgid="8946330945963372966">"96.0 kHz"</item> </string-array> <string-array name="bluetooth_a2dp_codec_bits_per_sample_titles"> - <item msgid="2574107108483219051">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item> + <item msgid="2574107108483219051">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="4671992321419011165">"16 ਬਿਟਾਂ/ਨਮੂਨਾ"</item> <item msgid="1933898806184763940">"24 ਬਿਟਾਂ/ਨਮੂਨਾ"</item> <item msgid="1212577207279552119">"32 ਬਿਟਾਂ/ਨਮੂਨਾ"</item> </string-array> <string-array name="bluetooth_a2dp_codec_bits_per_sample_summaries"> - <item msgid="9196208128729063711">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item> + <item msgid="9196208128729063711">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="1084497364516370912">"16 ਬਿਟਾਂ/ਨਮੂਨਾ"</item> <item msgid="2077889391457961734">"24 ਬਿਟਾਂ/ਨਮੂਨਾ"</item> <item msgid="3836844909491316925">"32 ਬਿਟਾਂ/ਨਮੂਨਾ"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_titles"> - <item msgid="3014194562841654656">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item> + <item msgid="3014194562841654656">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="5982952342181788248">"ਮੋਨੋ"</item> <item msgid="927546067692441494">"ਸਟੀਰੀਓ"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_summaries"> - <item msgid="1997302811102880485">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਤ)"</item> + <item msgid="1997302811102880485">"ਸਿਸਟਮ ਚੋਣ ਦੀ ਵਰਤੋਂ ਕਰੋ (ਪੂਰਵ-ਨਿਰਧਾਰਿਤ)"</item> <item msgid="8005696114958453588">"ਮੋਨੋ"</item> <item msgid="1333279807604675720">"ਸਟੀਰੀਓ"</item> </string-array> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index c8af67b370cb..d314ad92597d 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -154,7 +154,7 @@ <string name="unknown" msgid="3544487229740637809">"ਅਗਿਆਤ"</string> <string name="running_process_item_user_label" msgid="3988506293099805796">"ਵਰਤੋਂਕਾਰ: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"ਕੁਝ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੈੱਟ ਕੀਤੇ"</string> - <string name="launch_defaults_none" msgid="8049374306261262709">"ਕੋਈ ਪੂਰਵ-ਨਿਰਧਾਰਤ ਸੈੱਟ ਨਹੀਂ ਕੀਤੇ"</string> + <string name="launch_defaults_none" msgid="8049374306261262709">"ਕੋਈ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ ਸੈੱਟ ਨਹੀਂ ਕੀਤੇ"</string> <string name="tts_settings" msgid="8130616705989351312">"ਲਿਖਤ ਤੋਂ ਬੋਲੀ ਸੈਟਿੰਗਾਂ"</string> <string name="tts_settings_title" msgid="7602210956640483039">"ਲਿਖਤ ਤੋਂ ਬੋਲੀ ਆਊਟਪੁੱਟ"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"ਬੋਲਣ ਦੀ ਗਤੀ"</string> @@ -197,16 +197,16 @@ <string name="choose_profile" msgid="343803890897657450">"ਪ੍ਰੋਫਾਈਲ ਚੁਣੋ"</string> <string name="category_personal" msgid="6236798763159385225">"ਨਿੱਜੀ"</string> <string name="category_work" msgid="4014193632325996115">"ਕਾਰਜ-ਸਥਾਨ"</string> - <string name="development_settings_title" msgid="140296922921597393">"ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ"</string> + <string name="development_settings_title" msgid="140296922921597393">"ਵਿਕਾਸਕਾਰ ਚੋਣਾਂ"</string> <string name="development_settings_enable" msgid="4285094651288242183">"ਵਿਕਾਸਕਾਰ ਵਿਕਲਪਾਂ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string> <string name="development_settings_summary" msgid="8718917813868735095">"ਐਪ ਵਿਕਾਸ ਲਈ ਚੋਣਾਂ ਸੈੱਟ ਕਰੋ"</string> <string name="development_settings_not_available" msgid="355070198089140951">"ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ ਵਿਕਾਸਕਾਰ ਵਿਕਲਪ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string> <string name="vpn_settings_not_available" msgid="2894137119965668920">"ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ VPN ਸੈਟਿੰਗਾਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ ਟੈਦਰਿੰਗ ਸੈਟਿੰਗਾਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"ਐਕਸੈੱਸ ਪੁਆਇੰਟ ਨਾਮ ਸੈਟਿੰਗਾਂ ਇਸ ਵਰਤੋਂਕਾਰ ਲਈ ਉਪਲਬਧ ਨਹੀਂ ਹਨ"</string> - <string name="enable_adb" msgid="8072776357237289039">"USB ਡੀਬਗਿੰਗ"</string> + <string name="enable_adb" msgid="8072776357237289039">"USB ਡੀਬੱਗਿੰਗ"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"ਡੀਬੱਗ ਮੋਡ ਜਦੋਂ USB ਕਨੈਕਟ ਕੀਤੀ ਜਾਏ"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"USB ਡੀਬਗਿੰਗ ਅਧਿਕਾਰ ਰੱਦ ਕਰੋ"</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"USB ਡੀਬਗਿੰਗ ਇਖਤਿਆਰੀਕਰਨ ਰੱਦ ਕਰੋ"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"ਵਾਇਰਲੈੱਸ ਡੀਬੱਗਿੰਗ"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"ਵਾਈ-ਫਾਈ ਕਨੈਕਟ ਹੋਣ \'ਤੇ ਡੀਬੱਗ ਮੋਡ"</string> <string name="adb_wireless_error" msgid="721958772149779856">"ਗੜਬੜ"</string> @@ -230,29 +230,29 @@ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR ਕੋਡ ਸਕੈਨ ਕਰਕੇ ਵਾਈ-ਫਾਈ \'ਤੇ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰੋ"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"ਡੀਵਾਈਸ ਨੂੰ ਜੋੜਾਬੱਧ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ। ਜਾਂ ਤਾਂ QR ਕੋਡ ਗਲਤ ਸੀ, ਜਾਂ ਡੀਵਾਈਸ ਉਸੇ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਹੈ।"</string> - <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP ਪਤਾ & ਪੋਰਟ"</string> + <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP ਪਤਾ ਅਤੇ ਪੋਰਟ"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR ਕੋਡ ਸਕੈਨ ਕਰੋ"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"QR ਕੋਡ ਸਕੈਨ ਕਰਕੇ ਵਾਈ-ਫਾਈ \'ਤੇ ਡੀਵਾਈਸ ਜੋੜਾਬੱਧ ਕਰੋ"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"ਕਿਰਪਾ ਕਰਕੇ ਕਿਸੇ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ਡੀਬੱਗ, dev"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"ਬੱਗ ਰਿਪੋਰਟ ਸ਼ਾਰਟਕੱਟ"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"ਇੱਕ ਬੱਗ ਰਿਪੋਰਟ ਲੈਣ ਲਈ ਪਾਵਰ ਮੀਨੂ ਵਿੱਚ ਇੱਕ ਬਟਨ ਦਿਖਾਓ"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"ਬੱਗ ਰਿਪੋਰਟ ਲੈਣ ਲਈ ਪਾਵਰ ਮੀਨੂ ਵਿੱਚ ਇੱਕ ਬਟਨ ਦਿਖਾਓ"</string> <string name="keep_screen_on" msgid="1187161672348797558">"ਸੁਚੇਤ ਰਹੋ"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"ਸਕ੍ਰੀਨ ਚਾਰਜਿੰਗ ਦੇ ਸਮੇਂ ਕਦੇ ਵੀ ਸਲੀਪ ਨਹੀਂ ਹੋਵੇਗੀ"</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"ਸਕ੍ਰੀਨ ਚਾਰਜਿੰਗ ਦੇ ਸਮੇਂ ਕਦੇ ਵੀ ਸਲੀਪ ਮੋਡ ਵਿੱਚ ਨਹੀਂ ਜਾਵੇਗੀ"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"ਬਲੂਟੁੱਥ HCI ਸਨੂਪ ਲੌਗ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"ਬਲੂਟੁੱਥ ਪੈਕੇਟ ਕੈਪਚਰ ਕਰੋ। (ਇਹ ਸੈਟਿੰਗ ਬਦਲਣ ਤੋਂ ਬਾਅਦ ਬਲੂਟੁੱਥ ਨੂੰ ਟੌਗਲ ਕਰੋ)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM ਅਣਲਾਕ ਕਰਨਾ"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"ਬੂਟਲੋਡਰ ਨੂੰ ਅਣਲਾਕ ਕੀਤੇ ਜਾਣ ਦੀ ਆਗਿਆ ਦਿਓ"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"ਕੀ OEM ਨੂੰ ਅਣਲਾਕ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"ਚਿਤਾਵਨੀ: ਡੀਵਾਈਸ ਸੁਰੱਖਿਆ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਉਦੋਂ ਇਸ ਡੀਵਾਈਸ ਤੇ ਕੰਮ ਨਹੀਂ ਕਰਨਗੀਆਂ ਜਦੋਂ ਇਹ ਸੈਟਿੰਗ ਚਾਲੂ ਹੋਵੇਗੀ।"</string> - <string name="mock_location_app" msgid="6269380172542248304">"ਮੌਕ ਟਿਕਾਣੇ ਵਾਲੀ ਐਪ ਚੁਣੋ"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"ਕੋਈ ਵੀ ਮੌਕ ਟਿਕਾਣੇ ਵਾਲੀ ਐਪ ਸੈੱਟ ਨਹੀਂ ਹੈ"</string> + <string name="mock_location_app" msgid="6269380172542248304">"ਕਲਪਿਤ ਟਿਕਾਣੇ ਵਾਲੀ ਐਪ ਚੁਣੋ"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"ਕੋਈ ਵੀ ਕਲਪਿਤ ਟਿਕਾਣੇ ਵਾਲੀ ਐਪ ਸੈੱਟ ਨਹੀਂ ਹੈ"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"ਮੌਕ ਟਿਕਾਣਾ ਐਪ: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"ਨੈੱਟਵਰਕਿੰਗ"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"ਵਾਇਰਲੈੱਸ ਡਿਸਪਲੇ ਪ੍ਰਮਾਣੀਕਰਨ"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"ਵਾਈ-ਫਾਈ ਵਰਬੋਸ ਲੌਗਿੰਗ ਚਾਲੂ ਕਰੋ"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"ਸੀਮਤ ਵਾਈ‑ਫਾਈ ਸਕੈਨ"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"ਵਾਈ-ਫਾਈ ਵਿਸਤ੍ਰਿਤ MAC ਬੇਤਰਤੀਬਵਾਰ"</string> + <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"ਵਾਈ-ਫਾਈ ਵਿਸਤ੍ਰਿਤ MAC ਬੇਤਰਤੀਬੀਕਰਨ"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"ਮੋਬਾਈਲ ਡਾਟਾ ਹਮੇਸ਼ਾਂ ਕਿਰਿਆਸ਼ੀਲ"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"ਟੈਦਰਿੰਗ ਹਾਰਡਵੇਅਰ ਐਕਸੈੱਲਰੇਸ਼ਨ"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"ਅਨਾਮ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਦਿਖਾਓ"</string> @@ -282,7 +282,7 @@ <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS ਪ੍ਰਦਾਨਕ ਦਾ ਹੋਸਟਨਾਮ ਦਾਖਲ ਕਰੋ"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"ਵਾਇਰਲੈੱਸ ਡਿਸਪਲੇ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਚੋਣਾਂ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰੋ"</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"ਵਾਈ‑ਫਾਈ ਲੌਗਿੰਗ ਪੱਧਰ ਵਧਾਓ, ਵਾਈ‑ਫਾਈ Picker ਵਿੱਚ ਪ੍ਰਤੀ SSID RSSI ਦਿਖਾਓ"</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"ਵਾਈ‑ਫਾਈ ਲੌਗਿੰਗ ਪੱਧਰ ਵਧਾਓ, ਵਾਈ‑ਫਾਈ ਚੋਣਕਾਰ ਵਿੱਚ ਪ੍ਰਤੀ SSID RSSI ਦਿਖਾਓ"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਘਟਾ ਕੇ ਨੈੱਟਵਰਕ ਕਾਰਗੁਜ਼ਾਰੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦਾ ਹੈ"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"ਜਦੋਂ ਇਹ ਮੋਡ ਚਾਲੂ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਇਸ ਡੀਵਾਈਸ ਦਾ MAC ਪਤਾ ਹਰ ਵਾਰ ਬਦਲ ਸਕਦਾ ਹੈ ਜਦੋਂ ਇਹ ਕਿਸੇ ਅਜਿਹੇ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ MAC ਦਾ ਬੇਤਰਤੀਬੀਕਰਨ ਚਾਲੂ ਹੁੰਦਾ ਹੈ।"</string> <string name="wifi_metered_label" msgid="8737187690304098638">"ਮੀਟਰਬੱਧ ਕੀਤਾ ਗਿਆ"</string> @@ -297,7 +297,7 @@ <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"USB ਕੌਂਫਿਗਰੇਸ਼ਨ ਚੁਣੋ"</string> <string name="allow_mock_location" msgid="2102650981552527884">"ਨਕਲੀ ਨਿਰਧਾਰਿਤ ਸਥਾਨਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"ਨਕਲੀ ਨਿਰਧਾਰਿਤ ਸਥਾਨਾਂ ਦੀ ਆਗਿਆ ਦਿਓ"</string> - <string name="debug_view_attributes" msgid="3539609843984208216">"ਵਿਸ਼ੇਸ਼ਤਾ ਛਾਣਬੀਣ ਦੇਖੋ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string> + <string name="debug_view_attributes" msgid="3539609843984208216">"ਵਿਸ਼ੇਸ਼ਤਾ ਨਿਰੀਖਣ ਦੇਖੋ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"ਹਮੇਸ਼ਾਂ ਮੋਬਾਈਲ ਡਾਟਾ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਰੱਖੋ ਭਾਵੇਂ ਵਾਈ‑ਫਾਈ ਕਿਰਿਆਸ਼ੀਲ ਹੋਵੇ (ਤੇਜ਼ ਨੈੱਟਵਰਕ ਸਵਿੱਚਿੰਗ ਲਈ)।"</string> <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"ਉਪਲਬਧ ਹੋਣ \'ਤੇ ਟੈਦਰਿੰਗ ਹਾਰਡਵੇਅਰ ਐਕਸੈੱਲਰੇਸ਼ਨ ਵਰਤੋ"</string> <string name="adb_warning_title" msgid="7708653449506485728">"ਕੀ USB ਡੀਬਗਿੰਗ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string> @@ -317,48 +317,48 @@ <string name="enable_terminal_summary" msgid="2481074834856064500">"ਟਰਮੀਨਲ ਐਪ ਨੂੰ ਚਾਲੂ ਕਰੋ ਜੋ ਸਥਾਨਕ ਸ਼ੈਲ ਪਹੁੰਚ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ"</string> <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP ਜਾਂਚ"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP ਜਾਂਚ ਵਿਵਹਾਰ ਸੈੱਟ ਕਰੋ"</string> - <string name="debug_debugging_category" msgid="535341063709248842">"ਡੀਬਗਿੰਗ"</string> + <string name="debug_debugging_category" msgid="535341063709248842">"ਡੀਬੱਗਿੰਗ"</string> <string name="debug_app" msgid="8903350241392391766">"ਡੀਬੱਗ ਐਪ ਚੁਣੋ"</string> <string name="debug_app_not_set" msgid="1934083001283807188">"ਕੋਈ ਡੀਬੱਗ ਐਪਲੀਕੇਸ਼ਨ ਸੈੱਟ ਨਹੀਂ ਕੀਤੀ"</string> <string name="debug_app_set" msgid="6599535090477753651">"ਡੀਬਗਿੰਗ ਐਪਲੀਕੇਸ਼ਨ: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"ਐਪਲੀਕੇਸ਼ਨ ਚੁਣੋ"</string> <string name="no_application" msgid="9038334538870247690">"ਕੁਝ ਨਹੀਂ"</string> <string name="wait_for_debugger" msgid="7461199843335409809">"ਡੀਬੱਗਰ ਦੀ ਉਡੀਕ ਕਰੋ"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"ਡੀਬੱਗ ਕੀਤੇ ਐਪਲੀਕੇਸ਼ਨ ਐਗਜੀਕਿਊਟ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਅਟੈਚ ਕਰਨ ਲਈ ਡੀਬੱਗਰ ਦੀ ਉਡੀਕ ਕਰਦੇ ਹਨ"</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"ਡੀਬੱਗ ਕੀਤੀ ਐਪਲੀਕੇਸ਼ਨ ਚਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ ਅਟੈਚ ਕਰਨ ਲਈ ਡੀਬੱਗਰ ਦੀ ਉਡੀਕ ਕਰਦੀ ਹੈ"</string> <string name="debug_input_category" msgid="7349460906970849771">"ਇਨਪੁੱਟ"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"ਡਰਾਇੰਗ"</string> <string name="debug_hw_drawing_category" msgid="5830815169336975162">"ਹਾਰਡਵੇਅਰ ਐਕਸੇਲਰੇਟਿਡ ਰੈਂਡਰਿੰਗ"</string> <string name="media_category" msgid="8122076702526144053">"ਮੀਡੀਆ"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"ਨਿਰੀਖਣ ਕਰਨਾ"</string> - <string name="strict_mode" msgid="889864762140862437">"ਸਟ੍ਰਿਕਟ ਮੋਡ ਸਮਰਥਿਤ"</string> + <string name="strict_mode" msgid="889864762140862437">"ਸਟ੍ਰਿਕਟ ਮੋਡ ਚਾਲੂ ਹੈ"</string> <string name="strict_mode_summary" msgid="1838248687233554654">"ਐਪਾਂ ਵੱਲੋਂ ਮੁੱਖ ਥ੍ਰੈੱਡ \'ਤੇ ਲੰਬੀਆਂ ਕਾਰਵਾਈਆਂ ਕਰਨ \'ਤੇ ਸਕ੍ਰੀਨ ਫਲੈਸ਼ ਕਰੋ"</string> <string name="pointer_location" msgid="7516929526199520173">"ਪੁਆਇੰਟਰ ਟਿਕਾਣਾ"</string> <string name="pointer_location_summary" msgid="957120116989798464">"ਸਕ੍ਰੀਨ ਓਵਰਲੇ ਮੌਜੂਦਾ ਸਪੱਰਸ਼ ਡਾਟਾ ਦਿਖਾ ਰਿਹਾ ਹੈ"</string> <string name="show_touches" msgid="8437666942161289025">"ਟੈਪਾਂ ਦਿਖਾਓ"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"ਟੈਪਾਂ ਲਈ ਨਜ਼ਰ ਸੰਬੰਧੀ ਪ੍ਰਤੀਕਰਮ ਦਿਖਾਓ"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"ਟੈਪਾਂ ਲਈ ਦ੍ਰਿਸ਼ਟੀਗਤ ਪ੍ਰਤੀਕਰਮ ਦਿਖਾਓ"</string> <string name="show_screen_updates" msgid="2078782895825535494">"ਸਰਫ਼ੇਸ ਅੱਪਡੇਟ ਦਿਖਾਓ"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"ਸਮੁੱਚੀ ਵਿੰਡੋ ਸਰਫ਼ੇਸਾਂ ਫਲੈਸ਼ ਕਰੋ ਜਦੋਂ ਉਹ ਅੱਪਡੇਟ ਹੁੰਦੀਆਂ ਹਨ"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"ਅੱਪਡੇਟ ਹੋਣ \'ਤੇ, ਸਮੁੱਚੀਆਂ ਵਿੰਡੋ ਸਰਫ਼ੇਸਾਂ ਫਲੈਸ਼ ਕਰੋ"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"\'ਅੱਪਡੇਟ ਦੇਖੋ\' ਨੂੰ ਦਿਖਾਓ"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"ਡ੍ਰਾ ਕੀਤੇ ਜਾਣ \'ਤੇ ਵਿੰਡੋਜ਼ ਦੇ ਅੰਦਰ ਦ੍ਰਿਸ਼ ਫਲੈਸ਼ ਕਰੋ"</string> - <string name="show_hw_layers_updates" msgid="5268370750002509767">"ਹਾਰਡਵੇਅਰ ਲੇਅਰਾਂ ਦੇ ਅੱਪਡੇਟ ਦਿਖਾਓ"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"ਹਾਰਡਵੇਅਰ ਲੇਅਰਾਂ ਅੱਪਡੇਟ ਹੋਣ \'ਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਹਰਾ ਕਰੋ"</string> + <string name="show_hw_layers_updates" msgid="5268370750002509767">"ਹਾਰਡਵੇਅਰ ਤਹਿਆਂ ਦੇ ਅੱਪਡੇਟ ਦਿਖਾਓ"</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"ਹਾਰਡਵੇਅਰ ਤਹਿਆਂ ਅੱਪਡੇਟ ਹੋਣ \'ਤੇ ਉਹਨਾਂ ਨੂੰ ਹਰਾ ਕਰੋ"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU ਓਵਰਡ੍ਰਾ ਡੀਬੱਗ ਕਰੋ"</string> <string name="disable_overlays" msgid="4206590799671557143">"HW ਓਵਰਲੇ ਨੂੰ ਬੰਦ ਕਰੋ"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"ਸਕ੍ਰੀਨ ਕੰਪੋਜਿਟਿੰਗ ਲਈ ਹਮੇਸ਼ਾਂ GPU ਵਰਤੋ"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"ਸਕ੍ਰੀਨ ਕੰਪੋਜ਼ਿਟਿੰਗ ਲਈ ਹਮੇਸ਼ਾਂ GPU ਵਰਤੋ"</string> <string name="simulate_color_space" msgid="1206503300335835151">"ਰੰਗ ਸਪੇਸ ਦੀ ਨਕਲ ਕਰੋ"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL ਟ੍ਰੇਸਿਜ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"USB ਆਡੀਓ ਰੂਟਿੰਗ ਨੂੰ ਬੰਦ ਕਰੋ"</string> <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"USB ਆਡੀਓ ਪੈਰੀਫੈਰਲ ਲਈ ਸਵੈਚਲਿਤ ਰੂਟਿੰਗ ਬੰਦ ਕਰੋ"</string> <string name="debug_layout" msgid="1659216803043339741">"ਖਾਕਾ ਸੀਮਾਵਾਂ ਦਿਖਾਓ"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"ਕਲਿੱਪ ਸੀਮਾਵਾਂ, ਹਾਸ਼ੀਏ ਆਦਿ ਦਿਖਾਓ"</string> - <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਵਾਲਾ ਲੇਆਊਟ ਲਾਗੂ ਕਰੋ"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਲਈ ਸਕ੍ਰੀਨ \'ਤੇ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਵਾਲਾ ਲੇਆਊਟ ਲਾਗੂ ਕਰੋ"</string> + <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਵਾਲਾ ਖਾਕਾ ਲਾਗੂ ਕਰੋ"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"ਸਾਰੀਆਂ ਭਾਸ਼ਾਵਾਂ ਲਈ ਸਕ੍ਰੀਨ \'ਤੇ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਵਾਲਾ ਖਾਕਾ ਲਾਗੂ ਕਰੋ"</string> <string name="force_msaa" msgid="4081288296137775550">"4x MSAA ਤੇ ਜ਼ੋਰ ਪਾਓ"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"OpenGL ES 2.0 ਐਪਾਂ ਵਿੱਚ 4x MSAA ਨੂੰ ਚਾਲੂ ਕਰੋ"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"ਗੈਰ-ਆਇਤਾਕਾਰ ਕਲਿੱਪ ਓਪਰੇਸ਼ਨ ਡੀਬੱਗ ਕਰੋ"</string> <string name="track_frame_time" msgid="522674651937771106">"ਪ੍ਰੋਫਾਈਲ HWUI ਰੈਂਡਰਿੰਗ"</string> - <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ਡੀਬੱਗ ਲੇਅਰਾਂ ਚਾਲੂ ਕਰੋ"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ਡੀਬੱਗ ਐਪਾਂ ਲਈ GPU ਡੀਬੱਗ ਲੇਅਰਾਂ ਨੂੰ ਲੋਡ ਹੋਣ ਦਿਓ"</string> + <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ਡੀਬੱਗ ਤਹਿਆਂ ਚਾਲੂ ਕਰੋ"</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ਡੀਬੱਗ ਐਪਾਂ ਲਈ GPU ਡੀਬੱਗ ਤਹਿਆਂ ਨੂੰ ਲੋਡ ਹੋਣ ਦਿਓ"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ਵਰਬੋਸ ਵਿਕਰੇਤਾ ਲੌਗਿੰਗ ਚਾਲੂ ਕਰੋ"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ਬੱਗ ਰਿਪੋਰਟਾਂ ਵਿੱਚ ਵਧੀਕ ਡੀਵਾਈਸ ਨਾਲ ਸੰਬੰਧਿਤ ਵਿਕਰੇਤਾ ਲੌਗ ਸ਼ਾਮਲ ਕਰੋ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਨਿੱਜੀ ਜਾਣਕਾਰੀ, ਬੈਟਰੀ ਦੀ ਵਧੇਰੇ ਵਰਤੋਂ, ਅਤੇ/ਜਾਂ ਵਧੇਰੀ ਸਟੋਰੇਜ ਸ਼ਾਮਲ ਹੋ ਸਕਦੀ ਹੈ।"</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"ਵਿੰਡੋ ਐਨੀਮੇਸ਼ਨ ਸਕੇਲ"</string> @@ -366,7 +366,7 @@ <string name="animator_duration_scale_title" msgid="7082913931326085176">"ਐਨੀਮੇਟਰ ਮਿਆਦ ਸਕੇਲ"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"ਸੈਕੰਡਰੀ ਡਿਸਪਲੇ ਦੀ ਨਕਲ ਕਰੋ"</string> <string name="debug_applications_category" msgid="5394089406638954196">"ਐਪਾਂ"</string> - <string name="immediately_destroy_activities" msgid="1826287490705167403">"ਗਤੀਵਿਧੀਆਂ ਨਾ ਰੱਖੋ"</string> + <string name="immediately_destroy_activities" msgid="1826287490705167403">"ਸਰਗਰਮੀਆਂ ਨਾ ਰੱਖੋ"</string> <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ਹਰੇਕ ਸਰਗਰਮੀ ਨਸ਼ਟ ਕਰੋ, ਜਿਵੇਂ ਹੀ ਵਰਤੋਂਕਾਰ ਇਸਨੂੰ ਛੱਡੇ"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"ਬੈਕਗ੍ਰਾਊਂਡ ਪ੍ਰਕਿਰਿਆ ਸੀਮਾ"</string> <string name="show_all_anrs" msgid="9160563836616468726">"ਬੈਕਗ੍ਰਾਊਂਡ ANRs ਦਿਖਾਓ"</string> @@ -375,12 +375,12 @@ <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"ਐਪ ਵੱਲੋਂ ਵੈਧ ਚੈਨਲ ਤੋਂ ਬਿਨਾਂ ਸੂਚਨਾ ਪੋਸਟ ਕਰਨ \'ਤੇ ਸਕ੍ਰੀਨ \'ਤੇ ਚਿਤਾਵਨੀ ਦਿਖਾਉਂਦੀ ਹੈ"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"ਐਪਾਂ ਨੂੰ ਜ਼ਬਰਦਸਤੀ ਬਾਹਰੀ ਸਟੋਰੇਜ \'ਤੇ ਆਗਿਆ ਦਿਓ"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ਮੈਨੀਫੈਸਟ ਮੁੱਲਾਂ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ, ਕਿਸੇ ਵੀ ਐਪ ਨੂੰ ਬਾਹਰੀ ਸਟੋਰੇਜ \'ਤੇ ਲਿਖਣ ਦੇ ਯੋਗ ਬਣਾਉਂਦੀ ਹੈ"</string> - <string name="force_resizable_activities" msgid="7143612144399959606">"ਮੁੜ-ਆਕਾਰ ਬਦਲਣ ਲਈ ਸਰਗਰਮੀਆਂ \'ਤੇ ਜ਼ੋਰ ਦਿਓ"</string> + <string name="force_resizable_activities" msgid="7143612144399959606">"ਆਕਾਰ ਬਦਲਣਯੋਗ ਬਣਾਉਣ ਲਈ ਸਰਗਰਮੀਆਂ \'ਤੇ ਜ਼ੋਰ ਦਿਓ"</string> <string name="force_resizable_activities_summary" msgid="2490382056981583062">"ਮੈਨੀਫ਼ੈਸਟ ਮੁੱਲਾਂ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ, ਮਲਟੀ-ਵਿੰਡੋ ਲਈ ਸਾਰੀਆਂ ਸਰਗਰਮੀਆਂ ਨੂੰ ਆਕਾਰ ਬਦਲਣਯੋਗ ਬਣਾਓ।"</string> <string name="enable_freeform_support" msgid="7599125687603914253">"ਫ੍ਰੀਫਾਰਮ ਵਿੰਡੋਜ਼ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"ਪ੍ਰਯੋਗਮਈ ਫ੍ਰੀਫਾਰਮ ਵਿੰਡੋਜ਼ ਲਈ ਸਮਰਥਨ ਨੂੰ ਚਾਲੂ ਕਰੋ।"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"ਡੈਸਕਟਾਪ ਬੈਕਅੱਪ ਪਾਸਵਰਡ"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"ਡੈਸਕਟਾਪ ਪੂਰੇ ਬੈਕਅੱਪ ਇਸ ਵੇਲੇ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹਨ"</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"ਡੈਸਕਟਾਪ ਦੇ ਪੂਰੇ ਬੈਕਅੱਪ ਇਸ ਵੇਲੇ ਸੁਰੱਖਿਅਤ ਨਹੀਂ ਹਨ"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"ਡੈਸਕਟਾਪ ਦੇ ਮੁਕੰਮਲ ਬੈਕਅੱਪਾਂ ਲਈ ਪਾਸਵਰਡ ਨੂੰ ਬਦਲਣ ਜਾਂ ਹਟਾਉਣ ਲਈ ਟੈਪ ਕਰੋ"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"ਨਵਾਂ ਬੈਕਅੱਪ ਪਾਸਵਰਡ ਸੈੱਟ ਕੀਤਾ ਗਿਆ"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"ਨਵਾਂ ਪਾਸਵਰਡ ਅਤੇ ਪੁਸ਼ਟੀ ਮੇਲ ਨਹੀਂ ਖਾਂਦੀ"</string> @@ -396,7 +396,7 @@ <item msgid="4548987861791236754">"ਕੁਦਰਤੀ ਰੰਗ ਜਿਵੇਂ ਅੱਖ ਰਾਹੀਂ ਦੇਖੇ ਜਾਂਦੇ ਹਨ"</item> <item msgid="1282170165150762976">"ਡਿਜੀਟਲ ਸਮੱਗਰੀ ਲਈ ਰੰਗ ਅਨੁਕੂਲ ਕੀਤੇ"</item> </string-array> - <string name="inactive_apps_title" msgid="5372523625297212320">"ਸਟੈਂਡਬਾਏ ਐਪਾਂ"</string> + <string name="inactive_apps_title" msgid="5372523625297212320">"ਸਟੈਂਡਬਾਈ ਐਪਾਂ"</string> <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"ਅਕਿਰਿਆਸ਼ੀਲ। ਟੌਗਲ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string> <string name="inactive_app_active_summary" msgid="8047630990208722344">"ਕਿਰਿਆਸ਼ੀਲ। ਟੌਗਲ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string> <string name="standby_bucket_summary" msgid="5128193447550429600">"ਐਪ ਸਟੈਂਡਬਾਈ ਸਥਿਤੀ:<xliff:g id="BUCKET"> %s</xliff:g>"</string> @@ -405,10 +405,11 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ਟ੍ਰਾਂਸਕੋਡਿੰਗ ਚਾਲੂ ਕਰੋ"</string> <string name="transcode_default" msgid="3784803084573509491">"ਮੰਨ ਲਓ ਕਿ ਐਪਾਂ ਆਧੁਨਿਕ ਫਾਰਮੈਟਾਂ ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ"</string> <string name="transcode_notification" msgid="5560515979793436168">"ਟ੍ਰਾਂਸਕੋਡਿੰਗ ਸੂਚਨਾਵਾਂ ਦਿਖਾਓ"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ਟ੍ਰਾਂਸਕੋਡਿੰਗ ਕੈਸ਼ੇ ਬੰਦ ਕਰੋ"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"ਚੱਲ ਰਹੀਆਂ ਸੇਵਾਵਾਂ"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"ਇਸ ਵੇਲੇ ਚੱਲ ਰਹੀਆਂ ਸੇਵਾਵਾਂ ਦੇਖੋ ਅਤੇ ਇਹਨਾਂ ਨੂੰ ਕੰਟਰੋਲ ਕਰੋ"</string> - <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ਅਮਲ"</string> - <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ਅਮਲ ਸੈੱਟ ਕਰੋ"</string> + <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ਅਮਲੀਕਰਨ"</string> + <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"WebView ਅਮਲੀਕਰਨ ਸੈੱਟ ਕਰੋ"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ਇਹ ਚੋਣ ਹੁਣ ਵੈਧ ਨਹੀਂ ਹੈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string> <string name="convert_to_file_encryption" msgid="2828976934129751818">"ਫ਼ਾਈਲ ਇਨਕ੍ਰਿਪਸ਼ਨ ਵਿੱਚ ਤਬਦੀਲ ਕਰੋ"</string> <string name="convert_to_file_encryption_enabled" msgid="840757431284311754">"ਤਬਦੀਲ ਕਰੋ ..."</string> @@ -450,23 +451,21 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ਟੈਬਲੈੱਟ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ਡੀਵਾਈਸ ਛੇਤੀ ਹੀ ਬੰਦ ਹੋ ਸਕਦਾ ਹੈ (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"ਬੈਟਰੀ ਪੂਰੀ ਚਾਰਜ ਹੋਣ ਵਿੱਚ <xliff:g id="TIME">%1$s</xliff:g> ਬਾਕੀ"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - ਬੈਟਰੀ ਪੂਰੀ ਚਾਰਜ ਹੋਣ ਵਿੱਚ <xliff:g id="TIME">%2$s</xliff:g> ਬਾਕੀ"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - ਬੈਟਰੀ ਦੀ ਸਥਿਤੀ ਲਈ ਅਨੁਕੂਲ ਬਣਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"ਅਗਿਆਤ"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"ਤੇਜ਼ ਚਾਰਜ ਹੋ ਰਹੀ ਹੈ"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਹੀ ਹੈ"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"ਬਿਨਾਂ ਤਾਰ ਤੋਂ ਚਾਰਜ ਹੋ ਰਹੀ ਹੈ"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ਚਾਰਜ ਨਹੀਂ ਹੋ ਰਿਹਾ"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ਪਲੱਗ ਲੱਗਾ ਹੋਇਆ ਹੈ, ਇਸ ਸਮੇਂ ਚਾਰਜ ਨਹੀਂ ਹੋ ਸਕਦੀ"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ਚਾਰਜ ਹੋ ਗਈ"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਕੰਟਰੋਲ ਕੀਤੀ ਗਈ"</string> <string name="disabled" msgid="8017887509554714950">"ਅਯੋਗ ਬਣਾਇਆ"</string> - <string name="external_source_trusted" msgid="1146522036773132905">"ਇਜਾਜ਼ਤ ਹੈ"</string> - <string name="external_source_untrusted" msgid="5037891688911672227">"ਇਜਾਜ਼ਤ ਨਹੀਂ"</string> + <string name="external_source_trusted" msgid="1146522036773132905">"ਮਨਜ਼ੂਰਸ਼ੁਦਾ"</string> + <string name="external_source_untrusted" msgid="5037891688911672227">"ਗੈਰ-ਮਨਜ਼ੂਰਸ਼ੁਦਾ"</string> <string name="install_other_apps" msgid="3232595082023199454">"ਅਗਿਆਤ ਐਪਾਂ ਦੀ ਸਥਾਪਨਾ"</string> <string name="home" msgid="973834627243661438">"ਸੈਟਿੰਗਾਂ ਮੁੱਖ ਪੰਨਾ"</string> <string-array name="battery_labels"> @@ -478,8 +477,8 @@ <string name="remaining_length_format" msgid="4310625772926171089">"<xliff:g id="ID_1">%1$s</xliff:g> ਬਾਕੀ"</string> <string name="screen_zoom_summary_small" msgid="6050633151263074260">"ਛੋਟਾ"</string> <string name="screen_zoom_summary_default" msgid="1888865694033865408">"ਪੂਰਵ-ਨਿਰਧਾਰਿਤ"</string> - <string name="screen_zoom_summary_large" msgid="4706951482598978984">"ਵੱਡੀ"</string> - <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"ਥੋੜ੍ਹਾ ਵੱਡੀ"</string> + <string name="screen_zoom_summary_large" msgid="4706951482598978984">"ਵੱਡਾ"</string> + <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"ਜ਼ਿਆਦਾ ਵੱਡਾ"</string> <string name="screen_zoom_summary_extremely_large" msgid="1438045624562358554">"ਸਭ ਤੋਂ ਵੱਡੀ"</string> <string name="screen_zoom_summary_custom" msgid="3468154096832912210">"ਵਿਉਂਂਤੀ (<xliff:g id="DENSITYDPI">%d</xliff:g>)"</string> <string name="content_description_menu_button" msgid="6254844309171779931">"ਮੀਨੂ"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"ਰੱਦ ਕਰੋ"</string> <string name="okay" msgid="949938843324579502">"ਠੀਕ"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"ਅਲਾਰਮ ਅਤੇ ਰਿਮਾਈਂਡਰ"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"ਅਲਾਰਮ ਜਾਂ ਰਿਮਾਈਂਡਰ ਸੈੱਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"ਅਲਾਰਮ ਅਤੇ ਰਿਮਾਈਂਡਰ"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"ਇਸ ਐਪ ਨੂੰ ਅਲਾਰਮਾਂ ਜਾਂ ਹੋਰ ਸਮੇਂ \'ਤੇ ਆਧਾਰਿਤ ਇਵੈਂਟਾਂ ਦਾ ਸਮਾਂ ਨਿਯਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ। ਭਾਵੇਂ ਤੁਸੀਂ ਡੀਵਾਈਸ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰ ਰਹੇ ਹੋਵੋ ਤਾਂ ਵੀ ਇਹ ਐਪ ਨੂੰ ਕਿਰਿਆਸ਼ੀਲ ਕਰਨ ਅਤੇ ਚੱਲਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਵੇਗਾ। ਨੋਟ ਕਰੋ ਕਿ ਇਸ ਇਜਾਜ਼ਤ ਨੂੰ ਰੱਦ ਕਰਨ ਨਾਲ ਐਪ ਵਿੱਚ ਖਰਾਬੀ ਆ ਸਕਦੀ ਹੈ, ਖਾਸ ਤੌਰ \'ਤੇ ਐਪ ਵਿੱਚ ਨਿਯਤ ਕੀਤਾ ਕੋਈ ਵੀ ਅਲਾਰਮ ਹੁਣ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ।"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ਸਮਾਂ-ਸੂਚੀ, ਅਲਾਰਮ, ਰਿਮਾਈਂਡਰ, ਇਵੈਂਟ"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"ਅਲਾਰਮ ਅਤੇ ਰਿਮਾਈਂਡਰ ਸੈੱਟ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"ਅਲਾਰਮ ਅਤੇ ਰਿਮਾਈਂਡਰ"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"ਇਸ ਐਪ ਨੂੰ ਅਲਾਰਮ ਸੈੱਟ ਕਰਨ ਅਤੇ ਹੋਰ ਕਾਰਵਾਈਆਂ ਨੂੰ ਨਿਯਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ। ਇਸ ਐਪ ਦੀ ਵਰਤੋਂ ਉਦੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਆਪਣੇ ਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਰਹੇ ਹੋ, ਜਿਸ ਕਾਰਨ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਵਧੇਰੇ ਹੋ ਸਕਦੀ ਹੈ। ਜੇ ਇਹ ਇਜਾਜ਼ਤ ਬੰਦ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਐਪ ਆਮ ਵਾਂਗ ਕੰਮ ਨਾ ਕਰੇ ਅਤੇ ਇਸਦੇ ਅਲਾਰਮ ਨਿਯਤ ਸਮੇਂ ਅਨੁਸਾਰ ਕੰਮ ਨਾ ਕਰਨ।"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"ਇਸ ਐਪ ਨੂੰ ਅਲਾਰਮ ਸੈੱਟ ਕਰਨ ਅਤੇ ਹੋਰ ਕਾਰਵਾਈਆਂ ਨੂੰ ਨਿਯਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ। ਇਸ ਐਪ ਦੀ ਵਰਤੋਂ ਉਦੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਆਪਣੇ ਟੈਬਲੈੱਟ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਰਹੇ ਹੋ, ਜਿਸ ਕਾਰਨ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਵਧੇਰੇ ਹੋ ਸਕਦੀ ਹੈ। ਜੇ ਇਹ ਇਜਾਜ਼ਤ ਬੰਦ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਐਪ ਆਮ ਵਾਂਗ ਕੰਮ ਨਾ ਕਰੇ ਅਤੇ ਇਸਦੇ ਅਲਾਰਮ ਨਿਯਤ ਸਮੇਂ ਅਨੁਸਾਰ ਕੰਮ ਨਾ ਕਰਨ।"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"ਇਸ ਐਪ ਨੂੰ ਅਲਾਰਮ ਸੈੱਟ ਕਰਨ ਅਤੇ ਹੋਰ ਕਾਰਵਾਈਆਂ ਨੂੰ ਨਿਯਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿਓ। ਇਸ ਐਪ ਦੀ ਵਰਤੋਂ ਉਦੋਂ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ ਜਦੋਂ ਤੁਸੀਂ ਆਪਣੇ ਡੀਵਾਈਸ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਰਹੇ ਹੋ, ਜਿਸ ਕਾਰਨ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਵਧੇਰੇ ਹੋ ਸਕਦੀ ਹੈ। ਜੇ ਇਹ ਇਜਾਜ਼ਤ ਬੰਦ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਇਹ ਐਪ ਆਮ ਵਾਂਗ ਕੰਮ ਨਾ ਕਰੇ ਅਤੇ ਇਸਦੇ ਅਲਾਰਮ ਨਿਯਤ ਸਮੇਂ ਅਨੁਸਾਰ ਕੰਮ ਨਾ ਕਰਨ।"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ਸਮਾਂ-ਸੂਚੀ, ਅਲਾਰਮ, ਰਿਮਾਈਂਡਰ, ਘੜੀ"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ਚਾਲੂ ਕਰੋ"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਨੂੰ ਚਾਲੂ ਕਰੋ"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ਕਦੇ ਵੀ ਨਹੀਂ"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">" ਲਾਕ ਸੈੱਟ ਕਰੋ"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> \'ਤੇ ਜਾਓ"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਇਆ ਜਾ ਰਿਹਾ ਹੈ…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣਾ ਅਸਫਲ ਰਿਹਾ"</string> <string name="user_nickname" msgid="262624187455825083">"ਉਪਨਾਮ"</string> <string name="guest_new_guest" msgid="3482026122932643557">"ਮਹਿਮਾਨ ਸ਼ਾਮਲ ਕਰੋ"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"ਮਹਿਮਾਨ ਹਟਾਓ"</string> @@ -571,7 +571,7 @@ <string name="user_image_take_photo" msgid="467512954561638530">"ਇੱਕ ਫ਼ੋਟੋ ਖਿੱਚੋ"</string> <string name="user_image_choose_photo" msgid="1363820919146782908">"ਕੋਈ ਚਿੱਤਰ ਚੁਣੋ"</string> <string name="user_image_photo_selector" msgid="433658323306627093">"ਫ਼ੋਟੋ ਚੁਣੋ"</string> - <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"ਡੀਵਾਈਸ ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string> + <string name="cached_apps_freezer_device_default" msgid="2616594131750144342">"ਡੀਵਾਈਸ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ"</string> <string name="cached_apps_freezer_disabled" msgid="4816382260660472042">"ਬੰਦ ਕੀਤਾ ਗਿਆ"</string> <string name="cached_apps_freezer_enabled" msgid="8866703500183051546">"ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string> <string name="cached_apps_freezer_reboot_dialog_text" msgid="695330563489230096">"ਇਸ ਤਬਦੀਲੀ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਰੀਬੂਟ ਕਰਨਾ ਲਾਜ਼ਮੀ ਹੈ। ਹੁਣੇ ਰੀਬੂਟ ਕਰੋ ਜਾਂ ਰੱਦ ਕਰੋ।"</string> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index 687f66315259..446fca3bbbb8 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -197,7 +197,7 @@ <string name="choose_profile" msgid="343803890897657450">"Wybierz profil"</string> <string name="category_personal" msgid="6236798763159385225">"Osobiste"</string> <string name="category_work" msgid="4014193632325996115">"Służbowe"</string> - <string name="development_settings_title" msgid="140296922921597393">"Opcje programistyczne"</string> + <string name="development_settings_title" msgid="140296922921597393">"Opcje programisty"</string> <string name="development_settings_enable" msgid="4285094651288242183">"Włącz opcje dla programistów"</string> <string name="development_settings_summary" msgid="8718917813868735095">"Ustaw opcje związane z programowaniem aplikacji."</string> <string name="development_settings_not_available" msgid="355070198089140951">"Opcje programisty są niedostępne dla tego użytkownika"</string> @@ -348,7 +348,7 @@ <string name="simulate_color_space" msgid="1206503300335835151">"Symuluj przestrzeń kolorów"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Włącz śledzenie OpenGL"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Wyłącz kierowanie dźwiękowe USB"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Wyłącz auto kierowanie do urządzeń peryferyjnych audio USB"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Wyłącz autokierowanie do urządzeń peryferyjnych audio USB"</string> <string name="debug_layout" msgid="1659216803043339741">"Pokaż granice układu"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Pokaż granice przycięcia, marginesy itd."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Układ od prawej do lewej"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Włącz transkodowanie"</string> <string name="transcode_default" msgid="3784803084573509491">"Zakładaj, że aplikacje obsługują nowoczesne formaty"</string> <string name="transcode_notification" msgid="5560515979793436168">"Pokaż powiadomienia transkodowania"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Wyłącz pamięć podręczną transkodowania"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Uruchomione usługi"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Wyświetl obecnie uruchomione usługi i nimi zarządzaj"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementacja WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet może się wkrótce wyłączyć (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Urządzenie może się wkrótce wyłączyć (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> do pełnego naładowania"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do pełnego naładowania"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optymalizuję, aby utrzymać baterię w dobrym stanie"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Nieznane"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Ładowanie"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Szybkie ładowanie"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Wolne ładowanie"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Ładowanie bezprzewodowe"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nie podłączony"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Podłączony. Nie można teraz ładować"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Naładowana"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolowane przez administratora"</string> <string name="disabled" msgid="8017887509554714950">"Wyłączone"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Dozwolone"</string> @@ -507,10 +506,12 @@ <string name="cancel" msgid="5665114069455378395">"Anuluj"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmy i przypomnienia"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Zezwól na ustawianie alarmów i przypomnień"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmy i przypomnienia"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Zezwól aplikacji na planowanie alarmów lub innych wydarzeń z harmonogramem. Dzięki temu aplikacja będzie się wybudzać i działać nawet na nieużywanym urządzeniu. Pamiętaj, że anulowanie tego upoważnienia może spowodować nieprawidłowości w działaniu aplikacji. Przede wszystkim przestaną działać wszystkie zaplanowane przez nią alarmy."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"harmonogram, alarm, przypomnienie, wydarzenie"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Zezwól na ustawianie alarmów i przypomnień"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmy i przypomnienia"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Zezwól na ustawianie alarmów i planowanie innych działań przez tę aplikację. Ta aplikacja może być używana, gdy nie korzystasz z telefonu. Może to zwiększyć wykorzystanie baterii. Jeśli nie włączysz tych uprawnień, ta aplikacja może nie działać prawidłowo, a jej alarmy nie będą uruchamiane zgodnie z harmonogramem."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Zezwól na ustawianie alarmów i planowanie innych działań przez tę aplikację. Ta aplikacja może być używana, gdy nie korzystasz z tabletu. Może to zwiększyć wykorzystanie baterii. Jeśli nie włączysz tych uprawnień, ta aplikacja może nie działać prawidłowo, a jej alarmy nie będą uruchamiane zgodnie z harmonogramem."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Zezwól na ustawianie alarmów i planowanie innych działań przez tę aplikację. Ta aplikacja może być używana, gdy nie korzystasz z urządzenia. Może to zwiększyć wykorzystanie baterii. Jeśli nie włączysz tych uprawnień, ta aplikacja może nie działać prawidłowo, a jej alarmy nie będą uruchamiane zgodnie z harmonogramem."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"harmonogram, alarm, przypomnienie, zegar"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Włącz"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Włącz tryb Nie przeszkadzać"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nigdy"</string> @@ -564,8 +565,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Ustaw blokadę"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Przełącz na: <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Tworzę nowego użytkownika…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Nie udało się utworzyć nowego użytkownika"</string> <string name="user_nickname" msgid="262624187455825083">"Pseudonim"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Dodaj gościa"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Usuń gościa"</string> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index 34fff26b4436..117722ca65d3 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -279,12 +279,12 @@ <string name="private_dns_mode_off" msgid="7065962499349997041">"Desativado"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automático"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Nome do host do provedor de DNS particular"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Informe o nome do host do provedor de DNS"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Informe o nome do host"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Não foi possível conectar"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opções de certificação de Display sem fio"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumentar o nível de registro de Wi-Fi; mostrar conforme o RSSI do SSID no seletor de Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduz o consumo de bateria e melhora o desempenho da rede"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Quando esse modo está ativado, o endereço MAC do dispositivo pode mudar a cada vez que ele se conecta a uma rede com ordem aleatória de MAC."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Quando esse modo estiver ativado, o endereço MAC do dispositivo poderá mudar toda vez que ele se conectar a uma rede com ordem aleatória de MAC."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Limitada"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Ilimitada"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamanhos de buffer de logger"</string> @@ -359,8 +359,8 @@ <string name="track_frame_time" msgid="522674651937771106">"Classificar renderização HWUI"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Ativar camadas de depuração de GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carregamento de camadas de depuração de GPU p/ apps de depuração"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativ. registro detal. de fornecedor"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclui mais registros de fornecedores específicos do dispositivo em relatórios de bugs, que podem conter informações privadas e usar mais bateria e/ou armazenamento."</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativar registro detalhado de fornecedor"</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluir mais registros de fornecedores específicos do dispositivo em relatórios de bugs, que podem conter informações particulares e usar mais bateria e/ou armazenamento."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação da janela"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração do Animator"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Ativar transcodificação"</string> <string name="transcode_default" msgid="3784803084573509491">"Considerar que os apps são compatíveis com formatos modernos"</string> <string name="transcode_notification" msgid="5560515979793436168">"Mostrar notificações de transcodificação"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Desativar cache da transcodificação"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Serviços em execução"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Visualizar e controlar os serviços em execução no momento"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação do WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"O tablet pode ser desligado em breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"O dispositivo pode ser desligado em breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> até a conclusão"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> até a conclusão"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g>: otimizando para integridade da bateria"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconhecido"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Carregando"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Carregando rápido"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Carregando devagar"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Carregando sem fio"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Não está carregando"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectado. Não é possível carregar no momento"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Carregada"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlada pelo admin"</string> <string name="disabled" msgid="8017887509554714950">"Desativado"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Permitido"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancelar"</string> <string name="okay" msgid="949938843324579502">"Ok"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes e lembretes"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Permitir a definição de alarmes e lembretes"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmes e lembretes"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Permitir que este app programe alarmes ou outros eventos de tempo. Com isso, ele poderá funcionar mesmo quando você não estiver usando o dispositivo. Se essa permissão for revogada, o app poderá apresentar falhas, especificamente nos alarmes programados por ele, que deixarão de funcionar."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"programação, alarme, lembrete, evento"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Autorizar a definição de alarmes e lembretes"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmes e lembretes"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Permitir que esse app defina alarmes e programe outras ações. Ele poderá ser usado quando você não estiver usando o smartphone, o que consumirá mais bateria. Se essa permissão for desativada, o app e os alarmes dele poderão não funcionar como planejado."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Permitir que esse app defina alarmes e programe outras ações. Ele poderá ser usado quando você não estiver usando o tablet, o que consumirá mais bateria. Se essa permissão for desativada, o app e os alarmes dele poderão não funcionar como planejado."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Permitir que esse app defina alarmes e programe outras ações. Ele poderá ser usado quando você não estiver usando o dispositivo, o que consumirá mais bateria. Se essa permissão for desativada, o app e os alarmes dele poderão não funcionar como planejado."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"programar, alarme, lembrete, relógio"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Ativar"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Ativar o \"Não perturbe\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nunca"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Definir bloqueio"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Mudar para <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Criando novo usuário…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Falha ao criar um novo usuário"</string> <string name="user_nickname" msgid="262624187455825083">"Apelido"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Adicionar convidado"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Remover convidado"</string> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index bb1d8b248861..ce3a748fa202 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -358,8 +358,8 @@ <string name="show_non_rect_clip" msgid="7499758654867881817">"Depurar operações de clipe não retangulares"</string> <string name="track_frame_time" msgid="522674651937771106">"Renderização HWUI do perfil"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Ativar cam. depuração GPU"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carreg. cam. depuração GPU p/ dep. app"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativ. regist. verbo. forneced."</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carregamento de camadas de depuração de GPU p/ apps de depuração"</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativ. registo do fornecedor"</string> <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclua registos adicionais de fornecedores específicos de dispositivos em relatórios de erros, que podem conter informações privadas, utilizar mais bateria e/ou utilizar mais armazenamento."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação de transição"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Ativar a transcodificação"</string> <string name="transcode_default" msgid="3784803084573509491">"Assumir que as apps suportam formatos modernos"</string> <string name="transcode_notification" msgid="5560515979793436168">"Mostrar notificações de transcodificação"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Desativar cache de transcodificação"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Serviços em execução"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ver e controlar os serviços actualmente em execução"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"O tablet poderá ser encerrado em breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"O dispositivo poderá ser encerrado em breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> até à carga máxima"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> até à carga máxima"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – A otimizar o estado da bateria"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconhecido"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"A carregar"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Carregamento rápido"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Carregamento lento"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"A carregar sem fios"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Não está a carregar"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Ligada à corrente, não é possível carregar neste momento"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Carregada"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlado pelo gestor"</string> <string name="disabled" msgid="8017887509554714950">"Desativada"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Autorizada"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancelar"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes e lembretes"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Permitir definir alarmes e lembretes"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmes e lembretes"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Permita que esta app agende alarmes e outros eventos com base no tempo. Isto vai permitir que a app seja ativada e executada mesmo quando não estiver a utilizar o dispositivo. Tenha em atenção que revogar esta autorização pode provocar um mau funcionamento da app, especialmente em relação a quaisquer alarmes que a app tenha agendado, os quais deixarão de funcionar."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"agendar, alarme, lembrete, evento"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Permitir a definição de alarmes e lembretes"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmes e lembretes"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Permita que esta app defina alarmes e agende outras ações. Esta app pode ser utilizada quando não estiver a utilizar o seu telemóvel, o que pode consumir mais bateria. Se esta autorização estiver desativada, esta app pode não funcionar normalmente e os respetivos alarmes não irão funcionar conforme agendado."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Permita que esta app defina alarmes e agende outras ações. Esta app pode ser utilizada quando não estiver a utilizar o seu tablet, o que pode consumir mais bateria. Se esta autorização estiver desativada, esta app pode não funcionar normalmente e os respetivos alarmes não irão funcionar conforme agendado."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Permita que esta app defina alarmes e agende outras ações. Esta app pode ser utilizada quando não estiver a utilizar o seu dispositivo, o que pode consumir mais bateria. Se esta autorização estiver desativada, esta app pode não funcionar normalmente e os respetivos alarmes não irão funcionar conforme agendado."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"agendar, alarme, lembrete, relógio"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Ativar"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Ativar o modo Não incomodar"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nunca"</string> @@ -562,9 +563,8 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Definir bloqueio"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Mudar para <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"A criar novo utilizador…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> - <string name="user_nickname" msgid="262624187455825083">"Pseudónimo"</string> + <string name="add_user_failed" msgid="4809887794313944872">"Falha ao criar um novo utilizador"</string> + <string name="user_nickname" msgid="262624187455825083">"Alcunha"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Adicionar convidado"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Remover convidado"</string> <string name="guest_nickname" msgid="6332276931583337261">"Convidado"</string> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index 34fff26b4436..117722ca65d3 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -279,12 +279,12 @@ <string name="private_dns_mode_off" msgid="7065962499349997041">"Desativado"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automático"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Nome do host do provedor de DNS particular"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Informe o nome do host do provedor de DNS"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Informe o nome do host"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Não foi possível conectar"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Mostrar opções de certificação de Display sem fio"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Aumentar o nível de registro de Wi-Fi; mostrar conforme o RSSI do SSID no seletor de Wi-Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduz o consumo de bateria e melhora o desempenho da rede"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Quando esse modo está ativado, o endereço MAC do dispositivo pode mudar a cada vez que ele se conecta a uma rede com ordem aleatória de MAC."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Quando esse modo estiver ativado, o endereço MAC do dispositivo poderá mudar toda vez que ele se conectar a uma rede com ordem aleatória de MAC."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Limitada"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Ilimitada"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Tamanhos de buffer de logger"</string> @@ -359,8 +359,8 @@ <string name="track_frame_time" msgid="522674651937771106">"Classificar renderização HWUI"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Ativar camadas de depuração de GPU"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carregamento de camadas de depuração de GPU p/ apps de depuração"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativ. registro detal. de fornecedor"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclui mais registros de fornecedores específicos do dispositivo em relatórios de bugs, que podem conter informações privadas e usar mais bateria e/ou armazenamento."</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativar registro detalhado de fornecedor"</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluir mais registros de fornecedores específicos do dispositivo em relatórios de bugs, que podem conter informações particulares e usar mais bateria e/ou armazenamento."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação da janela"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração do Animator"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Ativar transcodificação"</string> <string name="transcode_default" msgid="3784803084573509491">"Considerar que os apps são compatíveis com formatos modernos"</string> <string name="transcode_notification" msgid="5560515979793436168">"Mostrar notificações de transcodificação"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Desativar cache da transcodificação"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Serviços em execução"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Visualizar e controlar os serviços em execução no momento"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementação do WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"O tablet pode ser desligado em breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"O dispositivo pode ser desligado em breve (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> até a conclusão"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> até a conclusão"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g>: otimizando para integridade da bateria"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconhecido"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Carregando"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Carregando rápido"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Carregando devagar"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Carregando sem fio"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Não está carregando"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectado. Não é possível carregar no momento"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Carregada"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlada pelo admin"</string> <string name="disabled" msgid="8017887509554714950">"Desativado"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Permitido"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Cancelar"</string> <string name="okay" msgid="949938843324579502">"Ok"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmes e lembretes"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Permitir a definição de alarmes e lembretes"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmes e lembretes"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Permitir que este app programe alarmes ou outros eventos de tempo. Com isso, ele poderá funcionar mesmo quando você não estiver usando o dispositivo. Se essa permissão for revogada, o app poderá apresentar falhas, especificamente nos alarmes programados por ele, que deixarão de funcionar."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"programação, alarme, lembrete, evento"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Autorizar a definição de alarmes e lembretes"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmes e lembretes"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Permitir que esse app defina alarmes e programe outras ações. Ele poderá ser usado quando você não estiver usando o smartphone, o que consumirá mais bateria. Se essa permissão for desativada, o app e os alarmes dele poderão não funcionar como planejado."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Permitir que esse app defina alarmes e programe outras ações. Ele poderá ser usado quando você não estiver usando o tablet, o que consumirá mais bateria. Se essa permissão for desativada, o app e os alarmes dele poderão não funcionar como planejado."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Permitir que esse app defina alarmes e programe outras ações. Ele poderá ser usado quando você não estiver usando o dispositivo, o que consumirá mais bateria. Se essa permissão for desativada, o app e os alarmes dele poderão não funcionar como planejado."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"programar, alarme, lembrete, relógio"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Ativar"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Ativar o \"Não perturbe\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nunca"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Definir bloqueio"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Mudar para <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Criando novo usuário…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Falha ao criar um novo usuário"</string> <string name="user_nickname" msgid="262624187455825083">"Apelido"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Adicionar convidado"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Remover convidado"</string> diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml index 172c72cf5198..c4d61c3f0f73 100644 --- a/packages/SettingsLib/res/values-ro/arrays.xml +++ b/packages/SettingsLib/res/values-ro/arrays.xml @@ -185,8 +185,8 @@ </string-array> <string-array name="select_logpersist_summaries"> <item msgid="97587758561106269">"Dezactivată"</item> - <item msgid="7126170197336963369">"Toate zonele-tampon pentru jurnale"</item> - <item msgid="7167543126036181392">"Toate zonele-tampon pentru jurnale fără cele radio"</item> + <item msgid="7126170197336963369">"Toată memoria temporară pentru jurnale"</item> + <item msgid="7167543126036181392">"Toată memoria temporară pentru jurnale fără radio"</item> <item msgid="5135340178556563979">"numai memoria temporară pentru jurnalul nucleului"</item> </string-array> <string-array name="window_animation_scale_entries"> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index 5e5c04432924..e0789eb88410 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Anulați"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Asocierea dispozitivelor vă permite accesul la persoanele de contact și la istoricul apelurilor când dispozitivul este conectat."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Nu s-a putut împerechea cu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nu s-a putut împerechea cu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> din cauza unui cod PIN sau al unei chei de acces incorecte."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nu s-a putut asocia cu <xliff:g id="DEVICE_NAME">%1$s</xliff:g> din cauza unui cod PIN sau a unei chei de acces incorecte."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Nu se poate comunica cu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Împerechere respinsă de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Computer"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Activați transcodarea"</string> <string name="transcode_default" msgid="3784803084573509491">"Presupuneți că aplicațiile acceptă formatele moderne"</string> <string name="transcode_notification" msgid="5560515979793436168">"Vedeți notificările privind transcodarea"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Dezactivați memoria cache pentru transcodare"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Servicii în curs de funcționare"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Vedeți și controlați serviciile care funcționează în prezent"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementare WebView"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tableta se poate închide în curând (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Dispozitivul se poate închide în curând (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> până la finalizare"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> până la finalizare"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Se fac optimizări pentru buna funcționare a bateriei"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Necunoscut"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Se încarcă"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Se încarcă rapid"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Se încarcă lent"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Se încarcă wireless"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nu se încarcă"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectat, nu se poate încărca chiar acum"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Încărcată"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Controlată de administrator"</string> <string name="disabled" msgid="8017887509554714950">"Dezactivată"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Permise"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"Nepermise"</string> - <string name="install_other_apps" msgid="3232595082023199454">"Instalare aplicații necunoscute"</string> + <string name="install_other_apps" msgid="3232595082023199454">"Instalarea aplicațiilor necunoscute"</string> <string name="home" msgid="973834627243661438">"Ecran principal Setări"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0%"</item> @@ -476,8 +475,8 @@ </string-array> <string name="charge_length_format" msgid="6941645744588690932">"Acum <xliff:g id="ID_1">%1$s</xliff:g>"</string> <string name="remaining_length_format" msgid="4310625772926171089">"Timp rămas: <xliff:g id="ID_1">%1$s</xliff:g>"</string> - <string name="screen_zoom_summary_small" msgid="6050633151263074260">"Mic"</string> - <string name="screen_zoom_summary_default" msgid="1888865694033865408">"Prestabilit"</string> + <string name="screen_zoom_summary_small" msgid="6050633151263074260">"Mică"</string> + <string name="screen_zoom_summary_default" msgid="1888865694033865408">"Prestabilită"</string> <string name="screen_zoom_summary_large" msgid="4706951482598978984">"Mare"</string> <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"Mai mare"</string> <string name="screen_zoom_summary_extremely_large" msgid="1438045624562358554">"Cel mai mare"</string> @@ -506,10 +505,12 @@ <string name="cancel" msgid="5665114069455378395">"Anulați"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarme și mementouri"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Permiteți setarea de alarme sau mementouri"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarme și mementouri"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Permiteți acestei aplicații să programeze alarme sau alte evenimente legate de timp. Astfel, aplicația va putea să se activeze și să ruleze chiar dacă nu folosiți dispozitivul. Rețineți că revocarea acestei permisiuni poate cauza funcționarea incorectă a aplicației, mai ales dezactivarea alarmelor programate de aplicație."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"programare, alarmă, memento, eveniment"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Permiteți setarea pentru alarme și mementouri"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarme și mementouri"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Permiteți ca aplicația să seteze alarme și să programeze alte acțiuni. Aplicația poate rula când nu folosiți telefonul, ceea ce poate consuma mai multă baterie. Dacă permisiunea este dezactivată, este posibil ca aplicația să nu funcționeze normal, iar alarmele nu vor funcționa conform planului."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Permiteți ca aplicația să seteze alarme și să programeze alte acțiuni. Aplicația poate rula când nu folosiți tableta, ceea ce poate consuma mai multă baterie. Dacă permisiunea este dezactivată, este posibil ca aplicația să nu funcționeze normal, iar alarmele nu vor funcționa conform planului."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Permiteți ca aplicația să seteze alarme și să programeze alte acțiuni. Aplicația poate rula când nu folosiți dispozitivul, ceea ce poate consuma mai multă baterie. Dacă permisiunea este dezactivată, este posibil ca aplicația să nu funcționeze normal, iar alarmele nu vor funcționa conform planului."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"programare, alarmă, memento, ceas"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Activați"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Activați Nu deranja"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Niciodată"</string> @@ -563,8 +564,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Configurați blocarea"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Treceți la <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Se creează un utilizator nou…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Nu s-a creat noul utilizator"</string> <string name="user_nickname" msgid="262624187455825083">"Pseudonim"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Adăugați un invitat"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Ștergeți invitatul"</string> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index b9b2edb8e318..375c0ca4474c 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/strings.xml @@ -35,7 +35,7 @@ <string name="wifi_not_in_range" msgid="1541760821805777772">"Недоступна"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Подключение не будет выполняться автоматически"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"Без доступа к Интернету"</string> - <string name="saved_network" msgid="7143698034077223645">"Кто сохранил: <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="saved_network" msgid="7143698034077223645">"Сохранено: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="connected_to_metered_access_point" msgid="9179693207918156341">"Подключено к сети с ограниченным трафиком"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"Автоматически подключено к %1$s"</string> <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Автоматически подключено через автора рейтинга сетей"</string> @@ -86,7 +86,7 @@ <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Звонки"</string> <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Профиль OPP"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Профиль HID"</string> - <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Доступ к Интернету"</string> + <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Доступ к интернету"</string> <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"Обмен контактами"</string> <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"Использовать для обмена контактами"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Профиль PAN"</string> @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Отмена"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Установление соединения обеспечивает доступ к вашим контактам и журналу звонков при подключении."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Не удалось подключиться к устройству \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Не удалось подключиться к устройству \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\", так как введен неверный PIN-код или пароль."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Не удалось подключиться к устройству \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\": неверный PIN-код или пароль."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Не удается установить соединение с устройством \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> не разрешает подключение."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Компьютер"</string> @@ -274,11 +274,11 @@ <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Аудиокодек LDAC для Bluetooth: качество воспроизведения"</string> <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Запустить аудиокодек LDAC для Bluetooth\nВыбор: качество воспроизведения"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Потоковая передача: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> - <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"Персональный DNS-сервер"</string> - <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Выберите режим персонального DNS-сервера"</string> - <string name="private_dns_mode_off" msgid="7065962499349997041">"Отключено"</string> - <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Автоматический режим"</string> - <string name="private_dns_mode_provider" msgid="3619040641762557028">"Имя хоста поставщика персонального DNS-сервера"</string> + <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"Частный DNS-сервер"</string> + <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"Выберите режим частного DNS-сервера"</string> + <string name="private_dns_mode_off" msgid="7065962499349997041">"Отключен"</string> + <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Автоматически"</string> + <string name="private_dns_mode_provider" msgid="3619040641762557028">"Вручную"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Введите имя хоста поставщика DNS"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Ошибка подключения"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Показывать параметры сертификации беспроводных мониторов"</string> @@ -324,7 +324,7 @@ <string name="select_application" msgid="2543228890535466325">"Выбор приложения"</string> <string name="no_application" msgid="9038334538870247690">"Нет"</string> <string name="wait_for_debugger" msgid="7461199843335409809">"Ждать подключения отладчика"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Приложение ожидает подключения отладчика"</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Отлаживаемое приложение будет ожидать подключения отладчика перед выполнением"</string> <string name="debug_input_category" msgid="7349460906970849771">"Ввод"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"Отрисовка"</string> <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Аппаратное ускорение отрисовки"</string> @@ -405,8 +405,9 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Включить перекодирование"</string> <string name="transcode_default" msgid="3784803084573509491">"Считать, что приложения поддерживают современные форматы кодирования"</string> <string name="transcode_notification" msgid="5560515979793436168">"Показывать уведомления о перекодировании"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Отключить кеш перекодирования"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Работающие службы"</string> - <string name="runningservices_settings_summary" msgid="1046080643262665743">"Просмотр и управление работающими службами"</string> + <string name="runningservices_settings_summary" msgid="1046080643262665743">"Просмотр работающих служб и управление ими"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Сервис WebView"</string> <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Настройки сервиса WebView"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Вариант недействителен. Повторите попытку."</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Планшет скоро выключится (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Устройство скоро выключится (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> до полной зарядки"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до полной зарядки"</string> <string name="power_charging_limited" msgid="1956874810658999681">"Оптимизация для увеличения срока службы батареи (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Неизвестно"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Идет зарядка"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Быстрая зарядка"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Медленная зарядка"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Беспроводная зарядка"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не заряжается"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Подключено, не заряжается"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Батарея заряжена"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Контролируется администратором"</string> <string name="disabled" msgid="8017887509554714950">"Отключено"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Разрешено"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"Запрещено"</string> - <string name="install_other_apps" msgid="3232595082023199454">"Неизвестные приложения"</string> + <string name="install_other_apps" msgid="3232595082023199454">"Установка неизвестных приложений"</string> <string name="home" msgid="973834627243661438">"Настройки"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0 %"</item> @@ -507,10 +506,12 @@ <string name="cancel" msgid="5665114069455378395">"Отмена"</string> <string name="okay" msgid="949938843324579502">"ОК"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Будильники и напоминания"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Разрешить устанавливать будильники и напоминания"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Будильники и напоминания"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Разрешить этому приложению устанавливать будильники или другие события на определенное время. Приложение сможет выходить из спящего режима и запускаться, даже когда вы не пользуетесь устройством. Если отменить это разрешение, приложение не сможет работать, и все установленные им будильники будут отключены."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"установить, будильник, напоминание, событие"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Разрешить установку будильников и напоминаний"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Будильники и напоминания"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Разрешить этому приложению устанавливать будильники и планировать другие действия. Оно также сможет работать в то время, когда вы не пользуетесь телефоном. Не исключено, что в результате заряд батареи будет расходоваться быстрее. Если этот параметр отключен, в работе приложения могут возникнуть сбои, а будильники перестанут запускаться по расписанию."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Разрешить этому приложению устанавливать будильники и планировать другие действия. Оно также сможет работать в то время, когда вы не пользуетесь планшетом. Не исключено, что в результате заряд батареи будет расходоваться быстрее. Если этот параметр отключен, в работе приложения могут возникнуть сбои, а будильники перестанут запускаться по расписанию."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Разрешить этому приложению устанавливать будильники и планировать другие действия. Оно также сможет работать в то время, когда вы не пользуетесь устройством. Не исключено, что в результате заряд батареи будет расходоваться быстрее. Если этот параметр отключен, в работе приложения могут возникнуть сбои, а будильники перестанут запускаться по расписанию."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"установить, будильник, напоминание, часы"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Включить"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Включите режим \"Не беспокоить\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Никогда"</string> @@ -562,10 +563,9 @@ <string name="profile_info_settings_title" msgid="105699672534365099">"Информация о профиле"</string> <string name="user_need_lock_message" msgid="4311424336209509301">"Чтобы создать профиль с ограниченным доступом, необходимо предварительно настроить блокировку экрана для защиты приложений и личных данных"</string> <string name="user_set_lock_button" msgid="1427128184982594856">"Включить блокировку"</string> - <string name="user_switch_to_user" msgid="6975428297154968543">"Переключиться на этот аккаунт: <xliff:g id="USER_NAME">%s</xliff:g>"</string> + <string name="user_switch_to_user" msgid="6975428297154968543">"Сменить пользователя на <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Создаем нового пользователя…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Не удалось создать пользователя"</string> <string name="user_nickname" msgid="262624187455825083">"Псевдоним"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Добавить гостя"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Удалить аккаунт гостя"</string> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index cd25803552b9..84652292726b 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ට්රාන්ස්කෝඩින් සබල කරන්න"</string> <string name="transcode_default" msgid="3784803084573509491">"යෙදුම් නවීන ආකෘති සඳහා සහාය දක්වයි යැයි උපකල්පනය කරමු"</string> <string name="transcode_notification" msgid="5560515979793436168">"ට්රාන්ස්කෝඩින් දැනුම්දීම් පෙන්වන්න"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ට්රාන්ස්කොඩින් හැඹිලිය අබල කරන්න"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"ධාවනය වන සේවා"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"දැනට ධාවනය වන සේවා බලන්න සහ පාලනය කරන්න"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ක්රියාත්මක කිරීම"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ටැබ්ලට් පරිගණකය ඉක්මනින් වැසිය හැකිය (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"උපාංගය ඉක්මනින් වැසිය හැකිය (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"සම්පූර්ණ වීමට <xliff:g id="TIME">%1$s</xliff:g>ක් ඉතිරියි"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - සම්පූර්ණ වීමට <xliff:g id="TIME">%2$s</xliff:g>ක් ඉතිරියි"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - බැටරි ආයු කාලය වැඩි දියුණු කරමින්"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"නොදනී"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ආරෝපණය වෙමින්"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"ශීඝ්ර ආරෝපණය"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"සෙමින් ආරෝපණය"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"නොරැහැන්ව ආරෝපණය වේ"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ආරෝපණය නොවේ"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"පේනුගත කර ඇත, මේ අවස්ථාවේදී ආරෝපණය කළ නොහැකිය"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"අරෝපිතයි"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"පරිපාලක විසින් පාලනය කරන ලදී"</string> <string name="disabled" msgid="8017887509554714950">"අබල කර ඇත"</string> <string name="external_source_trusted" msgid="1146522036773132905">"ඉඩ දුන්"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"අවලංගු කරන්න"</string> <string name="okay" msgid="949938843324579502">"හරි"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"එලාම සහ සිහිකැඳවීම්"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"එලාම හෝ සිහිකැඳවීම් සැකසීමට ඉඩ දෙන්න"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"එලාම සහ සිහිකැඳවීම්"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"එලාම හෝ වේලාව පදනම් කර ගත් වෙනත් සිදුවීම් කාලසටහන්ගත කිරීමට මෙම යෙදුමට ඉඩ දෙන්න. ඔබ උපාංගය භාවිත නොකරන විට පවා යෙදුමට අවදි වීමට සහ ක්රියාත්මක වීමට මෙය ඉඩ දෙයි. මෙම අවසරය අහෝසි කිරීම යෙදුම හොඳින් ක්රියාත්මක නොවීමට හේතු විය හැකි බව සලකන්න, විශේෂයෙන් යෙදුම කාලසටහන්ගත කර ඇති යම් එලාම තවදුරටත් ක්රියා නොකරනු ඇත."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"කාල සටහන, එලාමය, සිහිකැඳවීම, සිදුවීම"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"එලාම සහ සිහිකැඳවීම් සැකසීමට ඉඩ දෙන්න"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"එලාම සහ සිහිකැඳවීම්"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"එලාම සැකසීමට සහ වෙනත් ක්රියා කාල සටහන්ගත කිරීමට මෙම යෙදුමට ඉඩ දෙන්න. ඔබ ඔබගේ දුරකථනය භාවිත නොකරන විට මෙම යෙදුම භාවිත කළ හැකිය, එය බැටරිය වැඩියෙන් භාවිත කළ හැකිය. මෙම අවසරය ක්රියාවිරහිත නම්, මෙම යෙදුම සාමාන්ය ආකාරයට ක්රියා නොකළ හැකි අතර, එහි එලාම කාල සටහන්ගත කර ඇති පරිදි ක්රියා නොකරනු ඇත."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"එලාම සැකසීමට සහ වෙනත් ක්රියා කාල සටහන්ගත කිරීමට මෙම යෙදුමට ඉඩ දෙන්න. ඔබ ඔබගේ ටැබ්ලටය භාවිත නොකරන විට මෙම යෙදුම භාවිත කළ හැකිය, එය බැටරිය වැඩියෙන් භාවිත කළ හැකිය. මෙම අවසරය ක්රියාවිරහිත නම්, මෙම යෙදුම සාමාන්ය ආකාරයට ක්රියා නොකළ හැකි අතර, එහි එලාම කාල සටහන්ගත කර ඇති පරිදි ක්රියා නොකරනු ඇත."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"එලාම සැකසීමට සහ වෙනත් ක්රියා කාල සටහන්ගත කිරීමට මෙම යෙදුමට ඉඩ දෙන්න. ඔබ ඔබගේ උපාංගය භාවිත නොකරන විට මෙම යෙදුම භාවිත කළ හැකිය, එය බැටරිය වැඩියෙන් භාවිත කළ හැකිය. මෙම අවසරය ක්රියාවිරහිත නම්, මෙම යෙදුම සාමාන්ය ආකාරයට ක්රියා නොකළ හැකි අතර, එහි එලාම කාල සටහන්ගත කර ඇති පරිදි ක්රියා නොකරනු ඇත."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"කාල සටහන, එලාමය, සිහිකැඳවීම, ඔරලෝසුව"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ක්රියාත්මක කරන්න"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"බාධා නොකරන්න ක්රියාත්මක කරන්න"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"කිසි විටක නැත"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"අගුල සකසන්න"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> වෙත මාරු වන්න"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"නව පරිශීලක තනමින්…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"නව පරිශීලකයෙකු තැනීමට අසමත් විය"</string> <string name="user_nickname" msgid="262624187455825083">"අපනාමය"</string> <string name="guest_new_guest" msgid="3482026122932643557">"අමුත්තා එක් කරන්න"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"අමුත්තා ඉවත් කරන්න"</string> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index 03c3cb2ed047..09589cd97f6b 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Zrušiť"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Párovaním udelíte zariadeniam po pripojení prístup k svojim kontaktom a histórii hovorov."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Nepodarilo sa spárovať so zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nepodarilo sa spárovať so zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>, pretože ste zadali nesprávny kód PIN alebo prístupový kľúč."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"So zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g> sa nespárovalo pre nesprávny kód PIN alebo prístupový kľúč."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"So zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nie je možné komunikovať."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Párovanie odmietnuté zariadením <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Počítač"</string> @@ -154,7 +154,7 @@ <string name="unknown" msgid="3544487229740637809">"Neznáme"</string> <string name="running_process_item_user_label" msgid="3988506293099805796">"Používateľ: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"Pre niektoré akcie"</string> - <string name="launch_defaults_none" msgid="8049374306261262709">"Nie je predvolená pre žiadne akcie"</string> + <string name="launch_defaults_none" msgid="8049374306261262709">"Nie sú nastavené žiadne predvolené"</string> <string name="tts_settings" msgid="8130616705989351312">"Nastavenia prevodu textu na reč"</string> <string name="tts_settings_title" msgid="7602210956640483039">"Prevod textu na reč"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"Rýchlosť reči"</string> @@ -238,7 +238,7 @@ <string name="bugreport_in_power" msgid="8664089072534638709">"Odkaz na hlásenie chyby"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Zobraziť v hlavnej ponuke tlačidlo na vytvorenie hlásenia chyby"</string> <string name="keep_screen_on" msgid="1187161672348797558">"Nevypínať obrazovku"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"Obrazovka sa pri nabíjaní neprepne do režimu spánku"</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"Neprepínať obrazovku pri nabíjaní do režimu spánku"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Povoliť denník Bluetooth HCI"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Zachytávať pakety rozhrania Bluetooth (Prepnúť Bluetooth po zmene tohto nastavenia.)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"Odblokovať OEM"</string> @@ -271,7 +271,7 @@ <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Spustiť zvukový kodek Bluetooth\nVýber: počet bitov na vzorku"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Bluetooth Audio – režim kanála"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Spustiť zvukový kodek Bluetooth\nVýber: režim kanála"</string> - <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Kodek LDAC Bluetooth Audio: Kvalita prehrávania"</string> + <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Kodek LDAC Bluetooth Audio: kvalita prehrávania"</string> <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Spustiť zvukový kodek Bluetooth typu LDAC\nVýber kodeku: kvalita prehrávania"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Streamovanie: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"Súkromné DNS"</string> @@ -279,7 +279,7 @@ <string name="private_dns_mode_off" msgid="7065962499349997041">"Vypnuté"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Automaticky"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Názov hostiteľa poskytovateľa súkromného DNS"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Zadajte názov hostiteľa poskytovateľa DNS"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Zadajte hostiteľa poskytovateľa DNS"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Nepodarilo sa pripojiť"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Zobraziť možnosti certifikácie bezdrôtového zobrazenia"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Zvýšiť úroveň denníkov Wi‑Fi, zobrazovať podľa SSID RSSI pri výbere siete Wi‑Fi"</string> @@ -297,9 +297,9 @@ <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"Výber konfigurácie USB"</string> <string name="allow_mock_location" msgid="2102650981552527884">"Povoliť simulované polohy"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"Povoliť simulované polohy"</string> - <string name="debug_view_attributes" msgid="3539609843984208216">"Kontrola atribútov zobrazenia"</string> + <string name="debug_view_attributes" msgid="3539609843984208216">"Kontrolovať atribúty zobrazenia"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Vždy ponechávať mobilné dáta aktívne, dokonca aj pri aktívnej sieti Wi‑Fi (na rýchle prepínanie sietí)"</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Ak je k dispozícii hardvérová akcelerácia tetheringu, používať ju"</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Používať hardvérovú akceleráciu tetheringu (ak je k dispozícii)"</string> <string name="adb_warning_title" msgid="7708653449506485728">"Povoliť ladenie cez USB?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"Ladenie cez USB je určené iba na účely vývoja. Možno ho použiť na kopírovanie dát medzi počítačom a zariadením, inštaláciu aplikácií do zariadenia bez upozornenia a čítanie dát denníka."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"Chcete povoliť bezdrôtové ladenie?"</string> @@ -310,8 +310,8 @@ <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Overovať aplikácie z USB"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Kontrolovať škodlivosť aplikácií nainštalovaných pomocou nástroja ADB alebo ADT"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Zariadenia Bluetooth sa budú zobrazovať bez názvov (iba adresy MAC)"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Umožňuje zakázať funkciu absolútnej hlasitosti rozhrania Bluetooth v prípade problémov s hlasitosťou vo vzdialených zariadeniach, ako je napríklad neprijateľne vysoká hlasitosť alebo absencia ovládacích prvkov."</string> - <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Umožňuje povoliť skupinu funkcií Bluetooth Gabeldorche."</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Zakázať funkciu absolútnej hlasitosti rozhrania Bluetooth pri problémoch s hlasitosťou vo vzdialených zariadeniach (napr. príliš vysoká hlasitosť alebo absencia ovládacích prvkov)"</string> + <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Povoliť skupinu funkcií Bluetooth Gabeldorche"</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Povoľuje funkciu Zlepšené možnosti pripojenia."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Miestny terminál"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"Povoliť terminálovú apl. na miestny prístup k prostrediu shell"</string> @@ -355,12 +355,12 @@ <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Vynútiť pre všetky jazyky rozloženie obrazovky sprava doľava"</string> <string name="force_msaa" msgid="4081288296137775550">"Vynútiť 4x MSAA"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"Povoliť 4x MSAA v aplikáciách OpenGL ES 2.0"</string> - <string name="show_non_rect_clip" msgid="7499758654867881817">"Ladenie operácií s neobdĺžnikovými výstrižkami"</string> + <string name="show_non_rect_clip" msgid="7499758654867881817">"Ladiť operácie s neobdĺžnikovými výstrižkami"</string> <string name="track_frame_time" msgid="522674651937771106">"Vykresľovanie HWUI profilu"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Povoliť vrstvy ladenia grafického procesora"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Povoliť načítanie vrstiev ladenia grafického procesora na ladenie aplikácií"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivovať podr. zapis. dodáv. do denníka"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Zahŕňajte v hláseniach chýb ďalšie denníky dodávateľa pre konkrétne zariadenie, ktoré môžu obsahovať osobné údaje, zvýšiť spotrebu batérie alebo zabrať viac ukladacieho priestoru."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Zahŕňať do hlásení chýb ďalšie denníky dodávateľa pre konkrétne zariadenie, ktoré môžu obsahovať osobné údaje, zvýšiť spotrebu batérie alebo zabrať viac ukladacieho priestoru."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Mierka animácie okna"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Mierka animácie premeny"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Mierka dĺžky animácie"</string> @@ -372,13 +372,13 @@ <string name="show_all_anrs" msgid="9160563836616468726">"Zobrazovať nereagovania aplikácií na pozadí"</string> <string name="show_all_anrs_summary" msgid="8562788834431971392">"Zobrazovať dialógové okno „Aplikácia nereaguje“ pre aplikácie na pozadí"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Zobraziť hlásenia kanála upozornení"</string> - <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Zobrazuje varovné hlásenie na obrazovke, keď aplikácia zverejní upozornenie bez platného kanála"</string> + <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Zobrazovať na obrazovke varovné hlásenie, keď aplikácia zverejní upozornenie bez platného kanála"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Vynútiť povolenie aplikácií na externom úložisku"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Umožňuje zapísať akúkoľvek aplikáciu do externého úložiska bez ohľadu na hodnoty v manifeste"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Vynútiť možnosť zmeny veľkosti aktivít"</string> <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Veľkosti všetkých aktivít bude možné zmeniť na niekoľko okien (bez ohľadu na hodnoty manifestu)."</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Povoliť okná s voľným tvarom"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Povolenie podpory pre experimentálne okná s voľným tvarom."</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Povoliť podporu pre experimentálne okná s voľným tvarom"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Heslo pre zálohy v počítači"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Úplné zálohy v počítači nie sú momentálne chránené"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Klepnutím zmeníte alebo odstránite heslo pre úplné zálohy do počítača"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Povoliť prekódovanie"</string> <string name="transcode_default" msgid="3784803084573509491">"Prepdokladať, že aplikácie podporujú moderné formáty"</string> <string name="transcode_notification" msgid="5560515979793436168">"Zobraziť upozornenia prekódovania"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Deaktivácia vyrovnávacej pamäte prekódovania"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Spustené služby"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Zobrazovať a riadiť aktuálne spustené služby"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Implementácia WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet sa môže čoskoro vypnúť (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Zariadenie sa môže čoskoro vypnúť (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> do úplného nabitia"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do úplného nabitia"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimalizácia stavu batérie"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Neznáme"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Nabíja sa"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Rýchle nabíjanie"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Pomalé nabíjanie"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Nabíja sa bezdrôtovo"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nenabíja sa"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Pripojené, ale nie je možné nabíjať"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Nabité"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Ovládané správcom"</string> <string name="disabled" msgid="8017887509554714950">"Deaktivované"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Povolené"</string> @@ -507,10 +506,12 @@ <string name="cancel" msgid="5665114069455378395">"Zrušiť"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Budíky a pripomenutia"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Povoliť nastavovanie budíkov a pripomenutí"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Budíky a pripomenutia"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Povoľte tejto aplikácii plánovať budíky alebo iné udalosti založené na čase. Príslušnej aplikácii tak umožníte prebudiť sa a spustiť, aj keď zariadenie nepoužívate. Upozorňujeme, že ak toto povolenie zrušíte, aplikácia nemusí fungovať správne a konkrétne môže dôjsť k zrušeniu všetkých budíkov, ktoré naplánovala."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"plán, budík, pripomenutie, udalosť"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Povoliť nastavovanie budíkov a pripomenutí"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Budíky a pripomenutia"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Povoľte tejto aplikácii nastavovať budíky a plánovať ďalšie akcie. Táto aplikácia môže byť spustená, keď nepoužívate telefón, čo môže zvýšiť spotrebu batérie. Ak je toto povolenie vypnuté, daná aplikácia nemusí správne fungovať a jej budíky nebudú aktivované podľa plánu."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Povoľte tejto aplikácii nastavovať budíky a plánovať ďalšie akcie. Táto aplikácia môže byť spustená, keď nepoužívate tablet, čo môže zvýšiť spotrebu batérie. Ak je toto povolenie vypnuté, daná aplikácia nemusí správne fungovať a jej budíky nebudú aktivované podľa plánu."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Povoľte tejto aplikácii nastavovať budíky a plánovať ďalšie akcie. Táto aplikácia môže byť spustená, keď nepoužívate zariadenie, čo môže zvýšiť spotrebu batérie. Ak je toto povolenie vypnuté, daná aplikácia nemusí správne fungovať a jej budíky nebudú aktivované podľa plánu."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"plán, budík, pripomenutie, hodiny"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Zapnúť"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Zapnite režim bez vyrušení"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nikdy"</string> @@ -564,8 +565,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Nastaviť uzamknutie"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Prepnúť na používateľa <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Vytvára sa nový používateľ…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Nového použív. sa nepodarilo vytvoriť"</string> <string name="user_nickname" msgid="262624187455825083">"Prezývka"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Pridať hosťa"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Odobrať hosťa"</string> diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml index a5c0b3ccd296..a0ff15e554c7 100644 --- a/packages/SettingsLib/res/values-sl/arrays.xml +++ b/packages/SettingsLib/res/values-sl/arrays.xml @@ -55,7 +55,7 @@ </string-array> <string-array name="hdcp_checking_summaries"> <item msgid="4045840870658484038">"Nikoli ne uporabi preverjanja HDCP"</item> - <item msgid="8254225038262324761">"Preverjanje HDCP uporabi samo za vsebino DRM"</item> + <item msgid="8254225038262324761">"Preverjanje HDCP uporabi samo za vsebino DRM."</item> <item msgid="6421717003037072581">"Vedno uporabi preverjanje HDCP"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index b2635fbbb62c..7edbecad941f 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Prekliči"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Seznanjanje pri vzpostavljeni povezavi omogoči dostop do vaših stikov in zgodovine klicev."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Ni bilo mogoče vzpostaviti povezave z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Zaradi nepravilne kode PIN ali gesla ni mogoče vzpostaviti povezave z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Zaradi napačne kode PIN ali gesla ni mogoča seznanitev z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Z napravo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ni mogoče vzpostaviti povezave."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Naprava <xliff:g id="DEVICE_NAME">%1$s</xliff:g> je zavrnila seznanitev."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Računalnik"</string> @@ -204,18 +204,18 @@ <string name="vpn_settings_not_available" msgid="2894137119965668920">"Nastavitve VPN niso na voljo za tega uporabnika"</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"Nastavitve za povezavo z internetom prek mobilne naprave niso na voljo za tega uporabnika"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Nastavitve imena dostopne točke niso na voljo za tega uporabnika"</string> - <string name="enable_adb" msgid="8072776357237289039">"Odpravljanje težav prek USB-ja"</string> - <string name="enable_adb_summary" msgid="3711526030096574316">"Način za odpravljanje težav, ko je vzpostavljena povezava USB"</string> - <string name="clear_adb_keys" msgid="3010148733140369917">"Preklic dovoljenj za odpravljanje težav prek povezave USB"</string> + <string name="enable_adb" msgid="8072776357237289039">"Odpravljanje napak prek USB-ja"</string> + <string name="enable_adb_summary" msgid="3711526030096574316">"Način za odpravljanje napak, ko je vzpostavljena povezava USB."</string> + <string name="clear_adb_keys" msgid="3010148733140369917">"Preklic dovoljenj za odpravljanje napak prek povezave USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Brezžično odpravljanje napak"</string> - <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Način za odpravljanje napak pri vzpostavljeni povezavi Wi‑Fi"</string> + <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Način za odpravljanje napak, ko je vzpostavljena povezava Wi‑Fi."</string> <string name="adb_wireless_error" msgid="721958772149779856">"Napaka"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Brezžično odpravljanje napak"</string> - <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Če si želite ogledati in uporabljati razpoložljive naprave, vklopite brezžično odpravljanje napak"</string> + <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Če si želite ogledati in uporabljati razpoložljive naprave, vklopite brezžično odpravljanje napak."</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Seznanjanje naprave s kodo QR"</string> - <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Seznanitev novih naprav z optičnim bralnikom kod QR"</string> + <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Seznanite nove naprave z optičnim bralnikom kod QR."</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Seznanjanje naprave s kodo za seznanjanje"</string> - <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Seznanitev novih naprav s šestmestno kodo"</string> + <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Seznanite nove naprave s šestmestno kodo."</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Seznanjene naprave"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Trenutno povezano"</string> <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Podrobnosti o napravi"</string> @@ -225,20 +225,20 @@ <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"Preverite, ali je naprava <xliff:g id="DEVICE_NAME">%1$s</xliff:g> povezana v ustrezno omrežje"</string> <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Seznanitev z napravo"</string> <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Koda za seznanjanje po Wi‑Fi-ju"</string> - <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Seznanjanje neuspešno"</string> + <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Seznanjanje je bilo neuspešno"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Preverite, ali je naprava povezana v isto omrežje."</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Seznanitev naprave prek Wi‑Fi-ja z optičnim branjem kode QR"</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Seznanite napravo prek Wi‑Fi-ja z optičnim branjem kode QR."</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Seznanjanje naprave …"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Seznanitev naprave ni uspela. Koda QR je nepravilna ali pa naprava ni povezana v isto omrežje."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Naslov IP in vrata"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Optično branje kode QR"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Seznanitev naprave prek Wi‑Fi-ja z optičnim branjem kode QR"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Seznanite napravo prek Wi‑Fi-ja z optičnim branjem kode QR."</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Vzpostavite povezavo z omrežjem Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, odpravljanje napak, razvoj"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Bližnjica za poročanje o napakah"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikaz gumba za ustvarjanje poročila o napakah v meniju za vklop/izklop"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Prikaži gumb za ustvarjanje poročila o napakah v meniju za vklop/izklop."</string> <string name="keep_screen_on" msgid="1187161672348797558">"Brez izklopa zaslona"</string> - <string name="keep_screen_on_summary" msgid="1510731514101925829">"Med polnjenjem se zaslon ne bo nikoli izklopil"</string> + <string name="keep_screen_on_summary" msgid="1510731514101925829">"Med polnjenjem se zaslon ne bo nikoli izklopil."</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Omogoči zajem dnevnika Bluetooth HCI"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"Zajemanje paketov Bluetooth. (po spremembi te nastavitve preklopite Bluetooth)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"Odklepanje OEM"</string> @@ -246,7 +246,7 @@ <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Želite omogočiti odklepanje OEM?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"OPOZORILO: Ko je vklopljena ta nastavitev, funkcije za zaščito naprave v tej napravi ne bodo delovale."</string> <string name="mock_location_app" msgid="6269380172542248304">"Izberite aplikacijo za simulirano lokacijo"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"Aplikacija za simulirano lokacijo ni nastavljena"</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"Aplikacija za simulirano lokacijo ni nastavljena."</string> <string name="mock_location_app_set" msgid="4706722469342913843">"Aplikacija za simulirano lokacijo: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Omrežja"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Potrdilo brezžičnega zaslona"</string> @@ -256,7 +256,7 @@ <string name="mobile_data_always_on" msgid="8275958101875563572">"Prenos podatkov v mobilnem omrežju je vedno aktiven"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Strojno pospeševanje za internetno povezavo prek mobilnega telefona"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži naprave Bluetooth brez imen"</string> - <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Onemogočanje absolutne glasnosti"</string> + <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Onemogoči absolutno glasnost"</string> <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Omogoči Gabeldorsche"</string> <string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Različica profila AVRCP za Bluetooth"</string> <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Izberite različico profila AVRCP za Bluetooth"</string> @@ -267,7 +267,7 @@ <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"Hitrost vzorčenja zvoka prek Bluetootha"</string> <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"Sproži zvočni kodek za Bluetooth\nIzbor: hitrost vzorčenja"</string> <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"Če je možnost zatemnjena, to pomeni, da je telefon ali slušalke z mikrofonom ne podpirajo"</string> - <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Bitov na vzorec za zvok prek Bluetootha"</string> + <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"Biti na vzorec za zvok prek Bluetootha"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Sproži zvočni kodek za Bluetooth\nIzbor: število bitov na vzorec"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Način zvočnega kanala prek Bluetootha"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Sproži zvočni kodek za Bluetooth\nIzbor: način kanala"</string> @@ -281,9 +281,9 @@ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Ime gostitelja pri ponudniku zasebnega strežnika DNS"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Vnesite ime gostitelja pri ponudniku DNS"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Povezave ni bilo mogoče vzpostaviti"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Pokaži možnosti za potrdilo brezžičnega zaslona"</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Povečaj raven zapisovanja dnevnika za Wi-Fi; v izbirniku Wi‑Fi-ja pokaži glede na SSID RSSI"</string> - <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Zmanjša porabo energije baterije in izboljša delovanje omrežja"</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Pokaži možnosti za potrdilo brezžičnega zaslona."</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Povečaj raven zapisovanja dnevnika za Wi-Fi; v izbirniku Wi‑Fi-ja pokaži glede na SSID RSSI."</string> + <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Zmanjša porabo energije baterije in izboljša delovanje omrežja."</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Ko je ta način omogočen, se lahko naslov MAC te naprave spremeni vsakič, ko se naprava poveže v omrežje z omogočenim naključnim dodeljevanjem naslova MAC."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Omejen prenos podatkov"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Z neomejenim prenosom podatkov"</string> @@ -299,7 +299,7 @@ <string name="allow_mock_location_summary" msgid="179780881081354579">"Dovoli lažne lokacije"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Omogoči pregled atributa pogleda"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Prenos podatkov v mobilnih omrežjih je vedno aktiven – tudi ko je aktivna povezava Wi-Fi (za hiter preklop med omrežji)."</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Uporabi strojno pospeševanje za internetno povezavo prek mobilnega telefona, če je na voljo"</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Uporabi strojno pospeševanje za internetno povezavo prek mobilnega telefona, če je na voljo."</string> <string name="adb_warning_title" msgid="7708653449506485728">"Ali dovolite odpravljanje težav s povezavo USB?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"Odpravljanje težav s povezavo USB je namenjeno samo za razvoj. Lahko ga uporabljate za kopiranje podatkov med računalnikom in napravo, nameščanje aplikacij v napravo brez obveščanja in branje podatkov v dnevniku."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"Ali dovolite brezžično odpravljanje napak?"</string> @@ -309,7 +309,7 @@ <string name="dev_settings_warning_message" msgid="37741686486073668">"Te nastavitve so namenjene samo za razvijanje in lahko povzročijo prekinitev ali napačno delovanje naprave in aplikacij v njej."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Preveri aplikacije prek USB-ja"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Preveri, ali so aplikacije, nameščene prek ADB/ADT, škodljive."</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Prikazane bodo naprave Bluetooth brez imen (samo z naslovi MAC)"</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Prikazane bodo naprave Bluetooth brez imen (samo z naslovi MAC)."</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Onemogoči funkcijo absolutne glasnosti za Bluetooth, če pride do težav z glasnostjo z oddaljenimi napravami, kot je nesprejemljivo visoka glasnost ali pomanjkanje nadzora."</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Omogoči sklad funkcij Bluetooth Gabeldorsche."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Omogoči funkcijo Izboljšana povezljivost."</string> @@ -317,70 +317,70 @@ <string name="enable_terminal_summary" msgid="2481074834856064500">"Omogočanje terminalske aplikacije za dostop do lokalne lupine"</string> <string name="hdcp_checking_title" msgid="3155692785074095986">"Preverjanje HDCP"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Nastavi preverjanje HDCP"</string> - <string name="debug_debugging_category" msgid="535341063709248842">"Iskanje napak"</string> + <string name="debug_debugging_category" msgid="535341063709248842">"Odpravljanje napak"</string> <string name="debug_app" msgid="8903350241392391766">"Izberite aplikacijo za iskanje napak"</string> - <string name="debug_app_not_set" msgid="1934083001283807188">"Aplikacija za iskanje napak ni nastavljena"</string> + <string name="debug_app_not_set" msgid="1934083001283807188">"Aplikacija za iskanje napak ni nastavljena."</string> <string name="debug_app_set" msgid="6599535090477753651">"Aplikacija za iskanje napak: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="select_application" msgid="2543228890535466325">"Izberite aplikacijo"</string> <string name="no_application" msgid="9038334538870247690">"Nič"</string> <string name="wait_for_debugger" msgid="7461199843335409809">"Počakaj na iskalnik napak"</string> - <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Aplikacija, v kateri iščete napako, pred izvajanjem čaka na povezavo z iskalnikom napak"</string> + <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Aplikacija, v kateri iščete napako, pred izvajanjem čaka na povezavo z iskalnikom napak."</string> <string name="debug_input_category" msgid="7349460906970849771">"Vnos"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"Risanje"</string> <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Upodabljanje s strojnim pospeševanjem"</string> <string name="media_category" msgid="8122076702526144053">"Predstavnosti"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Spremljanje"</string> <string name="strict_mode" msgid="889864762140862437">"Strog način je omogočen"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"Osveži zaslon pri dolgih postopkih v glavni niti"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"Osveži zaslon pri dolgih postopkih v glavni niti."</string> <string name="pointer_location" msgid="7516929526199520173">"Mesto kazalca"</string> - <string name="pointer_location_summary" msgid="957120116989798464">"Prekrivanje zaslona prikazuje trenutni dotik"</string> - <string name="show_touches" msgid="8437666942161289025">"Prikaz dotikov"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"Prikaz vizualnih povratnih informacij za dotike"</string> + <string name="pointer_location_summary" msgid="957120116989798464">"Prekrivanje zaslona prikazuje trenutni dotik."</string> + <string name="show_touches" msgid="8437666942161289025">"Prikaži dotike"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"Prikaži vizualne povratne informacije za dotike."</string> <string name="show_screen_updates" msgid="2078782895825535494">"Pokaži posodob. površine"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"Ob posodobitvi osveži celotne površine oken"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"Ob posodobitvi osveži celotne površine oken."</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"Prikaži posodob. pogleda"</string> - <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Osveži poglede v oknih pri risanju"</string> + <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Osveži poglede v oknih pri risanju."</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Pokaži posodobitve slojev strojne opreme"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Obarvaj sloje strojne opreme zeleno ob posodobitvi"</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Obarvaj sloje strojne opreme zeleno ob posodobitvi."</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Prekoračitev območja GPE"</string> <string name="disable_overlays" msgid="4206590799671557143">"Onem. strojni medp."</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"Za sestavljanje slike vedno uporabi graf. procesor"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"Za sestavljanje slike vedno uporabi GPE."</string> <string name="simulate_color_space" msgid="1206503300335835151">"Simul. barvnega prostora"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Omogoči sledi OpenGL"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Onem. usmerjanje zvoka prek USB"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Onem. samod. usmerjanja na zun. zvoč. naprave USB"</string> - <string name="debug_layout" msgid="1659216803043339741">"Prikaz mej postavitve"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Onem. samod. usmerjanja na zun. zvoč. naprave USB."</string> + <string name="debug_layout" msgid="1659216803043339741">"Prikaži meje postavitve"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Pokaži meje obrezovanja, obrobe ipd."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Vsili od desne proti levi"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Vsili smer postavitve na zaslonu od desne proti levi za vse jezike"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Vsili smer postavitve na zaslonu od desne proti levi za vse jezike."</string> <string name="force_msaa" msgid="4081288296137775550">"Vsili 4x MSAA"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"V aplikacijah OpenGL ES 2.0 omogoči 4x MSAA"</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"V aplikacijah OpenGL ES 2.0 omogoči 4x MSAA."</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Odpravljanje težav s postopki nepravokotnega izrezovanja"</string> <string name="track_frame_time" msgid="522674651937771106">"Upodob. profilov s HWUI"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Omog. sloje odpr. nap. GPE"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Aplikacijam za odpravljanje napak dovoli nalaganje slojev za odpravljanje napak GPE"</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Aplikacijam za odpravljanje napak dovoli nalaganje slojev za odpravljanje napak GPE."</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Omogoči podrobno beleženje za ponudnika"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Vključitev dodatnih dnevnikov ponudnika, odvisnih od posamezne naprave, v poročila o napakah. Takšno poročilo lahko vsebuje zasebne podatke, porabi več energije baterije in/ali več shrambe."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Vključi dodatne dnevnike ponudnika, odvisne od posamezne naprave, v poročila o napakah. Takšno poročilo lahko vsebuje zasebne podatke, porabi več energije baterije in/ali več shrambe."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Merilo animacije okna"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Merilo animacije prehoda"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Merilo trajanja animacije"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Simul. sekund. prikazov."</string> <string name="debug_applications_category" msgid="5394089406638954196">"Aplikacije"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"Ne obdrži dejavnosti"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Uniči vsako dejavnost, ko uporabnik preneha z njo"</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Uniči vsako dejavnost, ko uporabnik preneha z njo."</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Omejitev postopkov v ozadju"</string> <string name="show_all_anrs" msgid="9160563836616468726">"Pokaži ANR-je v ozadju"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"Prikaz pogovornega okna za neodzivanje aplikacij v ozadju"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"Prikaži pogovorno okno za neodzivanje aplikacij v ozadju."</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Pokaži opozorila kanala za obvestila"</string> - <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Na zaslonu se pokaže opozorilo, ko aplikacija objavi obvestilo brez veljavnega kanala"</string> + <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Na zaslonu se pokaže opozorilo, ko aplikacija objavi obvestilo brez veljavnega kanala."</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Vsili omogočanje aplikacij v zunanji shrambi"</string> - <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Poskrbi, da je ne glede na vrednosti v manifestu mogoče vsako aplikacijo zapisati v zunanjo shrambo"</string> + <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Poskrbi, da je ne glede na vrednosti v manifestu mogoče vsako aplikacijo zapisati v zunanjo shrambo."</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Vsili spremembo velikosti za aktivnosti"</string> <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Poskrbi, da je ne glede na vrednosti v manifestu mogoče vsem aktivnostim spremeniti velikost za način z več okni."</string> - <string name="enable_freeform_support" msgid="7599125687603914253">"Omogočanje oken svobodne oblike"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Omogočanje podpore za poskusna okna svobodne oblike"</string> + <string name="enable_freeform_support" msgid="7599125687603914253">"Omogoči okna svobodne oblike"</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Omogoči podporo za poskusna okna svobodne oblike."</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Geslo za varnostno kopijo namizja"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Popolne varnostne kopije namizja trenutno niso zaščitene"</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Popolne varnostne kopije namizja trenutno niso zaščitene."</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Dotaknite se, če želite spremeniti ali odstraniti geslo za popolno varnostno kopiranje namizja"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Novo geslo je nastavljeno"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Novo geslo in potrditev se ne ujemata."</string> @@ -405,8 +405,9 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Omogoči prekodiranje"</string> <string name="transcode_default" msgid="3784803084573509491">"Aplikacije naj bi podpirale sodobne oblike zapisov"</string> <string name="transcode_notification" msgid="5560515979793436168">"Prikaz obvestil o prekodiranju"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Onemogoči predpomnilnik za prekodiranje"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Zagnane storitve"</string> - <string name="runningservices_settings_summary" msgid="1046080643262665743">"Preglejte in nadzorujte storitve, ki so trenutno zagnane"</string> + <string name="runningservices_settings_summary" msgid="1046080643262665743">"Preglejte in nadzorujte storitve, ki so trenutno zagnane."</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Izvedba spletnega pogleda"</string> <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"Nastavitev izvedbe spletnega pogleda"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"Ta izbira ni več veljavna. Poskusite znova."</string> @@ -420,9 +421,9 @@ <string name="picture_color_mode_desc" msgid="151780973768136200">"Uporaba sRGB-ja"</string> <string name="daltonizer_mode_disabled" msgid="403424372812399228">"Onemogočeno"</string> <string name="daltonizer_mode_monochromacy" msgid="362060873835885014">"Monokromatičnost"</string> - <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Devteranomalija (rdeča – zelena)"</string> - <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (rdeča – zelena)"</string> - <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (modra – rumena)"</string> + <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Devteranomalija (rdeča in zelena)"</string> + <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (rdeča in zelena)"</string> + <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (modra in rumena)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Popravljanje barv"</string> <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Prilagodite prikaz barv v napravi. To je uporabno, ko želite:<br/><br/> <ol> <li>&nbsp;videti bolj prave barve;</li> <li>&nbsp;odstraniti barve, da se lažje osredotočite.</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Preglasila nastavitev: <xliff:g id="TITLE">%1$s</xliff:g>"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablični računalnik se bo morda kmalu zaustavil (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Naprava se bo morda kmalu zaustavila (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Še <xliff:g id="TIME">%1$s</xliff:g> do napolnjenosti"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – še <xliff:g id="TIME">%2$s</xliff:g> do napolnjenosti"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimizacija za ohranjanje zmogljivosti baterije"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Neznano"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Polnjenje"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Hitro polnjenje"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Počasno polnjenje"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Brezžično polnjenje"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Se ne polni"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Priključeno, trenutno ni mogoče polniti"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Baterija napolnjena"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Nadzira skrbnik"</string> <string name="disabled" msgid="8017887509554714950">"Onemogočeno"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Dovoljene"</string> @@ -507,12 +506,14 @@ <string name="cancel" msgid="5665114069455378395">"Prekliči"</string> <string name="okay" msgid="949938843324579502">"V redu"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmi in opomniki"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Dovoli nastavljanje alarmov ali opomnikov"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmi in opomniki"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Tej aplikaciji dovolite nastavljanje alarmov ali drugih časovnih dogodkov. S tem boste aplikaciji omogočili, da se prebudi iz stanja pripravljenosti in zažene, celo kadar naprave ne uporabljate. Upoštevajte, da s preklicem tega dovoljenja lahko povzročite nepravilno delovanje aplikacije – alarmi, ki jih je nastavila aplikacija, ne bodo več delovali."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"urnik, razpored, alarm, opomnik, dogodek"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Dovoli nastavljanje alarmov in opomnikov"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmi in opomniki"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Tej aplikaciji dovolite nastavljanje alarmov in načrtovanje drugih dejanj. Ta aplikacija je lahko v uporabi, ko ne uporabljate telefona, kar lahko povzroči večjo porabo energije baterije. Če je to dovoljenje izklopljeno, ta aplikacija morda ne bo normalno delovala in se zato alarmi ne bodo sprožili po urniku."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Tej aplikaciji dovolite nastavljanje alarmov in načrtovanje drugih dejanj. Ta aplikacija je lahko v uporabi, ko ne uporabljate tabličnega računalnika, kar lahko povzroči večjo porabo energije baterije. Če je to dovoljenje izklopljeno, ta aplikacija morda ne bo normalno delovala in se zato alarmi ne bodo sprožili po urniku."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Tej aplikaciji dovolite nastavljanje alarmov in načrtovanje drugih dejanj. Ta aplikacija je lahko v uporabi, ko ne uporabljate naprave, kar lahko povzroči večjo porabo energije baterije. Če je to dovoljenje izklopljeno, ta aplikacija morda ne bo normalno delovala in se zato alarmi ne bodo sprožili po urniku."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"načrtovanje, urnik, alarm, opomnik, ura"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Vklopi"</string> - <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Vklop načina »ne moti«"</string> + <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Vklop načina »Ne moti«"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Nikoli"</string> <string name="zen_interruption_level_priority" msgid="5392140786447823299">"Samo prednostno"</string> <string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string> @@ -562,10 +563,9 @@ <string name="profile_info_settings_title" msgid="105699672534365099">"Podatki za profil"</string> <string name="user_need_lock_message" msgid="4311424336209509301">"Preden lahko ustvarite profil z omejitvami, morate nastaviti zaklepanje zaslona, da zaščitite aplikacije in osebne podatke."</string> <string name="user_set_lock_button" msgid="1427128184982594856">"Nastavi zaklepanje"</string> - <string name="user_switch_to_user" msgid="6975428297154968543">"Preklop na račun <xliff:g id="USER_NAME">%s</xliff:g>"</string> + <string name="user_switch_to_user" msgid="6975428297154968543">"Preklopi na račun <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Ustvarjanje novega uporabnika …"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Ustvarjanje novega uporabnika ni uspelo."</string> <string name="user_nickname" msgid="262624187455825083">"Vzdevek"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Dodajanje gosta"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Odstranitev gosta"</string> diff --git a/packages/SettingsLib/res/values-sq/arrays.xml b/packages/SettingsLib/res/values-sq/arrays.xml index a6bff5d36b99..d04c6ce9bec6 100644 --- a/packages/SettingsLib/res/values-sq/arrays.xml +++ b/packages/SettingsLib/res/values-sq/arrays.xml @@ -263,7 +263,7 @@ <item msgid="3358668781763928157">"Po karikohet"</item> <item msgid="7804797564616858506">"MTP (Protokolli i Transferimit të Medias)"</item> <item msgid="910925519184248772">"PTP (Protokolli i Transferimit të Fotografive)"</item> - <item msgid="3825132913289380004">"RNDIS (USB Eternet)"</item> + <item msgid="3825132913289380004">"RNDIS (Ethernet me USB)"</item> <item msgid="8828567335701536560">"Burimi i audios"</item> <item msgid="8688681727755534982">"MIDI"</item> </string-array> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index e57ede68d185..aa0c118116f2 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -86,7 +86,7 @@ <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Telefonatat"</string> <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Transferimi i skedarëve"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Pajisja e hyrjes"</string> - <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Qasja në internet"</string> + <string name="bluetooth_profile_pan" msgid="1006235139308318188">"Qasje në internet"</string> <string name="bluetooth_profile_pbap" msgid="7064307749579335765">"Ndarja e kontakteve"</string> <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"Përdore për ndarjen e kontakteve"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Ndarja e lidhjes së internetit"</string> @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Anulo"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Çiftimi lejon qasjen te kontaktet dhe historiku yt i telefonatave."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Nuk mundi të çiftohej me <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nuk mundi të çiftohej me <xliff:g id="DEVICE_NAME">%1$s</xliff:g> për shkak të një kodi PIN ose një kodi të pasaktë."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Nuk mundi të çiftohej me <xliff:g id="DEVICE_NAME">%1$s</xliff:g> për shkak të një kodi PIN ose çelësi kalimi të pasaktë."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Nuk mund të komunikohet me <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Çiftimi u refuzua nga <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Kompjuteri"</string> @@ -230,7 +230,7 @@ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Çifto pajisjen përmes Wi‑Fi duke skanuar një kod QR"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Po çifton pajisjen…"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Çiftimi i pajisjes dështoi. Ose kodi QR nuk ishte i saktë, ose pajisja nuk është e lidhur me të njëjtin rrjet."</string> - <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adresa e IP-së dhe porta"</string> + <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adresa IP dhe porta"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skano kodin QR"</string> <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Çifto pajisjen përmes Wi‑Fi duke skanuar një kod QR"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Lidhu me një rrjet Wi-Fi"</string> @@ -244,12 +244,12 @@ <string name="oem_unlock_enable" msgid="5334869171871566731">"Shkyçja e OEM-së"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"Lejo shkyçjen e ngarkimit të sistemit"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Të lejohet shkyçja e OEM-së?"</string> - <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"PARALAJMËRIM! Funksionet e mbrojtjes së pajisjes nuk do të punojnë në këtë pajisje gjatë kohës që ky cilësim është i aktivizuar."</string> + <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"PARALAJMËRIM! Veçoritë e mbrojtjes së pajisjes nuk do të punojnë në këtë pajisje gjatë kohës që ky cilësim është i aktivizuar."</string> <string name="mock_location_app" msgid="6269380172542248304">"Zgjidh apl. që simulon vendndodhjen"</string> <string name="mock_location_app_not_set" msgid="6972032787262831155">"Nuk është vendosur asnjë aplikacion që simulon vendndodhjen"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"Aplikacioni për simulimin e vendndodhjes: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Rrjetet"</string> - <string name="wifi_display_certification" msgid="1805579519992520381">"Certifikimi i ekranit valor"</string> + <string name="wifi_display_certification" msgid="1805579519992520381">"Certifikimi i ekranit pa tel"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Aktivizo hyrjen Wi-Fi Verbose"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Përshpejtimi i skanimit të Wi‑Fi"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Renditja e rastësishme e adresave MAC të përmirësuara me Wi-Fi"</string> @@ -281,7 +281,7 @@ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Emri i pritësit të ofruesit të DNS-së private"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Fut emrin e pritësit të ofruesit të DNS-së"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Nuk mund të lidhej"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Shfaq opsionet për certifikimin e ekranit valor"</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Shfaq opsionet për certifikimin e ekranit pa tel"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Rrit nivelin regjistrues të Wi‑Fi duke shfaqur SSID RSSI-në te Zgjedhësi i Wi‑Fi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Zvogëlon shkarkimin e baterisë dhe përmirëson cilësinë e funksionimit të rrjetit"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Kur ky modalitet është i aktivizuar, adresa MAC e kësaj pajisjeje mund të ndryshojë çdo herë që lidhet me një rrjet që ka të aktivizuar renditjen e rastësishme të adresave MAC."</string> @@ -347,8 +347,8 @@ <string name="disable_overlays_summary" msgid="1954852414363338166">"Përdor gjithmonë GPU-në për përbërjen e ekranit"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Simulo hapësirën e ngjyrës"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Aktivizo gjurmët e OpenGL-së"</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Çaktivizo rrugëzuezin e audios përmes USB-së"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Çaktivizo router-in automatik për te kufjet ose altoparlantët"</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Çaktivizo kalimin e audios përmes USB-së"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Çaktivizo kalimin automatik për te kufjet ose altoparlantët"</string> <string name="debug_layout" msgid="1659216803043339741">"Shfaq konturet e kuadrit"</string> <string name="debug_layout_summary" msgid="8825829038287321978">"Shfaq konturet e klipit, hapësirat etj."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Detyro drejtimin e shkrimit nga e djathta në të majtë"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Aktivizo transkodimin"</string> <string name="transcode_default" msgid="3784803084573509491">"Supozo se aplikacionet i mbështetin formatet moderne"</string> <string name="transcode_notification" msgid="5560515979793436168">"Shfaq njoftimet e transkodimit"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Çaktivizo memorien specifike të transkodimit"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Shërbimet në ekzekutim"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Shiko dhe kontrollo shërbimet që po ekzekutohen aktualisht"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Zbatimi i WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tableti mund të fiket së shpejti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Pajisja mund të fiket së shpejti (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> derisa të mbushet"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> derisa të mbushet"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Po optimizohet për integritetin e baterisë"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"I panjohur"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Po karikohet"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Po ngarkon me shpejtësi"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Po karikohet ngadalë"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Po karikohet pa tel"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nuk po karikohet"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Në prizë, por nuk mund të karikohet për momentin"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Karikuar"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kontrolluar nga administratori"</string> <string name="disabled" msgid="8017887509554714950">"Çaktivizuar"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Lejohet"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Anulo"</string> <string name="okay" msgid="949938843324579502">"Në rregull"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmet dhe alarmet rikujtuese"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Lejo që të caktohen alarmet dhe alarmet rikujtuese"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmet dhe alarmet rikujtuese"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Lejo që ky aplikacion të planifikojë alarmet dhe ngjarje të tjera të bazuara tek orari. Kjo do ta lejojë aplikacionin të zgjohet dhe të ekzekutohet edhe kur ti nuk e përdor pajisjen. Ki parasysh se anulimi i kësaj lejeje mund të shkaktojë keqfunksionim të aplikacionit. Në mënyrë specifike, çdo alarm që ka planifikuar aplikacioni nuk do të funksionojë më."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"planifiko, alarm, alarm rikujtues, ngjarje"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Lejo caktimin e alarmeve dhe alarmeve rikujtuese"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmet dhe alarmet rikujtuese"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Lejo që ky aplikacion të caktojë alarme dhe të planifikojë veprime të tjera. Ky aplikacion mund të përdoret kur ti nuk e përdor telefonin, gjë që mund të përdorë më shumë bateri. Nëse leja është joaktive, ky aplikacion mund të mos funksionojë në mënyrë normale dhe alarmet e tij nuk do të punojnë siç janë planifikuar."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Lejo që ky aplikacion të caktojë alarme dhe të planifikojë veprime të tjera. Ky aplikacion mund të përdoret kur ti nuk e përdor tabletin, gjë që mund të përdorë më shumë bateri. Nëse leja është joaktive, ky aplikacion mund të mos funksionojë në mënyrë normale dhe alarmet e tij nuk do të punojnë siç janë planifikuar."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Lejo që ky aplikacion të caktojë alarme dhe të planifikojë veprime të tjera. Ky aplikacion mund të përdoret kur ti nuk e përdor pajisjen, gjë që mund të përdorë më shumë bateri. Nëse leja është joaktive, ky aplikacion mund të mos funksionojë në mënyrë normale dhe alarmet e tij nuk do të punojnë siç janë planifikuar."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"planifiko, alarm, alarm rikujtues, ora"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aktivizo"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Aktivizo \"Mos shqetëso\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Asnjëherë"</string> @@ -520,7 +521,7 @@ <string name="alarm_template_far" msgid="6382760514842998629">"ditën <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"Kohëzgjatja"</string> <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pyet çdo herë"</string> - <string name="zen_mode_forever" msgid="3339224497605461291">"Deri sa ta çaktivizosh"</string> + <string name="zen_mode_forever" msgid="3339224497605461291">"Derisa ta çaktivizosh"</string> <string name="time_unit_just_now" msgid="3006134267292728099">"Pikërisht tani"</string> <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altoparlanti i telefonit"</string> <string name="media_transfer_this_phone" msgid="7194341457812151531">"Ky telefon"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Cakto kyçjen"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Kalo te <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Po krijohet një përdorues i ri…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Krijimi i një përdoruesi të ri dështoi"</string> <string name="user_nickname" msgid="262624187455825083">"Pseudonimi"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Shto të ftuar"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Hiq të ftuarin"</string> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index c0a9022d39bf..0d03460a6758 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -236,7 +236,7 @@ <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Повежите се на WiFi мрежу"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, отклањање грешака, програмер"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Пречица за извештај о грешкама"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Прикажи дугме у менију напајања за прављење извештаја о грешкама"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Приказује дугме у менију напајања за прављење извештаја о грешкама"</string> <string name="keep_screen_on" msgid="1187161672348797558">"Не закључавај"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"Екран неће бити у режиму спавања током пуњења"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"Омогући snoop евид. за Bluetooth HCI"</string> @@ -281,7 +281,7 @@ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Име хоста добављача услуге приватног DNS-а"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Унесите име хоста добављача услуге DNS-а"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Повезивање није успело"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Приказ опција за сертификацију бежичног екрана"</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Приказује опције за сертификацију бежичног екрана"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Повећава ниво евидентирања за Wi‑Fi. Приказ по SSID RSSI-у у бирачу Wi‑Fi мреже"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Смањује потрошњу батерије и побољшава учинак мреже"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Када је овај режим омогућен, MAC адреса овог уређаја може да се промени сваки пут када се повеже са мрежом на којој је омогућено насумично разврставање MAC адреса."</string> @@ -298,8 +298,8 @@ <string name="allow_mock_location" msgid="2102650981552527884">"Дозволи лажне локације"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"Дозволи лажне локације"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Омогући проверу атрибута за преглед"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Нека мобилни подаци увек буду активни, чак и када је Wi‑Fi активан (ради брзе промене мреже)."</string> - <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Користи хардверско убрзање привезивања ако је доступно"</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Мобилни подаци су увек активни, чак и када је Wi‑Fi активан (ради брзе промене мреже)."</string> + <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Користи се хардверско убрзање привезивања ако је доступно"</string> <string name="adb_warning_title" msgid="7708653449506485728">"Дозволи отклањање USB грешака?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"Отклањање USB грешака намењено је само за сврхе програмирања. Користите га за копирање података са рачунара на уређај и обрнуто, инсталирање апликација на уређају без обавештења и читање података из евиденције."</string> <string name="adbwifi_warning_title" msgid="727104571653031865">"Желите да дозволите бежично отклањање грешака?"</string> @@ -309,7 +309,7 @@ <string name="dev_settings_warning_message" msgid="37741686486073668">"Ова подешавања су намењена само за програмирање. Могу да изазову престанак функционисања или неочекивано понашање уређаја и апликација на њему."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Верификуј апликације преко USB-а"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Проверава да ли су апликације инсталиране преко ADB-а/ADT-а штетне."</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Биће приказани Bluetooth уређаји без назива (само са MAC адресама)"</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Приказује Bluetooth уређаје без назива (само MAC адресе)"</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Онемогућава главно подешавање јачине звука на Bluetooth уређају у случају проблема са јачином звука на даљинским уређајима, као што су изузетно велика јачина звука или недостатак контроле."</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Омогућава групу Bluetooth Gabeldorsche функција."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Омогућава функцију Побољшано повезивање."</string> @@ -331,54 +331,54 @@ <string name="media_category" msgid="8122076702526144053">"Медији"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Надгледање"</string> <string name="strict_mode" msgid="889864762140862437">"Омогућен је строги режим"</string> - <string name="strict_mode_summary" msgid="1838248687233554654">"Нека екран трепери када апликације обављају дуге операције на главној нити"</string> + <string name="strict_mode_summary" msgid="1838248687233554654">"Екран трепери када апликације обављају дуге операције на главној нити"</string> <string name="pointer_location" msgid="7516929526199520173">"Локација показивача"</string> <string name="pointer_location_summary" msgid="957120116989798464">"Преклопни елемент са тренутним подацима о додиру"</string> <string name="show_touches" msgid="8437666942161289025">"Приказуј додире"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"Приказуј визуелне повратне информације за додире"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"Приказује визуелне повратне информације за додире"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Прикажи ажурирања површине"</string> - <string name="show_screen_updates_summary" msgid="2126932969682087406">"Осветли све површине прозора када се ажурирају"</string> + <string name="show_screen_updates_summary" msgid="2126932969682087406">"Осветљава све површине прозора када се ажурирају"</string> <string name="show_hw_screen_updates" msgid="2021286231267747506">"Прикажи ажурирања приказа"</string> - <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Осветли приказе у прозорима када се црта"</string> + <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Осветљава приказе у прозорима када се црта"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Прикажи ажурирања хардверских слојева"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Хардверски слојеви трепере зелено када се ажурирају"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Отклони грешке GPU преклапања"</string> <string name="disable_overlays" msgid="4206590799671557143">"Онемогући HW постављене елементе"</string> - <string name="disable_overlays_summary" msgid="1954852414363338166">"Увек користи GPU за компоновање екрана"</string> + <string name="disable_overlays_summary" msgid="1954852414363338166">"Увек се користи GPU за компоновање екрана"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Симулирај простор боје"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Омогући OpenGL трагове"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Онемогући USB преусм. звука"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Онемогући аут. преусм. на USB аудио периферне уређаје"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Онемогућава аутоматско преусмеравање на USB аудио периферне уређаје"</string> <string name="debug_layout" msgid="1659216803043339741">"Прикажи границе распореда"</string> - <string name="debug_layout_summary" msgid="8825829038287321978">"Прикажи границе клипа, маргине итд."</string> + <string name="debug_layout_summary" msgid="8825829038287321978">"Приказује границе клипа, маргине итд."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Наметни смер распореда здесна налево"</string> - <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Наметни смер распореда екрана здесна налево за све локалитете"</string> + <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Намеће смер распореда екрана здесна налево за све локалитете"</string> <string name="force_msaa" msgid="4081288296137775550">"Наметни 4x MSAA"</string> - <string name="force_msaa_summary" msgid="9070437493586769500">"Омогући 4x MSAA у OpenGL ES 2.0 апликацијама"</string> + <string name="force_msaa_summary" msgid="9070437493586769500">"Омогућава 4x MSAA у OpenGL ES 2.0 апликацијама"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Отклони грешке исецања области неправоугаоног облика"</string> <string name="track_frame_time" msgid="522674651937771106">"Рендеруј помоћу HWUI-а"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Омогући слојеве за отклањање грешака GPU-a"</string> - <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Омогући учитавање отк. греш. GPU-a у апл. за отк. греш."</string> + <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Учитава отклањање грешака GPU-a у апл. за отклањање грешака"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Опширне евиденције продавца"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Уврстите у извештаје о грешкама додатне посебне евиденције продавца за уређаје, које могу да садрже приватне податке, да троше више батерије и/или да користе више меморије."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Уврштава у извештаје о грешкама додатне посебне евиденције продавца за уређаје, које могу да садрже приватне податке, да троше више батерије и/или да користе више меморије."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Размера анимације прозора"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Размера анимације прелаза"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Аниматорова размера трајања"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"Симулирај секундарне екране"</string> <string name="debug_applications_category" msgid="5394089406638954196">"Апликације"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"Не чувај активности"</string> - <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Уништи сваку активност чим је корисник напусти"</string> + <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"Уништава сваку активност чим је корисник напусти"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"Ограничење позадинских процеса"</string> <string name="show_all_anrs" msgid="9160563836616468726">"Прикажи ANR-ове у позадини"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"Прикажи дијалог Апликација не реагује за апликације у позадини"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"Приказује дијалог Апликација не реагује за апликације у позадини"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"Приказуј упозорења због канала за обавештења"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"Приказује упозорење на екрану када апликација постави обавештење без важећег канала"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"Принудно дозволи апликације у спољној"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"Омогућава уписивање свих апликација у спољну меморију, без обзира на вредности манифеста"</string> <string name="force_resizable_activities" msgid="7143612144399959606">"Принудно омогући промену величине активности"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Омогући промену величине свих активности за режим са више прозора, без обзира на вредности манифеста."</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"Омогућава промену величине свих активности за режим са више прозора, без обзира на вредности манифеста."</string> <string name="enable_freeform_support" msgid="7599125687603914253">"Омогући прозоре произвољног формата"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Омогућите подршку за експерименталне прозоре произвољног формата."</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"Омогућава подршку за експерименталне прозоре произвољног формата."</string> <string name="local_backup_password_title" msgid="4631017948933578709">"Лозинка резервне копије за рачунар"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Резервне копије читавог система тренутно нису заштићене"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Додирните да бисте променили или уклонили лозинку за прављење резервних копија читавог система на рачунару"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Омогући транскодирање"</string> <string name="transcode_default" msgid="3784803084573509491">"Подразумевај да апликације подржавају модерне формате"</string> <string name="transcode_notification" msgid="5560515979793436168">"Приказуј обавештења о транскодирању"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Онемогући кеш транскодирања"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Покренуте услуге"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Приказ и контрола тренутно покренутих услуга"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Примена WebView-а"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Таблет ће се ускоро искључити (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Уређај ће се ускоро искључити (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> до краја пуњења"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до краја пуњења"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Оптимизује се ради бољег стања батерије"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Непознато"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Пуни се"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Брзо се пуни"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Споро се пуни"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Бежично пуњење"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не пуни се"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Прикључено је, али пуњење тренутно није могуће"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Напуњено"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Контролише администратор"</string> <string name="disabled" msgid="8017887509554714950">"Онемогућено"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Дозвољено"</string> @@ -506,10 +505,12 @@ <string name="cancel" msgid="5665114069455378395">"Откажи"</string> <string name="okay" msgid="949938843324579502">"Потврди"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Аларми и подсетници"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Дозволи подешавање аларма или подсетника"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Аларми и подсетници"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Дозволите овој апликацији да заказује аларме или друге догађаје засноване на времену. Тиме дозвољавате апликацији да се пробуди и ради чак и када не користите уређај. Имајте на уму да апликација можда неће исправно радити ако опозовете ову дозволу. Конкретно, ниједан аларм који је апликација заказала неће више радити."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"заказати, аларм, подсетник, догађај"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Омогући подешавање аларма и подсетника"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Аларми и подсетници"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Омогућите овој апликацији да подешава аларме и заказује друге радње. Ова апликација може да се користи када не користите телефон, што може да додатно троши батерију. Ако је ова дозвола искључена, ова апликација можда неће радити нормално и њени аларми неће радити по распореду."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Омогућите овој апликацији да подешава аларме и заказује друге радње. Ова апликација може да се користи када не користите таблет, што може да додатно троши батерију. Ако је ова дозвола искључена, ова апликација можда неће радити нормално и њени аларми неће радити по распореду."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Омогућите овој апликацији да подешава аларме и заказује друге радње. Ова апликација може да се користи када не користите уређај, што може да додатно троши батерију. Ако је ова дозвола искључена, ова апликација можда неће радити нормално и њени аларми неће радити по распореду."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"заказати, аларм, подсетник, сат"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Укључи"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Укључите режим Не узнемиравај"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Никад"</string> @@ -563,8 +564,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Подеси закључавање"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Пређи на корисника <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Прави се нови корисник…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Прављење новог корисника није успело"</string> <string name="user_nickname" msgid="262624187455825083">"Надимак"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Додај госта"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Уклони госта"</string> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index da220324cb67..49ee6f5c6280 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -27,7 +27,7 @@ <string name="wifi_disabled_generic" msgid="2651916945380294607">"Inaktiverad"</string> <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"IP-konfigurationsfel"</string> <string name="wifi_disabled_by_recommendation_provider" msgid="1302938248432705534">"Ingen anslutning på grund av låg kvalitet på nätverket"</string> - <string name="wifi_disabled_wifi_failure" msgid="8819554899148331100">"Wi-Fi-anslutningsfel"</string> + <string name="wifi_disabled_wifi_failure" msgid="8819554899148331100">"Wifi-anslutningsfel"</string> <string name="wifi_disabled_password_failure" msgid="6892387079613226738">"Autentiseringsproblem"</string> <string name="wifi_cant_connect" msgid="5718417542623056783">"Det gick inte att ansluta"</string> <string name="wifi_cant_connect_to_ap" msgid="3099667989279700135">"Det gick inte att ansluta till <xliff:g id="AP_NAME">%1$s</xliff:g>"</string> @@ -132,12 +132,12 @@ <string name="bluetooth_hearingaid_right_pairing_message" msgid="2655347721696331048">"Parkopplar höger hörapparat …"</string> <string name="bluetooth_hearingaid_left_battery_level" msgid="7375621694748104876">"Vänster – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri"</string> <string name="bluetooth_hearingaid_right_battery_level" msgid="1850094448499089312">"Höger – <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g> batteri"</string> - <string name="accessibility_wifi_off" msgid="1195445715254137155">"Wi-Fi är inaktiverat."</string> - <string name="accessibility_no_wifi" msgid="5297119459491085771">"Ingen Wi-Fi-anslutning."</string> - <string name="accessibility_wifi_one_bar" msgid="6025652717281815212">"Wi-Fi: en stapel."</string> - <string name="accessibility_wifi_two_bars" msgid="687800024970972270">"Wi-Fi: två staplar."</string> - <string name="accessibility_wifi_three_bars" msgid="779895671061950234">"Wi-Fi: tre staplar."</string> - <string name="accessibility_wifi_signal_full" msgid="7165262794551355617">"Full signalstyrka för Wi-Fi."</string> + <string name="accessibility_wifi_off" msgid="1195445715254137155">"Wifi är inaktiverat."</string> + <string name="accessibility_no_wifi" msgid="5297119459491085771">"Ingen wifi-anslutning."</string> + <string name="accessibility_wifi_one_bar" msgid="6025652717281815212">"Wifi: en stapel."</string> + <string name="accessibility_wifi_two_bars" msgid="687800024970972270">"Wifi: två staplar."</string> + <string name="accessibility_wifi_three_bars" msgid="779895671061950234">"Wifi: tre staplar."</string> + <string name="accessibility_wifi_signal_full" msgid="7165262794551355617">"Full signalstyrka för wifi."</string> <string name="accessibility_wifi_security_type_none" msgid="162352241518066966">"Öppet nätverk"</string> <string name="accessibility_wifi_security_type_secured" msgid="2399774097343238942">"Säkert nätverk"</string> <string name="process_kernel_label" msgid="950292573930336765">"Operativsystemet Android"</string> @@ -208,7 +208,7 @@ <string name="enable_adb_summary" msgid="3711526030096574316">"Felsökningsläge när USB har anslutits"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"Återkalla åtkomst till USB-felsökning"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Trådlös felsökning"</string> - <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Felsökningsläge vid Wi-Fi-anslutning"</string> + <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Felsökningsläge vid wifi-anslutning"</string> <string name="adb_wireless_error" msgid="721958772149779856">"Fel"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Trådlös felsökning"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Aktivera trådlös felsökning om du vill se tillgängliga enheter"</string> @@ -224,16 +224,16 @@ <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"Det gick inte att ansluta"</string> <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"Kontrollera att <xliff:g id="DEVICE_NAME">%1$s</xliff:g> är ansluten till rätt nätverk"</string> <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"Parkoppla med enheten"</string> - <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wi-Fi-kopplingskod"</string> + <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wifi-parkopplingskod"</string> <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Det gick inte att parkoppla"</string> <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Kontrollera att enheten är ansluten till samma nätverk."</string> - <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Parkoppla enheten via Wi-Fi genom att skanna en QR-kod"</string> + <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Parkoppla enheten via wifi genom att skanna en QR-kod"</string> <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Enheten parkopplas …"</string> <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Det gick inte att parkoppla enheten. Antingen var det fel QR-kod eller är enheten inte ansluten till samma nätverk."</string> <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP-adress och port"</string> <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Skanna QR-kod"</string> - <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Parkoppla enheten via Wi-Fi genom att skanna en QR-kod"</string> - <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Anslut till ett Wi-Fi-nätverk"</string> + <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"Parkoppla enheten via wifi genom att skanna en QR-kod"</string> + <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"Anslut till ett wifi-nätverk"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev, felsöka, felsökning"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"Genväg till felrapport"</string> <string name="bugreport_in_power_summary" msgid="1885529649381831775">"Visa en knapp för felrapportering i extramenyn"</string> @@ -249,9 +249,9 @@ <string name="mock_location_app_not_set" msgid="6972032787262831155">"Ingen app för påhittad plats har angetts"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"App för påhittad plats: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Nätverk"</string> - <string name="wifi_display_certification" msgid="1805579519992520381">"Certifiering för Wi-Fi-skärmdelning"</string> - <string name="wifi_verbose_logging" msgid="1785910450009679371">"Aktivera utförlig loggning för Wi-Fi"</string> - <string name="wifi_scan_throttling" msgid="2985624788509913617">"Begränsning av Wi-Fi-sökning"</string> + <string name="wifi_display_certification" msgid="1805579519992520381">"Certifiering för wifi-skärmdelning"</string> + <string name="wifi_verbose_logging" msgid="1785910450009679371">"Aktivera utförlig loggning för wifi"</string> + <string name="wifi_scan_throttling" msgid="2985624788509913617">"Begränsning av wifi-sökning"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑förstärkt MAC-slumpgenerering"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobildata alltid aktiverad"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Maskinvaruacceleration för internetdelning"</string> @@ -281,8 +281,8 @@ <string name="private_dns_mode_provider" msgid="3619040641762557028">"Värdnamn för leverantör av privat DNS"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Ange värdnamn för DNS-leverantör"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Kan inte ansluta"</string> - <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Visa certifieringsalternativ för Wi-Fi-skärmdelning"</string> - <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Öka loggningsnivån för Wi-Fi, visa per SSID RSSI i Wi‑Fi Picker"</string> + <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Visa certifieringsalternativ för wifi-skärmdelning"</string> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Öka loggningsnivån för wifi, visa per SSID RSSI i Wi‑Fi Picker"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Sänker batteriförbrukningen och förbättrar nätverksprestandan"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"När det här läget är aktiverat kan enhetens MAC-adress ändras varje gång den ansluts till ett nätverk där slumpgenerering av MAC-adress har aktiverats."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Med datapriser"</string> @@ -298,7 +298,7 @@ <string name="allow_mock_location" msgid="2102650981552527884">"Tillåt skenplatser"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"Tillåt skenplatser"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Aktivera inspektion av visningsattribut"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Håll alltid mobildata aktiverad, även när Wi-Fi är aktiverat (så att du snabbt kan byta mellan nätverk)."</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Håll alltid mobildata aktiverad, även när wifi är aktiverat (så att du snabbt kan byta mellan nätverk)."</string> <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Använd maskinvaruacceleration för internetdelning om tillgängligt"</string> <string name="adb_warning_title" msgid="7708653449506485728">"Ska USB-felsökning tillåtas?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"USB-felsökning ska endast användas i utvecklingssyfte. Använd den för att kopiera data mellan datorn och enheten, installera appar på enheten utan meddelanden och läsa loggdata."</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Aktivera omkodning"</string> <string name="transcode_default" msgid="3784803084573509491">"Anta att appar har stöd för moderna format"</string> <string name="transcode_notification" msgid="5560515979793436168">"Visa aviseringar för omkodning"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Inaktivera cacheminne för omkodning"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Aktiva tjänster"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Visa och styr aktiva tjänster"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView-implementering"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Surfplattan kanske stängs av snart (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Enheten kanske stängs av snart (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> kvar tills fulladdat"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> kvar tills fulladdat"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimerar batteriets livslängd"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Okänd"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Laddar"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Laddas snabbt"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Laddas långsamt"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Laddas trådlöst"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Laddar inte"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Ansluten, kan inte laddas just nu"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Laddat"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Strys av administratören"</string> <string name="disabled" msgid="8017887509554714950">"Inaktiverad"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Tillåts"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Avbryt"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarm och påminnelser"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Tillåt att alarm eller påminnelser ställs in"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarm och påminnelser"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Tillåt att appen schemalägger alarm och andra tidsbaserade händelser. På så vis kan appen aktiveras och köras också när du inte använder enheten. Om du återkallar behörigheten kan det leda till att appen inte fungerar. Mer specifikt kommer alarm som schemalagts i appen inte längre att fungera."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"schemalägga, alarm, påminnelse, händelse"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Tillåt att alarm och påminnelser ställs in"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarm och påminnelser"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Tillåt att den här appen ställer in alarm och schemalägger andra åtgärder. Appen kan användas när du inte använder telefonen, vilket drar mer batteri. Om behörigheten är inaktiverad kanske appen inte fungerar som den ska och dess alarm fungerar inte enligt schemat."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Tillåt att den här appen ställer in alarm och schemalägger andra åtgärder. Appen kan användas när du inte använder surfplattan, vilket drar mer batteri. Om behörigheten är inaktiverad kanske appen inte fungerar som den ska och dess alarm fungerar inte enligt schemat."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Tillåt att den här appen ställer in alarm och schemalägger andra åtgärder. Appen kan användas när du inte använder enheten, vilket drar mer batteri. Om behörigheten är inaktiverad kanske appen inte fungerar som den ska och dess alarm fungerar inte enligt schemat."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"schema, alarm, påminnelse, klocka"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aktivera"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Aktivera Stör ej."</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Aldrig"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Konfigurera lås"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Byt till <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Skapar ny användare …"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Det gick inte att skapa en ny användare"</string> <string name="user_nickname" msgid="262624187455825083">"Smeknamn"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Lägg till gäst"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Ta bort gäst"</string> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 4da81849811f..b4a79eb6ed94 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Ghairi"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Kuoanisha hutoa ruhusa ya kufikiwa kwa unaowasiliana nao na rekodi ya simu zilizopigwa unapounganishwa."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"Haikuwezakulinganisha na <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Haikuweza kulingana na <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kwa sababu ya PIN isiyo sahihi au msimbo ya kuingia."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"Imeshindwa kuoanisha na <xliff:g id="DEVICE_NAME">%1$s</xliff:g> kwa sababu ya PIN au nenosiri lisilo sahihi."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"Haiwezi kuanzisha mawasiliano na <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Ulinganishaji umekataliwa na <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Kompyuta"</string> @@ -195,7 +195,7 @@ <item msgid="581904787661470707">"Kasi zaidi"</item> </string-array> <string name="choose_profile" msgid="343803890897657450">"Chagua wasifu"</string> - <string name="category_personal" msgid="6236798763159385225">"Ya Kibinafsi"</string> + <string name="category_personal" msgid="6236798763159385225">"Ya Binafsi"</string> <string name="category_work" msgid="4014193632325996115">"Ya Kazini"</string> <string name="development_settings_title" msgid="140296922921597393">"Chaguo za wasanidi"</string> <string name="development_settings_enable" msgid="4285094651288242183">"Washa chaguo za wasanidi programu"</string> @@ -327,10 +327,10 @@ <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Programu ya utatuaji husubiri kitatuaji ili kuambatisha kabla ya kutekeleza"</string> <string name="debug_input_category" msgid="7349460906970849771">"Ingizo"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"Uchoraji"</string> - <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Kutunguliza kwa maunzi kulikoharakishwa"</string> + <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Utekelezaji wa maunzi ulioharakishwa"</string> <string name="media_category" msgid="8122076702526144053">"Vyombo vya Habari"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Ufuatiliaji"</string> - <string name="strict_mode" msgid="889864762140862437">"Modi makinifu imewezeshwa"</string> + <string name="strict_mode" msgid="889864762140862437">"Hali makinifu imewashwa"</string> <string name="strict_mode_summary" msgid="1838248687233554654">"Fanya skrini imemeteke programu zinapoendeleza shughuli ndefu kwenye skrini kuu"</string> <string name="pointer_location" msgid="7516929526199520173">"Mahali pa kiashiria"</string> <string name="pointer_location_summary" msgid="957120116989798464">"Kuegeshwa kwa skrini ikionyesha data ya mguso ya sasa"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Ruhusu ubadilishaji wa miundo ya faili"</string> <string name="transcode_default" msgid="3784803084573509491">"Chukulia kuwa programu zinatumia miundo ya kisasa"</string> <string name="transcode_notification" msgid="5560515979793436168">"Onyesha arifa za kubadilisha muundo wa faili"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Zima kipengele cha akiba ya kubadilisha muundo wa faili"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Huduma zinazoendeshwa"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Onyesha na udhibiti huduma zinazoendeshwa kwa sasa"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Utekelezaji wa WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Huenda kompyuta kibao ikazima hivi karibuni (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Huenda kifaa kikazima hivi karibuni (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Zimesalia <xliff:g id="TIME">%1$s</xliff:g> hadi ijae chaji"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> zimesalia hadi ijae chaji"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Inaboresha muda wa kutumia betri"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Haijulikani"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Inachaji"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Inachaji kwa kasi"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Inachaji pole pole"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Inachaji bila kutumia waya"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Haichaji"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Haiwezi kuchaji kwa sasa"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Imechajiwa"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Imedhibitiwa na msimamizi"</string> <string name="disabled" msgid="8017887509554714950">"Imezimwa"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Imeruhusiwa"</string> @@ -504,11 +503,13 @@ <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Muda kidogo."</string> <string name="cancel" msgid="5665114069455378395">"Ghairi"</string> <string name="okay" msgid="949938843324579502">"Sawa"</string> - <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Kengele na vikumbusho"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Ruhusu ili uweke kengele au vikumbusho"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Kengele na vikumbusho"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Ruhusu programu hii iweke kengele au matukio mengine yanayolenga muda. Hatua hii itaruhusu programu ifunguke na ifanye kazi hata wakati hutumii kifaa. Kumbuka kuwa hatua ya kubatilisha ruhusa hii inaweza kusababisha programu isifanye kazi ipasavyo, hasa kengele zozote zilizowekwa na programu hazitafanya kazi tena."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ratiba, kengele, kikumbusho, tukio"</string> + <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ving\'ora na vikumbusho"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Ruhusu iweke kengele na vikumbusho"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Kengele na vikumbusho"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Ruhusu programu hii iweke kengele na ratiba za vitendo vingine. Programu hii inaweza kutumika wakati hutumii simu yako, hali inayoweza kutumia chaji nyingi ya betri. Ikiwa ruhusa hii itazimwa, huenda programu hii isifanye kazi ipasavyo, na kengele zake hazitafanya kazi kama zilivyoratibiwa."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Ruhusu programu hii iweke kengele na ratiba za vitendo vingine. Programu hii inaweza kutumika wakati hutumii kompyuta yako kibao, hali inayoweza kutumia chaji nyingi ya betri. Ikiwa ruhusa hii itazimwa, huenda programu hii isifanye kazi ipasavyo, na kengele zake hazitafanya kazi kama zilivyoratibiwa."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Ruhusu programu hii iweke kengele na ratiba za vitendo vingine. Programu hii inaweza kutumika wakati hutumii kifaa chako, hali inayoweza kutumia chaji nyingi ya betri. Ikiwa ruhusa hii itazimwa, huenda programu hii isifanye kazi ipasavyo, na kengele zake hazitafanya kazi kama zilivyoratibiwa."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ratiba, kengele, kikumbusho, saa"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Washa"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Washa kipengele cha Usinisumbue"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Kamwe usiwashe"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Weka ufunguo"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Badili utumie <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Inaweka mtumiaji mpya…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Imeshindwa kuweka mtumiaji mpya"</string> <string name="user_nickname" msgid="262624187455825083">"Jina wakilishi"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Ongeza mgeni"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Ondoa mgeni"</string> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index 535bbf222f65..bdefb85d017a 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"குறிமாற்றத்தை இயக்கு"</string> <string name="transcode_default" msgid="3784803084573509491">"ஆப்ஸ் மாடர்ன் வடிவங்களை ஆதரிக்கும்படி அமை"</string> <string name="transcode_notification" msgid="5560515979793436168">"குறிமாற்ற அறிவிப்புகளைக் காட்டு"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"குறிமாற்றத்திற்கான தற்காலிக சேமிப்பை முடக்குதல்"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"இயங்கும் சேவைகள்"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"தற்போது இயக்கத்தில் இருக்கும் சேவைகளைப் பார்த்து கட்டுப்படுத்து"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView செயல்படுத்தல்"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"டேப்லெட் விரைவில் ஆஃப் ஆகக்கூடும் (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"சாதனம் விரைவில் ஆஃப் ஆகக்கூடும் (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"முழுவதும் சார்ஜாக <xliff:g id="TIME">%1$s</xliff:g> ஆகும்"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - முழுவதும் சார்ஜாக <xliff:g id="TIME">%2$s</xliff:g> ஆகும்"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - பேட்டரியின் ஆயுளை மேம்படுத்துகிறது"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"அறியப்படாத"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"சார்ஜ் ஆகிறது"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"வேகமாக சார்ஜாகிறது"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"மெதுவாக சார்ஜாகிறது"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"வயரின்றி சார்ஜாகிறது"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"சார்ஜ் செய்யப்படவில்லை"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"செருகப்பட்டது, ஆனால் இப்போது சார்ஜ் செய்ய முடியவில்லை"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"சார்ஜாகிவிட்டது"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"நிர்வாகி கட்டுப்படுத்துகிறார்"</string> <string name="disabled" msgid="8017887509554714950">"முடக்கப்பட்டது"</string> <string name="external_source_trusted" msgid="1146522036773132905">"அனுமதிக்கப்பட்டது"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"அனுமதிக்கப்படவில்லை"</string> - <string name="install_other_apps" msgid="3232595082023199454">"நிறுவுதல் (அறியாதவை)"</string> + <string name="install_other_apps" msgid="3232595082023199454">"தெரியாத ஆப்ஸ்களை நிறுவுதல்"</string> <string name="home" msgid="973834627243661438">"அமைப்புகள் முகப்பு"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0%"</item> @@ -505,10 +504,13 @@ <string name="cancel" msgid="5665114069455378395">"ரத்துசெய்"</string> <string name="okay" msgid="949938843324579502">"சரி"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"அலாரங்களும் நினைவூட்டல்களும்"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"அலாரங்களையோ நினைவூட்டல்களையோ அமைக்க அனுமதித்தல்"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"அலாரங்களும் நினைவூட்டல்களும்"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"அலாரங்களையோ பிற நேரம் சார்ந்த நிகழ்வுகளையோ திட்டமிட இந்த ஆப்ஸை அனுமதிக்கும். சாதனத்தைப் பயன்படுத்தாதபோதும், ஆப்ஸ் தொடங்கவும் இயங்கவும் இது அனுமதிக்கும். கவனத்திற்கு: இந்த அனுமதியைத் திரும்பப்பெற்றால் ஆப்ஸ் செயலிழக்கக்கூடும். குறிப்பாக, ஆப்ஸ் திட்டமிட்டுள்ள அலாரங்கள் எதுவும் இனி இயங்காது."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"திட்ட அட்டவணை, அலாரம், நினைவூட்டல், நிகழ்வு"</string> + <!-- unknown quoting pattern: original -1, translation 1 --> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"அலாரங்கள் &amp; நினைவூட்டல்களை அமைக்க அனுமதித்தல்"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"அலாரங்கள் & நினைவூட்டல்கள்"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"அலாரங்களை அமைக்கவும் பிற செயல்களைத் திட்டமிடவும் இந்த ஆப்ஸை அனுமதிக்கும். உங்கள் மொபைலை உபயோகிக்காதபோதும் இந்த ஆப்ஸ் பயன்படுத்தப்படக்கூடும், இதனால் பேட்டரி அதிகமாகப் பயன்படுத்தப்படலாம். ஆப்ஸுக்கான அனுமதி முடக்கப்பட்டிருந்தால், அது இயல்பாகச் செயல்படாமல் போகலாம். மேலும் இதன் அலாரங்களும் திட்டமிட்டபடி இயங்காது."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"அலாரங்களை அமைக்கவும் பிற செயல்களைத் திட்டமிடவும் இந்த ஆப்ஸை அனுமதிக்கும். உங்கள் டேப்லெட்டை உபயோகிக்காதபோதும் இந்த ஆப்ஸ் பயன்படுத்தப்படக்கூடும், இதனால் பேட்டரி அதிகமாகப் பயன்படுத்தப்படலாம். ஆப்ஸுக்கான அனுமதி முடக்கப்பட்டிருந்தால், அது இயல்பாகச் செயல்படாமல் போகலாம். மேலும் இதன் அலாரங்களும் திட்டமிட்டபடி இயங்காது."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"அலாரங்களை அமைக்கவும் பிற செயல்களைத் திட்டமிடவும் இந்த ஆப்ஸை அனுமதிக்கும். உங்கள் சாதனத்தை உபயோகிக்காதபோதும் இந்த ஆப்ஸ் பயன்படுத்தப்படக்கூடும், இதனால் பேட்டரி அதிகமாகப் பயன்படுத்தப்படலாம். ஆப்ஸுக்கான அனுமதி முடக்கப்பட்டிருந்தால், அது இயல்பாகச் செயல்படாமல் போகலாம். மேலும் இதன் அலாரங்களும் திட்டமிட்டபடி இயங்காது."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"திட்டமிடல், அலாரம், நினைவூட்டல், கடிகாரம்"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ஆன் செய்"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"தொந்தரவு செய்ய வேண்டாம் என்பதை ஆன் செய்யும்"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ஒருபோதும் வேண்டாம்"</string> @@ -562,8 +564,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"பூட்டை அமை"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g>க்கு மாறு"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"புதிய பயனரை உருவாக்குகிறது…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"புதிய பயனரை உருவாக்க முடியவில்லை"</string> <string name="user_nickname" msgid="262624187455825083">"புனைப்பெயர்"</string> <string name="guest_new_guest" msgid="3482026122932643557">"கெஸ்ட்டைச் சேர்"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"கெஸ்ட்டை அகற்று"</string> diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml index 45f582a14c42..99efbde3a90a 100644 --- a/packages/SettingsLib/res/values-te/arrays.xml +++ b/packages/SettingsLib/res/values-te/arrays.xml @@ -55,11 +55,11 @@ </string-array> <string-array name="hdcp_checking_summaries"> <item msgid="4045840870658484038">"ఎప్పటికీ HDCP తనిఖీని ఉపయోగించవద్దు"</item> - <item msgid="8254225038262324761">"DRM కంటెంట్కు మాత్రమే HDCP తనిఖీని ఉపయోగించండి"</item> + <item msgid="8254225038262324761">"DRM కంటెంట్కు మాత్రమే HDCP చెకింగ్ను ఉపయోగించండి"</item> <item msgid="6421717003037072581">"ఎప్పటికీ HDCP తనిఖీని ఉపయోగించు"</item> </string-array> <string-array name="bt_hci_snoop_log_entries"> - <item msgid="695678520785580527">"నిలిపివేయబడింది"</item> + <item msgid="695678520785580527">"డిజేబుల్ చేయబడింది"</item> <item msgid="6336372935919715515">"ప్రారంభించబడింది ఫిల్టర్ చేయబడింది"</item> <item msgid="2779123106632690576">"ప్రారంభించబడింది"</item> </string-array> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index 31f751952478..f91929663284 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -24,14 +24,14 @@ <string name="wifi_security_none" msgid="7392696451280611452">"ఏదీ లేదు"</string> <string name="wifi_remembered" msgid="3266709779723179188">"సేవ్ చేయబడింది"</string> <string name="wifi_disconnected" msgid="7054450256284661757">"డిస్కనెక్ట్ అయ్యింది"</string> - <string name="wifi_disabled_generic" msgid="2651916945380294607">"నిలిపివేయబడింది"</string> + <string name="wifi_disabled_generic" msgid="2651916945380294607">"డిజేబుల్ చేయబడింది"</string> <string name="wifi_disabled_network_failure" msgid="2660396183242399585">"IP కాన్ఫిగరేషన్ వైఫల్యం"</string> <string name="wifi_disabled_by_recommendation_provider" msgid="1302938248432705534">"తక్కువ నాణ్యతా నెట్వర్క్ కారణంగా కనెక్ట్ చేయబడలేదు"</string> <string name="wifi_disabled_wifi_failure" msgid="8819554899148331100">"WiFi కనెక్షన్ వైఫల్యం"</string> <string name="wifi_disabled_password_failure" msgid="6892387079613226738">"ప్రామాణీకరణ సమస్య"</string> <string name="wifi_cant_connect" msgid="5718417542623056783">"కనెక్ట్ చేయడం సాధ్యపడదు"</string> <string name="wifi_cant_connect_to_ap" msgid="3099667989279700135">"\'<xliff:g id="AP_NAME">%1$s</xliff:g>\'కు కనెక్ట్ చేయడం సాధ్యపడదు"</string> - <string name="wifi_check_password_try_again" msgid="8817789642851605628">"పాస్వర్డ్ను తనిఖీ చేసి, మళ్లీ ప్రయత్నించండి"</string> + <string name="wifi_check_password_try_again" msgid="8817789642851605628">"పాస్వర్డ్ను చెక్ చేసి, మళ్లీ ప్రయత్నించండి"</string> <string name="wifi_not_in_range" msgid="1541760821805777772">"పరిధిలో లేదు"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"స్వయంచాలకంగా కనెక్ట్ కాదు"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"ఇంటర్నెట్ యాక్సెస్ లేదు"</string> @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"రద్దు చేయి"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"జత చేయడం వలన కనెక్ట్ చేయబడినప్పుడు మీ పరిచయాలకు మరియు కాల్ చరిత్రకు ప్రాప్యతను మంజూరు చేస్తుంది."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో జత చేయడం సాధ్యపడలేదు."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"పిన్ లేదా పాస్కీ చెల్లని కారణంగా <xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో జత చేయడం సాధ్యపడలేదు."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"పిన్ లేదా పాస్కీ చెల్లని కారణంగా <xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో పెయిర్ చేయడం సాధ్యపడలేదు."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>తో కమ్యూనికేట్ చేయడం సాధ్యపడదు."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> జత చేయడాన్ని తిరస్కరించింది."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"కంప్యూటర్"</string> @@ -144,15 +144,15 @@ <string name="data_usage_uninstalled_apps" msgid="1933665711856171491">"తీసివేయబడిన యాప్లు"</string> <string name="data_usage_uninstalled_apps_users" msgid="5533981546921913295">"తీసివేయబడిన యాప్లు మరియు వినియోగదారులు"</string> <string name="data_usage_ota" msgid="7984667793701597001">"సిస్టమ్ అప్డేట్లు"</string> - <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB టీథరింగ్"</string> + <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB టెథరింగ్"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"పోర్టబుల్ హాట్స్పాట్"</string> - <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"బ్లూటూత్ టెథెరింగ్"</string> - <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"టీథరింగ్"</string> - <string name="tether_settings_title_all" msgid="8910259483383010470">"టీథరింగ్ & పోర్టబుల్ హాట్స్పాట్"</string> + <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"బ్లూటూత్ టెథరింగ్"</string> + <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"టెథరింగ్"</string> + <string name="tether_settings_title_all" msgid="8910259483383010470">"టెథరింగ్ & పోర్టబుల్ హాట్స్పాట్"</string> <string name="managed_user_title" msgid="449081789742645723">"అన్ని కార్యాలయ యాప్లు"</string> - <string name="user_guest" msgid="6939192779649870792">"అతిథి"</string> + <string name="user_guest" msgid="6939192779649870792">"గెస్ట్"</string> <string name="unknown" msgid="3544487229740637809">"తెలియదు"</string> - <string name="running_process_item_user_label" msgid="3988506293099805796">"వినియోగదారు: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> + <string name="running_process_item_user_label" msgid="3988506293099805796">"యూజర్: <xliff:g id="USER_NAME">%1$s</xliff:g>"</string> <string name="launch_defaults_some" msgid="3631650616557252926">"కొన్ని డిఫాల్ట్లు సెట్ చేయబడ్డాయి"</string> <string name="launch_defaults_none" msgid="8049374306261262709">"ఆటోమేటిక్ ఆప్షన్లు ఏవీ సెట్ చేయలేదు"</string> <string name="tts_settings" msgid="8130616705989351312">"వచనం నుండి ప్రసంగం సెట్టింగ్లు"</string> @@ -235,21 +235,21 @@ <string name="adb_wireless_qrcode_pairing_description" msgid="6014121407143607851">"QR కోడ్ను స్కాన్ చేయడం ద్వారా Wi-Fiని ఉపయోగించి పరికరాన్ని పెయిర్ చెయ్యండి"</string> <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"దయచేసి Wi-Fi నెట్వర్క్కు కనెక్ట్ చేయండి"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, డీబగ్, dev"</string> - <string name="bugreport_in_power" msgid="8664089072534638709">"బగ్ నివేదిక షార్ట్కట్"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"బగ్ నివేదికను తీసుకోవడానికి పవర్ మెనూలో బటన్ను చూపు"</string> + <string name="bugreport_in_power" msgid="8664089072534638709">"బగ్ రిపోర్ట్ షార్ట్కట్"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"బగ్ రిపోర్ట్ను తీసుకోవడానికి పవర్ మెనూలో బటన్ను చూపు"</string> <string name="keep_screen_on" msgid="1187161672348797558">"యాక్టివ్గా ఉంచు"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"ఛార్జ్ చేస్తున్నప్పుడు స్క్రీన్ ఎప్పటికీ నిద్రావస్థలోకి వెళ్లదు"</string> - <string name="bt_hci_snoop_log" msgid="7291287955649081448">"బ్లూటూత్ HCI రహస్య లాగ్ను ప్రారంభించు"</string> + <string name="bt_hci_snoop_log" msgid="7291287955649081448">"బ్లూటూత్ HCI రహస్య లాగ్ను ఎనేబుల్ చేయి"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"బ్లూటూత్ ప్యాకెట్లను క్యాప్చర్ చేయి. (ఈ సెట్టింగ్ని మార్చిన తర్వాత బ్లూటూత్ని టోగుల్ చేయండి)"</string> <string name="oem_unlock_enable" msgid="5334869171871566731">"OEM అన్లాకింగ్"</string> <string name="oem_unlock_enable_summary" msgid="5857388174390953829">"బూట్లోడర్ అన్లాక్ కావడానికి అనుమతించు"</string> <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"OEM అన్లాకింగ్ను అనుమతించాలా?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"హెచ్చరిక: ఈ సెట్టింగ్ ఆన్ చేయబడినప్పుడు పరికరం రక్షణ లక్షణాలు ఈ పరికరంలో పని చేయవు."</string> - <string name="mock_location_app" msgid="6269380172542248304">"కృత్రిమ స్థాన యాప్ను ఎంచుకోండి"</string> + <string name="mock_location_app" msgid="6269380172542248304">"డమ్మీ లొకేషన్ యాప్ను ఎంచుకోండి"</string> <string name="mock_location_app_not_set" msgid="6972032787262831155">"అనుకృత స్థాన యాప్ ఏదీ సెట్ చేయబడలేదు"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"కృత్రిమ స్థాన యాప్: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"నెట్వర్కింగ్"</string> - <string name="wifi_display_certification" msgid="1805579519992520381">"వైర్లెస్ ప్రదర్శన ప్రామాణీకరణ"</string> + <string name="wifi_display_certification" msgid="1805579519992520381">"వైర్లెస్ డిస్ప్లే సర్టిఫికేషన్"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Wi‑Fi విశదీకృత లాగింగ్ను ప్రారంభించండి"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi స్కాన్ కుదింపు"</string> <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi ద్వారా మెరుగయిన MAC ర్యాండమైజేషన్"</string> @@ -264,10 +264,10 @@ <string name="bluetooth_select_map_version_dialog_title" msgid="7085934373987428460">"బ్లూటూత్ MAP వెర్షన్ను ఎంచుకోండి"</string> <string name="bluetooth_select_a2dp_codec_type" msgid="952001408455456494">"బ్లూటూత్ ఆడియో కోడెక్"</string> <string name="bluetooth_select_a2dp_codec_type_dialog_title" msgid="7510542404227225545">"బ్లూటూత్ ఆడియో కోడెక్ని సక్రియం చేయండి\nఎంపిక"</string> - <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"బ్లూటూత్ ఆడియో నమూనా రేట్"</string> + <string name="bluetooth_select_a2dp_codec_sample_rate" msgid="1638623076480928191">"బ్లూటూత్ ఆడియో శాంపిల్ రేట్"</string> <string name="bluetooth_select_a2dp_codec_sample_rate_dialog_title" msgid="5876305103137067798">"బ్లూటూత్ ఆడియో కోడెక్ని సక్రియం చేయండి\nఎంపిక: నమూనా రేట్"</string> <string name="bluetooth_select_a2dp_codec_type_help_info" msgid="8647200416514412338">"గ్రే-అవుట్ అంటే ఫోన్ లేదా హెడ్సెట్ మద్దతు లేదు అని అర్ధం"</string> - <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"ఒక్కో నమూనాకు బ్లూటూత్ ఆడియో బిట్లు"</string> + <string name="bluetooth_select_a2dp_codec_bits_per_sample" msgid="6253965294594390806">"ఒక్కో శాంపిల్కు బ్లూటూత్ ఆడియో బిట్లు"</string> <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"బ్లూటూత్ ఆడియో కోడెక్ని సక్రియం చేయండి\nఎంపిక: ఒక్కో నమూనాలో బిట్లు"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"బ్లూటూత్ ఆడియో ఛానెల్ మోడ్"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"బ్లూటూత్ ఆడియో కోడెక్ని సక్రియం చేయండి\nఎంపిక: ఛానెల్ మోడ్"</string> @@ -278,7 +278,7 @@ <string name="select_private_dns_configuration_dialog_title" msgid="3731422918335951912">"ప్రైవేట్ DNS మోడ్ను ఎంచుకోండి"</string> <string name="private_dns_mode_off" msgid="7065962499349997041">"ఆఫ్"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"ఆటోమేటిక్"</string> - <string name="private_dns_mode_provider" msgid="3619040641762557028">"ప్రైవేట్ DNS ప్రదాత హోస్ట్పేరు"</string> + <string name="private_dns_mode_provider" msgid="3619040641762557028">"ప్రైవేట్ DNS ప్రొవైడర్ హోస్ట్పేరు"</string> <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS ప్రదాత యొక్క హోస్ట్పేరును నమోదు చేయండి"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"కనెక్ట్ చేయడం సాధ్యపడలేదు"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"వైర్లెస్ డిస్ప్లే సర్టిఫికేషన్ ఆప్షన్లను చూపు"</string> @@ -297,7 +297,7 @@ <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"USB కాన్ఫిగరేషన్ని ఎంచుకోండి"</string> <string name="allow_mock_location" msgid="2102650981552527884">"అనుకృత స్థానాలను అనుమతించు"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"అనుకృత స్థానాలను అనుమతించు"</string> - <string name="debug_view_attributes" msgid="3539609843984208216">"వీక్షణ లక్షణ పర్యవేక్షణను ప్రారంభించు"</string> + <string name="debug_view_attributes" msgid="3539609843984208216">"వీక్షణ అట్రిబ్యూట్ పర్యవేక్షణను ఎనేబుల్ చేయి"</string> <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"ఎల్లప్పుడూ మొబైల్ డేటాను యాక్టివ్గా ఉంచు, Wi‑Fi యాక్టివ్గా ఉన్నా కూడా (వేగవంతమైన నెట్వర్క్ మార్పు కోసం)."</string> <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"అందుబాటులో ఉంటే టెథెరింగ్ హార్డ్వేర్ వేగవృద్ధిని ఉపయోగించండి"</string> <string name="adb_warning_title" msgid="7708653449506485728">"USB డీబగ్గింగ్ను అనుమతించాలా?"</string> @@ -307,15 +307,15 @@ <string name="adb_keys_warning_message" msgid="2968555274488101220">"మీరు గతంలో ప్రామాణీకరించిన అన్ని కంప్యూటర్ల నుండి USB డీబగ్గింగ్కు ప్రాప్యతను ఉపసంహరించాలా?"</string> <string name="dev_settings_warning_title" msgid="8251234890169074553">"అభివృద్ధి సెట్టింగ్లను అనుమతించాలా?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"ఈ సెట్టింగ్లు అభివృద్ధి వినియోగం కోసం మాత్రమే ఉద్దేశించబడినవి. వీటి వలన మీ పరికరం మరియు దీనిలోని యాప్లు విచ్ఛిన్నం కావచ్చు లేదా తప్పుగా ప్రవర్తించవచ్చు."</string> - <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"USB ద్వారా యాప్లను ధృవీకరించు"</string> + <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"USB ద్వారా యాప్లను వెరిఫై చేయి"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"హానికరమైన ప్రవర్తన కోసం ADB/ADT ద్వారా ఇన్స్టాల్ చేయబడిన యాప్లను తనిఖీ చేయి."</string> - <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"పేర్లు (MAC చిరునామాలు మాత్రమే) లేని బ్లూటూత్ పరికరాలు ప్రదర్శించబడతాయి"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"రిమోట్ పరికరాల్లో ఆమోదించలేని స్థాయిలో అధిక వాల్యూమ్ ఉండటం లేదా వాల్యూమ్ నియంత్రణ లేకపోవడం వంటి సమస్యలు ఉంటే బ్లూటూత్ సంపూర్ణ వాల్యూమ్ ఫీచర్ని నిలిపివేస్తుంది."</string> + <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"పేర్లు (MAC అడ్రస్లు మాత్రమే) లేని బ్లూటూత్ పరికరాలు డిస్ప్లే కాబడతాయి"</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"రిమోట్ పరికరాల్లో ఆమోదించలేని స్థాయిలో అధిక వాల్యూమ్ ఉండటం లేదా వాల్యూమ్ కంట్రోల్ లేకపోవడం వంటి సమస్యలు ఉంటే బ్లూటూత్ సంపూర్ణ వాల్యూమ్ ఫీచర్ను డిజేబుల్ చేస్తుంది."</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"బ్లూటూత్ Gabeldorsche ఫీచర్ స్ట్యాక్ను ఎనేబుల్ చేస్తుంది."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"మెరుగైన కనెక్టివిటీ ఫీచర్ను ఎనేబుల్ చేస్తుంది."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"స్థానిక టెర్మినల్"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"స్థానిక షెల్ ప్రాప్యతను అందించే టెర్మినల్ యాప్ను ప్రారంభించు"</string> - <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP తనిఖీ"</string> + <string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP చెకింగ్"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"HDCP తనిఖీ ప్రవర్తనను సెట్ చేయండి"</string> <string name="debug_debugging_category" msgid="535341063709248842">"డీబగ్గింగ్"</string> <string name="debug_app" msgid="8903350241392391766">"డీబగ్ యాప్ను ఎంచుకోండి"</string> @@ -343,7 +343,7 @@ <string name="show_hw_layers_updates" msgid="5268370750002509767">"హార్డ్వేర్ లేయర్ల అప్డేట్లను చూపు"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"హార్డ్వేర్ లేయర్లు అప్డేట్ చేయబడినప్పుడు వాటిని ఆకుపచ్చ రంగులో ఫ్లాష్ చేయి"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"GPU ఓవర్డ్రాను డీబగ్ చేయండి"</string> - <string name="disable_overlays" msgid="4206590799671557143">"HW ప్రదర్శనలను నిలిపివేయి"</string> + <string name="disable_overlays" msgid="4206590799671557143">"డిజేబుల్- HW ఓవర్లేలు"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"స్క్రీన్ కంపాజిటింగ్కు ఎల్లప్పుడూ GPUని ఉపయోగించు"</string> <string name="simulate_color_space" msgid="1206503300335835151">"వివిధ రంగులను అనుకరించు"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"OpenGL ట్రేస్లను ప్రారంభించండి"</string> @@ -359,26 +359,26 @@ <string name="track_frame_time" msgid="522674651937771106">"ప్రొఫైల్ HWUI రెండరింగ్"</string> <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU డీబగ్ లేయర్లను ప్రారంభించండి"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"డీబగ్ యాప్ల కోసం GPU డీబగ్ లేయర్లను లోడ్ చేయడాన్ని అనుమతించండి"</string> - <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"వివరణాత్మక విక్రేత లాగింగ్ను ఎనేబుల్ చేయండి"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"బగ్ నివేదికలలో అదనపు పరికర-నిర్దిష్ట వెండార్ లాగ్లను చేర్చండి, అవి ప్రైవేట్ సమాచారాన్ని కలిగి ఉండవచ్చు, మరింత బ్యాటరీని, మరియు/లేదా మరింత స్టోరేజ్ను ఉపయోగించవచ్చు."</string> + <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"వివరణాత్మక వెండార్ లాగింగ్ను ఎనేబుల్ చేయండి"</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"బగ్ రిపోర్ట్లలో అదనపు పరికర-నిర్దిష్ట వెండార్ లాగ్లను చేర్చండి, అవి ప్రైవేట్ సమాచారాన్ని కలిగి ఉండవచ్చు, మరింత బ్యాటరీని, మరియు/లేదా మరింత స్టోరేజ్ను ఉపయోగించవచ్చు."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"విండో యానిమేషన్ ప్రమాణం"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"పరివర్తన యానిమేషన్ ప్రమాణం"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"యానిమేటర్ వ్యవధి ప్రమాణం"</string> <string name="overlay_display_devices_title" msgid="5411894622334469607">"ప్రత్యామ్నాయ ప్రదర్శనలను అనుకరించండి"</string> <string name="debug_applications_category" msgid="5394089406638954196">"యాప్లు"</string> - <string name="immediately_destroy_activities" msgid="1826287490705167403">"కార్యకలాపాలను ఉంచవద్దు"</string> + <string name="immediately_destroy_activities" msgid="1826287490705167403">"యాక్టివిటీస్ను ఉంచవద్దు"</string> <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"యూజర్ నిష్క్రమించాక పూర్తి యాక్టివిటీ తొలగింపు"</string> <string name="app_process_limit_title" msgid="8361367869453043007">"బ్యాక్గ్రౌండ్ ప్రాసెస్ పరిమితి"</string> <string name="show_all_anrs" msgid="9160563836616468726">"బ్యాక్గ్రౌండ్ ANRలను చూపు"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"నేపథ్య యాప్ల కోసం యాప్ ప్రతిస్పందించడం లేదు అనే డైలాగ్ను చూపు"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"బ్యాక్గ్రౌండ్ యాప్ల కోసం యాప్ ప్రతిస్పందించడం లేదు అనే డైలాగ్ను చూపు"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"ఛానెల్ హెచ్చరికల నోటిఫికేషన్ను చూపు"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"చెల్లుబాటు అయ్యే ఛానెల్ లేకుండా యాప్ నోటిఫికేషన్ను పోస్ట్ చేస్తున్నప్పుడు స్క్రీన్పై హెచ్చరికను చూపిస్తుంది"</string> - <string name="force_allow_on_external" msgid="9187902444231637880">"యాప్లను బాహ్య నిల్వలో తప్పనిసరిగా అనుమతించు"</string> - <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ఏ యాప్ని అయినా మానిఫెస్ట్ విలువలతో సంబంధం లేకుండా బాహ్య నిల్వలో సేవ్ చేయడానికి అనుమతిస్తుంది"</string> - <string name="force_resizable_activities" msgid="7143612144399959606">"కార్యకలాపాల విండోల పరిమాణం మార్చగలిగేలా నిర్బంధించు"</string> - <string name="force_resizable_activities_summary" msgid="2490382056981583062">"మానిఫెస్ట్ విలువలతో సంబంధం లేకుండా అన్ని కార్యకలాపాలను పలు రకాల విండోల్లో సరిపోయేట్లు పరిమాణం మార్చగలిగేలా చేస్తుంది."</string> - <string name="enable_freeform_support" msgid="7599125687603914253">"స్వతంత్ర రూప విండోలను ప్రారంభించండి"</string> - <string name="enable_freeform_support_summary" msgid="1822862728719276331">"ప్రయోగాత్మక స్వతంత్ర రూప విండోల కోసం మద్దతును ప్రారంభిస్తుంది."</string> + <string name="force_allow_on_external" msgid="9187902444231637880">"యాప్లను బాహ్య స్టోరేజ్లో తప్పనిసరిగా అనుమతించు"</string> + <string name="force_allow_on_external_summary" msgid="8525425782530728238">"ఏ యాప్ను అయినా మానిఫెస్ట్ విలువలతో సంబంధం లేకుండా బాహ్య స్టోరేజ్లో సేవ్ చేయడానికి అనుమతిస్తుంది"</string> + <string name="force_resizable_activities" msgid="7143612144399959606">"యాక్టివిటీ విండోల సైజ్ మార్చగలిగేలా నిర్బంధించు"</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"మానిఫెస్ట్ విలువలతో సంబంధం లేకుండా అన్ని యాక్టివిటీస్ను పలు రకాల విండోల్లో సరిపోయేటట్లు సైజ్ మార్చగలిగేలా చేస్తుంది."</string> + <string name="enable_freeform_support" msgid="7599125687603914253">"స్వతంత్ర రూప విండోలను ఎనేబుల్ చేయండి"</string> + <string name="enable_freeform_support_summary" msgid="1822862728719276331">"ప్రయోగాత్మక స్వతంత్ర రూప విండోల కోసం సపోర్ట్ను ఎనేబుల్ చేస్తుంది."</string> <string name="local_backup_password_title" msgid="4631017948933578709">"డెస్క్టాప్ బ్యాకప్ పాస్వర్డ్"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"డెస్క్టాప్ పూర్తి బ్యాకప్లు ప్రస్తుతం రక్షించబడలేదు"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"డెస్క్టాప్ పూర్తి బ్యాకప్ల కోసం పాస్వర్డ్ను మార్చడానికి లేదా తీసివేయడానికి నొక్కండి"</string> @@ -405,8 +405,9 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ట్రాన్స్కోడింగ్ను ఎనేబుల్ చేయండి"</string> <string name="transcode_default" msgid="3784803084573509491">"యాప్లు ఆధునిక ఫార్మాట్లకు సపోర్ట్ చేస్తాయని అనుకోండి"</string> <string name="transcode_notification" msgid="5560515979793436168">"ట్రాన్స్కోడింగ్ నోటిఫికేషన్లను చూపండి"</string> - <string name="runningservices_settings_title" msgid="6460099290493086515">"అమలులో ఉన్న సేవలు"</string> - <string name="runningservices_settings_summary" msgid="1046080643262665743">"ప్రస్తుతం అమలులో ఉన్న సేవలను వీక్షించండి మరియు నియంత్రించండి"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ట్రాన్స్కోడింగ్ కాష్ను డిజేబుల్ చేయండి"</string> + <string name="runningservices_settings_title" msgid="6460099290493086515">"అమలులో ఉన్న సర్వీస్లు"</string> + <string name="runningservices_settings_summary" msgid="1046080643262665743">"ప్రస్తుతం అమలులో ఉన్న సర్వీస్లను వీక్షించండి, కంట్రోల్ చేయండి"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"వెబ్ వీక్షణ అమలు"</string> <string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"వెబ్ వీక్షణ అమలుని సెట్ చేయండి"</string> <string name="select_webview_provider_toast_text" msgid="8512254949169359848">"ఈ ఎంపిక ఇప్పుడు లేదు. మళ్లీ ప్రయత్నించండి."</string> @@ -418,7 +419,7 @@ <string name="button_convert_fbe" msgid="1159861795137727671">"తొలగించి, మార్చు…"</string> <string name="picture_color_mode" msgid="1013807330552931903">"చిత్రం రంగు మోడ్"</string> <string name="picture_color_mode_desc" msgid="151780973768136200">"sRGB ఉపయోగిస్తుంది"</string> - <string name="daltonizer_mode_disabled" msgid="403424372812399228">"నిలిపివేయబడింది"</string> + <string name="daltonizer_mode_disabled" msgid="403424372812399228">"డిజేబుల్ చేయబడింది"</string> <string name="daltonizer_mode_monochromacy" msgid="362060873835885014">"సంపూర్ణ వర్ణాంధత్వం"</string> <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"డ్యూటెరానోమలీ (ఎరుపు-ఆకుపచ్చ)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ప్రొటానోమలీ (ఎరుపు-ఆకుపచ్చ రంగు)"</string> @@ -435,8 +436,8 @@ <skip /> <string name="power_discharge_by_enhanced" msgid="563438403581662942">"మీ వినియోగం ఆధారంగా <xliff:g id="TIME">%1$s</xliff:g> వరకు ఉండాలి (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> <string name="power_discharge_by_only_enhanced" msgid="3268796172652988877">"మీ వినియోగం ఆధారంగా దాదాపు <xliff:g id="TIME">%1$s</xliff:g> వరకు ఉండాలి"</string> - <string name="power_discharge_by" msgid="4113180890060388350">"దాదాపు <xliff:g id="TIME">%1$s</xliff:g> వరకు ఉండాలి (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> - <string name="power_discharge_by_only" msgid="92545648425937000">"దాదాపు <xliff:g id="TIME">%1$s</xliff:g> వరకు ఉండాలి"</string> + <string name="power_discharge_by" msgid="4113180890060388350">"దాదాపు <xliff:g id="TIME">%1$s</xliff:g> వరకు వస్తుంది (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string> + <string name="power_discharge_by_only" msgid="92545648425937000">"దాదాపు <xliff:g id="TIME">%1$s</xliff:g> వరకు వస్తుంది"</string> <string name="power_discharge_by_only_short" msgid="5883041507426914446">"<xliff:g id="TIME">%1$s</xliff:g> వరకు"</string> <string name="power_suggestion_battery_run_out" msgid="6332089307827787087">"బ్యాటరీ <xliff:g id="TIME">%1$s</xliff:g> సమయానికి ఖాళీ అవ్వచ్చు"</string> <string name="power_remaining_less_than_duration_only" msgid="8956656616031395152">"<xliff:g id="THRESHOLD">%1$s</xliff:g> కంటే తక్కువ సమయం మిగిలి ఉంది"</string> @@ -450,21 +451,19 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"టాబ్లెట్ త్వరలో షట్డౌన్ కావచ్చు (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"పరికరం త్వరలో షట్డౌన్ కావచ్చు (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g>లో పూర్తిగా ఛార్జ్ అవుతుంది"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>లో పూర్తిగా ఛార్జ్ అవుతుంది"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - బ్యాటరీ జీవితకాలాన్ని పెంచడం కోసం ఆప్టిమైజ్ చేస్తోంది"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"తెలియదు"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"ఛార్జ్ అవుతోంది"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"వేగవంతమైన ఛార్జింగ్"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"నెమ్మదిగా ఛార్జింగ్"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"వైర్లెస్ ఛార్జింగ్"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ఛార్జ్ కావడం లేదు"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ప్లగ్ ఇన్ చేయబడింది, ప్రస్తుతం ఛార్జ్ చేయడం సాధ్యం కాదు"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ఛార్జ్ చేయబడింది"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"నిర్వాహకుని ద్వారా నియంత్రించబడింది"</string> - <string name="disabled" msgid="8017887509554714950">"నిలిపివేయబడింది"</string> + <string name="disabled" msgid="8017887509554714950">"డిజేబుల్ చేయబడింది"</string> <string name="external_source_trusted" msgid="1146522036773132905">"అనుమతించినవి"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"అనుమతించబడలేదు"</string> <string name="install_other_apps" msgid="3232595082023199454">"తెలియని యాప్ల ఇన్స్టలేషన్"</string> @@ -477,7 +476,7 @@ <string name="charge_length_format" msgid="6941645744588690932">"<xliff:g id="ID_1">%1$s</xliff:g> క్రితం"</string> <string name="remaining_length_format" msgid="4310625772926171089">"<xliff:g id="ID_1">%1$s</xliff:g> మిగిలి ఉంది"</string> <string name="screen_zoom_summary_small" msgid="6050633151263074260">"చిన్నగా"</string> - <string name="screen_zoom_summary_default" msgid="1888865694033865408">"డిఫాల్ట్"</string> + <string name="screen_zoom_summary_default" msgid="1888865694033865408">"ఆటోమేటిక్"</string> <string name="screen_zoom_summary_large" msgid="4706951482598978984">"పెద్దగా"</string> <string name="screen_zoom_summary_very_large" msgid="7317423942896999029">"చాలా పెద్దగా"</string> <string name="screen_zoom_summary_extremely_large" msgid="1438045624562358554">"అతి పెద్దగా"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"రద్దు చేయి"</string> <string name="okay" msgid="949938843324579502">"సరే"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"అలారాలు, రిమైండర్లు"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"అలారాలు లేదా రిమైండర్లను సెట్ చేయడానికి అనుమతించు"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"అలారాలు, రిమైండర్లు"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"అలారాలు లేదా ఇతర సమయ ఆధారిత ఈవెంట్లను షెడ్యూల్ చేయడానికి ఈ యాప్ను అనుమతించండి. మీరు పరికరాన్ని ఉపయోగించనప్పుడు కూడా యాప్ మేల్కొలపడానికి అలాగే అమలు చేయడానికి ఇది అనుమతిస్తుంది. ఈ అనుమతిని ఉపసంహరించుకోవడం యాప్ పనిచేయకపోవటానికి కారణమవుతుందని గమనించండి, ప్రత్యేకంగా యాప్ షెడ్యూల్ చేసిన ఏవైనా అలారాలు ఇకపై పనిచేయవు."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"షెడ్యూల్, అలారం, రిమైండర్, ఈవెంట్"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"అలారాలు, రిమైండర్లను సెట్ చేయడానికి అనుమతించండి"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"అలారాలు & రిమైండర్లు"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"అలారాలను సెట్ చేయడానికి, ఇతర చర్యలను షెడ్యూల్ చేయడానికి ఈ యాప్ను అనుమతించండి. మీరు మీ ఫోన్ను ఉపయోగించనప్పుడు ఈ యాప్ ఉపయోగించబడవచ్చు, ఇది ఎక్కువ బ్యాటరీని ఉపయోగించవచ్చు. ఈ అనుమతిని ఆఫ్ చేసినట్లైతే, ఈ యాప్ సాధారణంగా పనిచేయకపోవచ్చు అలాగే దాని అలారాలు షెడ్యూల్ ప్రకారం పనిచేయవు."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"అలారాలను సెట్ చేయడానికి, ఇతర చర్యలను షెడ్యూల్ చేయడానికి ఈ యాప్ను అనుమతించండి. మీరు మీ టాబ్లెట్ను ఉపయోగించనప్పుడు ఈ యాప్ ఉపయోగించబడవచ్చు, ఇది ఎక్కువ బ్యాటరీని ఉపయోగించవచ్చు. ఈ అనుమతిని ఆఫ్ చేసినట్లైతే, ఈ యాప్ సాధారణంగా పనిచేయకపోవచ్చు అలాగే దాని అలారాలు షెడ్యూల్ ప్రకారం పనిచేయవు."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"అలారాలను సెట్ చేయడానికి, ఇతర చర్యలను షెడ్యూల్ చేయడానికి ఈ యాప్ను అనుమతించండి. మీరు మీ పరికరాన్ని ఉపయోగించనప్పుడు ఈ యాప్ ఉపయోగించబడవచ్చు, ఇది ఎక్కువ బ్యాటరీని ఉపయోగించవచ్చు. ఈ అనుమతిని ఆఫ్ చేసినట్లైతే, ఈ యాప్ సాధారణంగా పనిచేయకపోవచ్చు అలాగే దాని అలారాలు షెడ్యూల్ ప్రకారం పనిచేయవు."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"షెడ్యూల్, అలారం, రిమైండర్, గడియారం"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"ఆన్ చేయండి"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"అంతరాయం కలిగించవద్దును ఆన్ చేయండి"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ఎప్పటికీ వద్దు"</string> @@ -527,7 +528,7 @@ <string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"కనెక్ట్ చేయడంలో సమస్య ఉంది. పరికరాన్ని ఆఫ్ చేసి, ఆపై తిరిగి ఆన్ చేయండి"</string> <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"వైర్ గల ఆడియో పరికరం"</string> <string name="help_label" msgid="3528360748637781274">"సహాయం & ఫీడ్బ్యాక్"</string> - <string name="storage_category" msgid="2287342585424631813">"నిల్వ"</string> + <string name="storage_category" msgid="2287342585424631813">"స్టోరేజ్"</string> <string name="shared_data_title" msgid="1017034836800864953">"షేర్ చేసిన డేటా"</string> <string name="shared_data_summary" msgid="5516326713822885652">"షేర్ చేసిన డేటాను చూసి, సవరించండి"</string> <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"ఈ యూజర్ కోసం షేర్ చేసిన డేటా ఏదీ లేదు."</string> @@ -543,7 +544,7 @@ <string name="delete_blob_confirmation_text" msgid="7807446938920827280">"మీరు ఖచ్చితంగా ఈ షేర్ చేసిన డేటాను తొలగించాలనుకుంటున్నారా?"</string> <string name="user_add_user_item_summary" msgid="5748424612724703400">"వినియోగదారులు వారి స్వంత అనువర్తనాలను మరియు కంటెంట్ను కలిగి ఉన్నారు"</string> <string name="user_add_profile_item_summary" msgid="5418602404308968028">"మీరు మీ ఖాతా నుండి అనువర్తనాలకు మరియు కంటెంట్కు ప్రాప్యతను పరిమితం చేయవచ్చు"</string> - <string name="user_add_user_item_title" msgid="2394272381086965029">"వినియోగదారు"</string> + <string name="user_add_user_item_title" msgid="2394272381086965029">"యూజర్"</string> <string name="user_add_profile_item_title" msgid="3111051717414643029">"పరిమితం చేయబడిన ప్రొఫైల్"</string> <string name="user_add_user_title" msgid="5457079143694924885">"కొత్త వినియోగదారుని జోడించాలా?"</string> <string name="user_add_user_message_long" msgid="1527434966294733380">"అదనపు యూజర్లను సృష్టించడం ద్వారా మీరు ఈ దేవైజ్ను ఇతరులతో షేర్ చేయవచ్చు. ప్రతి యూజర్కు వారికంటూ ప్రత్యేక స్థలం ఉంటుంది, వారు ఆ స్థలాన్ని యాప్లు, వాల్పేపర్ మొదలైనవాటితో అనుకూలీకరించవచ్చు. యూజర్లు ప్రతి ఒక్కరిపై ప్రభావం చూపే Wi‑Fi వంటి పరికర సెట్టింగ్లను కూడా సర్దుబాటు చేయవచ్చు.\n\nమీరు కొత్త యూజర్ ను జోడించినప్పుడు, ఆ వ్యక్తి వారికంటూ స్వంత స్థలం సెట్ చేసుకోవాలి.\n\nఏ వినియోగదారు అయినా మిగిలిన అందరు యూజర్ల కోసం యాప్లను అప్డేట్ చేయవచ్చు. యాక్సెస్ సామర్ధ్యం సెట్టింగ్లు మరియు సేవలు కొత్త యూజర్కి బదిలీ కాకపోవచ్చు."</string> @@ -562,12 +563,11 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"లాక్ను సెట్ చేయి"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g>కు మార్చు"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"కొత్త యూజర్ను క్రియేట్ చేస్తోంది…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"కొత్త యూజర్ను క్రియేట్ చేయడం విఫలమైంది"</string> <string name="user_nickname" msgid="262624187455825083">"మారుపేరు"</string> <string name="guest_new_guest" msgid="3482026122932643557">"గెస్ట్ను జోడించండి"</string> - <string name="guest_exit_guest" msgid="5908239569510734136">"అతిథిని తీసివేయండి"</string> - <string name="guest_nickname" msgid="6332276931583337261">"అతిథి"</string> + <string name="guest_exit_guest" msgid="5908239569510734136">"గెస్ట్ను తీసివేయండి"</string> + <string name="guest_nickname" msgid="6332276931583337261">"గెస్ట్"</string> <string name="user_image_take_photo" msgid="467512954561638530">"ఒక ఫోటో తీయండి"</string> <string name="user_image_choose_photo" msgid="1363820919146782908">"ఇమేజ్ను ఎంచుకోండి"</string> <string name="user_image_photo_selector" msgid="433658323306627093">"ఫోటోను ఎంచుకోండి"</string> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index 59ace4a8537a..798531ace264 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -368,9 +368,9 @@ <string name="debug_applications_category" msgid="5394089406638954196">"แอปพลิเคชัน"</string> <string name="immediately_destroy_activities" msgid="1826287490705167403">"ไม่เก็บกิจกรรม"</string> <string name="immediately_destroy_activities_summary" msgid="6289590341144557614">"ล้างทุกกิจกรรมทันทีที่ผู้ใช้ออกไป"</string> - <string name="app_process_limit_title" msgid="8361367869453043007">"ขีดจำกัดกระบวนการพื้นหลัง"</string> + <string name="app_process_limit_title" msgid="8361367869453043007">"ขีดจำกัดกระบวนการเบื้องหลัง"</string> <string name="show_all_anrs" msgid="9160563836616468726">"แสดง ANR พื้นหลัง"</string> - <string name="show_all_anrs_summary" msgid="8562788834431971392">"แสดงกล่องโต้ตอบ \"แอปไม่ตอบสนอง\" สำหรับแอปพื้นหลัง"</string> + <string name="show_all_anrs_summary" msgid="8562788834431971392">"แสดงกล่องโต้ตอบ \"แอปไม่ตอบสนอง\" สำหรับแอปเบื้องหลัง"</string> <string name="show_notification_channel_warnings" msgid="3448282400127597331">"แสดงคำเตือนจากช่องทางการแจ้งเตือน"</string> <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"แสดงคำเตือนบนหน้าจอเมื่อแอปโพสต์การแจ้งเตือนโดยไม่มีช่องทางที่ถูกต้อง"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"บังคับให้แอปสามารถใช้ที่เก็บภายนอก"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"เปิดใช้การแปลง"</string> <string name="transcode_default" msgid="3784803084573509491">"ถือว่าแอปรองรับรูปแบบสมัยใหม่"</string> <string name="transcode_notification" msgid="5560515979793436168">"แสดงการแจ้งเตือนการแปลง"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ปิดใช้แคชสำหรับการแปลง"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"บริการที่ทำงานอยู่"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"ดูและควบคุมบริการที่ทำงานอยู่"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"การใช้งาน WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"แท็บเล็ตอาจปิดเครื่องในไม่ช้า (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"อุปกรณ์อาจปิดเครื่องในไม่ช้า (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"อีก <xliff:g id="TIME">%1$s</xliff:g> จึงจะเต็ม"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - อีก <xliff:g id="TIME">%2$s</xliff:g> จึงจะเต็ม"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - กำลังเพิ่มประสิทธิภาพแบตเตอรี่"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"ไม่ทราบ"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"กำลังชาร์จ"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"กำลังชาร์จอย่างเร็ว"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"กำลังชาร์จอย่างช้าๆ"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"กำลังชาร์จแบบไร้สาย"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"ไม่ได้ชาร์จ"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"เสียบอยู่ ไม่สามารถชาร์จได้ในขณะนี้"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"ชาร์จแล้ว"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"ผู้ดูแลระบบเป็นผู้ควบคุม"</string> <string name="disabled" msgid="8017887509554714950">"ปิดอยู่"</string> <string name="external_source_trusted" msgid="1146522036773132905">"อนุญาต"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"ยกเลิก"</string> <string name="okay" msgid="949938843324579502">"ตกลง"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"การปลุกและการช่วยเตือน"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"อนุญาตให้ตั้งนาฬิกาปลุกหรือการช่วยเตือน"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"การปลุกและการช่วยเตือน"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"อนุญาตให้แอปนี้ตั้งนาฬิกาปลุกหรือเหตุการณ์ตามการจับเวลาอื่นๆ ซึ่งจะเป็นการปลุกระบบให้แอปทำงานแม้ว่าคุณไม่ได้ใช้อุปกรณ์อยู่ก็ตาม โปรดทราบว่าการเพิกถอนสิทธิ์นี้อาจทำให้แอปทำงานผิดปกติ นั่นคือการปลุกที่แอปตั้งเวลาไว้จะใช้ไม่ได้อีก"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"กำหนดเวลา การปลุก การช่วยเตือน เหตุการณ์"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"อนุญาตให้ตั้งปลุกและการช่วยเตือน"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"การปลุกและการช่วยเตือน"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"อนุญาตให้แอปตั้งปลุกและกำหนดเวลาการดำเนินการอื่นๆ ระบบอาจใช้แอปนี้เมื่อคุณไม่ได้ใช้โทรศัพท์ ซึ่งอาจใช้แบตเตอรี่มากขึ้น หากสิทธิ์ดังกล่าวปิดอยู่ แอปอาจทำงานไม่ปกติ และการปลุกจะไม่ทำงานตามกำหนดเวลา"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"อนุญาตให้แอปตั้งปลุกและกำหนดเวลาการดำเนินการอื่นๆ ระบบอาจใช้แอปนี้เมื่อคุณไม่ได้ใช้แท็บเล็ต ซึ่งอาจใช้แบตเตอรี่มากขึ้น หากสิทธิ์ดังกล่าวปิดอยู่ แอปอาจทำงานไม่ปกติ และการปลุกจะไม่ทำงานตามกำหนดเวลา"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"อนุญาตให้แอปตั้งปลุกและกำหนดเวลาการดำเนินการอื่นๆ ระบบอาจใช้แอปนี้เมื่อคุณไม่ได้ใช้อุปกรณ์ ซึ่งอาจใช้แบตเตอรี่มากขึ้น หากสิทธิ์ดังกล่าวปิดอยู่ แอปอาจทำงานไม่ปกติ และการปลุกจะไม่ทำงานตามกำหนดเวลา"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"กำหนดเวลา การปลุก การช่วยเตือน นาฬิกา"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"เปิด"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"เปิด \"ห้ามรบกวน\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"ไม่เลย"</string> @@ -562,11 +563,10 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"ตั้งค่าล็อก"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"เปลี่ยนเป็น <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"กำลังสร้างผู้ใช้ใหม่…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"สร้างผู้ใช้ใหม่ไม่ได้"</string> <string name="user_nickname" msgid="262624187455825083">"ชื่อเล่น"</string> - <string name="guest_new_guest" msgid="3482026122932643557">"เพิ่มผู้เข้าร่วม"</string> - <string name="guest_exit_guest" msgid="5908239569510734136">"นำผู้เข้าร่วมออก"</string> + <string name="guest_new_guest" msgid="3482026122932643557">"เพิ่มผู้ใช้ชั่วคราว"</string> + <string name="guest_exit_guest" msgid="5908239569510734136">"นำผู้ใช้ชั่วคราวออก"</string> <string name="guest_nickname" msgid="6332276931583337261">"ผู้ใช้ชั่วคราว"</string> <string name="user_image_take_photo" msgid="467512954561638530">"ถ่ายรูป"</string> <string name="user_image_choose_photo" msgid="1363820919146782908">"เลือกรูปภาพ"</string> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index 0c072caf6ba1..ad7e5577c9b7 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"I-enable ang pagta-transcode"</string> <string name="transcode_default" msgid="3784803084573509491">"Ipagpalagay na sinusuportahan ng mga app ang mga modernong format"</string> <string name="transcode_notification" msgid="5560515979793436168">"Ipakita ang mga notification sa pag-transcode"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"I-disable ang cache ng pag-transcode"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Mga tumatakbong serbisyo"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Tingnan at kontrolin ang mga kasalukuyang tumatakbong serbisyo"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Pagpapatupad sa WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Baka mag-shut down na ang tablet (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Baka mag-shut down na ang device (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> na lang bago mapuno"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> na lang bago mapuno"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Ino-optimize para sa tagal ng baterya"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Hindi Kilala"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Nagcha-charge"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Mabilis na charge"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Mabagal na charge"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Wireless na nagcha-charge"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Hindi nagcha-charge"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Nakasaksak, hindi makapag-charge sa ngayon"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Nasingil"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Pinapamahalaan ng admin"</string> <string name="disabled" msgid="8017887509554714950">"Naka-disable"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Pinapayagan"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Kanselahin"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Mga alarm at paalala"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Payagang magtakda ng mga alarm o paalala"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Mga alarm at paalala"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Payagan ang app na ito na mag-iskedyul ng mga alarm o iba pang event na batay sa timing. Magbibigay-daan ito sa app na mag-wake at gumana kahit na hindi mo ginagamit ang device. Tandaang kapag binawi ang pahintulot na ito, posibleng hindi gumana nang maayos ang app, partikular dito, hindi na gagana ang anumang alarm na naiskedyul ng app."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"iskedyul, alarm, paalala, event"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Payagan ang pagtakda ng mga alarm at paalala"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Mga alarm at paalala"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Payagan ang app na ito na magtakda ng mga alarm at mag-iskedyul ng iba pang aksyon. Posibleng gamitin ang app na ito kapag hindi mo ginagamit ang iyong telepono, na posibleng gumamit ng mas maraming baterya. Kung naka-off ang pahintulot na ito, posibleng hindi gumana nang normal ang app na ito, at hindi gagana ang mga alarm nito gaya ng nakaiskedyul."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Payagan ang app na ito na magtakda ng mga alarm at mag-iskedyul ng iba pang aksyon. Posibleng gamitin ang app na ito kapag hindi mo ginagamit ang iyong tablet, na posibleng gumamit ng mas maraming baterya. Kung naka-off ang pahintulot na ito, posibleng hindi gumana nang normal ang app na ito, at hindi gagana ang mga alarm nito gaya ng nakaiskedyul."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Payagan ang app na ito na magtakda ng mga alarm at mag-iskedyul ng iba pang aksyon. Posibleng gamitin ang app na ito kapag hindi mo ginagamit ang iyong device, na posibleng gumamit ng mas maraming baterya. Kung naka-off ang pahintulot na ito, posibleng hindi gumana nang normal ang app na ito, at hindi gagana ang mga alarm nito gaya ng nakaiskedyul."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"iskedyul, alarm, paalala, orasan"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"I-on"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"I-on ang Huwag Istorbohin"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Hindi kailanman"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Itakda ang lock"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Lumipat sa <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Gumagawa ng bagong user…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Hindi nakagawa ng bagong user"</string> <string name="user_nickname" msgid="262624187455825083">"Nickname"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Magdagdag ng bisita"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Alisin ang bisita"</string> diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml index 2ac7fe2a9cc1..b4dcfba953b3 100644 --- a/packages/SettingsLib/res/values-tr/arrays.xml +++ b/packages/SettingsLib/res/values-tr/arrays.xml @@ -185,7 +185,7 @@ </string-array> <string-array name="select_logpersist_summaries"> <item msgid="97587758561106269">"Kapalı"</item> - <item msgid="7126170197336963369">"Günlük arabelleklerin tümü"</item> + <item msgid="7126170197336963369">"Günlük arabelleklerinin tümü"</item> <item msgid="7167543126036181392">"Radyo günlük arabellekleri hariç tümü"</item> <item msgid="5135340178556563979">"yalnızca çekirdek günlük arabelleği"</item> </string-array> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index fc9bd9e99cd2..f80a32e180e8 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -83,7 +83,7 @@ <string name="bluetooth_battery_level_untethered" msgid="4002282355111504349">"Sol: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_0">%1$s</xliff:g> pil, Sağ: <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE_1">%2$s</xliff:g> pil"</string> <string name="bluetooth_active_no_battery_level" msgid="4155462233006205630">"Etkin"</string> <string name="bluetooth_profile_a2dp" msgid="4632426382762851724">"Medya sesi"</string> - <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Telefon çağrıları"</string> + <string name="bluetooth_profile_headset" msgid="5395952236133499331">"Telefon aramaları"</string> <string name="bluetooth_profile_opp" msgid="6692618568149493430">"Dosya aktarımı"</string> <string name="bluetooth_profile_hid" msgid="2969922922664315866">"Giriş cihazı"</string> <string name="bluetooth_profile_pan" msgid="1006235139308318188">"İnternet erişimi"</string> @@ -214,7 +214,7 @@ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Mevcut cihazları görmek ve kullanmak için kablosuz hata ayıklamayı açın"</string> <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Cihazı QR kodu ile eşle"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Yeni cihazları QR kodu tarayıcıyı kullanarak eşleyin"</string> - <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Eşleme kodu ile cihaz eşleme"</string> + <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Eşleme kodu ile cihaz eşle"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Yeni cihazları altı basamaklı kodu kullanarak eşleyin"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Eşlenen cihazlar"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Şu anda bağlı"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Kod dönüştürmeyi etkinleştir"</string> <string name="transcode_default" msgid="3784803084573509491">"Uygulamaların modern biçimleri desteklediğini varsay"</string> <string name="transcode_notification" msgid="5560515979793436168">"Kod dönüştürme bildirimlerini göster"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Kod dönüştürme önbelleğini devre dışı bırak"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Çalışan hizmetler"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Şu anda çalışan hizmetleri görüntüle ve denetle"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Web Görünümü kullanımı"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Tablet kısa süre içinde kapanabilir(<xliff:g id="LEVEL">%1$s</xliff:g>"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Cihaz kısa süre içinde kapanabilir (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Tamamen şarj olmasına <xliff:g id="TIME">%1$s</xliff:g> kaldı"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - Tamamen şarj olmasına <xliff:g id="TIME">%2$s</xliff:g> kaldı"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Pil sağlığı için optimize ediliyor"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Bilinmiyor"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Şarj oluyor"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Hızlı şarj oluyor"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Yavaş şarj oluyor"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Kablosuz şarj oluyor"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Şarj olmuyor"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Prize takıldı, şu anda şarj olamıyor"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Şarj oldu"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Yönetici tarafından denetleniyor"</string> <string name="disabled" msgid="8017887509554714950">"Devre dışı"</string> <string name="external_source_trusted" msgid="1146522036773132905">"İzin verildi"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"İptal"</string> <string name="okay" msgid="949938843324579502">"Tamam"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Alarmlar ve hatırlatıcılar"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Alarm veya hatırlatıcı kurmaya izin ver"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Alarmlar ve hatırlatıcılar"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Bu uygulamanın alarm veya başka zaman bazlı etkinlikleri kurmasına izin verin. Bu, cihazı kullanmadığınız zamanlarda bile uygulamanın uyanmasına ve çalışmasına izin verir. Bu iznin iptal edilmesinin uygulamanın düzgün çalışmasına engel olabileceğini ve özellikle uygulamanın kurmuş olduğu alarmların artık çalışmayacağını unutmayın."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"program, alarm, hatırlatıcı, etkinlik"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Alarm ve hatırlatıcı ayarlanmasına izin ver"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Alarmlar ve hatırlatıcılar"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Bu uygulamanın, alarmlar kurup başka işlemler programlamasına izin verir. Telefonunuzu kullanmadığınız sırada bu uygulama kullanılabilir. Bu da daha fazla pil kullanımına neden olabilir. Bu izin kapatılırsa hem bu uygulama işlevini normal şekilde yerine getirmeyebilir hem de alarmları programladığı gibi çalışmayabilir."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Bu uygulamanın, alarmlar kurup başka işlemler programlamasına izin verir. Tabletinizi kullanmadığınız sırada bu uygulama kullanılabilir. Bu da daha fazla pil kullanımına neden olabilir. Bu izin kapatılırsa hem bu uygulama işlevini normal şekilde yerine getirmeyebilir hem de alarmları programladığı gibi çalışmayabilir."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Bu uygulamanın, alarmlar kurup başka işlemler programlamasına izin verir. Cihazınızı kullanmadığınız sırada bu uygulama kullanılabilir. Bu da daha fazla pil kullanımına neden olabilir. Bu izin kapatılırsa hem bu uygulama işlevini normal şekilde yerine getirmeyebilir hem de alarmları programladığı gibi çalışmayabilir."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"program, alarm, hatırlatıcı, saat"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Aç"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Rahatsız Etmeyin\'i açın"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Hiçbir zaman"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Kilidi ayarla"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> hesabına geç"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Yeni kullanıcı oluşturuluyor…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Yeni kullanıcı oluşturulamadı"</string> <string name="user_nickname" msgid="262624187455825083">"Takma ad"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Misafir ekle"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Misafir oturumunu kaldır"</string> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index e08b51515e42..292ec6220f63 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Увімкнути перекодування"</string> <string name="transcode_default" msgid="3784803084573509491">"Вважати, що додатки підтримують сучасні формати"</string> <string name="transcode_notification" msgid="5560515979793436168">"Показувати сповіщення про перекодування"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Вимкнути кеш перекодування"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Запущені сервіси"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Переглянути й налаштувати запущені сервіси"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Застосування WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Планшет може невдовзі вимкнутися (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Пристрій може невдовзі вимкнутися (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> до повного заряду"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до повного заряду"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Оптимізація для збереження заряду акумулятора"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Невідомо"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Заряджається"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Швидке заряджання"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Повільне заряджання"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Бездротове заряджання"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не заряджається"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Підключено, не заряджається"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Заряджено"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Керується адміністратором"</string> <string name="disabled" msgid="8017887509554714950">"Вимкнено"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Дозволено"</string> @@ -507,10 +506,12 @@ <string name="cancel" msgid="5665114069455378395">"Скасувати"</string> <string name="okay" msgid="949938843324579502">"ОК"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Будильники й нагадування"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Дозволити створювати будильники або нагадування"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Будильники й нагадування"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Увімкніть, щоб дозволити додатку планувати будильники або нагадування про інші події. Тоді він зможе виходити з режиму сну й запускатися, навіть якщо ви не користуєтеся пристроєм. Зверніть увагу: якщо відкликати цей дозвіл, додаток може не працювати належним чином, зокрема це стосується всіх запланованих у додатку будильників."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"запланувати, будильник, нагадування, подія"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Дозволити встановлювати будильники й нагадування"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Будильники й нагадування"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Дозвольте цьому додатку встановлювати будильники й планувати інші події. Цей додаток може працювати, коли ви не користуєтеся телефоном. Через це акумулятор може розряджатися швидше. Якщо цей дозвіл не надано, додаток не зможе працювати належно й будильники не спрацьовуватимуть за графіком."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Дозвольте цьому додатку встановлювати будильники й планувати інші події. Цей додаток може працювати, коли ви не користуєтеся планшетом. Через це акумулятор може розряджатися швидше. Якщо цей дозвіл не надано, додаток не зможе працювати належно й будильники не спрацьовуватимуть за графіком."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Дозвольте цьому додатку встановлювати будильники й планувати інші події. Цей додаток може працювати, коли ви не користуєтеся пристроєм. Через це акумулятор може розряджатися швидше. Якщо цей дозвіл не надано, додаток не зможе працювати належно й будильники не спрацьовуватимуть за графіком."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"запланувати, будильник, нагадування, годинник"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Увімкнути"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Увімкнути режим \"Не турбувати\""</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Ніколи"</string> @@ -564,8 +565,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Налаштувати блокування"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Перейти до користувача <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Створення нового користувача…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Не вдалося створити користувача"</string> <string name="user_nickname" msgid="262624187455825083">"Псевдонім"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Додати гостя"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Видалити гостя"</string> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index 0909efb63a8c..4a3800dfacef 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"ٹرانسکوڈنگ فعال کریں"</string> <string name="transcode_default" msgid="3784803084573509491">"فرض کریں کہ ایپس جدید فارمیٹس کو سپورٹ کرتی ہیں"</string> <string name="transcode_notification" msgid="5560515979793436168">"ٹرانسکوڈنگ اطلاعات دکھائیں"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"ٹرانسکوڈنگ کیش غیر فعال کریں"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"چل رہی سروسز"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"فی الحال چل رہی سروسز دیکھیں اور انہیں کنٹرول کریں"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView کا نفاذ"</string> @@ -424,7 +425,7 @@ <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (سرخ سبز)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (نیلا پیلا)"</string> <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"رنگ کی اصلاح"</string> - <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"آپ کے آلے پر رنگوں کے ڈسپلے ہونے کے طریقے کو ایڈجسٹ کریں۔ یہ درج ذیل کے لیے مددگار ثابت ہوسکتا ہے :<br/>&ltlt;br/> <ol><li>جب آپ رنگوں کو مزید درست طریقے سے دیکھنا چاہیں </li> <li>&nbsp;فوکس کرنے میں مدد کرنے کے لئے رنگوں کو ہٹانا چاہیں </li> </ol>"</string> + <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"آپ کے آلے پر رنگوں کے ڈسپلے ہونے کے طریقے کو ایڈجسٹ کریں۔ یہ درج ذیل کے لیے مددگار ثابت ہوسکتا ہے:<br/><br/> <ol> <li>&nbsp;جب آپ رنگوں کو مزید درست طریقے سے دیکھنا چاہیں</li> <li>&nbsp;فوکس کرنے میں مدد کرنے کے لئے رنگوں کو ہٹانا چاہیں</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> کے ذریعہ منسوخ کردیا گیا"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> <string name="power_remaining_duration_only" msgid="8264199158671531431">"تقریباً <xliff:g id="TIME_REMAINING">%1$s</xliff:g> باقی ہے"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ٹیبلیٹ جلد ہی بند ہو سکتا ہے (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"آلہ جلد ہی بند ہو سکتا ہے (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"مکمل چارج ہونے میں <xliff:g id="TIME">%1$s</xliff:g> باقی ہے"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"مکمل چارج ہونے میں <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> باقی ہے"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - بیٹری کی صحت کیلئے بہتر بنایا جا رہا ہے"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"نامعلوم"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"چارج ہو رہا ہے"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"تیزی سے چارج ہو رہا ہے"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"آہستہ چارج ہو رہا ہے"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"وائرلیس طریقے سے چارج ہو رہی ہے"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"چارج نہیں ہو رہا ہے"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"پلگ ان ہے، ابھی چارج نہیں کر سکتے"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"چارج ہو گئی"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"کنٹرول کردہ بذریعہ منتظم"</string> <string name="disabled" msgid="8017887509554714950">"غیر فعال"</string> <string name="external_source_trusted" msgid="1146522036773132905">"اجازت ہے"</string> @@ -504,16 +503,13 @@ <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"کم وقت۔"</string> <string name="cancel" msgid="5665114069455378395">"منسوخ کریں"</string> <string name="okay" msgid="949938843324579502">"ٹھیک ہے"</string> - <!-- no translation found for alarms_and_reminders_label (6918395649731424294) --> - <skip /> - <!-- no translation found for alarms_and_reminders_switch_title (186992351401152744) --> - <skip /> - <!-- no translation found for alarms_and_reminders_title (2988400785896875237) --> - <skip /> - <!-- no translation found for alarms_and_reminders_footer_title (5882788882647778753) --> - <skip /> - <!-- no translation found for keywords_alarms_and_reminders (8882739572152019456) --> - <skip /> + <string name="alarms_and_reminders_label" msgid="6918395649731424294">"الارمز اور یاد دہانیاں"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"الارمز اور یاد دہانیاں سیٹ کرنے کی اجازت دیں"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"الارمز اور یاد دہانیاں"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"اس ایپ کو الارمز سیٹ کرنے اور دیگر کارروائیوں کو شیڈول کرنے کی اجازت دیں۔ اس ایپ کا استعمال اس وقت کیا جا سکتا ہے جب آپ اپنا آلہ استعمال نہ کر رہے ہوں جس میں زیادہ بیٹری کا استعمال ہو سکتا ہے۔ اجازت غیر فعال ہونے کی صورت میں ہو سکتا ہے یہ ایپ عام طور پر کام نہ کرے اور اس کے الارمز شیڈول کے مطابق کام نہیں کریں گے۔"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"اس ایپ کو الارمز سیٹ کرنے اور دیگر کارروائیوں کو شیڈول کرنے کی اجازت دیں۔ اس ایپ کا استعمال اس وقت کیا جا سکتا ہے جب آپ اپنا آلہ استعمال نہ کر رہے ہوں جس میں زیادہ بیٹری کا استعمال ہو سکتا ہے۔ اجازت غیر فعال ہونے کی صورت میں ہو سکتا ہے یہ ایپ عام طور پر کام نہ کرے اور اس کے الارمز شیڈول کے مطابق کام نہیں کریں گے۔"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"اس ایپ کو الارمز سیٹ کرنے اور دیگر کارروائیوں کو شیڈول کرنے کی اجازت دیں۔ اس ایپ کا استعمال اس وقت کیا جا سکتا ہے جب آپ اپنا آلہ استعمال نہ کر رہے ہوں جس میں زیادہ بیٹری کا استعمال ہو سکتا ہے۔ اجازت غیر فعال ہونے کی صورت میں ہو سکتا ہے یہ ایپ عام طور پر کام نہ کرے اور اس کے الارمز شیڈول کے مطابق کام نہیں کریں گے۔"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"شیڈول، الارم، یاد دہانی، گھڑی"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"آن کریں"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"\'ڈسٹرب نہ کریں\' کو آن کریں"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"کبھی نہیں"</string> @@ -566,9 +562,8 @@ <string name="user_need_lock_message" msgid="4311424336209509301">"ایک محدود پروفائل بنانے سے پہلے، آپ کو اپنی ایپس اور ذاتی ڈیٹا کو محفوظ کرنے کیلئے ایک اسکرین لاک سیٹ اپ کرنا ہوگا۔"</string> <string name="user_set_lock_button" msgid="1427128184982594856">"لاک سیٹ کریں"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"<xliff:g id="USER_NAME">%s</xliff:g> پر سوئچ کریں"</string> - <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"نیا صارف تخلیق کرنا…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"نیا صارف تخلیق ہو رہا ہے…"</string> + <string name="add_user_failed" msgid="4809887794313944872">"نیا صارف بنانے میں ناکام"</string> <string name="user_nickname" msgid="262624187455825083">"عرفی نام"</string> <string name="guest_new_guest" msgid="3482026122932643557">"مہمان کو شامل کریں"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"مہمان کو ہٹائیں"</string> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index f83fe1d25eb8..228ba7789443 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -35,7 +35,7 @@ <string name="wifi_not_in_range" msgid="1541760821805777772">"Xizmat doirasidan tashqarida"</string> <string name="wifi_no_internet_no_reconnect" msgid="821591791066497347">"Avtomatik ravishda ulanilmaydi"</string> <string name="wifi_no_internet" msgid="1774198889176926299">"Internet aloqasi yo‘q"</string> - <string name="saved_network" msgid="7143698034077223645">"<xliff:g id="NAME">%1$s</xliff:g> tomonidan saqlangan"</string> + <string name="saved_network" msgid="7143698034077223645">"Saqlangan: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="connected_to_metered_access_point" msgid="9179693207918156341">"Trafik hisoblanadigan tarmoqqa ulandi"</string> <string name="connected_via_network_scorer" msgid="7665725527352893558">"%1$s orqali avtomatik ulandi"</string> <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"Tarmoqlar reytingi muallifi orqali avtomatik ulandi"</string> @@ -147,7 +147,7 @@ <string name="tether_settings_title_usb" msgid="3728686573430917722">"USB modem"</string> <string name="tether_settings_title_wifi" msgid="4803402057533895526">"Ixcham hotspot"</string> <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"Bluetooth modem"</string> - <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Modem"</string> + <string name="tether_settings_title_usb_bluetooth" msgid="1727111807207577322">"Modem rejimi"</string> <string name="tether_settings_title_all" msgid="8910259483383010470">"Modem rejimi"</string> <string name="managed_user_title" msgid="449081789742645723">"Barcha ishga oid ilovalar"</string> <string name="user_guest" msgid="6939192779649870792">"Mehmon"</string> @@ -212,9 +212,9 @@ <string name="adb_wireless_error" msgid="721958772149779856">"Xato"</string> <string name="adb_wireless_settings" msgid="2295017847215680229">"Wi-Fi orqali debagging"</string> <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Mavjud qurilmalarni koʻrish va ulardan foydalanish uchun Wi-Fi orqali debagging funksiyasini yoqing"</string> - <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR kod yordamida qurilmani ulang"</string> + <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Qurilmani QR kod orqali ulash"</string> <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"QR kod skaneri yordamida yangi qurilmalarni ulang"</string> - <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Ulanish kodi yordamida qurilmani ulang"</string> + <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Qurilmani ulanish kodi orqali ulash"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Olti xonali kod yordamida yangi qurilmalarni ulash mumkin"</string> <string name="adb_paired_devices_title" msgid="5268997341526217362">"Ulangan qurilmalar"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Hozirda ulangan"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Transkripsiyasini yoqish"</string> <string name="transcode_default" msgid="3784803084573509491">"Ilovalarda zamonaviy kodlash formatlari ishlaydi deb hisoblash"</string> <string name="transcode_notification" msgid="5560515979793436168">"Transkripsiya bildirishnomalarini chiqarish"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Transkripsiya keshini faolsizlantirish"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Ishlab turgan ilovalar"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Ishlab turgan ilovalarni ko‘rish va boshqarish"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView ta’minotchisi"</string> @@ -423,7 +424,7 @@ <string name="daltonizer_mode_deuteranomaly" msgid="3507284319584683963">"Deyteranomaliya (qizil/yashil)"</string> <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaliya (qizil/yashil)"</string> <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaliya (ko‘k/sariq)"</string> - <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Rangni tuzatish"</string> + <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Ranglarni tuzatish"</string> <string name="accessibility_display_daltonizer_preference_subtitle" msgid="2333641630205214702">"Qurilmadagi ranglar qanday chiqishini moslash Bu quyidagi amallarni bajarishga yordam beradi:<br/><br/> <ol> <li>&nbsp;Ranglarni yanada aniq koʻrish</li> <li>&nbsp;Diqqatni jamlash uchun ranglarni olib tashlash</li> </ol>"</string> <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> bilan almashtirildi"</string> <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Planshet tez orada oʻchib qolishi mumkin (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Qurilma tez orada oʻchib qolishi mumkin (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Quvvat olishiga <xliff:g id="TIME">%1$s</xliff:g> qoldi"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - Quvvat olishiga <xliff:g id="TIME">%2$s</xliff:g> qoldi"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Batareya uchun optimizatsiya"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Noma’lum"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Quvvat olmoqda"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Tezkor quvvat olmoqda"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Sekin quvvat olmoqda"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Simsiz quvvat olmoqda"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Quvvat olmayapti"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Ulangan, lekin quvvat olmayapti"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Quvvat oldi"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Administrator tomonidan boshqariladi"</string> <string name="disabled" msgid="8017887509554714950">"Yoqilmagan"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Ruxsat berilgan"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Bekor qilish"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Signal va eslatmalar"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Signal va eslatmalar belgilashga ruxsat berish"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Signal va eslatmalar"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Bu ilovaga signallarni va boshqa vaqtga asoslangan tadbirlarni rejalashtirishga ruxsat berish. Qurilmadan foydalanmasangiz ham ilova uyqu rejimidan chiqadi va ishga tushadi. Bu ruxsatni bekor qilsangiz, ilova ishlamaydi va u oʻrnatgan barcha signallar oʻchiriladi."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"reja, signal, eslatma, tadbir"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Signal va eslatmalarni sozlashga ruxsat berish"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Signal va eslatmalar"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Bu ilovaga signal oʻrnatish va boshqa amallarni rejalashtirishga ruxsat berish Bu ilova telefon qoʻlingizda emasligida ham ishlaydi va batareya quvvatini koʻproq sarflaydi. Agar ruxsat berilmasa, bu ilova odatiy ishlaydi va uning signallari rejalashtirilmaydi."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Bu ilovaga signal oʻrnatish va boshqa amallarni rejalashtirishga ruxsat berish Bu ilova planshet qoʻlingizda emasligida ham ishlaydi va batareya quvvatini koʻproq sarflaydi. Agar ruxsat berilmasa, bu ilova odatiy ishlaydi va uning signallari rejalashtirilmaydi."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Bu ilovaga signal oʻrnatish va boshqa amallarni rejalashtirishga ruxsat berish Bu ilova qurilma qoʻlingizda emasligida ham ishlaydi va batareya quvvatini koʻproq sarflaydi. Agar ruxsat berilmasa, bu ilova odatiy ishlaydi va uning signallari rejalashtirilmaydi."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"reja, signal, eslatma, soat"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Yoqish"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Bezovta qilinmasin rejimini yoqing"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Hech qachon"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Qulf o‘rnatish"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Bunga almashish: <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Yangi foydalanuvchi yaratilmoqda…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Yangi foydalanuvchi yaratilmadi"</string> <string name="user_nickname" msgid="262624187455825083">"Nik"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Mehmon kiritish"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Mehmonni olib tashlash"</string> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index ab415f9b9d59..36df4cd82da4 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -216,7 +216,7 @@ <string name="adb_pair_method_qrcode_summary" msgid="7130694277228970888">"Ghép nối các thiết bị mới bằng trình quét mã QR"</string> <string name="adb_pair_method_code_title" msgid="1122590300445142904">"Ghép nối thiết bị bằng mã ghép nối"</string> <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Ghép nối các thiết bị mới bằng mã gồm 6 chữ số"</string> - <string name="adb_paired_devices_title" msgid="5268997341526217362">"Thiết bị được ghép nối"</string> + <string name="adb_paired_devices_title" msgid="5268997341526217362">"Thiết bị đã ghép nối"</string> <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Hiện đang kết nối"</string> <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Thông tin chi tiết về thiết bị"</string> <string name="adb_device_forget" msgid="193072400783068417">"Xóa"</string> @@ -255,7 +255,7 @@ <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Sử dụng địa chỉ MAC Wi‑Fi ngẫu nhiên"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Dữ liệu di động luôn hoạt động"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Tăng tốc phần cứng khi chia sẻ Internet"</string> - <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Hiển thị các thiết bị Bluetooth không có tên"</string> + <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Hiện các thiết bị Bluetooth không có tên"</string> <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Vô hiệu hóa âm lượng tuyệt đối"</string> <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Bật tính năng Gabeldorsche"</string> <string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Phiên bản Bluetooth AVRCP"</string> @@ -271,7 +271,7 @@ <string name="bluetooth_select_a2dp_codec_bits_per_sample_dialog_title" msgid="4898693684282596143">"Kích hoạt chế độ chọn codec\nâm thanh Bluetooth: Số bit trên mỗi mẫu"</string> <string name="bluetooth_select_a2dp_codec_channel_mode" msgid="364277285688014427">"Chế độ kênh âm thanh Bluetooth"</string> <string name="bluetooth_select_a2dp_codec_channel_mode_dialog_title" msgid="2076949781460359589">"Kích hoạt chế độ chọn codec\nâm thanh Bluetooth: Chế độ kênh"</string> - <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Codec LDAC âm thanh Bluetooth: Chất lượng phát lại"</string> + <string name="bluetooth_select_a2dp_codec_ldac_playback_quality" msgid="3233402355917446304">"Codec LDAC âm thanh qua Bluetooth: Chất lượng phát"</string> <string name="bluetooth_select_a2dp_codec_ldac_playback_quality_dialog_title" msgid="7274396574659784285">"Kích hoạt chế độ chọn codec LDAC\nâm thanh Bluetooth: Chất lượng phát"</string> <string name="bluetooth_select_a2dp_codec_streaming_label" msgid="2040810756832027227">"Truyền trực tuyến: <xliff:g id="STREAMING_PARAMETER">%1$s</xliff:g>"</string> <string name="select_private_dns_configuration_title" msgid="7887550926056143018">"DNS riêng"</string> @@ -279,7 +279,7 @@ <string name="private_dns_mode_off" msgid="7065962499349997041">"Tắt"</string> <string name="private_dns_mode_opportunistic" msgid="1947864819060442354">"Tự động"</string> <string name="private_dns_mode_provider" msgid="3619040641762557028">"Tên máy chủ của nhà cung cấp DNS riêng"</string> - <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Nhập tên máy chủ của nhà cung cấp DNS"</string> + <string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"Nhập tên máy chủ"</string> <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Không thể kết nối"</string> <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Hiển thị tùy chọn chứng nhận hiển thị không dây"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Tăng mức ghi nhật ký Wi‑Fi, hiển thị mỗi SSID RSSI trong bộ chọn Wi‑Fi"</string> @@ -334,11 +334,11 @@ <string name="strict_mode_summary" msgid="1838248687233554654">"Màn hình nháy khi ứng dụng thực hiện các hoạt động dài trên luồng chính"</string> <string name="pointer_location" msgid="7516929526199520173">"Vị trí con trỏ"</string> <string name="pointer_location_summary" msgid="957120116989798464">"Lớp phủ màn hình hiển thị dữ liệu chạm hiện tại"</string> - <string name="show_touches" msgid="8437666942161289025">"Hiển thị số lần nhấn"</string> + <string name="show_touches" msgid="8437666942161289025">"Hiện số lần nhấn"</string> <string name="show_touches_summary" msgid="3692861665994502193">"Hiển thị phản hồi trực quan cho các lần nhấn"</string> - <string name="show_screen_updates" msgid="2078782895825535494">"Hiển thị bản cập nhật giao diện"</string> + <string name="show_screen_updates" msgid="2078782895825535494">"Hiện bản cập nhật giao diện"</string> <string name="show_screen_updates_summary" msgid="2126932969682087406">"Chuyển nhanh toàn bộ các giao diện cửa sổ khi các giao diện này cập nhật"</string> - <string name="show_hw_screen_updates" msgid="2021286231267747506">"Hiện cập nhật chế độ xem"</string> + <string name="show_hw_screen_updates" msgid="2021286231267747506">"Hiện bản cập nhật chế độ xem"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Chuyển nhanh chế độ xem trong cửa sổ khi được vẽ"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Hiện bản cập nhật lớp phần cứng"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Lớp phần cứng flash có màu xanh khi chúng cập nhật"</string> @@ -347,10 +347,10 @@ <string name="disable_overlays_summary" msgid="1954852414363338166">"Luôn sử dụng GPU để tổng hợp màn hình"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Mô phỏng không gian màu"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Bật theo dõi OpenGL"</string> - <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Tắt định tuyến âm thanh USB"</string> - <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Tắt định tuyến tự động tới thiết bị âm thanh ngoại vi USB"</string> - <string name="debug_layout" msgid="1659216803043339741">"Hiển thị ranh giới bố cục"</string> - <string name="debug_layout_summary" msgid="8825829038287321978">"Hiển thị viền đoạn video, lề, v.v.."</string> + <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Tắt chế độ định tuyến âm thanh USB"</string> + <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Tắt chế độ tự động định tuyến tới thiết bị âm thanh ngoại vi USB"</string> + <string name="debug_layout" msgid="1659216803043339741">"Hiện ranh giới bố cục"</string> + <string name="debug_layout_summary" msgid="8825829038287321978">"Hiện viền của đoạn video, lề, v.v.."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Buộc hướng bố cục phải sang trái"</string> <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Buộc hướng bố cục màn hình phải sang trái cho tất cả ngôn ngữ"</string> <string name="force_msaa" msgid="4081288296137775550">"Bắt buộc 4x MSAA"</string> @@ -400,11 +400,12 @@ <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"Không hoạt động. Nhấn để chuyển đổi."</string> <string name="inactive_app_active_summary" msgid="8047630990208722344">"Hiện hoạt. Nhấn để chuyển đổi."</string> <string name="standby_bucket_summary" msgid="5128193447550429600">"Trạng thái chờ ứng dụng:<xliff:g id="BUCKET"> %s</xliff:g>"</string> - <string name="transcode_settings_title" msgid="2581975870429850549">"Cài đặt chuyển mã nội dung nghe nhìn"</string> + <string name="transcode_settings_title" msgid="2581975870429850549">"Cài đặt chuyển mã phương tiện"</string> <string name="transcode_user_control" msgid="6176368544817731314">"Ghi đè tùy chọn chuyển mã mặc định"</string> <string name="transcode_enable_all" msgid="2411165920039166710">"Bật tính năng chuyển mã"</string> <string name="transcode_default" msgid="3784803084573509491">"Giả định rằng các ứng dụng hỗ trợ định dạng hiện đại"</string> <string name="transcode_notification" msgid="5560515979793436168">"Hiển thị thông báo chuyển mã"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Vô hiệu hóa bộ nhớ đệm dùng để chuyển mã"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Các dịch vụ đang chạy"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Xem và kiểm soát các dịch vụ đang chạy"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Triển khai WebView"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Máy tính bảng có thể sắp tắt (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Thiết bị có thể sắp tắt (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> nữa là pin đầy"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> nữa là pin đầy"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Đang tối ưu hóa để cải thiện độ bền của pin"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Không xác định"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Đang sạc"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Đang sạc nhanh"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Đang sạc chậm"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Đang sạc không dây"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Hiện không sạc"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Đã cắm nhưng không thể sạc ngay"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Đã sạc"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Do quản trị viên kiểm soát"</string> <string name="disabled" msgid="8017887509554714950">"Đã tắt"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Được phép"</string> @@ -497,18 +496,20 @@ <string name="status_unavailable" msgid="5279036186589861608">"Không có"</string> <string name="wifi_status_mac_randomized" msgid="466382542497832189">"Địa chỉ MAC được gán ngẫu nhiên"</string> <plurals name="wifi_tether_connected_summary" formatted="false" msgid="6317236306047306139"> - <item quantity="other">%1$d thiết bị được kết nối</item> - <item quantity="one">%1$d thiết bị được kết nối</item> + <item quantity="other">%1$d thiết bị đã kết nối</item> + <item quantity="one">%1$d thiết bị đã kết nối</item> </plurals> <string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"Nhiều thời gian hơn."</string> <string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"Ít thời gian hơn."</string> <string name="cancel" msgid="5665114069455378395">"Hủy"</string> <string name="okay" msgid="949938843324579502">"OK"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Chuông báo và lời nhắc"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Cho phép đặt chuông báo hoặc lời nhắc"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Chuông báo và lời nhắc"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Cho phép ứng dụng này lên lịch chuông báo hoặc các sự kiện khác theo thời gian. Nhờ vậy, ứng dụng có thể bật và chạy ngay cả khi bạn không dùng thiết bị. Xin lưu ý rằng việc thu hồi quyền này có thể khiến ứng dụng gặp trục trặc, cụ thể là mọi chuông báo mà ứng dụng đã lên lịch sẽ không hoạt động nữa."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"lịch biểu, chuông báo, lời nhắc, sự kiện"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Cho phép đặt chuông báo và lời nhắc"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Chuông báo và lời nhắc"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Cho phép ứng dụng này đặt chuông báo và lên lịch thực hiện các thao tác khác. Ứng dụng này có thể được sử dụng khi bạn đang không dùng điện thoại. Việc này có thể làm tiêu hao nhiều pin hơn. Nếu quyền này tắt, ứng dụng có thể hoạt động không bình thường và các chuông báo của ứng dụng sẽ không hoạt động đúng như theo lịch."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Cho phép ứng dụng này đặt chuông báo và lên lịch thực hiện các thao tác khác. Ứng dụng này có thể được sử dụng khi bạn đang không dùng máy tính bảng. Việc này có thể làm tiêu hao nhiều pin hơn. Nếu quyền này tắt, ứng dụng có thể hoạt động không bình thường và các chuông báo của ứng dụng sẽ không hoạt động đúng như theo lịch."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Cho phép ứng dụng này đặt chuông báo và lên lịch thực hiện các thao tác khác. Ứng dụng này có thể được sử dụng khi bạn đang không dùng thiết bị. Việc này có thể làm tiêu hao nhiều pin hơn. Nếu quyền này tắt, ứng dụng có thể hoạt động không bình thường và các chuông báo của ứng dụng sẽ không hoạt động đúng như theo lịch."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"lịch biểu, chuông báo, lời nhắc, đồng hồ"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Bật"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Bật chế độ Không làm phiền"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Không bao giờ"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Thiết lập khóa"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Chuyển sang <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Đang tạo người dùng mới…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Không tạo được người dùng mới"</string> <string name="user_nickname" msgid="262624187455825083">"Biệt hiệu"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Thêm khách"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Xóa phiên khách"</string> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index 2d95ab1a68f3..4934e44d68f4 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml @@ -375,7 +375,7 @@ <string name="show_notification_channel_warnings_summary" msgid="68031143745094339">"当应用未经有效渠道发布通知时,在屏幕上显示警告"</string> <string name="force_allow_on_external" msgid="9187902444231637880">"强制允许将应用写入外部存储设备"</string> <string name="force_allow_on_external_summary" msgid="8525425782530728238">"允许将任何应用写入外部存储设备(无论清单值是什么)"</string> - <string name="force_resizable_activities" msgid="7143612144399959606">"强制将活动设为可调整大小"</string> + <string name="force_resizable_activities" msgid="7143612144399959606">"强制将 Activity 设为可调整大小"</string> <string name="force_resizable_activities_summary" msgid="2490382056981583062">"将所有 Activity 设为可配合多窗口环境调整大小(忽略清单值)。"</string> <string name="enable_freeform_support" msgid="7599125687603914253">"启用可自由调整的窗口"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"启用可自由调整的窗口这一实验性功能。"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"启用转码"</string> <string name="transcode_default" msgid="3784803084573509491">"假设应用支持现代格式"</string> <string name="transcode_notification" msgid="5560515979793436168">"显示转码通知"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"停用转码缓存"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"正在运行的服务"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"查看和控制当前正在运行的服务"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView 实现"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"平板电脑可能即将关机 (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"设备可能即将关机 (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"还需 <xliff:g id="TIME">%1$s</xliff:g>充满"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - 还需 <xliff:g id="TIME">%2$s</xliff:g>充满"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - 正在针对电池状况进行优化"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"未知"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"正在充电"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"正在快速充电"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"正在慢速充电"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"正在无线充电"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"未在充电"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"已插入电源,但是现在无法充电"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"已充满电"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"由管理员控制"</string> <string name="disabled" msgid="8017887509554714950">"已停用"</string> <string name="external_source_trusted" msgid="1146522036773132905">"允许"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"取消"</string> <string name="okay" msgid="949938843324579502">"确定"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"闹钟和提醒"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"允许设置闹钟或提醒"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"闹钟和提醒"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"允许该应用设置闹钟或其他在指定时间发生的活动。这样一来,即使您并未使用设备,该应用仍会唤醒并运行。请注意,撤消此权限可能会导致该应用出现故障,特别是该应用设置的所有闹钟都将不再生效。"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"设置, 闹钟, 提醒, 活动, schedule, alarm, reminder, event"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"允许设置闹钟和提醒"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"闹钟和提醒"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"允许该应用设置闹钟或安排其他操作的执行时间。该应用可能会在您未使用手机时运行,手机或许会比较耗电。如果您关闭此权限,该应用可能无法正常运行,已设置的闹钟将无法在排定的时间响起。"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"允许该应用设置闹钟或安排其他操作的执行时间。该应用可能会在您未使用平板电脑时运行,平板电脑或许会比较耗电。如果您关闭此权限,该应用可能无法正常运行,已设置的闹钟将无法在排定的时间响起。"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"允许该应用设置闹钟或安排其他操作的执行时间。该应用可能会在您未使用设备时运行,设备或许会比较耗电。如果您关闭此权限,该应用可能无法正常运行,已设置的闹钟将无法在排定的时间响起。"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"设置, 闹钟, 提醒, 时钟, schedule, alarm, reminder, clock"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"开启"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"开启勿扰模式"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"永不"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"设置屏幕锁定方式"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"切换到<xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"正在创建新用户…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"无法创建新用户"</string> <string name="user_nickname" msgid="262624187455825083">"昵称"</string> <string name="guest_new_guest" msgid="3482026122932643557">"添加访客"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"移除访客"</string> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index 3314f825ccf6..f46710e3ed7c 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"啟用轉碼功能"</string> <string name="transcode_default" msgid="3784803084573509491">"假設應用程式支援新型格式"</string> <string name="transcode_notification" msgid="5560515979793436168">"顯示轉碼通知"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"停用轉碼快取"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"執行中的服務"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"查看並控制目前正在執行中的服務"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView 設置"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"平板電腦可能即將關機 (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"裝置可能即將關機 (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g>後充滿電"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>後充滿電"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - 優化電池效能"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"未知"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"充電中"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"正在快速充電"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"正在慢速充電"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"無線充電中"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"非充電中"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"已連接電源插頭,但目前無法充電"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"已充滿電"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"已由管理員停用"</string> <string name="disabled" msgid="8017887509554714950">"已停用"</string> <string name="external_source_trusted" msgid="1146522036773132905">"允許"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"取消"</string> <string name="okay" msgid="949938843324579502">"確定"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"鬧鐘和提醒"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"允許設定鬧鐘或提醒"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"鬧鐘和提醒"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"允許此應用程式安排鬧鐘或其他有時限的活動。執行此操作後,即使您沒有使用裝置,應用程式仍可啟動並執行。請注意,撤消此權限可能會導致應用程式無法運作,尤其是應用程式設定的所有鬧鐘都將不會響鈴。"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"日程表, 鬧鐘, 提醒, 活動"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"允許設定鬧鐘和提醒"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"鬧鐘和提醒"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"允許此應用程式設定鬧鐘並安排其他操作。此應用程式可能會在您未使用手機時執行,裝置或會較耗電。如果關閉此權限,此應用程式可能無法正常運作,已設定的鬧鐘亦不會在預定的時間響起。"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"允許此應用程式設定鬧鐘並安排其他操作。此應用程式可能會在您未使用平板電腦時執行,裝置或會較耗電。如果關閉此權限,此應用程式可能無法正常運作,已設定的鬧鐘亦不會在預定的時間響起。"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"允許此應用程式設定鬧鐘並安排其他操作。此應用程式可能會在您未使用裝置時執行,裝置或會較耗電。如果關閉此權限,此應用程式可能無法正常運作,已設定的鬧鐘亦不會在預定的時間響起。"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"日程表, 鬧鐘, 提醒, 時鐘"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"開啟"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"開啟「請勿騷擾」模式"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"永不"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"設定上鎖畫面"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"切換至<xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"正在建立新使用者…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"無法建立新使用者"</string> <string name="user_nickname" msgid="262624187455825083">"暱稱"</string> <string name="guest_new_guest" msgid="3482026122932643557">"新增訪客"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"移除訪客"</string> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 95eae87912bd..2e77d6d6faf1 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -380,7 +380,7 @@ <string name="enable_freeform_support" msgid="7599125687603914253">"啟用自由形式視窗"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"啟用實驗版自由形式視窗的支援功能。"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"電腦備份密碼"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"電腦完整備份目前未受保護"</string> + <string name="local_backup_password_summary_none" msgid="7646898032616361714">"目前尚未設定密碼來保護完整的備份檔案 (透過電腦備份的檔案)"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"輕觸即可變更或移除電腦完整備份的密碼"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"已設定新備份密碼"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"新密碼與確認密碼不符。"</string> @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"啟用轉碼"</string> <string name="transcode_default" msgid="3784803084573509491">"假設應用程式支援新格式"</string> <string name="transcode_notification" msgid="5560515979793436168">"顯示轉碼通知"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"停用轉碼快取"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"正在運作的服務"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"查看並管理目前正在執行的服務"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"WebView 實作"</string> @@ -450,19 +451,17 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"平板電腦可能即將關機 (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"裝置可能即將關機 (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g>後充飽"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>後充飽"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - 最佳化調整電池狀態"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"不明"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"充電中"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"快速充電中"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"慢速充電中"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"正在進行無線充電"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"非充電中"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"已接上電源,但現在無法充電"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"充電完成"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"已由管理員停用"</string> <string name="disabled" msgid="8017887509554714950">"已停用"</string> <string name="external_source_trusted" msgid="1146522036773132905">"允許"</string> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"取消"</string> <string name="okay" msgid="949938843324579502">"確定"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"鬧鐘與提醒"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"允許設定鬧鐘或提醒"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"鬧鐘與提醒"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"允許這個應用程式安排鬧鐘或其他有時限的活動。如此一來,即使你並未使用裝置,應用程式仍可啟動並執行。請注意,如果撤銷這項權限,可能會導致應用程式無法運作,尤其是應用程式設定的所有鬧鐘都將不會響鈴。"</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"時間表, 鬧鐘, 提醒, 活動"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"允許設定鬧鐘和提醒"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"鬧鐘和提醒"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"允許這個應用程式設定鬧鐘及安排其他操作的執行時間。這個應用程式可能會在你未使用手機時執行,手機也許會比較耗電。如果關閉這項權限,這個應用程式可能無法正常運作,已設定的鬧鐘也不會在排定的時間響起。"</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"允許這個應用程式設定鬧鐘及安排其他操作的執行時間。這個應用程式可能會在你未使用平板電腦時執行,平板電腦也許會比較耗電。如果關閉這項權限,這個應用程式可能無法正常運作,已設定的鬧鐘也不會在排定的時間響起。"</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"允許這個應用程式設定鬧鐘及安排其他操作的執行時間。這個應用程式可能會在你未使用裝置時執行,裝置也許會比較耗電。如果關閉這項權限,這個應用程式可能無法正常運作,已設定的鬧鐘也不會在排定的時間響起。"</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"時間表, 鬧鐘, 提醒, 時鐘"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"開啟"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"開啟「零打擾」模式"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"永不"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"設定鎖定"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"切換至<xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"正在建立新使用者…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"無法建立新的使用者"</string> <string name="user_nickname" msgid="262624187455825083">"暱稱"</string> <string name="guest_new_guest" msgid="3482026122932643557">"新增訪客"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"移除訪客"</string> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index f5322a12df3a..30e231628dff 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -405,6 +405,7 @@ <string name="transcode_enable_all" msgid="2411165920039166710">"Nika amandla ukudlulisela ikhodi"</string> <string name="transcode_default" msgid="3784803084573509491">"Kuthathe njengokungathi izinhlelo zokusebenza zisekela amafomethi esimanje"</string> <string name="transcode_notification" msgid="5560515979793436168">"Bonisa izaziso zokudlulisela ikhodi"</string> + <string name="transcode_disable_cache" msgid="3160069309377467045">"Khubaza inqolobane yokudlulisela ikhodi"</string> <string name="runningservices_settings_title" msgid="6460099290493086515">"Amasevisi asebenzayo"</string> <string name="runningservices_settings_summary" msgid="1046080643262665743">"Buka futhi ulawule amasevisi asebenzayo okwamanje"</string> <string name="select_webview_provider_title" msgid="3917815648099445503">"Ukufakwa ke-WebView"</string> @@ -450,24 +451,22 @@ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"Ithebulethi ingacisha maduze (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"Idivayisi ingacisha maduze (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string> <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> - <!-- no translation found for power_remaining_charging_duration_only (8085099012811384899) --> - <skip /> - <!-- no translation found for power_charging_duration (6127154952524919719) --> - <skip /> + <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> okusele kuze kugcwale"</string> + <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> okusele kuze kugcwale"</string> <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Ilungiselela impilo yebhethri"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Akwaziwa"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Iyashaja"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Ishaja ngokushesha"</string> <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Ishaja kancane"</string> + <string name="battery_info_status_charging_wireless" msgid="8924722966861282197">"Iyashaja ngaphandle kwentambo"</string> <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ayishaji"</string> <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Kuxhunyiwe, ayikwazi ukushaja khona manje"</string> - <!-- no translation found for battery_info_status_full (1339002294876531312) --> - <skip /> + <string name="battery_info_status_full" msgid="1339002294876531312">"Kushajiwe"</string> <string name="disabled_by_admin_summary_text" msgid="5343911767402923057">"Kulawulwa umqondisi"</string> <string name="disabled" msgid="8017887509554714950">"Akusebenzi"</string> <string name="external_source_trusted" msgid="1146522036773132905">"Kuvumelekile"</string> <string name="external_source_untrusted" msgid="5037891688911672227">"Akuvumelekile"</string> - <string name="install_other_apps" msgid="3232595082023199454">"Faka izinhlelo zokusebenza ezingaziwa"</string> + <string name="install_other_apps" msgid="3232595082023199454">"Faka ama-app angaziwa"</string> <string name="home" msgid="973834627243661438">"Ikhaya lezilungiselelo"</string> <string-array name="battery_labels"> <item msgid="7878690469765357158">"0%"</item> @@ -505,10 +504,12 @@ <string name="cancel" msgid="5665114069455378395">"Khansela"</string> <string name="okay" msgid="949938843324579502">"KULUNGILE"</string> <string name="alarms_and_reminders_label" msgid="6918395649731424294">"Ama-alamu nezikhumbuzi"</string> - <string name="alarms_and_reminders_switch_title" msgid="186992351401152744">"Vumela ukusetha ama-alamu noma izikhumbuzi"</string> - <string name="alarms_and_reminders_title" msgid="2988400785896875237">"Ama-alamu nezikhumbuzi"</string> - <string name="alarms_and_reminders_footer_title" msgid="5882788882647778753">"Vumela le-app ukuthi ihlele ama-alamu noma eminye imicimbi esuselwe esikhathini. Lokhu kuzovumela i-app ukuthi ivuke futhi isebenze lapho ungasebenzisi idivayisi. Qaphela ukuthi ukuhoxisa le mvume kungase kubangele ukuthi i-app ingasebenzi kahle, ngokuqondile noma yimaphi ama-alamu lawo i-app yakho ewahlelile ngeke esasebenza."</string> - <string name="keywords_alarms_and_reminders" msgid="8882739572152019456">"ishejuli, i-alamu, isikhumbuzi, umcimbi"</string> + <string name="alarms_and_reminders_switch_title" msgid="4939393911531826222">"Vumela ukusetha ama-alamu nezikhumbuzi"</string> + <string name="alarms_and_reminders_title" msgid="8819933264635406032">"Ama-alamu nezikhumbuzi"</string> + <string name="alarms_and_reminders_footer_title" product="default" msgid="1122213569699233612">"Vumela le app isethe ama-alamu futhi ishejule nezinye izinyathelo. Le app ingasetshenziswa uma ungasebenzisi ifoni yakho, okungasebenzisa ibhethri eliningi. Uma le mvume ivaliwe, le app ingahle ingasebenzi ngokuvamile, futhi ama-alamu ayo ngeke asebenze njengokuhleliwe."</string> + <string name="alarms_and_reminders_footer_title" product="tablet" msgid="4596201244991057839">"Vumela le app isethe ama-alamu futhi ishejule nezinye izinyathelo. Le app ingasetshenziswa uma ungasebenzisi ithebulethi yakho, okungasebenzisa ibhethri eliningi. Uma le mvume ivaliwe, le app ingahle ingasebenzi ngokuvamile, futhi ama-alamu ayo ngeke asebenze njengokuhleliwe."</string> + <string name="alarms_and_reminders_footer_title" product="device" msgid="349578867821273761">"Vumela le app isethe ama-alamu futhi ishejule nezinye izinyathelo. Le app ingasetshenziswa uma ungasebenzisi idivayisi yakho, okungasebenzisa ibhethri eliningi. Uma le mvume ivaliwe, le app ingahle ingasebenzi ngokuvamile, futhi ama-alamu ayo ngeke asebenze njengokuhleliwe."</string> + <string name="keywords_alarms_and_reminders" msgid="6633360095891110611">"ishejuli, i-alamu, isikhumbuzi, iwashi"</string> <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"Vula"</string> <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"Vula ukungaphazamisi"</string> <string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"Soze"</string> @@ -562,8 +563,7 @@ <string name="user_set_lock_button" msgid="1427128184982594856">"Setha ukukhiya"</string> <string name="user_switch_to_user" msgid="6975428297154968543">"Shintshela ku-<xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="creating_new_user_dialog_message" msgid="7232880257538970375">"Idala umsebenzisi omusha…"</string> - <!-- no translation found for add_user_failed (4809887794313944872) --> - <skip /> + <string name="add_user_failed" msgid="4809887794313944872">"Yehlulekile ukudala umsebenzisi omusha"</string> <string name="user_nickname" msgid="262624187455825083">"Isiteketiso"</string> <string name="guest_new_guest" msgid="3482026122932643557">"Engeza isivakashi"</string> <string name="guest_exit_guest" msgid="5908239569510734136">"Susa isihambeli"</string> diff --git a/packages/SettingsLib/res/values/dimens.xml b/packages/SettingsLib/res/values/dimens.xml index 9d5b23166190..c439cf040cf2 100644 --- a/packages/SettingsLib/res/values/dimens.xml +++ b/packages/SettingsLib/res/values/dimens.xml @@ -25,7 +25,7 @@ <dimen name="circle_avatar_size">40dp</dimen> <!-- Height of a user icon view --> - <dimen name="user_icon_view_height">56dp</dimen> + <dimen name="user_icon_view_height">24dp</dimen> <!-- User spinner --> <dimen name="user_spinner_height">72dp</dimen> <dimen name="user_spinner_padding">4dp</dimen> diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 70b826a5fc2e..08d87df84945 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1422,7 +1422,7 @@ <string name="user_set_lock_button">Set lock</string> <!-- Label for switching to other user in the user switcher [CHAR LIMIT=35] --> <string name="user_switch_to_user">Switch to <xliff:g id="user_name" example="John Doe">%s</xliff:g></string> - <!-- Dialog message when creating a new user [CHAR LIMIT=40] --> + <!-- Dialog message when creating a new user [CHAR LIMIT=NONE] --> <string name="creating_new_user_dialog_message">Creating new user…</string> <!-- Text shown to notify that the creation of new user has failed. [CHAR LIMIT=40] --> <string name="add_user_failed">Failed to create a new user</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/HideNonSystemOverlayMixin.java b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/HideNonSystemOverlayMixin.java new file mode 100644 index 000000000000..d7e9dc6f9c4c --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/HideNonSystemOverlayMixin.java @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settingslib.core.lifecycle; + +import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + +import static androidx.lifecycle.Lifecycle.Event.ON_START; +import static androidx.lifecycle.Lifecycle.Event.ON_STOP; + +import android.app.Activity; +import android.provider.Settings; +import android.view.Window; +import android.view.WindowManager; + +import androidx.annotation.VisibleForTesting; +import androidx.lifecycle.LifecycleObserver; +import androidx.lifecycle.OnLifecycleEvent; + +/** + * A mixin that adds window flag to prevent non-system overlays showing on top of Settings + * activities. + */ +public class HideNonSystemOverlayMixin implements LifecycleObserver { + + public static final String SECURE_OVERLAY_SETTINGS = "secure_overlay_settings"; + + private final Activity mActivity; + + public HideNonSystemOverlayMixin(Activity activity) { + mActivity = activity; + } + + @VisibleForTesting + boolean isEnabled() { + return Settings.Secure.getInt(mActivity.getContentResolver(), + SECURE_OVERLAY_SETTINGS, 0 /* defValue */) == 0; + } + + /** + * Start Lifecycle event + */ + @OnLifecycleEvent(ON_START) + public void onStart() { + if (mActivity == null || !isEnabled()) { + return; + } + mActivity.getWindow().addSystemFlags(SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS); + android.util.EventLog.writeEvent(0x534e4554, "120484087", -1, ""); + } + + /** + * Stop Lifecycle event + */ + @OnLifecycleEvent(ON_STOP) + public void onStop() { + if (mActivity == null || !isEnabled()) { + return; + } + final Window window = mActivity.getWindow(); + final WindowManager.LayoutParams attrs = window.getAttributes(); + attrs.privateFlags &= ~SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + window.setAttributes(attrs); + } +} diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java index 60bcf37304a5..18c38c5a6494 100644 --- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java +++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java @@ -113,7 +113,8 @@ public class DataUsageController { } public DataUsageInfo getWifiDataUsageInfo() { - NetworkTemplate template = NetworkTemplate.buildTemplateWifiWildcard(); + NetworkTemplate template = NetworkTemplate.buildTemplateWifi( + NetworkTemplate.WIFI_NETWORKID_ALL, null); return getDataUsageInfo(template); } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/lifecycle/HideNonSystemOverlayMixinTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/lifecycle/HideNonSystemOverlayMixinTest.java new file mode 100644 index 000000000000..cf702b531a3c --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/lifecycle/HideNonSystemOverlayMixinTest.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settingslib.core.lifecycle; + +import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS; + +import static com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin.SECURE_OVERLAY_SETTINGS; + +import static com.google.common.truth.Truth.assertThat; + +import android.os.Bundle; +import android.provider.Settings; +import android.view.WindowManager; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.android.settingslib.R; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.robolectric.Robolectric; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.android.controller.ActivityController; + +@RunWith(RobolectricTestRunner.class) +public class HideNonSystemOverlayMixinTest { + + private ActivityController<TestActivity> mActivityController; + + @Before + public void setUp() { + mActivityController = Robolectric.buildActivity(TestActivity.class); + } + + @Test + public void startActivity_shouldHideNonSystemOverlay() { + mActivityController.setup(); + TestActivity activity = mActivityController.get(); + + // Activity start: HIDE_NON_SYSTEM_OVERLAY should be set. + final WindowManager.LayoutParams attrs = activity.getWindow().getAttributes(); + assertThat(attrs.privateFlags & SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS) + .isNotEqualTo(0); + } + + @Test + public void stopActivity_shouldUnhideNonSystemOverlay() { + mActivityController.setup().stop(); + TestActivity activity = mActivityController.get(); + + final WindowManager.LayoutParams attrs = activity.getWindow().getAttributes(); + assertThat(attrs.privateFlags & SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS) + .isEqualTo(0); + } + + @Test + public void isEnabled_isAllowedOverlaySettings_returnFalse() { + mActivityController.setup(); + final TestActivity activity = mActivityController.get(); + Settings.Secure.putInt(activity.getContentResolver(), + SECURE_OVERLAY_SETTINGS, 1); + + assertThat(new HideNonSystemOverlayMixin(activity).isEnabled()).isFalse(); + } + + @Test + public void isEnabled_isNotAllowedOverlaySettings_returnTrue() { + mActivityController.setup(); + TestActivity activity = mActivityController.get(); + Settings.Secure.putInt(activity.getContentResolver(), + SECURE_OVERLAY_SETTINGS, 0); + + assertThat(new HideNonSystemOverlayMixin(activity).isEnabled()).isTrue(); + } + + public static class TestActivity extends AppCompatActivity { + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setTheme(R.style.Theme_AppCompat); + getLifecycle().addObserver(new HideNonSystemOverlayMixin(this)); + } + } +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java index f7bee30a087f..27d877db4952 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageControllerTest.java @@ -89,7 +89,8 @@ public class DataUsageControllerTest { mNetworkTemplate = NetworkTemplate.buildTemplateMobileAll(SUB_ID); mNetworkTemplate2 = NetworkTemplate.buildTemplateMobileAll(SUB_ID_2); - mWifiNetworkTemplate = NetworkTemplate.buildTemplateWifiWildcard(); + mWifiNetworkTemplate = NetworkTemplate.buildTemplateWifi( + NetworkTemplate.WIFI_NETWORKID_ALL, null); } @Test diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/MainSwitchPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/MainSwitchPreferenceTest.java index 2e77acaa0807..12f329daaaff 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/MainSwitchPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/MainSwitchPreferenceTest.java @@ -59,15 +59,6 @@ public class MainSwitchPreferenceTest { } @Test - public void shouldAllowDividerBelow() { - mPreference.onBindViewHolder(mHolder); - - View divider = mRootView.findViewById(R.id.below_divider); - - assertThat(divider.getVisibility()).isEqualTo(View.VISIBLE); - } - - @Test public void updateStatus_shouldMatchTheStatus() { mPreference.onBindViewHolder(mHolder); mPreference.updateStatus(true); diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java index e7f1ad7a461f..f04acd09ae14 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java @@ -808,14 +808,14 @@ final class SettingsState { for (int i = 0; i < settingCount; i++) { Setting setting = settings.valueAt(i); - writeSingleSetting(mVersion, serializer, setting.getId(), setting.getName(), + if (writeSingleSetting(mVersion, serializer, setting.getId(), setting.getName(), setting.getValue(), setting.getDefaultValue(), setting.getPackageName(), setting.getTag(), setting.isDefaultFromSystem(), - setting.isValuePreservedInRestore()); - - if (DEBUG_PERSISTENCE) { - Slog.i(LOG_TAG, "[PERSISTED]" + setting.getName() + "=" - + setting.getValue()); + setting.isValuePreservedInRestore())) { + if (DEBUG_PERSISTENCE) { + Slog.i(LOG_TAG, "[PERSISTED]" + setting.getName() + "=" + + setting.getValue()); + } } } serializer.endTag(null, TAG_SETTINGS); @@ -824,10 +824,11 @@ final class SettingsState { for (int i = 0; i < namespaceBannedHashes.size(); i++) { String namespace = namespaceBannedHashes.keyAt(i); String bannedHash = namespaceBannedHashes.get(namespace); - writeSingleNamespaceHash(serializer, namespace, bannedHash); - if (DEBUG_PERSISTENCE) { - Slog.i(LOG_TAG, "[PERSISTED] namespace=" + namespace - + ", bannedHash=" + bannedHash); + if (writeSingleNamespaceHash(serializer, namespace, bannedHash)) { + if (DEBUG_PERSISTENCE) { + Slog.i(LOG_TAG, "[PERSISTED] namespace=" + namespace + + ", bannedHash=" + bannedHash); + } } } serializer.endTag(null, TAG_NAMESPACE_HASHES); @@ -898,14 +899,20 @@ final class SettingsState { } } - static void writeSingleSetting(int version, TypedXmlSerializer serializer, String id, + static boolean writeSingleSetting(int version, TypedXmlSerializer serializer, String id, String name, String value, String defaultValue, String packageName, String tag, boolean defaultSysSet, boolean isValuePreservedInRestore) throws IOException { if (id == null || isBinary(id) || name == null || isBinary(name) || packageName == null || isBinary(packageName)) { - // This shouldn't happen. - return; + if (DEBUG_PERSISTENCE) { + Slog.w(LOG_TAG, "Invalid arguments for writeSingleSetting: version=" + version + + ", id=" + id + ", name=" + name + ", value=" + value + + ", defaultValue=" + defaultValue + ", packageName=" + packageName + + ", tag=" + tag + ", defaultSysSet=" + defaultSysSet + + ", isValuePreservedInRestore=" + isValuePreservedInRestore); + } + return false; } serializer.startTag(null, TAG_SETTING); serializer.attribute(null, ATTR_ID, id); @@ -924,6 +931,7 @@ final class SettingsState { serializer.attributeBoolean(null, ATTR_PRESERVE_IN_RESTORE, true); } serializer.endTag(null, TAG_SETTING); + return true; } static void setValueAttribute(String attr, String attrBase64, int version, @@ -946,15 +954,20 @@ final class SettingsState { } } - private static void writeSingleNamespaceHash(TypedXmlSerializer serializer, String namespace, + private static boolean writeSingleNamespaceHash(TypedXmlSerializer serializer, String namespace, String bannedHashCode) throws IOException { if (namespace == null || bannedHashCode == null) { - return; + if (DEBUG_PERSISTENCE) { + Slog.w(LOG_TAG, "Invalid arguments for writeSingleNamespaceHash: namespace=" + + namespace + ", bannedHashCode=" + bannedHashCode); + } + return false; } serializer.startTag(null, TAG_NAMESPACE_HASH); serializer.attribute(null, ATTR_NAMESPACE, namespace); serializer.attribute(null, ATTR_BANNED_HASH, bannedHashCode); serializer.endTag(null, TAG_NAMESPACE_HASH); + return true; } private static String hashCode(Map<String, String> keyValues) { diff --git a/packages/SoundPicker/res/values-hr/strings.xml b/packages/SoundPicker/res/values-hr/strings.xml index f74c4ae69e80..3adc5009448b 100644 --- a/packages/SoundPicker/res/values-hr/strings.xml +++ b/packages/SoundPicker/res/values-hr/strings.xml @@ -21,7 +21,7 @@ <string name="alarm_sound_default" msgid="4787646764557462649">"Zadani zvuk alarma"</string> <string name="add_ringtone_text" msgid="6642389991738337529">"Dodaj melodiju zvona"</string> <string name="add_alarm_text" msgid="3545497316166999225">"Dodaj alarm"</string> - <string name="add_notification_text" msgid="4431129543300614788">"Dodaj obavijest"</string> + <string name="add_notification_text" msgid="4431129543300614788">"Dodajte obavijest"</string> <string name="delete_ringtone_text" msgid="201443984070732499">"Izbriši"</string> <string name="unable_to_add_ringtone" msgid="4583511263449467326">"Dodavanje prilagođene melodije zvona nije moguće"</string> <string name="unable_to_delete_ringtone" msgid="6792301380142859496">"Brisanje prilagođene melodije zvona nije moguće"</string> diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/Interpolators.java b/packages/SystemUI/animation/src/com/android/systemui/animation/Interpolators.java index 58cef31aaf77..0a052df43ead 100644 --- a/packages/SystemUI/animation/src/com/android/systemui/animation/Interpolators.java +++ b/packages/SystemUI/animation/src/com/android/systemui/animation/Interpolators.java @@ -70,4 +70,17 @@ public class Interpolators { */ public static final Interpolator TOUCH_RESPONSE_REVERSE = new PathInterpolator(0.9f, 0f, 0.7f, 1f); + + /** + * Interpolate alpha for notifications background scrim during shade expansion. + * @param fraction Shade expansion fraction + */ + public static float getNotificationScrimAlpha(float fraction) { + fraction = fraction * 1.2f - 0.2f; + if (fraction <= 0) { + return 0; + } else { + return (float) (1f - 0.5f * (1f - Math.cos(3.14159f * Math.pow(1f - fraction, 2f)))); + } + } } diff --git a/packages/SystemUI/docs/QS-QQS.png b/packages/SystemUI/docs/QS-QQS.png Binary files differindex 02de479cb8c0..3ed8e24c6a8d 100644 --- a/packages/SystemUI/docs/QS-QQS.png +++ b/packages/SystemUI/docs/QS-QQS.png diff --git a/packages/SystemUI/docs/qs-tiles.md b/packages/SystemUI/docs/qs-tiles.md index b48ba6708313..521620935ddc 100644 --- a/packages/SystemUI/docs/qs-tiles.md +++ b/packages/SystemUI/docs/qs-tiles.md @@ -8,7 +8,7 @@ This document is a more or less comprehensive summary of the state and infrastru ## What are Quick Settings Tiles? -Quick Settings (from now on, QS) is the expanded panel that contains shortcuts for the user to toggle many settings. This is opened by expanding the notification drawer twice (or once when phone is locked). Quick Quick Settings (QQS) is the smaller panel that appears on top of the notifications before expanding twice and contains some of the toggles with no text. +Quick Settings (from now on, QS) is the expanded panel that contains shortcuts for the user to toggle many settings. This is opened by expanding the notification drawer twice (or once when phone is locked). Quick Quick Settings (QQS) is the smaller panel that appears on top of the notifications before expanding twice and contains some of the toggles with no secondary line. Each of these toggles that appear either in QS or QQS are called Quick Settings Tiles (or tiles for short). They allow the user to enable or disable settings quickly and sometimes provides access to more comprehensive settings pages. @@ -69,13 +69,13 @@ For more information on how to implement a tile in SystemUI, see [Implementing a Each Tile has a couple of associated views for displaying it in QS and QQS. These views are updated after the backend updates the `State` using `QSTileImpl#handleUpdateState`. -* **[`com.android.systemui.plugins.qs.QSTileView`](/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java)**: Abstract class that provides basic Tile functionality. These allows external [Factories](#qsfactory) to create Tiles. -* **[`QSTileBaseView`](/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java)**: Implementation of `QSTileView` used in QQS that takes care of most of the features of the view: +* **[`QSTileView`](/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java)**: Abstract class that provides basic Tile functionality. These allows external [Factories](#qsfactory) to create Tiles. +* **[`QSTileViewImpl`](/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.java)**: Implementation of `QSTileView`. It takes care of the following: * Holding the icon * Background color and shape * Ripple * Click listening -* **[`QSTileView`](/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java)**: Extends `QSTileBaseView`to add label support. Used in QS. + * Labels * **[`QSIconView`](/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSIconView.java)** * **[`QSIconViewImpl`](/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java)** @@ -103,7 +103,7 @@ When a container for tiles (`QuickQSPanel` or `QSPanel`) has to display tiles, t This is a brief run-down of what happens when a user clicks on a tile. Internal changes on the device (for example, changes from Settings) will trigger this process starting in step 3. Throughout this section, we assume that we are dealing with a `QSTileImpl`. 1. User clicks on tile. The following calls happen in sequence: - 1. `QSTileBaseView#onClickListener`. + 1. `QSTileViewImpl#onClickListener`. 2. `QSTile#click`. 3. `QSTileImpl#handleClick`. This last call sets the new state for the device by using the associated controller. 2. State in the device changes. This is normally outside of SystemUI's control. @@ -113,9 +113,9 @@ This is a brief run-down of what happens when a user clicks on a tile. Internal 4. `QSTileImpl#handleUpdateState` is called to update the state with the new information. This information can be obtained both from the `Object` passed to `refreshState` as well as from the controller. 5. If the state has changed (in at least one element), `QSTileImpl#handleStateChanged` is called. This will trigger a call to all the associated `QSTile.Callback#onStateChanged`, passing the new `State`. 6. `QSTileView#onStateChanged` is called and this calls `QSTileView#handleStateChanged`. This method maps the state into the view: - * The tile is rippled and the color changes to match the new state. + * The tile colors change to match the new state. * `QSIconView.setIcon` is called to apply the correct state to the icon and the correct icon to the view. - * If the tile is a `QSTileView` (in expanded QS), the labels are changed. + * The tile labels change to match the new state. ## Third party tiles (TileService) diff --git a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java index 9bb2dde36a48..32def0309aaa 100644 --- a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java +++ b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java @@ -20,10 +20,13 @@ import android.app.PendingIntent; import android.app.smartspace.SmartspaceAction; import android.app.smartspace.SmartspaceTarget; import android.content.Intent; +import android.graphics.drawable.Drawable; import android.os.Parcelable; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.Nullable; + import com.android.systemui.plugins.annotations.ProvidesInterface; import java.util.List; @@ -50,6 +53,11 @@ public interface BcSmartspaceDataPlugin extends Plugin { return null; } + /** + * As the smartspace view becomes available, allow listeners to receive an event. + */ + default void addOnAttachStateChangeListener(View.OnAttachStateChangeListener listener) { } + /** Updates Smartspace data and propagates it to any listeners. */ void onTargetsAvailable(List<SmartspaceTarget> targets); @@ -83,6 +91,16 @@ public interface BcSmartspaceDataPlugin extends Plugin { * When on the lockscreen, use the FalsingManager to help detect errant touches */ void setFalsingManager(com.android.systemui.plugins.FalsingManager falsingManager); + + /** + * Set or clear Do Not Disturb information. + */ + void setDnd(@Nullable Drawable image, @Nullable String description); + + /** + * Set or clear next alarm information + */ + void setNextAlarm(@Nullable Drawable image, @Nullable String description); } /** Interface for launching Intents, which can differ on the lockscreen */ diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java index d1383eb79d85..f1c1477c5b0a 100644 --- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java +++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java @@ -148,9 +148,11 @@ public interface QSTile { @ProvidesInterface(version = State.VERSION) public static class State { public static final int VERSION = 1; + public static final int DEFAULT_STATE = Tile.STATE_ACTIVE; + public Icon icon; public Supplier<Icon> iconSupplier; - public int state = Tile.STATE_ACTIVE; + public int state = DEFAULT_STATE; public CharSequence label; public CharSequence secondaryLabel; public CharSequence contentDescription; @@ -163,7 +165,7 @@ public interface QSTile { public SlashState slash; public boolean handlesLongClick = true; public boolean showRippleEffect = true; - public Drawable sideViewDrawable; + public Drawable sideViewCustomDrawable; public boolean copyTo(State other) { if (other == null) throw new IllegalArgumentException(); @@ -185,7 +187,7 @@ public interface QSTile { || !Objects.equals(other.slash, slash) || !Objects.equals(other.handlesLongClick, handlesLongClick) || !Objects.equals(other.showRippleEffect, showRippleEffect) - || !Objects.equals(other.sideViewDrawable, sideViewDrawable); + || !Objects.equals(other.sideViewCustomDrawable, sideViewCustomDrawable); other.icon = icon; other.iconSupplier = iconSupplier; other.label = label; @@ -201,7 +203,7 @@ public interface QSTile { other.slash = slash != null ? slash.copy() : null; other.handlesLongClick = handlesLongClick; other.showRippleEffect = showRippleEffect; - other.sideViewDrawable = sideViewDrawable; + other.sideViewCustomDrawable = sideViewCustomDrawable; return changed; } @@ -227,7 +229,7 @@ public interface QSTile { sb.append(",isTransient=").append(isTransient); sb.append(",state=").append(state); sb.append(",slash=\"").append(slash).append("\""); - sb.append(",sideViewDrawable").append(sideViewDrawable); + sb.append(",sideViewCustomDrawable=").append(sideViewCustomDrawable); return sb.append(']'); } @@ -242,12 +244,16 @@ public interface QSTile { public static class BooleanState extends State { public static final int VERSION = 1; public boolean value; + public boolean forceExpandIcon; @Override public boolean copyTo(State other) { final BooleanState o = (BooleanState) other; - final boolean changed = super.copyTo(other) || o.value != value; + final boolean changed = super.copyTo(other) + || o.value != value + || o.forceExpandIcon != forceExpandIcon; o.value = value; + o.forceExpandIcon = forceExpandIcon; return changed; } @@ -255,6 +261,7 @@ public interface QSTile { protected StringBuilder toStringBuilder() { final StringBuilder rt = super.toStringBuilder(); rt.insert(rt.length() - 1, ",value=" + value); + rt.insert(rt.length() - 1, ",forceExpandIcon=" + forceExpandIcon); return rt; } diff --git a/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml b/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml index 604ab723da90..3a7a8ae5bc3c 100644 --- a/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml +++ b/packages/SystemUI/res-keyguard/drawable/num_pad_key_background.xml @@ -16,23 +16,14 @@ * limitations under the License. */ --> -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> +<ripple + xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?android:attr/colorControlHighlight"> <item android:id="@+id/background"> <shape> <solid android:color="?android:attr/colorControlNormal" /> <corners android:radius="10dp" /> </shape> </item> - <item android:id="@+id/ripple"> - <ripple - android:color="?android:attr/colorControlHighlight"> - <item android:id="@android:id/mask"> - <shape android:shape="rectangle"> - <solid android:color="?android:attr/colorControlNormal" /> - <corners android:radius="10dp" /> - </shape> - </item> - </ripple> - </item> -</layer-list> +</ripple> diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml index 1cef44b3b3df..7c5459c173e4 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml @@ -80,6 +80,6 @@ android:layout_width="match_parent" android:layout_height="@dimen/notification_shelf_height" android:layout_below="@id/keyguard_status_area" - android:paddingStart="@dimen/below_clock_padding_start" + android:paddingStart="@dimen/below_clock_padding_start_extra" /> </com.android.keyguard.KeyguardClockSwitch> diff --git a/packages/SystemUI/res-keyguard/layout/qs_media_divider.xml b/packages/SystemUI/res-keyguard/layout/qs_media_divider.xml deleted file mode 100644 index 1be489cdc700..000000000000 --- a/packages/SystemUI/res-keyguard/layout/qs_media_divider.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<View xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="1dp" - android:layout_marginBottom="16dp" - android:background="@color/media_divider"> -</View>
\ No newline at end of file diff --git a/packages/SystemUI/res-keyguard/values/dimens.xml b/packages/SystemUI/res-keyguard/values/dimens.xml index 9b8035d100ad..a166b098fa0b 100644 --- a/packages/SystemUI/res-keyguard/values/dimens.xml +++ b/packages/SystemUI/res-keyguard/values/dimens.xml @@ -94,4 +94,5 @@ <!-- additional offset for clock switch area items --> <dimen name="clock_padding_start">28dp</dimen> <dimen name="below_clock_padding_start">32dp</dimen> + <dimen name="below_clock_padding_start_extra">36dp</dimen> </resources> diff --git a/packages/SystemUI/res/color/media_player_album_bg.xml b/packages/SystemUI/res/color/media_player_album_bg.xml new file mode 100644 index 000000000000..e0deac973139 --- /dev/null +++ b/packages/SystemUI/res/color/media_player_album_bg.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> + <item android:color="?androidprv:attr/colorAccentSecondary"/> +</selector>
\ No newline at end of file diff --git a/packages/SystemUI/res/color/media_player_outline_button_bg.xml b/packages/SystemUI/res/color/media_player_outline_button_bg.xml new file mode 100644 index 000000000000..ba7848a5d23e --- /dev/null +++ b/packages/SystemUI/res/color/media_player_outline_button_bg.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> + <item android:color="?androidprv:attr/colorAccentPrimaryVariant"/> +</selector>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable/circle_wallet_primary_56dp.xml b/packages/SystemUI/res/drawable/circle_wallet_primary_56dp.xml deleted file mode 100644 index 3d4c23315e4b..000000000000 --- a/packages/SystemUI/res/drawable/circle_wallet_primary_56dp.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2019 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="oval"> - <size - android:height="56dp" - android:width="56dp" /> - <solid android:color="@android:color/transparent" /> - <stroke android:width="2dp" android:color="#AECBFA" /> -</shape> diff --git a/packages/SystemUI/res/drawable/circle_wallet_secondary_56dp.xml b/packages/SystemUI/res/drawable/circle_wallet_secondary_56dp.xml deleted file mode 100644 index 1634e2db3322..000000000000 --- a/packages/SystemUI/res/drawable/circle_wallet_secondary_56dp.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2019 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="oval"> - <size - android:height="56dp" - android:width="56dp" /> - <solid android:color="@android:color/transparent" /> - <stroke android:width="2dp" android:color="@color/GM2_grey_300" /> -</shape> diff --git a/packages/SettingsLib/SettingsTheme/res/values/config.xml b/packages/SystemUI/res/drawable/ic_blank.xml index a3bb1da71c9a..b94088f65d27 100644 --- a/packages/SettingsLib/SettingsTheme/res/values/config.xml +++ b/packages/SystemUI/res/drawable/ic_blank.xml @@ -1,8 +1,7 @@ -<?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2021 The Android Open Source Project +Copyright (C) 2021 The Android Open Source Project - Licensed under the Apache License, Version 2.0 (the "License"); + 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 @@ -13,8 +12,11 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. - --> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <bool name="config_icon_space_reserved">true</bool> - <bool name="config_allow_divider">true</bool> -</resources>
\ No newline at end of file +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="16dp" + android:height="16dp" + android:viewportWidth="16.0" + android:viewportHeight="16.0"> + <path/> +</vector> diff --git a/packages/SystemUI/res/drawable/ic_qs_sim_card.xml b/packages/SystemUI/res/drawable/ic_qs_sim_card.xml new file mode 100644 index 000000000000..6eda929b54d3 --- /dev/null +++ b/packages/SystemUI/res/drawable/ic_qs_sim_card.xml @@ -0,0 +1,47 @@ +<!-- +Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24" + android:tint="?android:attr/colorControlNormal" + > + + <path + android:fillColor="#FF000000" + android:pathData="M18,2h-8L4,8v12c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2z M18,4v16H6V8.83L10.83,4L18,4L18,4z" /> + <path + android:fillColor="#FF000000" + android:pathData="M 7 17 H 9 V 19 H 7 V 17 Z" /> + <path + android:fillColor="#FF000000" + android:pathData="M 15 17 H 17 V 19 H 15 V 17 Z" /> + <path + android:fillColor="#FF000000" + android:pathData="M 7 11 H 9 V 15 H 7 V 11 Z" /> + <path + android:fillColor="#FF000000" + android:pathData="M 11 15 H 13 V 19 H 11 V 15 Z" /> + <path + android:fillColor="#FF000000" + android:pathData="M 11 11 H 13 V 13 H 11 V 11 Z" /> + <path + android:fillColor="#FF000000" + android:pathData="M 15 11 H 17 V 15 H 15 V 11 Z" /> + <path + android:pathData="M0,0h24v24H0V0z" /> +</vector> diff --git a/packages/SystemUI/res/drawable/notif_settings_button.xml b/packages/SystemUI/res/drawable/notif_settings_button.xml new file mode 100644 index 000000000000..34a5caf4e254 --- /dev/null +++ b/packages/SystemUI/res/drawable/notif_settings_button.xml @@ -0,0 +1,20 @@ +<!-- + ~ Copyright (C) 2021 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:drawable="@drawable/ripple_drawable"/> + <item android:drawable="@drawable/ic_settings"/> +</layer-list>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable/privacy_chip_bg.xml b/packages/SystemUI/res/drawable/privacy_chip_bg.xml index 9f41dbeae765..99c0ab4b6220 100644 --- a/packages/SystemUI/res/drawable/privacy_chip_bg.xml +++ b/packages/SystemUI/res/drawable/privacy_chip_bg.xml @@ -16,6 +16,6 @@ --> <shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/privacy_circle" /> + <solid android:color="@color/privacy_chip_background" /> <corners android:radius="@dimen/ongoing_appops_chip_bg_corner_radius" /> </shape>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable/privacy_item_circle_camera.xml b/packages/SystemUI/res/drawable/privacy_item_circle_camera.xml index 54a66e26169c..f4ff54965832 100644 --- a/packages/SystemUI/res/drawable/privacy_item_circle_camera.xml +++ b/packages/SystemUI/res/drawable/privacy_item_circle_camera.xml @@ -24,7 +24,7 @@ android:height="@dimen/ongoing_appops_dialog_circle_size" android:width="@dimen/ongoing_appops_dialog_circle_size" /> - <solid android:color="@color/privacy_circle" /> + <solid android:color="@color/privacy_chip_background" /> </shape> </item> <item android:id="@id/icon" diff --git a/packages/SystemUI/res/drawable/privacy_item_circle_location.xml b/packages/SystemUI/res/drawable/privacy_item_circle_location.xml index 65f4396ff32a..9a2018864e8b 100644 --- a/packages/SystemUI/res/drawable/privacy_item_circle_location.xml +++ b/packages/SystemUI/res/drawable/privacy_item_circle_location.xml @@ -24,7 +24,7 @@ android:height="@dimen/ongoing_appops_dialog_circle_size" android:width="@dimen/ongoing_appops_dialog_circle_size" /> - <solid android:color="@color/privacy_circle" /> + <solid android:color="@color/privacy_chip_background" /> </shape> </item> <item android:id="@id/icon" diff --git a/packages/SystemUI/res/drawable/privacy_item_circle_microphone.xml b/packages/SystemUI/res/drawable/privacy_item_circle_microphone.xml index 1565d2d5eeae..a5f2d32f475b 100644 --- a/packages/SystemUI/res/drawable/privacy_item_circle_microphone.xml +++ b/packages/SystemUI/res/drawable/privacy_item_circle_microphone.xml @@ -24,7 +24,7 @@ android:height="@dimen/ongoing_appops_dialog_circle_size" android:width="@dimen/ongoing_appops_dialog_circle_size" /> - <solid android:color="@color/privacy_circle" /> + <solid android:color="@color/privacy_chip_background" /> </shape> </item> <item android:id="@id/icon" diff --git a/packages/SystemUI/res/drawable/qs_customize_tile_decoration.xml b/packages/SystemUI/res/drawable/qs_customize_tile_decoration.xml index 1124a9220a2c..d7a9edcbc31f 100644 --- a/packages/SystemUI/res/drawable/qs_customize_tile_decoration.xml +++ b/packages/SystemUI/res/drawable/qs_customize_tile_decoration.xml @@ -13,5 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. --> -<color xmlns:android="http://schemas.android.com/apk/res/android" - android:color="?android:attr/colorBackground"/>
\ No newline at end of file +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <solid android:color="?android:attr/colorBackground"/> + <corners android:topLeftRadius="20dp" + android:topRightRadius="20dp" /> +</shape>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable/qs_security_footer_background.xml b/packages/SystemUI/res/drawable/qs_security_footer_background.xml index 7d370e9f0547..860d23b11439 100644 --- a/packages/SystemUI/res/drawable/qs_security_footer_background.xml +++ b/packages/SystemUI/res/drawable/qs_security_footer_background.xml @@ -29,7 +29,7 @@ <item> <shape android:shape="rectangle"> <stroke android:width="1dp" - android:color="@color/qs_security_footer_background_stroke"/> + android:color="?android:attr/colorBackground"/> <corners android:radius="@dimen/qs_security_footer_corner_radius"/> </shape> </item> diff --git a/packages/SystemUI/res/drawable/system_animation_ongoing_dot.xml b/packages/SystemUI/res/drawable/system_animation_ongoing_dot.xml index 4e9d380af319..9f81b0d59973 100644 --- a/packages/SystemUI/res/drawable/system_animation_ongoing_dot.xml +++ b/packages/SystemUI/res/drawable/system_animation_ongoing_dot.xml @@ -18,7 +18,7 @@ <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid - android:color="@color/privacy_circle"/> + android:color="@color/privacy_chip_background"/> <size android:width="6dp" android:height="6dp" diff --git a/packages/SystemUI/res/layout/dock_info_bottom_area_overlay.xml b/packages/SystemUI/res/layout/dock_info_bottom_area_overlay.xml new file mode 100644 index 000000000000..8b70dd782407 --- /dev/null +++ b/packages/SystemUI/res/layout/dock_info_bottom_area_overlay.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2021 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<!-- empty stub --> +<merge /> diff --git a/packages/SystemUI/res/layout/global_actions_grid_lite.xml b/packages/SystemUI/res/layout/global_actions_grid_lite.xml index 0df980054c0c..2430eec77678 100644 --- a/packages/SystemUI/res/layout/global_actions_grid_lite.xml +++ b/packages/SystemUI/res/layout/global_actions_grid_lite.xml @@ -18,7 +18,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/global_actions_container" android:layout_width="match_parent" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:layout_gravity="center"> diff --git a/packages/SystemUI/res/layout/media_view.xml b/packages/SystemUI/res/layout/media_view.xml index e9a24e284601..8dbbd4a4a66f 100644 --- a/packages/SystemUI/res/layout/media_view.xml +++ b/packages/SystemUI/res/layout/media_view.xml @@ -40,7 +40,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" - app:layout_constraintGuide_percent="0.5" /> + app:layout_constraintGuide_begin="48dp" /> <!-- As per Material Design on Biderectionality, this is forced to LTR in code --> <FrameLayout diff --git a/packages/SystemUI/res/layout/notification_conversation_info.xml b/packages/SystemUI/res/layout/notification_conversation_info.xml index c332f4cf7a39..2ec4e73145f5 100644 --- a/packages/SystemUI/res/layout/notification_conversation_info.xml +++ b/packages/SystemUI/res/layout/notification_conversation_info.xml @@ -45,11 +45,14 @@ android:layout_marginEnd="12dp" > - <!-- Big icon: 52x52, 12dp padding left + top, 16dp padding right --> + <!-- Big icon: 48x48, 12dp padding top, 16dp padding sides --> <ImageView android:id="@+id/conversation_icon" android:layout_width="@*android:dimen/conversation_avatar_size" android:layout_height="@*android:dimen/conversation_avatar_size" + android:layout_marginLeft="@*android:dimen/conversation_badge_protrusion" + android:layout_marginRight="@*android:dimen/conversation_badge_protrusion" + android:layout_marginBottom="@*android:dimen/conversation_badge_protrusion" android:scaleType="centerCrop" android:importantForAccessibility="no" /> @@ -58,8 +61,7 @@ android:id="@+id/conversation_icon_badge" android:layout_width="@*android:dimen/conversation_icon_size_badged" android:layout_height="@*android:dimen/conversation_icon_size_badged" - android:layout_marginLeft="@*android:dimen/conversation_badge_side_margin" - android:layout_marginTop="@*android:dimen/conversation_badge_side_margin" + android:layout_gravity="end|bottom" android:clipChildren="false" android:clipToPadding="false" > diff --git a/packages/SystemUI/res/layout/notification_info.xml b/packages/SystemUI/res/layout/notification_info.xml index b2c968c0292d..7e8112a8885b 100644 --- a/packages/SystemUI/res/layout/notification_info.xml +++ b/packages/SystemUI/res/layout/notification_info.xml @@ -108,9 +108,9 @@ asked for it --> android:layout_width="@dimen/notification_importance_toggle_size" android:layout_height="@dimen/notification_importance_toggle_size" android:layout_centerVertical="true" - android:background="@drawable/ripple_drawable" + android:background="@android:color/transparent" android:contentDescription="@string/notification_more_settings" - android:src="@drawable/ic_settings" + android:src="@drawable/notif_settings_button" android:layout_alignParentEnd="true" android:tint="@color/notification_guts_link_icon_tint"/> diff --git a/packages/SystemUI/res/layout/ongoing_call_chip.xml b/packages/SystemUI/res/layout/ongoing_call_chip.xml index a5e7f5d4cfe6..a146547d0083 100644 --- a/packages/SystemUI/res/layout/ongoing_call_chip.xml +++ b/packages/SystemUI/res/layout/ongoing_call_chip.xml @@ -29,18 +29,17 @@ android:src="@*android:drawable/ic_phone" android:layout_width="@dimen/ongoing_call_chip_icon_size" android:layout_height="@dimen/ongoing_call_chip_icon_size" - android:paddingEnd="@dimen/ongoing_call_chip_icon_text_padding" android:tint="?android:attr/colorPrimary" /> <!-- TODO(b/183229367): The text in this view isn't quite centered within the chip. --> - <!-- TODO(b/183229367): This text view's width shouldn't change as the time increases. --> - <Chronometer + <com.android.systemui.statusbar.phone.ongoingcall.OngoingCallChronometer android:id="@+id/ongoing_call_chip_time" android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" - android:gravity="center" + android:gravity="center|start" + android:paddingStart="@dimen/ongoing_call_chip_icon_text_padding" android:textAppearance="@android:style/TextAppearance.Material.Small" android:fontFamily="@*android:string/config_headlineFontFamily" android:textColor="?android:attr/colorPrimary" diff --git a/packages/SystemUI/res/layout/qs_carrier_group.xml b/packages/SystemUI/res/layout/qs_carrier_group.xml index fd53a8bb1a7c..810c9592e422 100644 --- a/packages/SystemUI/res/layout/qs_carrier_group.xml +++ b/packages/SystemUI/res/layout/qs_carrier_group.xml @@ -32,11 +32,10 @@ android:minWidth="48dp" android:minHeight="48dp" android:gravity="center_vertical" - android:textAppearance="@style/TextAppearance.QS.Status" + android:textAppearance="@style/TextAppearance.QS.Status.NoCarrierText" android:textDirection="locale" android:marqueeRepeatLimit="marquee_forever" android:singleLine="true" - android:maxEms="7" android:visibility="gone"/> <include diff --git a/packages/SystemUI/res/layout/qs_customize_divider.xml b/packages/SystemUI/res/layout/qs_customize_divider.xml index d6664fefe2da..035f493271f7 100644 --- a/packages/SystemUI/res/layout/qs_customize_divider.xml +++ b/packages/SystemUI/res/layout/qs_customize_divider.xml @@ -20,8 +20,9 @@ android:id="@android:id/title" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginTop="8dp" android:gravity="center" - android:paddingTop="20dp" - android:paddingBottom="13dp" + android:paddingTop="24dp" + android:paddingBottom="24dp" android:textAppearance="@style/TextAppearance.QSEdit.Headers" android:text="@string/drag_to_add_tiles" /> diff --git a/packages/SystemUI/res/layout/qs_customize_panel_content.xml b/packages/SystemUI/res/layout/qs_customize_panel_content.xml index 6a1be81dadf5..8ca1b8e85634 100644 --- a/packages/SystemUI/res/layout/qs_customize_panel_content.xml +++ b/packages/SystemUI/res/layout/qs_customize_panel_content.xml @@ -27,9 +27,9 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" - android:layout_marginLeft="@dimen/notification_side_paddings" - android:layout_marginRight="@dimen/notification_side_paddings" android:orientation="vertical" + android:paddingStart="@dimen/qs_customize_internal_side_paddings" + android:paddingEnd="@dimen/qs_customize_internal_side_paddings" android:background="@drawable/qs_customizer_background"> <Toolbar android:id="@*android:id/action_bar" @@ -45,7 +45,10 @@ android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" + android:paddingStart="@dimen/qs_customize_internal_side_paddings" + android:paddingEnd="@dimen/qs_customize_internal_side_paddings" android:paddingBottom="28dp" + android:clipChildren="false" android:clipToPadding="false" android:scrollIndicators="top" android:scrollbars="vertical" diff --git a/packages/SystemUI/res/layout/qs_footer_impl.xml b/packages/SystemUI/res/layout/qs_footer_impl.xml index 93a47154d927..266ecefd0840 100644 --- a/packages/SystemUI/res/layout/qs_footer_impl.xml +++ b/packages/SystemUI/res/layout/qs_footer_impl.xml @@ -22,6 +22,7 @@ android:layout_height="@dimen/qs_footer_height" android:layout_marginStart="@dimen/qs_footer_margin" android:layout_marginEnd="@dimen/qs_footer_margin" + android:layout_marginBottom="@dimen/qs_footers_margin_bottom" android:background="@android:color/transparent" android:baselineAligned="false" android:clickable="false" @@ -50,7 +51,6 @@ android:focusable="true" android:gravity="center_vertical" android:singleLine="true" - android:textColor="?android:attr/textColorSecondary" android:textAppearance="@style/TextAppearance.QS.Build" android:visibility="gone" /> diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml index 7cf3d014aa8a..4607e5f5cd79 100644 --- a/packages/SystemUI/res/layout/qs_panel.xml +++ b/packages/SystemUI/res/layout/qs_panel.xml @@ -42,8 +42,6 @@ android:clipToPadding="false" android:clipChildren="false"> <include layout="@layout/qs_footer_impl" /> - <include layout="@layout/qs_media_divider" - android:id="@+id/divider"/> </com.android.systemui.qs.QSPanel> </com.android.systemui.qs.NonInterceptingScrollView> diff --git a/packages/SystemUI/res/layout/qs_tile_label.xml b/packages/SystemUI/res/layout/qs_tile_label.xml index f8812ba894fa..1d93f5d69da8 100644 --- a/packages/SystemUI/res/layout/qs_tile_label.xml +++ b/packages/SystemUI/res/layout/qs_tile_label.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!-- - Copyright (C) 2016 The Android Open Source Project + Copyright (C) 2021 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,84 +14,38 @@ See the License for the specific language governing permissions and limitations under the License. --> -<com.android.systemui.qs.tileimpl.ButtonRelativeLayout +<com.android.systemui.qs.tileimpl.IgnorableChildLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:clipChildren="false" android:clipToPadding="false" - android:paddingTop="12dp"> - <LinearLayout - android:id="@+id/label_group" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentTop="true" - android:gravity="center" - android:clipChildren="false" - android:clipToPadding="false" - android:orientation="horizontal"> - <Space - android:id="@+id/expand_space" - android:layout_width="22dp" - android:layout_height="0dp" - android:visibility="gone" /> - - <TextView - android:id="@+id/tile_label" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:clickable="false" - android:padding="0dp" - android:gravity="center" - android:ellipsize="marquee" - android:textAppearance="@style/TextAppearance.QS.TileLabel"/> - - <ImageView android:id="@+id/restricted_padlock" - android:layout_width="@dimen/qs_tile_text_size" - android:layout_height="match_parent" - android:paddingBottom="@dimen/qs_tile_text_size" - android:src="@drawable/ic_info" - android:layout_marginLeft="@dimen/restricted_padlock_pading" - android:scaleType="centerInside" - android:visibility="gone" /> + android:orientation="vertical" + android:layout_marginStart="@dimen/qs_label_container_margin" + android:layout_marginEnd="0dp" + android:layout_gravity="center_vertical | start"> - <ImageView - android:id="@+id/expand_indicator" - android:layout_marginStart="4dp" - android:layout_width="18dp" - android:layout_height="match_parent" - android:src="@drawable/qs_dual_tile_caret" - android:tint="?android:attr/textColorPrimary" - android:visibility="gone" /> - </LinearLayout> + <TextView + android:id="@+id/tile_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="start" + android:textDirection="locale" + android:ellipsize="marquee" + android:singleLine="true" + android:textAppearance="@style/TextAppearance.QS.TileLabel"/> <TextView android:id="@+id/app_label" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_alignStart="@id/label_group" - android:layout_alignEnd="@id/label_group" - android:layout_below="@id/label_group" - android:clickable="false" + android:gravity="start" + android:textDirection="locale" android:ellipsize="marquee" android:singleLine="true" - android:padding="0dp" android:visibility="gone" - android:gravity="center" android:textAppearance="@style/TextAppearance.QS.TileLabel.Secondary" android:textColor="?android:attr/textColorSecondary"/> - <View - android:id="@+id/underline" - android:layout_width="30dp" - android:layout_height="1dp" - android:layout_marginTop="2dp" - android:layout_alignStart="@id/label_group" - android:layout_alignEnd="@id/label_group" - android:layout_below="@id/label_group" - android:visibility="gone" - android:alpha="?android:attr/disabledAlpha" - android:background="?android:attr/colorForeground"/> - -</com.android.systemui.qs.tileimpl.ButtonRelativeLayout> +</com.android.systemui.qs.tileimpl.IgnorableChildLinearLayout> diff --git a/packages/SystemUI/res/layout/qs_tile_side_icon.xml b/packages/SystemUI/res/layout/qs_tile_side_icon.xml new file mode 100644 index 000000000000..9f9af9d21db1 --- /dev/null +++ b/packages/SystemUI/res/layout/qs_tile_side_icon.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2021 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/qs_label_container_margin" + android:layout_gravity="center_vertical | end" +> + <ImageView + android:id="@+id/customDrawable" + android:layout_width="wrap_content" + android:layout_height="@dimen/qs_icon_size" + android:layout_marginEnd="@dimen/qs_drawable_end_margin" + android:adjustViewBounds="true" + android:scaleType="fitCenter" + android:visibility="gone" + /> + + <ImageView + android:id="@+id/chevron" + android:layout_width="@dimen/qs_icon_size" + android:layout_height="@dimen/qs_icon_size" + android:src="@*android:drawable/ic_chevron_end" + android:visibility="gone" + android:importantForAccessibility="no" + /> +</FrameLayout>
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/quick_qs_status_icons.xml b/packages/SystemUI/res/layout/quick_qs_status_icons.xml index d8bb7e607a5d..f0229a648612 100644 --- a/packages/SystemUI/res/layout/quick_qs_status_icons.xml +++ b/packages/SystemUI/res/layout/quick_qs_status_icons.xml @@ -36,19 +36,16 @@ android:paddingStart="@dimen/status_bar_left_clock_starting_padding" android:paddingEnd="@dimen/status_bar_left_clock_end_padding" android:singleLine="true" - android:textAppearance="@style/TextAppearance.StatusBar.Clock" /> - - <View - android:layout_height="match_parent" - android:layout_width="0dp" - android:layout_weight="1" - /> + android:textAppearance="@style/TextAppearance.QS.Status" /> <include layout="@layout/qs_carrier_group" android:id="@+id/carrier_group" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="match_parent" + android:layout_weight="1" android:minHeight="48dp" + android:minWidth="48dp" + android:layout_marginStart="8dp" android:layout_gravity="end|center_vertical" android:focusable="false"/> diff --git a/packages/SystemUI/res/layout/quick_settings_security_footer.xml b/packages/SystemUI/res/layout/quick_settings_security_footer.xml index de65fa0511bb..ce7f82780dfe 100644 --- a/packages/SystemUI/res/layout/quick_settings_security_footer.xml +++ b/packages/SystemUI/res/layout/quick_settings_security_footer.xml @@ -23,7 +23,7 @@ android:padding="@dimen/qs_footer_padding" android:gravity="center_vertical" android:layout_gravity="center_vertical|center_horizontal" - android:layout_marginVertical="@dimen/qs_security_footer_vertical_margin" + android:layout_marginBottom="@dimen/qs_footers_margin_bottom" android:background="@drawable/qs_security_footer_background" systemui:singleLineHeight="@dimen/qs_security_footer_single_line_height" systemui:textViewId="@id/footer_text" diff --git a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml index bb540990ccb7..d8f0742e1878 100644 --- a/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml +++ b/packages/SystemUI/res/layout/quick_status_bar_expanded_header.xml @@ -52,7 +52,6 @@ android:layout_below="@id/quick_qs_status_icons" android:layout_marginTop="8dp" android:accessibilityTraversalAfter="@id/quick_qs_status_icons" - android:accessibilityTraversalBefore="@id/expand_indicator" android:clipChildren="false" android:clipToPadding="false" android:focusable="true" diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml index 52995ea41b03..f4cb3b144239 100644 --- a/packages/SystemUI/res/layout/status_bar_expanded.xml +++ b/packages/SystemUI/res/layout/status_bar_expanded.xml @@ -101,6 +101,8 @@ </com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer> + <include layout="@layout/dock_info_bottom_area_overlay" /> + <include layout="@layout/keyguard_bottom_area" android:visibility="gone" /> diff --git a/packages/SystemUI/res/layout/volume_dialog_row.xml b/packages/SystemUI/res/layout/volume_dialog_row.xml index 446c7ebe177c..4b5a008b896b 100644 --- a/packages/SystemUI/res/layout/volume_dialog_row.xml +++ b/packages/SystemUI/res/layout/volume_dialog_row.xml @@ -57,6 +57,7 @@ android:thumb="@null" android:splitTrack="false" android:progressDrawable="@drawable/volume_row_seekbar" + android:layoutDirection="ltr" android:rotation="270" /> </FrameLayout> diff --git a/packages/SystemUI/res/layout/wallet_card_view.xml b/packages/SystemUI/res/layout/wallet_card_view.xml index 5fd556d1fe25..b5a6601062a8 100644 --- a/packages/SystemUI/res/layout/wallet_card_view.xml +++ b/packages/SystemUI/res/layout/wallet_card_view.xml @@ -24,6 +24,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginHorizontal="@dimen/card_margin" + android:layout_marginBottom="@dimen/card_margin" android:foreground="?android:attr/selectableItemBackground" app:cardBackgroundColor="@android:color/transparent" app:cardElevation="12dp"> @@ -32,16 +33,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:adjustViewBounds="true" - android:contentDescription="@null" - android:scaleType="fitXY"/> - <ImageView - android:id="@+id/add_card_logo" - android:layout_width="28dp" - android:layout_height="28dp" android:layout_gravity="center" - android:drawable="@drawable/ic_qs_plus" android:contentDescription="@null" - android:scaleType="fitCenter" - android:visibility="gone"/> + android:scaleType="fitXY"/> </com.android.systemui.wallet.ui.WalletCardView> </FrameLayout> diff --git a/packages/SystemUI/res/layout/wallet_fullscreen.xml b/packages/SystemUI/res/layout/wallet_fullscreen.xml index b47c2f2e1821..bbb180f720a3 100644 --- a/packages/SystemUI/res/layout/wallet_fullscreen.xml +++ b/packages/SystemUI/res/layout/wallet_fullscreen.xml @@ -19,6 +19,13 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false"> + <Toolbar + android:id="@+id/action_bar" + style="?android:attr/actionBarStyle" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@android:color/transparent" + android:navigationContentDescription="@null" /> <LinearLayout android:id="@+id/card_carousel_container" android:layout_width="match_parent" diff --git a/packages/SystemUI/res/color/qs_security_footer_background_stroke.xml b/packages/SystemUI/res/menu/wallet_activity_options_menu.xml index aa4d4e8c079d..278924a7f2a7 100644 --- a/packages/SystemUI/res/color/qs_security_footer_background_stroke.xml +++ b/packages/SystemUI/res/menu/wallet_activity_options_menu.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2014 The Android Open Source Project +<!-- + Copyright (C) 2021 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -13,6 +14,11 @@ See the License for the specific language governing permissions and limitations under the License. --> -<selector xmlns:android="http://schemas.android.com/apk/res/android"> - <item android:color="@android:color/system_neutral1_100" android:alpha="0.8" /> -</selector>
\ No newline at end of file +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <item + android:id="@+id/wallet_lockscreen_settings" + android:enabled="true" + android:showAsAction="never" + android:title="@string/wallet_lockscreen_settings_label" + android:visible="true" /> +</menu> diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index f17067a58b69..d3ab5b32975a 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobiele warmkol afgeskakel."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobiele warmkol aangeskakel."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Uitsaai van skerm gestaak."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Werkmodus is af."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Werkmodus is aan."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Werkmodus is afgeskakel."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Werkmodus is aangeskakel."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Databespaarder is afgeskakel."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Databespaarder is aangeskakel."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g>-limiet"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> waarskuwing"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Werkprofiel"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Aandbeligting"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Aan by sonsondergang"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Tot sonsopkoms"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Volkome\nstilte"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Net\nprioriteit"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Net\nwekkers"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans draadloos (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans vinnig (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laai tans stadig (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> tot vol)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Wissel gebruiker"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Wissel gebruiker, huidige gebruiker <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Huidige gebruiker <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Beursie"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Wys alles"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Ontsluit om te betaal"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Gereed"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Stel betaling op"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Ontsluit om te gebruik"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Kon nie jou kaarte kry nie; probeer later weer"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Werkprofiel"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Vliegtuigmodus"</string> <string name="add_tile" msgid="6239678623873086686">"Voeg teël by"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Gedegradeer na Stil"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Hoër gegradeer"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Laer gegradeer"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Word altyd boaan jou kennisgewings gewys, selfs wanneer Prioriteitmodus aan is"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Word aan die bokant van gesprekskennisgewings en as \'n profielfoto op sluitskerm gewys"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Word aan die bokant van gesprekskennisgewings en as \'n profielfoto op sluitskerm gewys, verskyn as \'n borrel"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Word aan die bokant van gesprekskennisgewings en as \'n profielfoto op sluitskerm gewys, onderbreek Moenie Steur Nie"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Word aan die bokant van gesprekskennisgewings en as \'n profielfoto op sluitskerm gewys, verskyn as \'n borrel, onderbreek Moenie Steur Nie"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Instellings"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioriteitgesprekke"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioriteit"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> steun nie gesprekskenmerke nie"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Hierdie kennisgewings kan nie gewysig word nie."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Hierdie groep kennisgewings kan nie hier opgestel word nie"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Aan"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Af"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Onbeskikbaar"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigasiebalk"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Uitleg"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Ekstra linksknoppie-tipe"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Stelselnavigasie is opgedateer. Gaan na Instellings toe om veranderinge te maak."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gaan na Instellings toe om stelselnavigasie op te dateer"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Bystandmodus"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Gesprek is as prioriteit gestel"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioriteitgesprekke"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Hierdie gesprekke word boaan jou lys gewys en kan jou altyd bereik wanneer Prioriteitmodus aan is"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profielfoto\'s word op die sluitskerm gewys"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Jy kan hierdie gesprekke maklik in borrels op jou Tuisskerm kry"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Onderbreek Moenie Steur Nie"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Het dit"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Instellings"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Vergrotingvenster"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Vergrotingvensterkontroles"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoem in"</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index d2ecd78df75c..4dee0850fee1 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"የተንቀሳቃሽ ስልክ መገናኛ ነጥብ ጠፍቷል።"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"የተንቀሳቃሽ ስልክ መገናኛ ነጥብ በርቷል።"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"ማያ ገጽ መውሰድ ቆሟል።"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"የሥራ ሁነታ ጠፍቷል።"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"የሥራ ሁነታ በርቷል።"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"የሥራ ሁነታ ጠፍቷል።"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"የሥራ ሁነታ በርቷል።"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ውሂብ ቆጣቢ ጠፍቷል።"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ውሂብ ቆጣቢ በርቷል።"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ገደብ"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"የ<xliff:g id="DATA_LIMIT">%s</xliff:g> ማስጠንቀቂያ"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"የሥራ መገለጫ"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"የምሽት ብርሃን"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"ጸሐይ ስትጠልቅ ይበራል"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"ጸሐይ እስክትወጣ ድረስ"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ሙሉ ለሙሉ\nጸጥታ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ቅድሚያ ተሰጪ\nብቻ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ማንቂያዎች\nብቻ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • በገመድ አልባ ኃይል በመሙላት ላይ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> እስከሚሞላ ድረስ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ኃይል በመሙላት ላይ (እስኪሞላ ድረስ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • በፍጥነት ኃይልን በመሙላት ላይ (እስኪሞላ ድረስ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • በዝግታ ኃይልን በመሙላት ላይ (እስኪሞላ ድረስ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ተጠቃሚ ቀይር"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ተጠቃሚ ይለውጡ፣ የአሁን ተጠቃሚ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"የአሁን ተጠቃሚ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"ሁሉንም አሳይ"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ለመክፈል ይክፈቱ"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"ዝግጁ"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ክፍያን ያዋቅሩ"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ለማየት ይክፈቱ"</string> <string name="wallet_error_generic" msgid="257704570182963611">"የእርስዎን ካርዶች ማግኘት ላይ ችግር ነበር፣ እባክዎ ቆይተው እንደገና ይሞክሩ"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"የስራ መገለጫ"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"የአውሮፕላን ሁነታ"</string> <string name="add_tile" msgid="6239678623873086686">"ሰቅ ያክሉ"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ሁኔታ:</b> ወደ ዝምታ ዝቅ ተደርጓል"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ሁኔታ:</b> ክፍተኛ ደረጃ ተሰጥቶታል"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ሁኔታ:</b> ዝቅተኛ ደረጃ ተሰጥቶታል"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ቅድሚያ የሚሰጠው ሁነታ በሚበራበት ጊዜም ቢሆን ሁልጊዜ በማሳወቂያዎችዎ አናት ላይ ይታያል"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"በውይይት ማሳወቂያዎች አናት ላይ እና በማያ ገጽ መቆለፊያ ላይ እንደ መገለጫ ምስል ይታያል"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"በውይይት ማሳወቂያዎች አናት ላይ እና በማያ ገጽ መቆለፊያ ላይ እንደ መገለጫ ምስል ይታያል፣ እንደ አረፋ ሆኖ ይታያል"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"በውይይት ማሳወቂያዎች አናት ላይ እና በማያ ገጽ መቆለፊያ ላይ እንደ መገለጫ ምስል ይታያል፣ አትረብሽን ያቋርጣል"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"በውይይት ማሳወቂያዎች አናት ላይ እና በማያ ገጽ መቆለፊያ ላይ እንደ መገለጫ ምስል ይታያል፣ እንደ አረፋ ሆኖ ይታያል፣ አትረብሽን ያቋርጣል"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ቅንብሮች"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ቅድሚያ የሚሰጣቸው ውይይቶች"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ቅድሚያ"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> የውይይት ባህሪያትን አይደግፍም"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"እነዚህ ማሳወቂያዎች ሊሻሻሉ አይችሉም።"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"የማሳወቂያዎች ይህ ቡድን እዚህ ላይ ሊዋቀር አይችልም"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"በርቷል"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ጠፍቷል"</string> <string name="tile_unavailable" msgid="3095879009136616920">"አይገኝም"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"የአሰሳ አሞሌ"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"አቀማመጥ"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"ተጨማሪ የግራ አዝራር ዓይነት"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"የስርዓት ዳሰሳ ተዘምኗል። ለውጦችን ለማድረግ ወደ ቅንብሮች ይሂዱ።"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"የስርዓት ዳሰሳን ለማዘመን ወደ ቅንብሮች ይሂዱ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ተጠባባቂ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"ልወጣ ወደ ቅድሚያ ተቀናብሯል"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ቅድሚያ የሚሰጣቸው ውይይቶች"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"እነዚህ ውይይቶች በዝርዝሮችዎ አናት ላይ የሚታዩ ሲሆን ቅድሚያ የሚሰጠው ሁነታ ሲበራ ሁልጊዜ ሊደርሱዎት ይችላሉ"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"የመገለጫ ሥዕሎች በማያ ገጽ ቆልፉ ላይ ይታያሉ"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"እነዚህን ውይይቶች በመነሻ ማያ ገጽዎ ላይ በአረፋዎች ውስጥ በቀላሉ ማግኘት ይችላሉ"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"አትረብሽን አቋርጥ"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"ገባኝ"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ቅንብሮች"</string> <string name="magnification_window_title" msgid="4863914360847258333">"የማጉያ መስኮት"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"የማጉያ መስኮት መቆጣጠሪያዎች"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"አጉላ"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 5ab2dc85a225..cfbab4b0e858 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"تم إيقاف نقطة اتصال الجوّال."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"تم تفعيل نقطة اتصال الجوّال."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"توقف إرسال الشاشة."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"وضع العمل معطَّل."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"وضع العمل قيد التشغيل."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"تم إيقاف وضع العمل."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"تم تفعيل وضع العمل."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"تم إيقاف توفير البيانات."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"تم تفعيل توفير البيانات."</string> @@ -418,6 +420,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"قيد <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"تحذير <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"الملف الشخصي للعمل"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"الإضاءة الليلية"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"تفعيل عند غروب الشمس"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"حتى شروق الشمس"</string> @@ -477,10 +481,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"كتم الصوت\nتمامًا"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"الأولوية \nفقط"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"التنبيهات\nفقط"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن لاسلكيًا (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> على اكتمال الشحن)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن (يتبقى <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> حتى الامتلاء)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن سريعًا (يتبقى <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> حتى الامتلاء)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • جارٍ الشحن ببطء (يتبقى <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> حتى الامتلاء)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تبديل المستخدم"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"تبديل المستخدم، المستخدم الحالي <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"المستخدم الحالي <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -680,10 +688,12 @@ <string name="wallet_title" msgid="5369767670735827105">"المحفظة"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"عرض الكل"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"فتح القفل للدفع"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"جاهز"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"إعداد طريقة دفع"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"فتح القفل للاستخدام"</string> <string name="wallet_error_generic" msgid="257704570182963611">"حدثت مشكلة أثناء الحصول على البطاقات، يُرجى إعادة المحاولة لاحقًا."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"الملف الشخصي للعمل"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"وضع الطيران"</string> <string name="add_tile" msgid="6239678623873086686">"إضافة فئة"</string> @@ -752,9 +762,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>الحالة:</b> تم خفض الترتيب إلى الوضع صامت"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>الحالة:</b> تمت زيادة الترتيب"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>الحالة:</b> تم خفض الترتيب"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"يتم دائمًا عرض هذه المحادثات في أعلى الإشعارات حتى عندما يكون وضع \"الأولوية\" مفعّلاً."</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"تظهر في أعلى إشعارات المحادثات وكصورة ملف شخصي على شاشة القفل."</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"تظهر في أعلى إشعارات المحادثات وكصورة ملف شخصي على شاشة القفل وتظهر على شكل فقاعة."</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"تظهر في أعلى إشعارات المحادثات وكصورة ملف شخصي على شاشة القفل، وتقاطع ميزة \"عدم الإزعاج\"."</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"تظهر في أعلى إشعارات المحادثات وكصورة ملف شخصي على شاشة القفل وتظهر على شكل فقاعة لمقاطعة ميزة \"عدم الإزعاج\"."</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"الإعدادات"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"المحادثات ذات الأولوية"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"الأولوية"</string> <string name="no_shortcut" msgid="8257177117568230126">"لا يدعم تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> ميزات المحادثات."</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"يتعذّر تعديل هذه الإشعارات."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"يتعذّر ضبط مجموعة الإشعارات هذه هنا."</string> @@ -876,8 +889,10 @@ <string name="accessibility_data_saver_on" msgid="5394743820189757731">"تم تفعيل توفير البيانات"</string> <string name="accessibility_data_saver_off" msgid="58339669022107171">"تم إيقاف توفير البيانات"</string> <string name="switch_bar_on" msgid="1770868129120096114">"مفعّل"</string> - <string name="switch_bar_off" msgid="5669805115416379556">"إيقاف"</string> + <string name="switch_bar_off" msgid="5669805115416379556">"متوقف"</string> <string name="tile_unavailable" msgid="3095879009136616920">"غير متوفّر"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"شريط التنقل"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"التنسيق"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"نوع زر اليسار الإضافي"</string> @@ -1036,14 +1051,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"تم تحديث التنقل داخل النظام. لإجراء التغييرات، يُرجى الانتقال إلى \"الإعدادات\"."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"الانتقال إلى \"الإعدادات\" لتعديل التنقل داخل النظام"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"وضع الاستعداد"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"تم ضبط المحادثة على أنها ذات أولوية"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"المحادثات ذات الأولوية"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"يتم عرض هذه المحادثات في أعلى القائمة ويمكن دائمًا أن يتم عرضها لك عندما يكون وضع \"الأولوية\" مفعّلاً."</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"يتم عرض صور الملفات الشخصية على شاشة القفل."</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"يمكنك بسهولة العثور على هذه المحادثات في فقاعات المحادثات على شاشتك الرئيسية."</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"لا تتقيّد بميزة \"عدم الإزعاج\""</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"حسنًا"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"الإعدادات"</string> <string name="magnification_window_title" msgid="4863914360847258333">"نافذة التكبير"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"عناصر التحكم في نافذة التكبير"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"تكبير"</string> @@ -1064,8 +1071,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"نقل إلى أسفل يسار الشاشة"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"نقله إلى الحافة وإخفاؤه"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"نقله إلى خارج الحافة وإظهاره"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"إيقاف/تفعيل"</string> <string name="quick_controls_title" msgid="6839108006171302273">"أدوات التحكم بالأجهزة"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"إضافة عناصر تحكّم لأجهزتك المتصلة"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"إعداد أدوات التحكم بالجهاز"</string> @@ -1116,8 +1122,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"إغلاق"</string> <string name="controls_media_resume" msgid="1933520684481586053">"استئناف التشغيل"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"الإعدادات"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"تشغيل"</string> <string name="controls_error_timeout" msgid="794197289772728958">"غير نشط، تحقّق من التطبيق."</string> <string name="controls_error_retryable" msgid="864025882878378470">"حدث خطأ، جارٍ إعادة المحاولة…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"لم يتم العثور عليه."</string> @@ -1178,5 +1183,5 @@ <string name="accessibility_udfps_disabled_button" msgid="4284034245130239384">"مستشعر بصمات الإصبع غير مفعّل."</string> <string name="accessibility_authenticate_hint" msgid="798914151813205721">"المصادقة"</string> <string name="accessibility_enter_hint" msgid="2617864063504824834">"الدخول إلى الجهاز"</string> - <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"يمكنك استخدام بصمة الإصبع لفتح"</string> + <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"يمكنك استخدام بصمة الإصبع للفتح"</string> </resources> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index bceb6c9250ae..d20b67d4dbc5 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"ম’বাইল হটস্পট অফ কৰা হ’ল।"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"ম’বাইল হটস্পট অন কৰা হ’ল।"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"স্ক্ৰীণ কাষ্টিং বন্ধ কৰা হ’ল।"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"কৰ্মস্থান ম\'ড অফ হৈ আছে।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"কৰ্মস্থান ম\'ড অন হৈ আছে।"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"কৰ্মস্থান ম\'ড অফ কৰা হ’ল।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"কৰ্মস্থান ম\'ড অন কৰা হ’ল।"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ডেটা সঞ্চয়কাৰী সুবিধা অফ কৰা হ’ল।"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ডেটা সঞ্চয়কাৰী সুবিধা অন কৰা হ’ল।"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> সীমা"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> সকীয়নি"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"কৰ্মস্থানৰ প্ৰ\'ফাইল"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ৰাতিৰ পোহৰ"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"সূৰ্যাস্তত অন কৰক"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"সূৰ্যোদয়ৰ লৈকে"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"সম্পূর্ণ \n নিৰৱতা"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"কেৱল\nগুৰুত্বপূৰ্ণ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"কেৱল\nএলাৰ্মসমূহ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • বেতাঁৰৰ জৰিয়তে চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ’বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • দ্ৰুতগতিৰে চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • লাহে লাহে চ্চাৰ্জ কৰি থকা হৈছে (সম্পূৰ্ণ হ\'বলৈ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> বাকী)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যৱহাৰকাৰী সলনি কৰক"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ব্যৱহাৰকাৰী সলনি কৰক, বৰ্তমানৰ ব্যৱহাৰকাৰী <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"বর্তমানৰ ব্যৱহাৰকাৰী <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"ৱালেট"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"আটাইবোৰ দেখুৱাওক"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"পৰিশোধ কৰিবলৈ আনলক কৰক"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"সাজু"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"পৰিশোধ ছেট আপ কৰক"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ব্যৱহাৰ কৰিবলৈ আনলক কৰক"</string> <string name="wallet_error_generic" msgid="257704570182963611">"আপোনাৰ কাৰ্ড লাভ কৰোঁতে এটা সমস্যা হৈছে, অনুগ্ৰহ কৰি পাছত পুনৰ চেষ্টা কৰক"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"কৰ্মস্থানৰ প্ৰ\'ফাইল"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"এয়াৰপ্লেইন ম\'ড"</string> <string name="add_tile" msgid="6239678623873086686">"টাইল যোগ দিয়ক"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>স্থিতি:</b> নীৰৱলৈ হ্ৰাস কৰা হৈছে"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>স্থিতি:</b> স্থান ওপৰলৈ কৰা হৈছে"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>স্থিতি:</b> স্থান তললৈ কৰা হৈছে"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"সদায় আপোনাৰ জাননীৰ শীৰ্ষত দেখুওৱা হয় আনকি অগ্ৰাধিকাৰ ম’ডটো অন হৈ থাকিলেও"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়, এটা বাবল হিচাপে দেখা পোৱা যায়"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়, অসুবিধা নিদিব ম’ডত ব্যাঘাত জন্মায়"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"বাৰ্তালাপৰ জাননীৰ শীৰ্ষত আৰু প্ৰ’ফাইল চিত্ৰ হিচাপে লক স্ক্ৰীনত দেখুৱায়, এটা বাবল হিচাপে দেখা পোৱা যায়, অসুবিধা নিদিব ম’ডত ব্যাঘাত জন্মায়"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ছেটিংসমূহ"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"অগ্ৰাধিকাৰপ্ৰাপ্ত বাৰ্তালাপ"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"অগ্ৰাধিকাৰ"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ বাৰ্তালাপৰ সুবিধাসমূহ সমৰ্থন নকৰে"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"এই জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"এই ধৰণৰ জাননীবোৰ ইয়াত কনফিগাৰ কৰিব পৰা নাযায়"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"অন"</string> <string name="switch_bar_off" msgid="5669805115416379556">"অফ"</string> <string name="tile_unavailable" msgid="3095879009136616920">"উপলব্ধ নহয়"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"নেভিগেশ্বন দণ্ড"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"লেআউট"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"বাওঁ বুটামৰ অতিৰিক্ত প্ৰকাৰ"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ছিষ্টেম নেভিগেশ্বন আপডে’ট কৰা হ’ল। সলনি কৰিবলৈ ছেটিংসমূহ-লৈ যাওক।"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ছিষ্টেম নেভিগেশ্বন আপডে’ট কৰিবলৈ ছেটিংসমূহ-লৈ যাওক"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ষ্টেণ্ডবাই"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"বাৰ্তালাপসমূহ অগ্ৰাধিকাৰপ্ৰাপ্ত হিচাপে ছেট কৰা হৈছে"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"অগ্ৰাধিকাৰপ্ৰাপ্ত বাৰ্তালাপ"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"এই বাৰ্তালাপসমূহ আপোনাৰ সূচীৰ শীৰ্ষত দেখুওৱা হয় আৰু অগ্ৰাধিকাৰ ম’ডটো অন হৈ থাকিলে আপুনি সদায় এইসমূহ পাব পাৰে"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"লক স্ক্ৰীনত প্ৰ’ফাইল চিত্ৰ দেখুওৱা হয়"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"আপুনি নিজৰ গৃহ স্ক্ৰীনৰ বাবলত সহজে এই বাৰ্তালাপসমূহ বিচাৰি পাব পাৰে"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"অসুবিধা নিদিব সুবিধাটোত ব্যাঘাত জন্মাওক"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"বুজি পালোঁ"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ছেটিংসমূহ"</string> <string name="magnification_window_title" msgid="4863914360847258333">"বিবৰ্ধন ৱিণ্ড’"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"বিবৰ্ধন ৱিণ্ড’ৰ নিয়ন্ত্ৰণসমূহ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"জুম ইন কৰক"</string> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 466d24ef491d..d30d8ab57b71 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobil hotspot deaktivdir."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobil hotspot aktivdir."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ekran yayımı dayandırıldı."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"İş rejimi deaktivdir."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"İş rejimi aktivdir."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"İş rejimi sönülüdür."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"İş rejimi yanılıdır."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Trafikə qənaət edilmir."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Trafikə qənaət edilir."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> xəbərdarlığı"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"İş profili"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Gecə işığı"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Qürubda aktiv ediləcək"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Şəfəq vaxtına qədər"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Tam\nsakitlik"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Yalnız\nprioritet"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Yalnız\nalarmlar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Simsiz şəkildə batareya yığır (tam dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qalıb)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Enerji yığır (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> dolana qədər)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sürətlə enerji yığır (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> dolana qədər)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Yavaş enerji yığır (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> dolana qədər)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"İstifadəçiləri dəyişin, indiki istifadəçi: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Cari istifadəçi <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Pulqabı"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Hamısını göstər"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Ödəmək üçün kiliddən çıxarın"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Hazır"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Ödəniş kartı ayarlayın"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"İstifadə etmək üçün kiliddən çıxarın"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Kartların əldə edilməsində problem oldu, sonra yenidən cəhd edin"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"İş profili"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Təyyarə rejimi"</string> <string name="add_tile" msgid="6239678623873086686">"Xana əlavə edin"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Səssiz rejimə keçirilib"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Yuxarı sıraya keçirilib"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Aşağı sıraya keçirilib"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Prioritet rejimi aktiv olsa da, həmişə bildirişlərinizin yuxarı hissəsində göstərilir"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Söhbət bildirişlərinin yuxarısında və kilid ekranında profil şəkli kimi göstərilir"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Söhbət bildirişlərinin yuxarısında və kilid ekranında profil şəkli kimi göstərilir, baloncuq kimi görünür"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Söhbət bildirişlərinin yuxarısında və kilid ekranında profil şəkli kimi göstərilir, Narahat Etməyin rejimini kəsir"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Söhbət bildirişlərinin yuxarısında və kilid ekranında profil şəkli kimi göstərilir, baloncuq kimi görünür, Narahat Etməyin rejimini kəsir"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ayarlar"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Önəmli söhbətlər"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> söhbət funksiyalarını dəstəkləmir"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirişlər dəyişdirilə bilməz."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildiriş qrupunu burada konfiqurasiya etmək olmaz"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Aktiv"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Deaktiv"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Əlçatan deyil"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Naviqasiya paneli"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Tərtibat"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Əlavə sol düymə növü"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Sistem naviqasiyası yeniləndi. Dəyişiklik etmək üçün Ayarlara daxil olun."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Sistem naviqasiyasını yeniləmək üçün Ayarlara keçin"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Gözləmə rejimi"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Söhbət prioritet olaraq ayarlanıb"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Önəmli söhbətlər"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Bu söhbətlər siyahınızın yuxarı hissəsində göstərilir və Prioritet rejimi aktiv olduqda hər zaman sizə çata bilər"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profil şəkilləri kilid ekranında göstərilir"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Bu danışıqları Əsas ekranda yumrucuqlarda asanlıqla tapa bilərsiniz"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Narahat Etməyin rejimində göstərilsin"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Anladım"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Ayarlar"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Böyütmə Pəncərəsi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Böyütmə Pəncərəsi Kontrolları"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Yaxınlaşdırın"</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index f1303ce06190..dd342ff312a1 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobilni hotspot je isključen."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobilni hotspot je uključen."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Prebacivanje ekrana je zaustavljeno."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Režim rada je isključen."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Režim rada je uključen."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Režim rada je isključen."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Režim rada je uključen."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Ušteda podataka je isključena."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Ušteda podataka je uključena."</string> @@ -412,6 +414,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Ograničenje od <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Upozorenje za <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Poslovni profil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Noćno svetlo"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Uključuje se po zalasku sunca"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Do izlaska sunca"</string> @@ -471,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Samo\npriorit. prekidi"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bežično punjenje (napuniće se za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Puni se (napuniće se za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Brzo se puni (napuniće se za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sporo se puni (napuniće se za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zameni korisnika"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Promenite korisnika, aktuelni korisnik je <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktuelni korisnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -671,10 +679,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Novčanik"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Prikaži sve"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Otključaj radi plaćanja"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Spremno"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Podesite plaćanje"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Otključaj radi korišćenja"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Došlo je do problema pri preuzimanju kartica. Probajte ponovo kasnije"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Poslovni profil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Režim rada u avionu"</string> <string name="add_tile" msgid="6239678623873086686">"Dodaj pločicu"</string> @@ -743,9 +753,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Degradirano u Nečujno"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Rangirano više"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Rangirano niže"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Uvek se prikazuje u vrhu obaveštenja čak i kada je Prioritetni režim uključen"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Prikazuje se u vrhu obaveštenja o konverzacijama i kao slika profila na zaključanom ekranu"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Prikazuje se u vrhu obaveštenja o konverzacijama i kao slika profila na zaključanom ekranu, pojavljuje se kao oblačić"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Prikazuje se u vrhu obaveštenja o konverzacijama i kao slika profila na zaključanom ekranu, prekida režim Ne uznemiravaj"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikazuje se u vrhu obaveštenja o konverzacijama i kao slika profila na zaključanom ekranu, pojavljuje se kao oblačić, prekida režim Ne uznemiravaj"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Podešavanja"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioritetne konverzacije"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava funkcije konverzacije"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ova obaveštenja ne mogu da se menjaju."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ova grupa obaveštenja ne može da se konfiguriše ovde"</string> @@ -863,6 +876,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Uključeno"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Isključeno"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nedostupno"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Traka za navigaciju"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Raspored"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Dodatni tip levog dugmeta"</string> @@ -1021,14 +1036,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigacija sistema je ažurirana. Da biste uneli izmene, idite u Podešavanja."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Idite u Podešavanja da biste ažurirali navigaciju sistema"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje pripravnosti"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Konverzacija je podešena na prioritetnu"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioritetne konverzacije"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ove konverzacije se prikazuju u vrhu liste i uvek mogu da dopru do vas kada je Prioritetni režim uključen"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Slike profila se prikazuju na zaključanom ekranu"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Lako možete da pronađete ove konverzacije u oblačićima na početnom ekranu"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Ometa podešavanje Ne uznemiravaj"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Važi"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Podešavanja"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za uvećanje"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za uvećanje"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Uvećajte"</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index b86dad1e834b..eed153581347 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Мабільны хот-спот выключаецца."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Хот-спот уключаны."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Трансляцыя экрана спынена."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Рэжым працы выкл."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Рэжым працы ўкл."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Рэжым працы выключаны."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Рэжым працы ўключаны."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Эканомія трафіка адключана."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Эканомія трафіка ўключана."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Ліміт <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Папярэджанне: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Працоўны профіль"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Начная падсветка"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Уключаць увечары"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Да ўсходу сонца"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Поўная\nцішыня"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Толькі\nпрыярытэтныя"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Толькі\nбудзільнікі"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ідзе бесправадная зарадка (да поўнага зараду засталося <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"Ідзе зарадка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, яшчэ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"Ідзе хуткая зарадка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, яшчэ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"Ідзе павольная зарадка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> да канца)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Перайсці да іншага карыстальніка"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Перайсці да іншага карыстальніка, бягучы карыстальнік <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Бягучы карыстальнік <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Кашалёк"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Паказаць усе"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Разблакіраваць для аплаты"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Гатова"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Наладзіць спосаб аплаты"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Разблакіраваць для выкарыстання"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Узнікла праблема з загрузкай вашых карт. Паўтарыце спробу пазней"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Працоўны профіль"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Рэжым палёту"</string> <string name="add_tile" msgid="6239678623873086686">"Дадаць плітку"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Стан:</b> Пераведзена ў рэжым \"Без гуку\""</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Стан:</b> Ацэнена як важнае"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Стан:</b> Ацэнена як няважнае"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Заўсёды паказваюцца над вашымі апавяшчэннямі, нават калі ўключаны прыярытэтны рэжым"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"З\'яўляецца ўверсе раздзела размоў і паказвае на экране блакіроўкі відарыс профілю"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"З\'яўляецца ўверсе раздзела размоў як усплывальнае апавяшчэнне, якое паказвае на экране блакіроўкі відарыс профілю"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"З\'яўляецца ўверсе раздзела размоў, перарывае рэжым \"Не турбаваць\" і паказвае на экране блакіроўкі відарыс профілю"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"З\'яўляецца ўверсе раздзела размоў як усплывальнае апавяшчэнне, якое перарывае рэжым \"Не турбаваць\" і паказвае на экране блакіроўкі відарыс профілю"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Налады"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Прыярытэтныя размовы"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Прыярытэт"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не падтрымлівае функцыі размовы"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Гэтыя апавяшчэнні нельга змяніць."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Тут канфігурыраваць гэту групу апавяшчэнняў забаронена"</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Уключана"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Выключана"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Недаступна"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Панэль навігацыі"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Раскладка"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Дадатковы тып кнопкі \"ўлева\""</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Навігацыя ў сістэме абноўлена. Каб унесці змяненні, перайдзіце ў Налады."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Перайдзіце ў Налады, каб абнавіць параметры навігацыі ў сістэме"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Рэжым чакання"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Размова пазначана як прыярытэтная"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Прыярытэтныя размовы"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Гэтыя размовы паказваюцца ўверсе вашага спіса, і вы можаце заўсёды бачыць іх, калі ўключаны прыярытэтны рэжым"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Відарысы профілю паказваюцца на экране блакіроўкі"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Вы можаце лёгка знайсці гэтыя размовы ва ўсплывальных апавяшчэннях на галоўным экране"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Паказваюцца ў рэжыме \"Не турбаваць\""</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Зразумела"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Налады"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Акно павелічэння"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Налады акна павелічэння"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Павялічыць маштаб"</string> @@ -1054,8 +1061,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Перамясціць правей і ніжэй"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Перамясціць на край і схаваць"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Перамясціць за край і паказаць"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"уключыць/выключыць"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Элементы кіравання прыладай"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Дадайце элементы кіравання для падключаных прылад"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Наладзіць элементы кіравання прыладай"</string> @@ -1104,8 +1110,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Адхіліць"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Узнавіць"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Налады"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Прайграць"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Неактыўна, праверце праграму"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Памылка, паўторная спроба…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Не знойдзена"</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index e857489eff56..17480bf533b1 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Мобилната точка за достъп се изключи."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Мобилната точка за достъп се включи."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Предаването на съдържанието от екрана спря."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Работният режим е изключен."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Работният режим е включен."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Работният режим е изключен."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Работният режим е включен."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Функцията „Икономия на данни“ е изключена."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Функцията „Икономия на данни“ е включена."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Ограничение от <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Предупреждение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Служебен потребителски профил"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Нощно осветление"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Ще се вкл. по залез"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"До изгрев"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Пълна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Само\nс приоритет"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Само\nбудилници"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се безжично (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се бързо (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарежда се бавно (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до пълно зареждане)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Превключване между потребителите"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Превключване на потребителя – текущият е <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Текущ потребител – <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Портфейл"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Показване на всички"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Отключване с цел плащане"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Готово"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Настройване на плащане"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Отключване с цел използване"</string> <string name="wallet_error_generic" msgid="257704570182963611">"При извличането на картите ви възникна проблем. Моля, опитайте отново по-късно"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Потребителски профил в Work"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Самолетен режим"</string> <string name="add_tile" msgid="6239678623873086686">"Добавяне на плочка"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Състояние:</b> Понижено до беззвучно"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Състояние:</b> Класирано по-високо"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Състояние:</b> Класирано по-ниско"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Винаги се показва най-горе в списъка с известия дори когато режимът за приоритетни разговори е включен"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Показва се в горната част на известията за разговори и като снимка на потребителския профил на заключения екран"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Показва се в горната част на известията за разговори и като снимка на потребителския профил на заключения екран, изглежда като балонче"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Показва се в горната част на известията за разговори и като снимка на потребителския профил на заключения екран, прекъсва режима „Не безпокойте“"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Показва се в горната част на известията за разговори и като снимка на потребителския профил на заключения екран, изглежда като балонче, прекъсва режима „Не безпокойте“"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Настройки"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Разговори с приоритет"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддържа функциите за разговор"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Тези известия не могат да бъдат променяни."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Тази група от известия не може да бъде конфигурирана тук"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Вкл."</string> <string name="switch_bar_off" msgid="5669805115416379556">"Изкл."</string> <string name="tile_unavailable" msgid="3095879009136616920">"Не е налице"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Лента за навигация"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Оформление"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Тип на допълнителния ляв бутон"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Режимът за навигиране в системата е актуализиран. За да извършите промени, отворете настройките."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Отворете настройките, за да актуализирате режима за навигиране в системата"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Режим на готовност"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Разговорът е зададен като приоритетен"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Разговори с приоритет"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Тези разговори се показват най-горе в списъка ви и винаги ще стигат до вас, когато приоритетният режим е включен"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Снимките на потребителските профили се показват на заключения екран"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Лесно можете да намерите тези разговори под формата на балончета на началния екран"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Прекъсване на режима „Не безпокойте“"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Разбрах"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Настройки"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Прозорец за ниво на мащаба"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Контроли за прозореца за ниво на мащаба"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Увеличаване на мащаба"</string> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index 8f9953ba2a6d..adbef201fef7 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"মোবাইল হটস্পট বন্ধ হয়েছে।"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"মোবাইল হটস্পট চালু হয়েছে।"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"স্ক্রিন কাস্ট করা থেমেছে।"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"কাজের মোড বন্ধ আছে"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"কাজের মোড চালু আছে"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"কাজের মোড বন্ধ আছে।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"কাজের মোড চালু আছে"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ডেটা সেভার বন্ধ আছে।"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ডেটা সেভার চালু আছে।"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"সীমা <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> সতর্কতা"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"কাজের প্রোফাইল"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"নাইট লাইট"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"সূর্যাস্তে চালু হবে"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"সূর্যোদয় পর্যন্ত"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"একদম\nনিরব"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"শুধুমাত্র\nঅগ্রাধিকার"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"শুধুমাত্র\nঅ্যালার্মগুলি"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ওয়্যারলেস পদ্ধতিতে চার্জ হচ্ছে (পুরোটা হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • চার্জ হচ্ছে (পুরো চার্জ হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • দ্রুত চার্জ হচ্ছে (পুরোটা হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ধীরে চার্জ হচ্ছে (পুরোটা হতে <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> লাগবে)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ব্যবহারকারী পাল্টে দিন"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ব্যবহারকারী পাল্টান, বর্তমান ব্যবহারকারী <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"<xliff:g id="CURRENT_USER_NAME">%s</xliff:g> হল বর্তমান ব্যবহারকারী"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"সবকটি দেখুন"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"পেমেন্ট করতে ডিভাইস আনলক করুন"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"রেডি"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"পেমেন্ট সেট আপ করুন"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ব্যবহার করতে আনলক করুন"</string> <string name="wallet_error_generic" msgid="257704570182963611">"আপনার কার্ড সংক্রান্ত তথ্য পেতে সমস্যা হয়েছে, পরে আবার চেষ্টা করুন"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"কাজের প্রোফাইল"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"বিমান মোড"</string> <string name="add_tile" msgid="6239678623873086686">"টাইল যোগ করুন"</string> @@ -740,9 +750,16 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>স্ট্যাটাস:</b> লেভেল কমিয়ে সাইলেন্ করা হয়েছে"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>স্ট্যাটাস:</b> র্যাঙ্ক বেড়ে গেছে"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>স্ট্যাটাস:</b> র্যাঙ্ক কমে গেছে"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"এমনকি \'অগ্রাধিকার\' মোড চালু থাকলেও এটি সব সময় আপনার বিজ্ঞপ্তির উপরে দেখা যায়"</string> + <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> + <skip /> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"সেটিংস"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"গুরুত্বপূর্ণ কথোপকথন"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"অগ্রাধিকার"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এ কথোপকথন ফিচার কাজ করে না"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"এই বিজ্ঞপ্তিগুলি পরিবর্তন করা যাবে না।"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"এই সমস্ত বিজ্ঞপ্তিকে এখানে কনফিগার করা যাবে না"</string> @@ -858,6 +875,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"চালু আছে"</string> <string name="switch_bar_off" msgid="5669805115416379556">"বন্ধ আছে"</string> <string name="tile_unavailable" msgid="3095879009136616920">"উপলভ্য নয়"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"নেভিগেশন বার"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"লেআউট"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"অতিরিক্ত বাঁদিকের বোতামের ধরণ"</string> @@ -1016,14 +1035,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"সিস্টেম নেভিগেশন আপডেট হয়েছে। পরিবর্তন করার জন্য সেটিংসে যান।"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"সিস্টেম নেভিগেশন আপডেট করতে সেটিংসে যান"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"স্ট্যান্ডবাই"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"কথোপকথনকে \'গুরুত্বপূর্ণ\' হিসেবে সেট করা হয়েছে"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"গুরুত্বপূর্ণ কথোপকথন"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"এই কথোপকথনগুলি আপনার তালিকার একেবারে উপরে দেখা যায় এবং \'অগ্রাধিকার\' মোড চালু থাকলে সব সময় আপনি সেগুলি পড়তে পারেন"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"প্রোফাইল ছবি লক স্ক্রিনে দেখা যায়"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"আপনার হোম স্ক্রিনের বাবলে সহজেই এই গুরুত্বপূর্ণ কথোপকথনগুলি দেখতে পাবেন"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"বিরক্ত করবে না মোডে ব্যাঘাত ঘটাতে পারে"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"বুঝেছি"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"সেটিংস"</string> <string name="magnification_window_title" msgid="4863914360847258333">"উইন্ডো বড় করে দেখা"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"উইন্ডো কন্ট্রোল বড় করে দেখা"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"বড় করুন"</string> @@ -1044,8 +1055,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"নিচে ডান দিকে সরান"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"প্রান্তে যান ও আড়াল করুন"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"প্রান্ত থেকে সরান এবং দেখুন"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"টগল করুন"</string> <string name="quick_controls_title" msgid="6839108006171302273">"ডিভাইস কন্ট্রোল"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"আপনার কানেক্ট করা ডিভাইসের জন্য কন্ট্রোল যোগ করুন"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"ডিভাইস কন্ট্রোল সেট-আপ করুন"</string> @@ -1092,8 +1102,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"খারিজ করুন"</string> <string name="controls_media_resume" msgid="1933520684481586053">"আবার চালু করুন"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"সেটিংস"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"চালান"</string> <string name="controls_error_timeout" msgid="794197289772728958">"বন্ধ আছে, অ্যাপ চেক করুন"</string> <string name="controls_error_retryable" msgid="864025882878378470">"সমস্যা, আবার চেষ্টা করা হচ্ছে…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"খুঁজে পাওয়া যায়নি"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index 482c8ad816f9..a54dffe5f555 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobilna pristupna tačka je isključena."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobilna pristupna tačka je uključena."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Prebacivanje ekrana je zaustavljeno."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Poslovni režim isključen."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Poslovni režim uključen."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Poslovni režim je isključen."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Poslovni režim je uključen."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Ušteda podataka je isključena."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Ušteda podataka je uključena."</string> @@ -412,6 +414,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Ograničenje <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Upozorenje <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Radni profil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Noćno svjetlo"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Uključuje se u sumrak"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Do svitanja"</string> @@ -471,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Samo\nprioritetni prekidi"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bežično punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do potpune napunjenosti)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Brzo punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Brzo punjenje (još <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Zamijeni korisnika"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Zamijeni korisnika. Trenutni korisnik je <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Trenutni korisnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -671,10 +679,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Novčanik"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Prikaži sve"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Otključaj za plaćanje"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Spremno"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Postavite način plaćanja"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Otključajte da koristite"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Došlo je do problema prilikom preuzimanja vaših kartica. Pokušajte ponovo kasnije"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profil za posao"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Način rada u avionu"</string> <string name="add_tile" msgid="6239678623873086686">"Dodaj pločicu"</string> @@ -743,9 +753,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> je unazađen u Nečujno"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> je rangiran više"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> je rangiran niže"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Uvijek se prikazuje na vrhu obavještenja, čak i kada je uključen način rada Prioriteti"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Prikazuje se na vrhu obavještenja u razgovorima i kao slika profila na zaključanom ekranu"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Prikazuje se na vrhu obavještenja u razgovorima i kao slika profila na zaključanom ekranu, izgleda kao oblačić"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Prikazuje se na vrhu obavještenja u razgovorima i kao slika profila na zaključanom ekranu, prekida funkciju Ne ometaj"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikazuje se na vrhu obavještenja u razgovorima i kao slika profila na zaključanom ekranu, izgleda kao oblačić, prekida funkciju Ne ometaj"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Postavke"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioritetni razgovori"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritetni"</string> <string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava funkcije razgovora"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ta obavještenja se ne mogu izmijeniti."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovu grupu obavještenja nije moguće konfigurirati ovdje"</string> @@ -863,6 +876,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Uključeno"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Isključeno"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nedostupno"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigaciona traka"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Raspored"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Vrsta dodatnog dugmeta lijevo"</string> @@ -1021,14 +1036,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigiranje sistemom je ažurirano. Da izvršite promjene, idite u Postavke."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Idite u Postavke da ažurirate navigiranje sistemom"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje mirovanja"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Razgovor je postavljen kao prioritetan"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioritetni razgovori"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ti razgovori se prikazuju na vrhu liste i uvijek ih možete vidjeti kada je uključen način rada Prioriteti"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Slike profila se prikazuju na zaključanom ekranu"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"S lakoćom možete pronaći te razgovore u oblačićima na Početnom ekranu"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Prekida način rada Ne ometaj"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Razumijem"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Postavke"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za uvećavanje"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za uvećavanje"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Uvećavanje"</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index ac86cfbba09e..803bbd1d5ec5 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"El punt d\'accés mòbil està desactivat."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"El punt d\'accés mòbil està activat."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"S\'ha aturat l\'emissió de la pantalla."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"El mode de feina està desactivat."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"El mode de feina està activat."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"S\'ha desactivat el mode de feina."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"S\'ha activat el mode de feina."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"S\'ha desactivat l\'Economitzador de dades."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"S\'ha activat l\'Economitzador de dades."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Límit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Advertiment: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Perfil de treball"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Llum nocturna"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Al vespre"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Fins a l\'alba"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silenci\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Només\ninterr. prior."</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Només\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant sense fil (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • S\'està carregant (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregant ràpidament (temps restant: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregant lentament (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> per completar la càrrega)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Canvia d\'usuari"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Canvia d\'usuari. Usuari actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuari actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -514,7 +522,7 @@ <string name="manage_notifications_text" msgid="6885645344647733116">"Gestiona"</string> <string name="manage_notifications_history_text" msgid="57055985396576230">"Historial"</string> <string name="notification_section_header_incoming" msgid="850925217908095197">"Novetats"</string> - <string name="notification_section_header_gentle" msgid="6804099527336337197">"Silenci"</string> + <string name="notification_section_header_gentle" msgid="6804099527336337197">"Silenciat"</string> <string name="notification_section_header_alerting" msgid="5581175033680477651">"Notificacions"</string> <string name="notification_section_header_conversations" msgid="821834744538345661">"Converses"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Esborra totes les notificacions silencioses"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Mostra-ho tot"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Desbloqueja per pagar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Preparat"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configura un pagament"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloqueja per utilitzar"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Hi ha hagut un problema en obtenir les teves targetes; torna-ho a provar més tard"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Perfil de treball"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Mode d\'avió"</string> <string name="add_tile" msgid="6239678623873086686">"Afegeix un mosaic"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Estat</b>: s\'ha disminuït a Silenci"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Estat</b>: s\'ha classificat amb un nivell superior"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Estat</b>: s\'ha classificat amb un nivell inferior"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Mostra sempre a la part superior de la llista de notificacions, fins i tot quan el mode Prioritat està activat"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Es mostra a la part superior de les notificacions de les converses i com a foto de perfil a la pantalla de bloqueig"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Es mostra a la part superior de les notificacions de les converses i com a foto de perfil a la pantalla de bloqueig, apareix com una bombolla"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Es mostra a la part superior de les notificacions de les converses i com a foto de perfil a la pantalla de bloqueig, interromp el mode No molestis"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Es mostra a la part superior de les notificacions de les converses i com a foto de perfil a la pantalla de bloqueig, apareix com una bombolla, interromp el mode No molestis"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configuració"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Converses prioritàries"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritat"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admet les funcions de converses"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Aquestes notificacions no es poden modificar."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquest grup de notificacions no es pot configurar aquí"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Activat"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Desactivat"</string> <string name="tile_unavailable" msgid="3095879009136616920">"No disponible"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barra de navegació"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Disposició"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tipus de botó addicional de l\'esquerra"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"S\'ha actualitzat el sistema de navegació. Per fer canvis, ves a Configuració."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Ves a Configuració per actualitzar el sistema de navegació"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"La conversa s\'ha definit com a prioritària"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Converses prioritàries"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Aquestes converses es mostren a la part superior de la llista i les pots rebre sempre amb el mode Prioritat activat"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Les fotos de perfil es mostren a la pantalla de bloqueig"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Pots trobar fàcilment aquestes converses a les bombolles de la pantalla d\'inici"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interromp el mode No molestis"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Entesos"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Configuració"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Finestra d\'ampliació"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Finestra de controls d\'ampliació"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Amplia"</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index bf969a19d21e..8ed760a0029c 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot je vypnutý."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot je zapnutý."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Odesílání obrazovky zastaveno."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Pracovní režim vypnutý"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Pracovní režim zapnutý"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Pracovní režim je vypnutý."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Pracovní režim je zapnutý."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Spořič dat byl vypnut."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Spořič dat byl zapnut."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Upozornění při <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Pracovní profil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Noční režim"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Při soumraku"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Do svítání"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Úplné\nticho"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Pouze\nprioritní"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Pouze\nbudíky"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bezdrátové nabíjení (plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíjení (plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Rychlé nabíjení (plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Pomalé nabíjení (plně nabito za <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Přepnout uživatele"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Přepnout uživatele, aktuální uživatel: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktuální uživatel <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -561,7 +569,7 @@ <string name="monitoring_button_view_controls" msgid="8316440345340701117">"Zobrazit ovládací prvky"</string> <string name="monitoring_description_named_management" msgid="505833016545056036">"Toto zařízení patří organizaci <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g>.\n\nVáš administrátor IT může sledovat a spravovat nastavení, firemní přístup, aplikace, data přidružená k tomuto zařízení a jeho polohu.\n\nDalší informace vám poskytne váš administrátor IT."</string> <string name="monitoring_financed_description_named_management" msgid="6108439201399938668">"<xliff:g id="ORGANIZATION_NAME_0">%1$s</xliff:g> má přístup k datům spojeným s tímto zařízením, může měnit jeho nastavení a spravovat aplikace.\n\nPokud máte nějaké otázky, obraťte se na organizaci <xliff:g id="ORGANIZATION_NAME_1">%2$s</xliff:g>."</string> - <string name="monitoring_description_management" msgid="4308879039175729014">"Toto zařízení patří vaší organizaci\n\nVáš administrátor IT může sledovat a spravovat nastavení, firemní přístup, aplikace, data přidružená k tomuto zařízení a jeho polohu.\n\nDalší informace vám poskytne váš administrátor IT."</string> + <string name="monitoring_description_management" msgid="4308879039175729014">"Toto zařízení patří vaší organizaci.\n\nVáš administrátor IT může sledovat a spravovat nastavení, firemní přístup, aplikace, data přidružená k tomuto zařízení a jeho polohu.\n\nDalší informace vám poskytne administrátor IT."</string> <string name="monitoring_description_management_ca_certificate" msgid="7785013130658110130">"Organizace do tohoto zařízení nainstalovala certifikační autoritu. Zabezpečený síťový provoz může být sledován nebo upravován."</string> <string name="monitoring_description_managed_profile_ca_certificate" msgid="7904323416598435647">"Organizace do vašeho pracovního profilu nainstalovala certifikační autoritu. Zabezpečený síťový provoz může být sledován nebo upravován."</string> <string name="monitoring_description_ca_certificate" msgid="448923057059097497">"V zařízení je nainstalována certifikační autorita. Zabezpečený síťový provoz může být sledován nebo upravován."</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Peněženka"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Zobrazit vše"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Odemknout a zaplatit"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Připraveno"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Nastavit platbu"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Odemknout a použít"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Při načítání karet došlo k problému, zkuste to později"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Pracovní profil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Režim Letadlo"</string> <string name="add_tile" msgid="6239678623873086686">"Přidat dlaždici"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Stav:</b> priorita snížena na Tiché"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Stav:</b> zařazeno výše"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Stav:</b> zařazeno níže"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Vždy se zobrazuje na začátku vašich oznámení (i když je zapnutý prioritní režim)"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Zobrazuje se v horní části oznámení konverzace a jako profilový obrázek na obrazovce uzamčení"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Zobrazuje se v horní části oznámení konverzace a jako profilový obrázek na obrazovce uzamčení, má podobu bubliny"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Zobrazuje se v horní části oznámení konverzace a jako profilový obrázek na obrazovce uzamčení, deaktivuje režim Nerušit"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Zobrazuje se v horní části oznámení konverzace a jako profilový obrázek na obrazovce uzamčení, má podobu bubliny a deaktivuje režim Nerušit"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Nastavení"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioritní konverzace"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priorita"</string> <string name="no_shortcut" msgid="8257177117568230126">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> funkce konverzace nepodporuje"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Tato oznámení nelze upravit."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Tuto skupinu oznámení tady nelze nakonfigurovat"</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Zapnuto"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Vypnuto"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nedostupné"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigační panel"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Rozvržení"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Zvláštní typ tlačítka vlevo"</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systémová navigace byla aktualizována. Chcete-li provést změny, přejděte do Nastavení."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Přejděte do Nastavení a aktualizujte systémovou navigaci"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Pohotovostní režim"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Konverzace byla nastavena jako prioritní"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioritní konverzace"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Tyto konverzace se zařazují na začátek seznamu, a když je zapnutý prioritní režim, mohou se vám vždy zobrazit"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Na obrazovce uzamčení se zobrazují profilové obrázky"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Tyto konverzace snadno najdete v bublinách na ploše"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Přerušit režim Nerušit"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Rozumím"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Nastavení"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Zvětšovací okno"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Ovládací prvky zvětšovacího okna"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Přiblížit"</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index abcb89e0de39..c76ebc3082d3 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobilhotspot er slået fra."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobilhotspot er slået til."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Casting af din skærm er stoppet."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Arbejdstilstand er slået fra."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Arbejdstilstand er slået til."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Arbejdstilstand er slået fra."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Arbejdstilstand er slået til."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Datasparefunktionen er slået fra."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Datasparefunktionen er aktiveret."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Grænse: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Advarsel ved <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Arbejdsprofil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nattelys"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Tænd ved solnedgang"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Indtil solopgang"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nstilhed"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Kun\nprioritet"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Kun\nalarmer"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Trådløs opladning (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> til batteriet er fuldt opladet)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Oplader (fuldt opladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Oplader hurtigt (fuldt opladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Oplader langsomt (fuldt opladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skift bruger"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Skift bruger. Nuværende bruger er <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Nuværende bruger: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Vis alle"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Lås op for at betale"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Klar"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Konfigurer betalingsmetode"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Lås op for at bruge"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Dine kort kunne ikke hentes. Prøv igen senere."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Arbejdsprofil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Flytilstand"</string> <string name="add_tile" msgid="6239678623873086686">"Tilføj et felt"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Angivet som Lydløs"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Rangeret højere"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Placeret lavere"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Vises altid øverst i dine notifikationer – også når tilstanden Prioritet er aktiveret"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Vises øverst i samtalenotifikationer og som et profilbillede på låseskærmen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Vises øverst i samtalenotifikationer og som et profilbillede på låseskærmen. Vises som en boble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Vises øverst i samtalenotifikationer og som et profilbillede på låseskærmen. Afbryder Forstyr ikke"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Vises øverst i samtalenotifikationer og som et profilbillede på låseskærmen. Vises som en boble, der afbryder Forstyr ikke"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Indstillinger"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioriterede samtaler"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> understøtter ikke samtalefunktioner"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse notifikationer kan ikke redigeres."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Du kan ikke konfigurere denne gruppe notifikationer her"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Til"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Fra"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Ikke tilgængelig"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigationslinje"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Ekstra venstre knaptype"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemnavigationen blev opdateret. Gå til Indstillinger for at foretage ændringer."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gå til Indstillinger for at opdatere systemnavigationen"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Samtalen er angivet som prioriteret"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioriterede samtaler"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Disse samtaler vises øverst på din liste og kan altid ses af dig, når tilstanden Prioritet er aktiveret"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profilbilleder vises på låseskærmen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Du kan nemt finde disse samtaler i bobler på din startskærm"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Afbryd Forstyr ikke"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Indstillinger"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Vindue med forstørrelse"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Vindue med forstørrelsesstyring"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom ind"</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 2bc8a0392261..19691c09cbc1 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Der mobile Hotspot ist deaktiviert."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Der mobile Hotspot ist aktiviert."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Die Bildschirmübertragung wurde angehalten."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Arbeitsmodus aus."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Arbeitsmodus an."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Arbeitsmodus deaktiviert."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Arbeitsmodus aktiviert."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Der Datensparmodus ist deaktiviert."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Der Datensparmodus ist aktiviert."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> Datenlimit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Warnung für <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Arbeitsprofil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nachtlicht"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"An bei Sonnenuntergang"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Bis Sonnenaufgang"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Laut-\nlos"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Nur\nwichtige"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Nur\nWecker"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kabelloses Laden (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wird geladen (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wird schnell geladen (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wird langsam geladen (voll in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Nutzer wechseln"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Nutzer wechseln. Aktueller Nutzer: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktueller Nutzer <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -642,9 +650,9 @@ <string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. Zum Aktivieren der Vibration tippen."</string> <string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. Zum Stummschalten tippen."</string> <string name="volume_ringer_change" msgid="3574969197796055532">"Zum Ändern des Klingeltonmodus tippen"</string> - <string name="volume_ringer_hint_mute" msgid="4263821214125126614">"stummschalten"</string> - <string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"Stummschaltung aufheben"</string> - <string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"vibrieren"</string> + <string name="volume_ringer_hint_mute" msgid="4263821214125126614">"Stummschalten"</string> + <string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"Aufheben der Stummschaltung"</string> + <string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"Vibrieren lassen"</string> <string name="volume_dialog_title" msgid="6502703403483577940">"Lautstärkeregler von %s"</string> <string name="volume_dialog_ringer_guidance_ring" msgid="9143194270463146858">"Gerät klingelt bei Anrufen und Benachrichtigungen (<xliff:g id="VOLUME_LEVEL">%1$s</xliff:g>)"</string> <string name="output_title" msgid="3938776561655668350">"Medienausgabe"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Geldbörse"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Alle anzeigen"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Zum Bezahlen entsperren"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Bereit"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Zahlungsmethode einrichten"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Zum Verwenden entsperren"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Beim Abrufen deiner Karten ist ein Fehler aufgetreten – bitte versuch es später noch einmal"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Arbeitsprofil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Flugmodus"</string> <string name="add_tile" msgid="6239678623873086686">"Kachel hinzufügen"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status</b>: auf „Lautlos“ herabgestuft"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status</b>: höher eingestuft"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status</b>: niedriger eingestuft"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Werden in deinen Benachrichtigungen immer oben angezeigt, auch wenn der Prioritätsmodus aktiviert ist"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt, erscheint als Bubble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt, unterbricht „Bitte nicht stören“"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Wird oben im Bereich „Unterhaltungen“ sowie als Profilbild auf dem Sperrbildschirm angezeigt, erscheint als Bubble, unterbricht „Bitte nicht stören“"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Einstellungen"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Vorrangige Unterhaltungen"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priorität"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> unterstützt keine Funktionen für Unterhaltungen"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Diese Benachrichtigungen können nicht geändert werden."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Die Benachrichtigungsgruppe kann hier nicht konfiguriert werden"</string> @@ -849,7 +862,7 @@ <string name="battery" msgid="769686279459897127">"Akku"</string> <string name="clock" msgid="8978017607326790204">"Uhr"</string> <string name="headset" msgid="4485892374984466437">"Headset"</string> - <string name="accessibility_long_click_tile" msgid="210472753156768705">"Einstellungen öffnen"</string> + <string name="accessibility_long_click_tile" msgid="210472753156768705">"Öffnen der Einstellungen"</string> <string name="accessibility_status_bar_headphones" msgid="1304082414912647414">"Mit Kopfhörer verbunden"</string> <string name="accessibility_status_bar_headset" msgid="2699275863720926104">"Mit Headset verbunden"</string> <string name="data_saver" msgid="3484013368530820763">"Datensparmodus"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"An"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Aus"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nicht verfügbar"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigationsleiste"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Zusätzlicher linker Schaltflächentyp"</string> @@ -903,8 +918,8 @@ </string-array> <string name="tuner_low_priority" msgid="8412666814123009820">"Symbole für Benachrichtigungen mit einer niedrigen Priorität anzeigen"</string> <string name="other" msgid="429768510980739978">"Sonstiges"</string> - <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"die Kachel zu entfernen"</string> - <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"die Kachel am Ende hinzuzufügen"</string> + <string name="accessibility_qs_edit_remove_tile_action" msgid="775511891457193480">"Entfernen der Kachel"</string> + <string name="accessibility_qs_edit_tile_add_action" msgid="5051211910345301833">"Hinzufügen der Kachel am Ende"</string> <string name="accessibility_qs_edit_tile_start_move" msgid="2009373939914517817">"Kachel verschieben"</string> <string name="accessibility_qs_edit_tile_start_add" msgid="7560798153975555772">"Kachel hinzufügen"</string> <string name="accessibility_qs_edit_tile_move_to_position" msgid="5198161544045930556">"Auf Position <xliff:g id="POSITION">%1$d</xliff:g> verschieben"</string> @@ -919,7 +934,7 @@ <string name="accessibility_quick_settings_collapse" msgid="4674876336725041982">"Schnelleinstellungen schließen."</string> <string name="accessibility_quick_settings_alarm_set" msgid="7237918261045099853">"Weckruf eingerichtet."</string> <string name="accessibility_quick_settings_user" msgid="505821942882668619">"Angemeldet als <xliff:g id="ID_1">%s</xliff:g>"</string> - <string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"Nutzer auszuwählen"</string> + <string name="accessibility_quick_settings_choose_user_action" msgid="4554388498186576087">"Auswählen des Nutzers"</string> <string name="data_connection_no_internet" msgid="691058178914184544">"Kein Internet"</string> <string name="accessibility_quick_settings_open_details" msgid="4879279912389052142">"Details öffnen."</string> <string name="accessibility_quick_settings_not_available" msgid="6860875849497473854">"Aus diesem Grund nicht verfügbar: <xliff:g id="REASON">%s</xliff:g>"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemsteuerungseinstellungen wurden angepasst. Änderungen kannst du in den Einstellungen vornehmen."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gehe zu den Einstellungen, um die Systemsteuerung anzupassen"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Unterhaltung als vorrangig eingestuft"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Vorrangige Unterhaltungen"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Unterhaltungen, bei denen der Prioritätsmodus an ist, werden auf der Liste oben angezeigt und kommen immer bei dir an"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profilbilder werden auf dem Sperrbildschirm angezeigt"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Diese Unterhaltungen kannst du in Bubbles auf deinem Startbildschirm sehen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"„Bitte nicht stören“ unterbrechen"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Einstellungen"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Vergrößerungsfenster"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Einstellungen für Vergrößerungsfenster"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Heranzoomen"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Nach unten rechts verschieben"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"An den Rand verschieben und verbergen"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Vom Rand verschieben und anzeigen"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"Wechseln"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Gerätesteuerung"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Steuerelemente für verbundene Geräte hinzufügen"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Gerätesteuerung einrichten"</string> @@ -1059,8 +1065,8 @@ <string name="accessibility_control_favorite" msgid="8694362691985545985">"Zu Favoriten hinzugefügt"</string> <string name="accessibility_control_favorite_position" msgid="54220258048929221">"Zu Favoriten hinzugefügt, Position <xliff:g id="NUMBER">%d</xliff:g>"</string> <string name="accessibility_control_not_favorite" msgid="1291760269563092359">"Aus Favoriten entfernt"</string> - <string name="accessibility_control_change_favorite" msgid="2943178027582253261">"Zum Hinzufügen zu Favoriten"</string> - <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"Zum Entfernen aus Favoriten"</string> + <string name="accessibility_control_change_favorite" msgid="2943178027582253261">"Hinzufügen zu Favoriten"</string> + <string name="accessibility_control_change_unfavorite" msgid="6997408061750740327">"Entfernen aus Favoriten"</string> <string name="accessibility_control_move" msgid="8980344493796647792">"Auf Position <xliff:g id="NUMBER">%d</xliff:g> verschieben"</string> <string name="controls_favorite_default_title" msgid="967742178688938137">"Steuerelemente"</string> <string name="controls_favorite_subtitle" msgid="6604402232298443956">"Steuerelemente auswählen, auf die man über das Ein-/Aus-Menü zugreifen kann"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Ablehnen"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Fortsetzen"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Einstellungen"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Wiedergeben"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv – sieh in der App nach"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Fehler. Neuer Versuch…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Nicht gefunden"</string> @@ -1152,7 +1157,7 @@ <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"Kein Wecker gestellt"</string> <string name="accessibility_fingerprint_label" msgid="5255731221854153660">"Fingerabdrucksensor"</string> <string name="accessibility_udfps_disabled_button" msgid="4284034245130239384">"Fingerabdrucksensor ist deaktiviert"</string> - <string name="accessibility_authenticate_hint" msgid="798914151813205721">"zu authentifizieren"</string> - <string name="accessibility_enter_hint" msgid="2617864063504824834">"das Gerät einzugeben"</string> + <string name="accessibility_authenticate_hint" msgid="798914151813205721">"Authentifizieren"</string> + <string name="accessibility_enter_hint" msgid="2617864063504824834">"Eingeben des Geräts"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Mit Fingerabdruck öffnen"</string> </resources> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 545d822c50ac..3da19fc8dc92 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Το σημείο πρόσβασης κινητής συσκευής απενεργοποιήθηκε."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Το σημείο πρόσβασης κινητής συσκευής ενεργοποιήθηκε."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Η μετάδοση της οθόνης διακόπηκε."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Η λειτουργία εργασίας είναι απενεργοποιημένη."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Η λειτουργία εργασίας είναι ενεργή."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Η λειτουργία εργασίας απενεργοποιήθηκε."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Η λειτουργία εργασίας ενεργοποιήθηκε."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Η Εξοικονόμηση δεδομένων είναι ανενεργή."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Η Εξοικονόμηση δεδομένων είναι ενεργή."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Όριο <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Προειδοποίηση για <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Προφίλ εργασίας"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Νυχτερινός φωτισμός"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Κατά τη δύση"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Μέχρι την ανατολή"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Πλήρης\nσίγαση"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Μόνο\nπροτεραιότητας"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Μόνο\nειδοποιήσεις"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ασύρματη φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Γρήγορη φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Αργή φόρτιση (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> για πλήρη φόρτιση)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Εναλλαγή χρήστη"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Εναλλαγή χρήστη, τρέχων χρήστης <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Τρέχων χρήστης <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Πορτοφόλι"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Εμφάνιση όλων"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Ξεκλείδωμα για πληρωμή"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Έτοιμο"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Ρύθμιση πληρωμής"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Ξεκλείδωμα για χρήση"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Παρουσιάστηκε πρόβλημα με τη λήψη των καρτών σας. Δοκιμάστε ξανά αργότερα"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Προφίλ εργασίας"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Λειτουργία πτήσης"</string> <string name="add_tile" msgid="6239678623873086686">"Προσθήκη πλακιδίου"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Κατάσταση:</b> Υποβιβάστηκε σε Αθόρυβη"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Κατάσταση:</b> Κατατάχθηκε υψηλότερα"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Κατάσταση:</b> Κατατάχθηκε χαμηλότερα"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Εμφανίζεται πάντα στην κορυφή των ειδοποιήσεων, ακόμη και όταν η λειτουργία προτεραιότητας είναι ενεργοποιημένη"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Εμφανίζεται στην κορυφή των ειδοποιήσεων συζήτησης και ως φωτογραφία προφίλ στην οθόνη κλειδώματος"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Εμφανίζεται στην κορυφή των ειδοποιήσεων συζήτησης και ως φωτογραφία προφίλ στην οθόνη κλειδώματος, εμφανίζεται ως συννεφάκι"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Εμφανίζεται στην κορυφή των ειδοποιήσεων συζήτησης και ως φωτογραφία προφίλ στην οθόνη κλειδώματος, διακόπτει τη λειτουργία Μην ενοχλείτε"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Εμφανίζεται στην κορυφή των ειδοποιήσεων συζήτησης και ως φωτογραφία προφίλ στην οθόνη κλειδώματος, εμφανίζεται ως συννεφάκι, διακόπτει τη λειτουργία Μην ενοχλείτε"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ρυθμίσεις"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Συζητήσεις προτεραιότητας"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Προτεραιότητα"</string> <string name="no_shortcut" msgid="8257177117568230126">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν υποστηρίζει τις λειτουργίες συζήτησης"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Δεν είναι δυνατή η τροποποίηση αυτών των ειδοποιήσεων"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Δεν είναι δυνατή η διαμόρφωση αυτής της ομάδας ειδοποιήσεων εδώ"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Ενεργό"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Απενεργοποίηση"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Μη διαθέσιμο"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Γραμμή πλοήγησης"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Διάταξη"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Επιπλέον τύπος αριστερού κουμπιού"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Η πλοήγηση συστήματος ενημερώθηκε. Για να κάνετε αλλαγές, μεταβείτε στις Ρυθμίσεις."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Μεταβείτε στις Ρυθμίσεις για να ενημερώσετε την πλοήγηση συστήματος"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Κατάσταση αναμονής"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Ορίστηκε ως συζήτηση προτεραιότητας"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Συζητήσεις προτεραιότητας"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Αυτές οι συζητ. εμφανίζ. στην κορυφή της λίστας και μπορούν πάντα να προβληθούν όταν η λειτ. προτεραιότ. είναι ενεργή"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Οι φωτογραφίες προφίλ εμφανίζονται στην οθόνη κλειδώματος"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Μπορείτε εύκολα να βρείτε αυτές τις συζητήσεις σε συννεφάκια στην αρχική σας οθόνη"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Διακοπή λειτουργίας Μην ενοχλείτε"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Το κατάλαβα"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Ρυθμίσεις"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Παράθυρο μεγέθυνσης"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Στοιχεία ελέγχου παραθύρου μεγέθυνσης"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Μεγέθυνση"</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 431059ad150b..25a34ae8ed0c 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -289,9 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Work mode off."</string> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Work mode turned off."</string> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -410,6 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -469,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Ready"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Set up payment"</string> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards. Please try again later."</string> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Aeroplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -740,9 +741,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> demoted to silent"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> ranked higher"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> ranked lower"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Always shown at the top of your notifications, even when priority mode is on"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Shows at the top of conversation notifications and as a profile picture on lock screen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Shows at the top of conversation notifications and as a profile picture on lock screen, interrupts Do Not Disturb"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Settings"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Priority conversations"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string> @@ -858,6 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> @@ -1016,14 +1021,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversation set to priority"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Priority conversations"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"These conversations are shown at the top of your list and can always reach you when priority mode is on"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profile pictures are shown on the lock screen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"You can easily find these conversations in bubbles on your Home screen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrupt Do Not Disturb"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Settings"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 05a50f440c47..3511d971635c 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -289,9 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Work mode off."</string> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Work mode turned off."</string> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -410,6 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -469,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Ready"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Set up payment"</string> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards. Please try again later."</string> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Airplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -740,9 +741,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> demoted to silent"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> ranked higher"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> ranked lower"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Always shown at the top of your notifications, even when priority mode is on"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Shows at the top of conversation notifications and as a profile picture on lock screen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Shows at the top of conversation notifications and as a profile picture on lock screen, interrupts Do Not Disturb"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Settings"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Priority conversations"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string> @@ -858,6 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> @@ -1016,14 +1021,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversation set to priority"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Priority conversations"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"These conversations are shown at the top of your list and can always reach you when priority mode is on"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profile pictures are shown on the lock screen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"You can easily find these conversations in bubbles on your Home screen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrupt Do Not Disturb"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Settings"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 431059ad150b..25a34ae8ed0c 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -289,9 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Work mode off."</string> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Work mode turned off."</string> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -410,6 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -469,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Ready"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Set up payment"</string> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards. Please try again later."</string> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Aeroplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -740,9 +741,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> demoted to silent"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> ranked higher"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> ranked lower"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Always shown at the top of your notifications, even when priority mode is on"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Shows at the top of conversation notifications and as a profile picture on lock screen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Shows at the top of conversation notifications and as a profile picture on lock screen, interrupts Do Not Disturb"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Settings"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Priority conversations"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string> @@ -858,6 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> @@ -1016,14 +1021,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversation set to priority"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Priority conversations"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"These conversations are shown at the top of your list and can always reach you when priority mode is on"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profile pictures are shown on the lock screen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"You can easily find these conversations in bubbles on your Home screen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrupt Do Not Disturb"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Settings"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 431059ad150b..25a34ae8ed0c 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -289,9 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Work mode off."</string> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Work mode turned off."</string> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -410,6 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -469,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Ready"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Set up payment"</string> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards. Please try again later."</string> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Aeroplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -740,9 +741,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> demoted to silent"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> ranked higher"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> ranked lower"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Always shown at the top of your notifications, even when priority mode is on"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Shows at the top of conversation notifications and as a profile picture on lock screen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Shows at the top of conversation notifications and as a profile picture on lock screen, interrupts Do Not Disturb"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Settings"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Priority conversations"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string> @@ -858,6 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> @@ -1016,14 +1021,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversation set to priority"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Priority conversations"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"These conversations are shown at the top of your list and can always reach you when priority mode is on"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profile pictures are shown on the lock screen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"You can easily find these conversations in bubbles on your Home screen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrupt Do Not Disturb"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Settings"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index ef296299e17a..04d0adeeea13 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -289,9 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobile hotspot turned off."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobile hotspot turned on."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Screen casting stopped."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Work mode off."</string> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Work mode paused."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work mode on."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Work mode turned off."</string> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Work mode turned paused."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work mode turned on."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver turned off."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver turned on."</string> @@ -410,6 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> limit"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> warning"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Work profile"</string> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Paused"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"On at sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Until sunrise"</string> @@ -469,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nsilence"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priority\nonly"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarms\nonly"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> until full)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Switch user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Switch user, current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Current user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Show all"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Unlock to pay"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Ready"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Set up payment"</string> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Not set up"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Unlock to use"</string> <string name="wallet_error_generic" msgid="257704570182963611">"There was a problem getting your cards, please try again later"</string> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Lock screen settings"</string> <string name="status_bar_work" msgid="5238641949837091056">"Work profile"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Airplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Add tile"</string> @@ -740,9 +741,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Demoted to Silent"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Ranked Higher"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Ranked Lower"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Always shown at the top of your notifications, even when Priority mode is on"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Shows at the top of conversation notifications and as a profile picture on lock screen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Shows at the top of conversation notifications and as a profile picture on lock screen, interrupts Do Not Disturb"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Shows at the top of conversation notifications and as a profile picture on lock screen, appears as a bubble, interrupts Do Not Disturb"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Settings"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Priority conversations"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priority"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> doesn’t support conversation features"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string> @@ -858,6 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Unavailable"</string> + <string name="tile_disabled" msgid="373212051546573069">"Disabled"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra left button type"</string> @@ -1016,14 +1021,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversation set to priority"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Priority conversations"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"These conversations are shown at the top of your list and can always reach you when Priority mode is on"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profile pictures are shown on the lock screen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"You can easily find these conversations in bubbles on your Home screen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrupt Do Not Disturb"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Got it"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Settings"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification Window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification Window Controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 5292f8741446..15347dd32ba4 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Zona móvil desactivada"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Zona móvil activada"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Transmisión de pantalla detenida"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modo de trabajo desactivado"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modo de trabajo activado"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Se desactivó el modo de trabajo."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Se activó el modo de trabajo."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Se desactivó el Ahorro de datos."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Se activó el Ahorro de datos."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Advertencia de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Perfil de trabajo"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Luz nocturna"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Al atardecer"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Hasta el amanecer"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Solo\nprioridad"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Solo\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando de manera inalámbrica (tiempo restante para completar: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando rápido (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando lento (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Cambiar de usuario (usuario actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"El usuario actual es <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -554,7 +562,7 @@ <string name="monitoring_button_view_policies" msgid="3869724835853502410">"Ver políticas"</string> <string name="monitoring_button_view_controls" msgid="8316440345340701117">"Ver controles"</string> <string name="monitoring_description_named_management" msgid="505833016545056036">"Este dispositivo pertenece a <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g>.\n\nTu administrador de TI puede controlar y administrar la configuración, el acceso corporativo, las apps, los datos asociados al dispositivo y la información de ubicación.\n\nPara obtener más información, comunícate con el administrador de TI."</string> - <string name="monitoring_financed_description_named_management" msgid="6108439201399938668">"Es posible que <xliff:g id="ORGANIZATION_NAME_0">%1$s</xliff:g> pueda acceder a los datos asociados con este dispositivo y administrar las apps y cambiar su configuración. \n\nSi tienes preguntas, comunícate con <xliff:g id="ORGANIZATION_NAME_1">%2$s</xliff:g>."</string> + <string name="monitoring_financed_description_named_management" msgid="6108439201399938668">"Es posible que <xliff:g id="ORGANIZATION_NAME_0">%1$s</xliff:g> pueda acceder a los datos asociados con este dispositivo, cambie la configuración y administre las apps. \n\nSi tienes preguntas, comunícate con <xliff:g id="ORGANIZATION_NAME_1">%2$s</xliff:g>."</string> <string name="monitoring_description_management" msgid="4308879039175729014">"Este dispositivo pertenece a tu organización.\n\nTu administrador de TI puede controlar y administrar la configuración, el acceso corporativo, las apps, los datos asociados al dispositivo y la información de ubicación.\n\nPara obtener más información, comunícate con el administrador de TI."</string> <string name="monitoring_description_management_ca_certificate" msgid="7785013130658110130">"Tu organización instaló una autoridad de certificación en este dispositivo. Es posible que se controle o modifique el tráfico de tu red segura."</string> <string name="monitoring_description_managed_profile_ca_certificate" msgid="7904323416598435647">"Tu organización instaló una autoridad de certificación en tu perfil de trabajo. Es posible que se controle o modifique el tráfico de tu red segura."</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Mostrar todo"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Desbloquear para pagar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Listo"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurar pago"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para usar"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Ocurrió un problema al obtener las tarjetas; vuelve a intentarlo más tarde"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabajo"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Modo de avión"</string> <string name="add_tile" msgid="6239678623873086686">"Agregar mosaico"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Estado:</b> Descendió de nivel a Silenciada"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Estado:</b> Se clasificó en una posición superior"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Estado:</b> Se clasificó en una posición inferior"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Se muestran siempre en la parte superior de las notificaciones, incluso cuando el Modo prioridad está activado"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Aparece como foto de perfil en la parte superior de las notificaciones de conversación, en la pantalla de bloqueo"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Aparece en forma de burbuja y como foto de perfil en la parte superior de las notificaciones de conversación, en la pantalla de bloqueo"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Aparece como foto de perfil en la parte superior de las notificaciones de conversación, en la pantalla de bloqueo, y detiene el modo No interrumpir"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Aparece en forma de burbuja y como foto de perfil en la parte superior de las notificaciones de conversación, en la pantalla de bloqueo, y detiene el modo No interrumpir"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configuración"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversaciones prioritarias"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritaria"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"No se pueden modificar estas notificaciones."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"No se puede configurar aquí este grupo de notificaciones"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Activado"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Desactivado"</string> <string name="tile_unavailable" msgid="3095879009136616920">"No disponible"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barra de navegación"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Diseño"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tipo de botón izquierdo adicional"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Se actualizó el sistema de navegación. Para hacer cambios, ve a Configuración."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Ve a Configuración para actualizar la navegación del sistema"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Se estableció la conversación como prioritaria"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversaciones prioritarias"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Estas conversaciones aparecen arriba en la lista y están siempre al alcance cuando el Modo prioridad está activado"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Las fotos de perfil se muestran en la pantalla de bloqueo"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Puedes encontrar estas conversaciones con facilidad en burbujas, en las pantalla principal"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Suspender No interrumpir"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Entendido"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Configuración"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Ventana de ampliación"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controles de ampliación de la ventana"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Acercar"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index d23f073d387f..57ce1c589e43 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Punto de acceso móvil desactivado."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Punto de acceso móvil activado."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Envío de pantalla detenido."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modo de trabajo desactivado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modo de trabajo activado."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Modo de trabajo desactivado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Modo de trabajo activado."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Ahorro de datos desactivado."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Ahorro de datos activado."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Advertencia de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Perfil de trabajo"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Luz nocturna"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Al atardecer"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Hasta el amanecer"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Solo\ncon prioridad"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Solo\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando sin cables (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga rápida (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para carga completa)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar de usuario"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Cambiar de usuario (usuario actual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuario actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Mostrar todo"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Desbloquear para pagar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Listo"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurar pago"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para usar"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Se ha producido un problema al obtener tus tarjetas. Inténtalo de nuevo más tarde."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabajo"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Modo avión"</string> <string name="add_tile" msgid="6239678623873086686">"Añadir icono"</string> @@ -732,17 +742,20 @@ <string name="notification_automatic_title" msgid="3745465364578762652">"Automática"</string> <string name="notification_channel_summary_low" msgid="4860617986908931158">"Sin sonido ni vibración"</string> <string name="notification_conversation_summary_low" msgid="1734433426085468009">"Sin sonido ni vibración, y se muestra más abajo en la sección de conversaciones"</string> - <string name="notification_channel_summary_default" msgid="3282930979307248890">"Es posible que suene o vibre según los ajustes del teléfono"</string> - <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Es posible que suene o vibre según los ajustes del teléfono. Las conversaciones de <xliff:g id="APP_NAME">%1$s</xliff:g> aparecen como burbujas de forma predeterminada."</string> + <string name="notification_channel_summary_default" msgid="3282930979307248890">"Puede sonar o vibrar según los ajustes del teléfono"</string> + <string name="notification_channel_summary_default_with_bubbles" msgid="1782419896613644568">"Puede sonar o vibrar según los ajustes del teléfono. Las conversaciones de <xliff:g id="APP_NAME">%1$s</xliff:g> aparecen como burbujas de forma predeterminada."</string> <string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Llama tu atención con un acceso directo flotante a este contenido."</string> <string name="notification_channel_summary_automatic" msgid="5813109268050235275">"Haz que el sistema determine si con esta notificación el dispositivo debe sonar o vibrar"</string> <string name="notification_channel_summary_automatic_alerted" msgid="954166812246932240">"<b>Estado:</b> cambio a Predeterminado"</string> <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Estado:</b> cambio a Silencio"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Estado:</b> posición más alta"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Estado:</b> posición más baja"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Mostrar siempre en la parte superior de tus notificaciones, incluso con el modo Prioridad activado"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Se muestra encima de las notificaciones de conversaciones y como imagen de perfil en la pantalla de bloqueo"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Se muestra encima de las notificaciones de conversaciones y como imagen de perfil en la pantalla de bloqueo, y aparece como burbuja"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Se muestra encima de las notificaciones de conversaciones y como imagen de perfil en la pantalla de bloqueo, e interrumpe el modo No molestar"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Se muestra encima de las notificaciones de conversaciones y como imagen de perfil en la pantalla de bloqueo, aparece como burbuja e interrumpe el modo No molestar"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ajustes"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversaciones prioritarias"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioridad"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> no admite funciones de conversación"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificaciones no se pueden modificar."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Este grupo de notificaciones no se puede configurar aquí"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Activado"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Desactivado"</string> <string name="tile_unavailable" msgid="3095879009136616920">"No disponible"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barra de navegación"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Diseño"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tipo de botón a la izquierda extra"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Se ha actualizado la navegación del sistema. Para hacer cambios, ve a Ajustes."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Ve a Ajustes para actualizar la navegación del sistema"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversación marcada como prioritaria"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversaciones prioritarias"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Estas conversaciones aparecen al principio de tu lista y puedes acceder a ellas con el modo Prioridad activado"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Las imágenes de perfil se muestran en la pantalla de bloqueo"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Puedes encontrar fácilmente estas conversaciones en las burbujas de la pantalla de inicio"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrumpen el modo No molestar"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Entendido"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Ajustes"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Ventana de ampliación"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Ventana de controles de ampliación"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Ampliar"</string> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index d227dcbfd225..ff833d9b700e 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobiilside kuumkoht on välja lülitatud."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobiilside kuumkoht on sisse lülitatud."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ekraanikuva ülekandmine on peatatud."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Töörežiim on väljas."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Töörežiim on sees."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Töörežiim on välja lülitatud."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Töörežiim on sisse lülitatud."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Andmemahu säästja on välja lülitatud."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Andmemahu säästja on sisse lülitatud."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limiit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> hoiatus"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Tööprofiil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Öövalgus"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Sissel. päikeselooj."</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Kuni päikesetõusuni"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Täielik\nvaikus"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Ainult\nprioriteetsed"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Ainult\nalarmid"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Juhtmeta laadimine (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> täislaadimiseni)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laadimine (täislaadimiseks kulub <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kiirlaadim. (täislaadimiseks kulub <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Aegl. laad. (täislaadimiseks kulub <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kasutaja vahetamine"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Kasutaja vahetamine, praegune kasutaja: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Praegune kasutaja <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Rahakott"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Kuva kõik"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Avage maksmiseks"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Valmis"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Makseviisi seadistamine"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Avage kasutamiseks"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Teie kaartide hankimisel ilmnes probleem, proovige hiljem uuesti"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Tööprofiil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Lennukirežiim"</string> <string name="add_tile" msgid="6239678623873086686">"Paani lisamine"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Olek:</b> määrati prioriteet Vaikne"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Olek:</b> määrati kõrgem prioriteet"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Olek:</b> määrati madalam prioriteet"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Kuva alati märguannete ülaosas, isegi kui režiim Prioriteetne on sisse lülitatud"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Kuvatakse vestluste märguannete ülaosas ja profiilipildina lukustuskuval"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Kuvatakse mullina vestluste märguannete ülaosas ja profiilipildina lukustuskuval"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Kuvatakse vestluste märguannete ülaosas ja profiilipildina lukustuskuval ning katkestab režiimi Mitte segada"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Kuvatakse mullina vestluste märguannete ülaosas ja profiilipildina lukustuskuval ning katkestab režiimi Mitte segada"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Seaded"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioriteetsed vestlused"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioriteetne"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei toeta vestlusfunktsioone"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Neid märguandeid ei saa muuta."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Seda märguannete rühma ei saa siin seadistada"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Sees"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Väljas"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Pole saadaval"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigeerimisriba"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Paigutus"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Täiendava vasaku nupu tüüp"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Süsteemis navigeerimine on värskendatud. Muutmiseks avage jaotis Seaded."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Süsteemi navigeerimise värskendamiseks avage jaotis Seaded"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ooterežiim"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Vestlus määrati prioriteetseks"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioriteetsed vestlused"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Need vestlused kuvatakse loendi ülaosas ja jõuavad alati teieni ka siis, kui režiim Prioriteetne on sisse lülitatud"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profiilipildid kuvatakse lukustuskuval"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Leiate need vestlused hõlpsalt avakuval olevatest mullidest"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Funktsioon Mitte segada katkestatakse"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Selge"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Seaded"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Suurendamisaken"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Suurendamisakna juhtelemendid"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Suumi sisse"</string> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index 199107c2be56..85679b9d18c8 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Wifi-gune mugikorra desaktibatu egin da."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Wifi-gune mugikorra aktibatu egin da."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Pantaila igortzeari utzi zaio."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Desaktibatuta dago lan modua."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Aktibatuta dago lan modua."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Desaktibatuta dago lan modua."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Aktibatuta dago lan modua."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Desaktibatuta dago datu-aurrezlea."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Aktibatuta dago datu-aurrezlea."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Muga: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Abisua: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Laneko profila"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Gaueko argia"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Ilunabarrean"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Ilunabarrera arte"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Isiltasun\nosoa"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Lehentasunezkoak\nsoilik"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarmak\nsoilik"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hari gabe kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Bizkor kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mantso kargatzen (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> guztiz kargatu arte)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Aldatu erabiltzailea"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Aldatu erabiltzailea. <xliff:g id="CURRENT_USER_NAME">%s</xliff:g> da saioa hasita daukana."</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Erabiltzailea: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Erakutsi guztiak"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Desblokeatu ordaintzeko"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Prest"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Konfiguratu ordainketa"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desblokeatu erabiltzeko"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Arazo bat izan da txartelak eskuratzean. Saiatu berriro geroago."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Work profila"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Hegaldi modua"</string> <string name="add_tile" msgid="6239678623873086686">"Gehitu lauza"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"Soinurik gabeko modura aldatu da <b>egoera:</b>"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"Mailaz igo da <b>egoera:</b>"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"Mailaz jaitsi da <b>egoera:</b>"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Jakinarazpenen goialdean agertuko dira beti, baita lehentasunezko modua aktibatuta dagoenean ere"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Elkarrizketen jakinarazpenen goialdean eta profileko argazki gisa agertzen da pantaila blokeatuan"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Elkarrizketen jakinarazpenen goialdean eta profileko argazki gisa agertzen da pantaila blokeatuan, burbuila batean"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Elkarrizketen jakinarazpenen goialdean eta profileko argazki gisa agertzen da pantaila blokeatuan, eta ez molestatzeko modua eteten du"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Elkarrizketen jakinarazpenen goialdean eta profileko argazki gisa agertzen da pantaila blokeatuan, burbuila batean, eta ez molestatzeko modua eteten du"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ezarpenak"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Lehentasunezko elkarrizketak"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Lehentasuna"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioak ez ditu onartzen elkarrizketetarako eginbideak"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Jakinarazpen horiek ezin dira aldatu."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Jakinarazpen talde hau ezin da konfiguratu hemen"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Aktibatuta"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Desaktibatuta"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Ez dago erabilgarri"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Nabigazio-barra"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Diseinua"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Ezkerreko botoi gehigarriaren mota"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Eguneratu da sistemaren nabigazioa. Aldaketak egiteko, joan Ezarpenak atalera."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Sistemaren nabigazioa eguneratzeko, joan Ezarpenak atalera"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Egonean"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Lehentasunezko gisa ezarritako elkarrizketa"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Lehentasunezko elkarrizketak"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Elkarrizketak zerrendaren goialdean agertuko dira. Lehentasunezko modua aktibatuta badago, beti iritsiko zaizkie mezuak."</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profileko argazkiak pantaila blokeatuan agertzen dira"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Erraz aurki ditzakezu elkarrizketa horiek hasierako pantailako burbuiletan"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Eten ez molestatzeko modua"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Ados"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Ezarpenak"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Lupa-leihoa"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Lupa-leihoaren aukerak"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Handitu"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index d6b018df10b7..052a87a9c5bb 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"نقطه اتصال دستگاه همراه خاموش شد."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"نقطه اتصال دستگاه همراه روشن شد."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"فرستادن صفحه نمایش متوقف شد."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"حالت کار خاموش."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"حالت کار روشن."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"حالت کار خاموش شد."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"حالت کار روشن شد."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"صرفهجویی داده خاموش شد."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"صرفهجویی داده روشن شد."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> محدودیت"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"هشدار <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"نمایه کاری"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"نور شب"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"غروب روشن میشود"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"تا طلوع"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"سکوت\nکامل"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"فقط\nاولویتدار"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"فقط\nهشدارها"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • درحال شارژ بیسیم (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • درحال شارژ شدن (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • درحال شارژ سریع (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • آهستهآهسته شارژ میشود (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> تا شارژ کامل)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"تغییر کاربر"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"تعویض کاربر، کاربر کنونی <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"کاربر کنونی <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"کیفپول"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"نمایش همه"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"باز کردن قفل برای پرداخت"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"آماده"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"راهاندازی پرداخت"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"برای استفاده، قفل را باز کنید"</string> <string name="wallet_error_generic" msgid="257704570182963611">"هنگام دریافت کارتها مشکلی پیش آمد، لطفاً بعداً دوباره امتحان کنید"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"نمایه کاری"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"حالت هواپیما"</string> <string name="add_tile" msgid="6239678623873086686">"افزودن کاشی"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>وضعیت:</b> به «بیصدا» تنزل یافت"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>وضعیت:</b> در ردهبندی بالاتری قرار گرفت"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>وضعیت:</b> در ردهبندی پایینتری قرار گرفت"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"همیشه در بالای اعلانها نشان داده میشود، حتی وقتی «حالت اولویتدار» روشن است"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"در بالای اعلانهای مکالمه و بهصورت عکس نمایه در صفحه قفل نشان داده میشود"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"در بالای اعلانهای مکالمه و بهصورت عکس نمایه در صفحه قفل نشان داده میشود، بهصورت حبابک ظاهر میشود"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"در بالای اعلانهای مکالمه و بهصورت عکس نمایه در صفحه قفل نشان داده میشود، در حالت «مزاحم نشوید» وقفه ایجاد میکند"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"در بالای اعلانهای مکالمه و بهصورت عکس نمایه در صفحه قفل نشان داده میشود، بهصورت حبابک ظاهر میشود، در حالت «مزاحم نشوید» وقفه ایجاد میکند"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"تنظیمات"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"مکالمههای اولویتدار"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"اولویت"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> از ویژگیهای مکالمه پشتیبانی نمیکند"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"این اعلانها قابل اصلاح نیستند."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"نمیتوانید این گروه اعلانها را در اینجا پیکربندی کنید"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"روشن"</string> <string name="switch_bar_off" msgid="5669805115416379556">"خاموش"</string> <string name="tile_unavailable" msgid="3095879009136616920">"در دسترس نیست"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"نوار پیمایش"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"طرحبندی"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"نوع دکمه منتهیالیه چپ"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"پیمایش سیستم بهروزرسانی شد. برای انجام تغییرات به «تنظیمات» بروید."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"برای بهروزرسانی پیمایش سیستم، به «تنظیمات» بروید"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"آمادهبهکار"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"مکالمه روی اولویت تنظیم شده است"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"مکالمههای اولویتدار"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"این مکالمهها در بالای فهرستتان نشان داده میشوند و وقتی «حالت اولویتدار» روشن است همیشه به دست شما میرسند"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"عکسهای نمایه در صفحه قفل نشان داده میشوند"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"بهراحتی میتوانید این مکالمهها را بهصورت حبابک در صفحه اصلی خود پیدا کنید"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"وقفه در «مزاحم نشوید»"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"متوجهام"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"تنظیمات"</string> <string name="magnification_window_title" msgid="4863914360847258333">"پنجره بزرگنمایی"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"کنترلهای پنجره بزرگنمایی"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"بزرگ کردن"</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 700313c74343..6fc785529c18 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobiiliyhteyden hotspot poistettiin käytöstä."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobiiliyhteyden hotspot otettiin käyttöön."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ruudun lähetys pysäytettiin."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Työtila on poistettu käytöstä."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Työtila on käytössä."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Työtila poistettiin käytöstä."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Työtila otettiin käyttöön."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Data Saver poistettiin käytöstä."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Data Saver otettiin käyttöön."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"kiintiö <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> – varoitus"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Työprofiili"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Yövalo"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Auringon laskiessa"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Auringonnousuun"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Täydellinen\nhiljaisuus"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Vain\ntärkeät"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Vain\nherätykset"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ladataan langattomasti (täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ladataan (täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ladataan nopeasti (täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ladataan hitaasti (täynnä <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> päästä)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Vaihda käyttäjää"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Vaihda käyttäjä (nyt <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Nykyinen käyttäjä: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -510,7 +518,7 @@ <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"Aloitetaanko tallentaminen tai striimaus?"</string> <string name="media_projection_dialog_title" msgid="3316063622495360646">"Haluatko, että <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> aloittaa tallennuksen tai striimauksen?"</string> <string name="media_projection_remember_text" msgid="6896767327140422951">"Älä näytä uudelleen"</string> - <string name="clear_all_notifications_text" msgid="348312370303046130">"Poista kaikki"</string> + <string name="clear_all_notifications_text" msgid="348312370303046130">"Tyhjennä kaikki"</string> <string name="manage_notifications_text" msgid="6885645344647733116">"Muuta asetuksia"</string> <string name="manage_notifications_history_text" msgid="57055985396576230">"Historia"</string> <string name="notification_section_header_incoming" msgid="850925217908095197">"Uudet"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Näytä kaikki"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Avaa lukitus ja maksa"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Valmis"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Ota maksutapa käyttöön"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Avaa lukitus ja käytä"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Korttien noutamisessa oli ongelma, yritä myöhemmin uudelleen"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Työprofiili"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Lentokonetila"</string> <string name="add_tile" msgid="6239678623873086686">"Lisää ruutu"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Tila:</b> hiljennetty"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Tila:</b> valittu tärkeämmäksi"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Tila:</b> valittu vähemmän tärkeäksi"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Näytetään aina ilmoitusten yläpuolella, myös silloin, kun Tärkeät-tila on päällä"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Näkyy keskusteluilmoitusten yläosassa ja profiilikuvana lukitusnäytöllä"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Näkyy keskusteluilmoitusten yläosassa ja profiilikuvana lukitusnäytöllä, näkyy kuplana"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Näkyy keskusteluilmoitusten yläosassa ja profiilikuvana lukitusnäytöllä, keskeyttää Älä häiritse ‑tilan"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Näkyy keskusteluilmoitusten yläosassa ja profiilikuvana lukitusnäytöllä, näkyy kuplana, keskeyttää Älä häiritse ‑tilan"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Asetukset"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Tärkeät keskustelut"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Tärkeä"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei tue keskusteluominaisuuksia"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Näitä ilmoituksia ei voi muokata"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Tätä ilmoitusryhmää ei voi määrittää tässä"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Päällä"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Pois päältä"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Ei käytettävissä"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigointipalkki"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Asettelu"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Ylimääräinen vasen painiketyyppi"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Järjestelmän navigointitapa vaihdettu. Voit muuttaa sitä asetuksista."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Vaihda järjestelmän navigointitapaa asetuksista"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Virransäästötila"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Tärkeäksi merkitty keskustelu"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Tärkeät keskustelut"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Nämä keskustelut näkyvät luettelon yläosassa ja ne näkyvät sinulle aina, kun Tärkeät-tila on päällä"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profiilikuvat näkyvät lukitusnäytöllä"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Voit löytää nämä keskustelut helposti aloitusnäytöllä olevista kuplista"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Keskeyttää Älä häiritse ‑tilan"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Selvä"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Asetukset"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Suurennusikkuna"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Suurennusikkunan ohjaimet"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Lähennä"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Siirrä oikeaan alareunaan"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Siirrä reunaan ja piilota"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Siirrä pois reunasta ja näytä"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"vaihda"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Laitteiden hallinta"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Lisää ohjaimia yhdistettyjä laitteita varten"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Laitteiden hallinnan käyttöönotto"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Ohita"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Jatka"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Asetukset"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Toista"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Epäaktiivinen, tarkista sovellus"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Virhe, yritetään uudelleen…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Ei löydy"</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index d4da4597d56c..7218b869423a 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Point d\'accès mobile désactivé."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Point d\'accès mobile activé."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Diffusion d\'écran arrêtée."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Mode Travail désactivé."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Mode Travail activé."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Le mode Travail est désactivé."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Le mode Travail est activé."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Mode Économiseur de données désactivé."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Mode Économiseur de données activé."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limite : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Avertissement : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profil professionnel"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Éclairage nocturne"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Activé la nuit"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Jusqu\'à l\'aube"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Aucune\ninterruption"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priorités\nuniquement"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarmes\nuniquement"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • En recharge sans fil (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> jusqu\'à la recharge complète)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"En recharge : <xliff:g id="PERCENTAGE">%2$s</xliff:g> (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> jusqu\'à charge complète)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"En recharge rapide : <xliff:g id="PERCENTAGE">%2$s</xliff:g> (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> jusqu\'à ch. comp.)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"Recharge lente : <xliff:g id="PERCENTAGE">%2$s</xliff:g> (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Changer d\'utilisateur (utilisateur actuel <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utilisateur actuel : <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Tout afficher"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Déverrouiller pour payer"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Prêt"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurer le paiement"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Déverrouiller pour utiliser"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Un problème est survenu lors de la récupération de vos cartes, veuillez réessayer plus tard"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profil professionnel"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Mode Avion"</string> <string name="add_tile" msgid="6239678623873086686">"Ajouter la tuile"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>État :</b> abaissé à la catégorie Silencieux"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>État :</b> élevé d\'un niveau"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>État :</b> abaissé d\'un niveau"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"S\'affiche toujours en haut de vos notifications, même en mode Prioritaire"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"S\'affiche dans le haut des notifications de conversation et comme photo de profil à l\'écran de verrouillage"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"S\'affiche dans le haut des notifications de conversation et comme photo de profil à l\'écran de verrouillage, s\'affiche comme bulle"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"S\'affiche dans le haut des notifications de conversation et comme photo de profil à l\'écran de verrouillage, interrompt le mode Ne pas déranger"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"S\'affiche dans le haut des notifications de conversation et comme photo de profil à l\'écran de verrouillage, s\'affiche comme bulle, interrompt le mode Ne pas déranger"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Paramètres"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversations prioritaires"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritaire"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ne prend pas en charge les fonctionnalités de conversation"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ces notifications ne peuvent pas être modifiées"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ce groupe de notifications ne peut pas être configuré ici"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Activé"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Désactivé"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Non disponible"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barre de navigation"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Disposition"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Type de bouton gauche supplémentaire"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"La navigation système a été mise à jour. Pour apporter des modifications, accédez au menu Paramètres."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Accédez au menu Paramètres pour mettre à jour la navigation système"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Veille"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"La conversation a été définie comme prioritaire"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversations prioritaires"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ces conversations s\'affichent dans le haut de votre liste et restent visibles en mode Prioritaire"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Les photos de profil sont affichées sur l\'écran de verrouillage"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Vous trouverez facilement ces conversations dans des bulles sur votre écran d\'accueil"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrompre le mode Ne pas déranger"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Paramètres"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Fenêtre d\'agrandissement"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Commandes pour la fenêtre d\'agrandissement"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Effectuer un zoom avant"</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index c17bf8ffe906..efe1833060ec 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Point d\'accès mobile désactivé."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Point d\'accès mobile activé."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Diffusion d\'écran interrompue."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Mode Travail désactivé"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Mode Travail activé"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Le mode Travail est désactivé."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Le mode Travail est activé."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"L\'économiseur de données est désactivé."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"L\'économiseur de données est activé."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> au maximum"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Avertissement : <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profil professionnel"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Éclairage nocturne"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Activé la nuit"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Jusqu\'à l\'aube"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Aucune\ninterruption"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priorité\nuniquement"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alarmes\nuniquement"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge sans fil (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge... (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge rapide… (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Recharge lente… (à 100 %% dans <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Changer d\'utilisateur"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Changer d\'utilisateur (utilisateur actuel : <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utilisateur actuel : <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -514,7 +522,7 @@ <string name="manage_notifications_text" msgid="6885645344647733116">"Gérer"</string> <string name="manage_notifications_history_text" msgid="57055985396576230">"Historique"</string> <string name="notification_section_header_incoming" msgid="850925217908095197">"Nouvelles notifications"</string> - <string name="notification_section_header_gentle" msgid="6804099527336337197">"En mode silencieux"</string> + <string name="notification_section_header_gentle" msgid="6804099527336337197">"Notifications silencieuses"</string> <string name="notification_section_header_alerting" msgid="5581175033680477651">"Notifications"</string> <string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Effacer toutes les notifications silencieuses"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Tout afficher"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Déverrouiller pour payer"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Prêt"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurer un mode de paiement"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Déverrouiller pour utiliser"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Problème de récupération de vos cartes. Réessayez plus tard"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profil professionnel"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Mode Avion"</string> <string name="add_tile" msgid="6239678623873086686">"Ajouter un bloc"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>État :</b> Abaissée à la catégorie \"Silencieux\""</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>État :</b> Élevée d\'un niveau"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>État ::</b> Abaissée d\'un niveau"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"S\'affiche toujours en haut des notifications, même en mode Prioritaire"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage, apparaît sous forme de bulle"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage, interrompt le mode Ne pas déranger"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"S\'affiche en haut des notifications de conversation et en tant que photo de profil sur l\'écran de verrouillage, apparaît sous forme de bulle, interrompt le mode Ne pas déranger"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Paramètres"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversations prioritaires"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritaire"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas compatible avec les fonctionnalités de conversation"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossible de modifier ces notifications."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Vous ne pouvez pas configurer ce groupe de notifications ici"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Activé"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Désactivé"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Indisponible"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barre de navigation"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Disposition"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Type de bouton gauche supplémentaire"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigation système mise à jour. Pour apporter des modifications, accédez aux paramètres."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Accédez aux paramètres pour mettre à jour la navigation système"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Mode Veille imminent"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversation définie comme prioritaire"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversations prioritaires"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ces conversations s\'affichent en haut de la liste et restent visibles en mode Prioritaire"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Les photos de profil s\'affichent sur l\'écran de verrouillage"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Retrouvez facilement ces conversations dans des bulles sur l\'écran d\'accueil"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrompre Ne pas déranger"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Paramètres"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Fenêtre d\'agrandissement"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Fenêtre des commandes d\'agrandissement"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Faire un zoom avant"</string> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 73d2de64d194..d5da5d5e506a 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Desactivouse a zona wifi móbil."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Activouse a zona wifi móbil."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Detívose a emisión en pantalla."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modo de traballo desactivado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modo de traballo activado."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Desactivouse o modo de traballo."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Activouse o modo de traballo."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Desactivouse o aforro de datos."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Activouse o aforro de datos."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Límite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Advertencia <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Perfil de traballo"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Luz nocturna"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Activación ao solpor"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Ata o amencer"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silencio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Só\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Só\nalarmas"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando sen fíos (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar a carga)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar a carga)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando rapidamente (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar a carga)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Cargando lentamente (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> para completar a carga)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambiar usuario"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Cambiar usuario, usuario actual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuario actual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Amosar todo"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Desbloquear para pagar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Listo"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurar pago"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para usar"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Produciuse un problema ao obter as tarxetas. Téntao de novo máis tarde"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Perfil de traballo"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Modo avión"</string> <string name="add_tile" msgid="6239678623873086686">"Engade un atallo"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Estado:</b> o nivel diminuíuse a Silencioso"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Estado:</b> clasificouse nun nivel superior"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Estado:</b> clasificouse nun nivel inferior"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Móstrase sempre na parte superior das notificacións, mesmo cando está activado o modo de prioridade"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Móstrase na parte superior das notificacións das conversas e como imaxe do perfil na pantalla de bloqueo"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Móstrase na parte superior das notificacións das conversas e como imaxe do perfil na pantalla de bloqueo, e aparece como unha burbulla"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Móstrase na parte superior das notificacións das conversas e como imaxe do perfil na pantalla de bloqueo, e interrompe o modo Non molestar"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Móstrase na parte superior das notificacións das conversas e como imaxe do perfil na pantalla de bloqueo, aparece como unha burbulla e interrompe o modo Non molestar"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configuración"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversas prioritarias"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non admite funcións de conversa"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificacións non se poden modificar."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquí non se pode configurar este grupo de notificacións"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Activado"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Desactivado"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Non dispoñible"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barra de navegación"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Deseño"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tipo de botón adicional á esquerda"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Actualizouse a navegación do sistema. Para facer cambios, vai a Configuración."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Para actualizar a navegación do sistema, vai a Configuración"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Modo de espera"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"A conversa definiuse como prioritaria"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversas prioritarias"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Estas conversas móstranse na parte superior da lista e pódenseche amosar mesmo co modo de prioridade activado"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"As fotos dos perfís móstranse na pantalla de bloqueo"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Podes atopar facilmente estas conversas en burbullas situadas na pantalla de inicio"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interromper modo Non molestar"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Entendido"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Configuración"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Ventá de superposición"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controis de ampliación da ventá"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Achegar"</string> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 4c5308bfc2fd..7e92ccfd84bf 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"મોબાઇલ હૉટસ્પૉટ બંધ કર્યું."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"મોબાઇલ હૉટસ્પૉટ ચાલુ કર્યું."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"સ્ક્રીન કાસ્ટિંગ બંધ કર્યું."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"કાર્ય મોડ બંધ."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"કાર્ય મોડ ચાલુ."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"કાર્ય મોડ બંધ કર્યો."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"કાર્ય મોડ ચાલુ કર્યો."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ડેટા સેવર બંધ કર્યું."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ડેટા સેવર ચાલુ કર્યું."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> મર્યાદા"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ચેતવણી"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"ઑફિસની પ્રોફાઇલ"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"રાત્રિ પ્રકાશ"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"સૂર્યાસ્ત વખતે"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"સૂર્યોદય સુધી"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"સાવ\nશાંતિ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ફક્ત\nપ્રાધાન્યતા"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ફક્ત\nએલાર્મ્સ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • વાયરલેસથી ચાર્જ થઈ રહ્યું છે (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ચાર્જિંગ (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ઝડપથી ચાર્જિંગ (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ધીમેથી ચાર્જિંગ (પૂર્ણ થવામાં <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> બાકી)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"વપરાશકર્તા સ્વિચ કરો"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"વપરાશકર્તાને સ્વિચ કરો, વર્તમાન વપરાશકર્તા <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"વર્તમાન વપરાશકર્તા <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"વૉલેટ"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"બધું બતાવો"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ચુકવણી કરવા માટે અનલૉક કરો"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"તૈયાર છે"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ચુકવણી પદ્ધતિનું સેટઅપ કરો"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ઉપયોગ કરવા માટે અનલૉક કરો"</string> <string name="wallet_error_generic" msgid="257704570182963611">"તમારા કાર્ડની માહિતી મેળવવામાં સમસ્યા આવી હતી, કૃપા કરીને થોડા સમય પછી ફરી પ્રયાસ કરો"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"ઑફિસની પ્રોફાઇલ"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"એરપ્લેન મોડ"</string> <string name="add_tile" msgid="6239678623873086686">"ટાઇલ ઉમેરો"</string> @@ -740,9 +750,16 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>સ્ટેટસ:</b> સાઇલન્ટ પર અવનત કરવામાં આવ્યું"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>સ્ટેટસ:</b> ઉપલી રેંક આપવામાં આવી"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>સ્ટેટસ:</b> નીચલી રેંક આપવામાં આવી"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"જ્યારે પ્રાધાન્યતા મોડ ચાલુ હોય ત્યારે પણ તમારા નોટિફિકેશનમાં હંમેશાં સૌથી ઉપર ટોચમાં બતાવવામાં આવશે"</string> + <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> + <skip /> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"સેટિંગ"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"પ્રાધાન્યતા ધરાવતી વાતચીતો"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"પ્રાધાન્યતા"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> વાતચીતની સુવિધાઓને સપોર્ટ આપતી નથી"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"આ નોટિફિકેશનમાં કોઈ ફેરફાર થઈ શકશે નહીં."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"નોટિફિકેશનના આ ગ્રૂપની ગોઠવણી અહીં કરી શકાશે નહીં"</string> @@ -858,6 +875,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ચાલુ"</string> <string name="switch_bar_off" msgid="5669805115416379556">"બંધ"</string> <string name="tile_unavailable" msgid="3095879009136616920">"ઉપલબ્ધ નથી"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"નેવિગેશન બાર"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"લેઆઉટ"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"અતિરિક્ત ડાબો બટન પ્રકાર"</string> @@ -1016,14 +1035,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"સિસ્ટમ નૅવિગેશન અપડેટ કર્યું. ફેરફારો કરવા માટે, સેટિંગ પર જાઓ."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"સિસ્ટમ નૅવિગેશનને અપડેટ કરવા માટે સેટિંગ પર જાઓ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"સ્ટૅન્ડબાય"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"વાતચીતને પ્રાધાન્યતા ધરાવતી તરીકે સેટ કરી"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"પ્રાધાન્યતા ધરાવતી વાતચીતો"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"આ વાતચીતોને તમારી સૂચિમાં ટોચ પર બતાવવામાં આવે છે અને જ્યારે પ્રાધાન્યતા મોડ ચાલુ હોય ત્યારે તમને સો ટકા મળશે"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"લૉક સ્ક્રીન પર પ્રોફાઇલ ફોટા બતાવવામાં આવે છે"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"આ વાતચીતોને તમારી હોમ સ્ક્રીન પર તમે સરળતાથી બબલ સ્વરૂપમાં મેળવી શકશો"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"ખલેલ પાડશો નહીં સેટિંગમાં હસ્તક્ષેપ કરી શકે છે"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"સમજાઈ ગયું"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"સેટિંગ"</string> <string name="magnification_window_title" msgid="4863914360847258333">"વિસ્તૃતીકરણ વિંડો"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"વિસ્તૃતીકરણ વિંડોના નિયંત્રણો"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"મોટું કરો"</string> @@ -1044,8 +1055,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"નીચે જમણે ખસેડો"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"કિનારી પર ખસેડો અને છુપાવો"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"કિનારીથી ખસેડો અને બતાવો"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ટૉગલ કરો"</string> <string name="quick_controls_title" msgid="6839108006171302273">"ડિવાઇસનાં નિયંત્રણો"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"તમારા કનેક્ટ કરેલા ડિવાઇસ માટે નિયંત્રણો ઉમેરો"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"ડિવાઇસનાં નિયંત્રણો સેટઅપ કરો"</string> @@ -1092,8 +1102,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"છોડી દો"</string> <string name="controls_media_resume" msgid="1933520684481586053">"ફરી શરૂ કરો"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"સેટિંગ"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"ચલાવો"</string> <string name="controls_error_timeout" msgid="794197289772728958">"નિષ્ક્રિય, ઍપને ચેક કરો"</string> <string name="controls_error_retryable" msgid="864025882878378470">"ભૂલ, ફરી પ્રયાસ કરી રહ્યા છીએ…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"મળ્યું નથી"</string> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 6b03458b0f73..cfe20796aa7f 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"मोबाइल हॉटस्पॉट को बंद किया गया."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"मोबाइल हॉटस्पॉट को चालू किया गया."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"स्क्रीन कास्ट करना रुक गया."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"वर्क मोड बंद है."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"वर्क मोड चालू है."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"वर्क मोड बंद कर दिया गया."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"वर्क मोड चालू किया गया."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"डेटा बचाने की सेटिंग बंद कर दी गई है."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"डेटा बचाने की सेटिंग चालू कर दी गई है."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> सीमा"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावनी"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"वर्क प्रोफ़ाइल"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"नाइट लाइट"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"शाम को चालू की जाएगी"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"सुबह तक चालू रहेगी"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"पूरी तरह\nशांत"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"केवल\nप्राथमिकता"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"केवल\nअलार्म"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • वायरलेस तरीके से चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • तेज़ चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • धीरे चार्ज हो रहा है (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> में पूरा होगा)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"उपयोगकर्ता बदलें"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"उपयोगकर्ता बदलें, मौजूदा उपयोगकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"मौजूदा उपयोगकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -493,7 +501,7 @@ <string name="user_logout_notification_text" msgid="7441286737342997991">"मौजूदा उपयोगकर्ता से प्रस्थान करें"</string> <string name="user_logout_notification_action" msgid="7974458760719361881">"उपयोगकर्ता को प्रस्थान करवाएं"</string> <string name="user_add_user_title" msgid="4172327541504825032">"नया उपयोगकर्ता जोड़ें?"</string> - <string name="user_add_user_message_short" msgid="2599370307878014791">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं तो उस व्यक्ति को अपनी जगह सेट करनी होती है.\n\nकोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकता है."</string> + <string name="user_add_user_message_short" msgid="2599370307878014791">"जब आप कोई नया उपयोगकर्ता जोड़ते हैं, तो उसे अपनी जगह सेट करनी होती है.\n\nकोई भी उपयोगकर्ता बाकी सभी उपयोगकर्ताओं के लिए ऐप्लिकेशन अपडेट कर सकता है."</string> <string name="user_limit_reached_title" msgid="2429229448830346057">"अब और उपयोगकर्ता नहीं जोड़े जा सकते"</string> <plurals name="user_limit_reached_message" formatted="false" msgid="2573535787802908398"> <item quantity="one">आप ज़्यादा से ज़्यादा <xliff:g id="COUNT">%d</xliff:g> उपयोगकर्ता जोड़ सकते हैं.</item> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"वॉलेट"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"सभी दिखाएं"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"पैसे चुकाने के लिए, डिवाइस अनलॉक करें"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"तैयार है"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"पेमेंट करने का तरीका सेट अप करें"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"इस्तेमाल करने के लिए, डिवाइस अनलॉक करें"</string> <string name="wallet_error_generic" msgid="257704570182963611">"आपके कार्ड की जानकारी पाने में कोई समस्या हुई है. कृपया बाद में कोशिश करें"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"वर्क प्रोफ़ाइल"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"हवाई जहाज़ मोड"</string> <string name="add_tile" msgid="6239678623873086686">"टाइल जोड़ें"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>स्थिति:</b> लेवल घटाकर, साइलेंट पर सेट किया गया"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>स्थिति:</b> रैंकिंग में ऊपर किया गया"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>स्थिति:</b> रैंकिंग में नीचे किया गया"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"प्राथमिकता मोड चालू होने के बावजूद, यह आपकी सूचनाओं में हमेशा सबसे ऊपर दिखता है"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"यह कई तरीकों से दिखती है, जैसे कि लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो के तौर पर और बातचीत वाली सूचनाओं में सबसे ऊपर"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"यह कई तरीकों से दिखती है, जैसे कि बातचीत वाली सूचनाओं में सबसे ऊपर, बबल के तौर पर, और लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो के तौर पर"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"यह कई तरीकों से दिखती है, जैसे कि लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो के तौर पर और बातचीत वाली सूचनाओं में सबसे ऊपर. साथ ही, इसकी वजह से, \'परेशान न करें\' सुविधा में भी रुकावट आती है"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"यह कई तरीकों से दिखती है, जैसे कि बातचीत वाली सूचनाओं में सबसे ऊपर, बबल के तौर पर, और लॉक स्क्रीन पर प्रोफ़ाइल फ़ोटो के तौर पर. साथ ही, इसकी वजह से, \'परेशान न करें\' सुविधा में भी रुकावट आती है"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"सेटिंग"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"अहम बातचीत"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"प्राथमिकता"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> पर बातचीत की सुविधाएं काम नहीं करतीं"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ये सूचनाएं नहीं बदली जा सकती हैं."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"सूचनाओं के इस समूह को यहां कॉन्फ़िगर नहीं किया जा सकता"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"चालू"</string> <string name="switch_bar_off" msgid="5669805115416379556">"बंद"</string> <string name="tile_unavailable" msgid="3095879009136616920">"उपलब्ध नहीं है"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"नेविगेशन बार"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"लेआउट"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"कुछ और बाएं बटन के प्रकार"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"सिस्टम नेविगेशन अपडेट हो गया. बदलाव करने के लिए \'सेटिंग\' पर जाएं."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"सिस्टम नेविगेशन अपडेट करने के लिए \'सेटिंग\' में जाएं"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्टैंडबाई"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"बातचीत को \'अहम बातचीत\' के तौर पर सेट किया गया है"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"अहम बातचीत"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ये बातचीत आपकी सूची में सबसे ऊपर दिखती हैं. साथ ही, अगर आपने प्राथमिकता मोड चालू किया है, तो ये आपको हमेशा दिखेंगी"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"प्रोफ़ाइल फ़ोटो, लॉक स्क्रीन पर दिखती हैं"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"आप इन बातचीत को अपनी होम स्क्रीन पर मौजूद बबल्स में, आसानी से देख सकते हैं"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"\'परेशान न करें\' मोड में रुकावट"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"ठीक है"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"सेटिंग"</string> <string name="magnification_window_title" msgid="4863914360847258333">"स्क्रीन को बड़ा करके दिखाने वाली विंडो"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"स्क्रीन को बड़ा करके दिखाने वाली विंडो के नियंत्रण"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ज़ूम इन करें"</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 3b4d034c8039..9246023d29a2 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobilna žarišna točka isključena."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobilna žarišna točka uključena."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Emitiranje zaslona zaustavljeno."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Način rada isključen."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Način rada uključen."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Način rada isključen."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Način rada uključen."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Štednja podatkovnog prometa isključena."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Štednja podatkovnog prometa uključena."</string> @@ -412,6 +414,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Ograničenje od <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Upozorenje <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Poslovni profil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Noćno svjetlo"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Uključuje se u suton"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Do izlaska sunca"</string> @@ -471,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Potpuna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Samo\nprioritetno"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • bežično punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • brzo punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • sporo punjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napunjenosti)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Promjena korisnika"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Promjena korisnika, trenutačni korisnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Trenutačan korisnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -671,10 +679,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Novčanik"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Prikaži sve"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Otključajte da biste platili"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Spremno"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Postavi plaćanje"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Otključajte da biste koristili"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Pojavio se problem prilikom dohvaćanja kartica, pokušajte ponovo kasnije"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Poslovni profil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Način rada u zrakoplovu"</string> <string name="add_tile" msgid="6239678623873086686">"Dodavanje pločice"</string> @@ -743,9 +753,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> prebačena u bešumnu"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> više rangirana"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> niže rangirana"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Uvijek se prikazuje pri vrhu obavijesti, čak i kada je uključen način prioritetnih obavijesti"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Prikazuje se pri vrhu obavijesti razgovora i kao profilna slika na zaključanom zaslonu"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Prikazuje se pri vrhu obavijesti razgovora i kao profilna slika na zaključanom zaslonu, izgleda kao oblačić"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Prikazuje se pri vrhu obavijesti razgovora i kao profilna slika na zaključanom zaslonu, prekida Ne uznemiravaj"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikazuje se pri vrhu obavijesti razgovora i kao profilna slika na zaključanom zaslonu, izgleda kao oblačić, prekida Ne uznemiravaj"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Postavke"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioritetni razgovori"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string> <string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podržava značajke razgovora"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Te se obavijesti ne mogu izmijeniti."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ta se grupa obavijesti ne može konfigurirati ovdje"</string> @@ -863,6 +876,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Uključeno"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Isključeno"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nedostupno"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigacijska traka"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Izgled"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Vrsta dodatnog lijevog gumba"</string> @@ -1021,14 +1036,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Ažurirana je navigacija sustavom. Možete je promijeniti u Postavkama."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Navigaciju sustavom možete ažurirati u Postavkama"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje mirovanja"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Razgovor postavljen na prioritetan"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioritetni razgovori"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ti se razgovori prikazuju pri vrhu vašeg popisa i mogu se uvijek prikazati kad je uključen način prioritetnih obavijesti"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profilne slike prikazuju se na zaključanom zaslonu"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Te razgovore možete jednostavno pronaći u oblačićima na početnom zaslonu"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Prekida Ne uznemiravaj"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Shvaćam"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Postavke"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za povećavanje"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za povećavanje"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Povećaj"</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 1940cd5ef2ea..3cfbabac1339 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"A mobil hotspot kikapcsolva."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"A mobil hotspot bekapcsolva."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"A képernyő átküldése leállítva."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Munka mód ki."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Munka mód be."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Munka mód kikapcsolva."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Munka mód bekapcsolva."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Adatforgalom-csökkentő kikapcsolva."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Adatforgalom-csökkentő bekapcsolva."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> korlát"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Figyelem! <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Munkaprofil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Éjszakai fény"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Be: naplemente"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Napfelkeltéig"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Teljes\nnémítás"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Csak\nprioritás"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Csak\nriasztások"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Vezeték nélküli töltés folyamatban (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> a teljes feltöltésig)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Töltés (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> a teljes töltöttségig)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Gyors töltés (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> a teljes töltöttségig)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lassú töltés (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> a teljes töltöttségig)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Felhasználóváltás"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Felhasználóváltás (a jelenlegi felhasználó: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Jelenlegi felhasználó (<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Összes mutatása"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Feloldás a fizetéshez"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Kész"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Fizetési mód beállítása"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Oldja fel a használathoz"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Probléma merült fel a kártyák lekérésekor, próbálja újra később"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Munkahelyi profil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Repülős üzemmód"</string> <string name="add_tile" msgid="6239678623873086686">"Mozaik hozzáadása"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Állapot:</b> némára állítva"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Állapot:</b> előrébb sorolva"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Állapot:</b> hátrébb sorolva"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Még akkor is az értesítések tetején jelenik meg, ha a Prioritásos mód be van kapcsolva"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"A beszélgetésekre vonatkozó értesítések tetején látható, és megjeleníti a profilképet a lezárási képernyőn"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"A beszélgetésekre vonatkozó értesítések tetején, lebegő buborékként látható, és megjeleníti a profilképet a lezárási képernyőn"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"A beszélgetésekre vonatkozó értesítések tetején látható, megjeleníti a profilképet a lezárási képernyőn, és megszakítja a Ne zavarjanak funkciót"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"A beszélgetésekre vonatkozó értesítések tetején, lebegő buborékként látható, megjeleníti a profilképet a lezárási képernyőn, és megszakítja a Ne zavarjanak funkciót"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Beállítások"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Fontos beszélgetések"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritás"</string> <string name="no_shortcut" msgid="8257177117568230126">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> nem támogatja a beszélgetési funkciókat"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ezeket az értesítéseket nem lehet módosítani."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Az értesítések jelen csoportját itt nem lehet beállítani"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Be"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Ki"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nem használható"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigációs sáv"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Elrendezés"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"További bal oldali gombtípus"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"A rendszer-navigáció módja megváltozott. Módosításához nyissa meg a Beállításokat."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"A rendszer-navigációs lehetőségeket a Beállításokban módosíthatja"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Készenléti mód"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Fontosnak beállított beszélgetés"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Fontos beszélgetések"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ezek a beszélgetések a lista tetején jelennek meg, és mindig megkapja őket, ha a Prioritásos mód be van kapcsolva"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"A profilképek mindig megjelennek a lezárási képernyőn"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Ezeket a beszélgetéseket könnyedén megtalálja a kezdőképernyő tetején lévő buborékokban"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Megszakítják a Ne zavarjanak módot"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Értem"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Beállítások"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Nagyítás ablaka"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Nagyítási vezérlők ablaka"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Nagyítás"</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index b697509b302a..ad11a26c6401 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Շարժական կապի WiFi ցրիչն անջատվեց:"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Շարժական կապի WiFi ցրիչը միացավ:"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Էկրանի հեռարձակումն ընդհատվեց:"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Աշխատանքային ռեժիմն անջատված է:"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Աշխատանքային ռեժիմը միացված է:"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Աշխատանքային ռեժիմն անջատվեց:"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Աշխատանքային ռեժիմը միացվեց:"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Տվյալների խնայումն անջատվեց:"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Թրաֆիկի տնտեսումը միացվեց:"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Սահմանաչափ՝ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> զգուշացում"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Աշխատանքային պրոֆիլ"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Գիշերային ռեժիմ"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Կմիացվի մայրամուտին"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Մինչև լուսաբաց"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Ընդհանուր\nլուռ վիճակը"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Միայն\nկարևորները"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Միայն\nզարթուցիչ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Անլար լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Արագ լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Դանդաղ լիցքավորում (մնացել է <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Անջատել օգտվողին"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Փոխել օգտատիրոջը. ներկայիս օգտատերն է՝ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Ընթացիկ օգտատերը՝ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Դրամապանակ"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Ցույց տալ բոլորը"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Ապակողպել՝ վճարելու համար"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Պատրաստ է"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Ավելացնել վճարման եղանակ"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Ապակողպել՝ օգտագործելու համար"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Չհաջողվեց բեռնել քարտերը։ Նորից փորձեք։"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Android for Work-ի պրոֆիլ"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Ավիառեժիմ"</string> <string name="add_tile" msgid="6239678623873086686">"Սալիկի ավելացում"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Կարգավիճակը․</b> իջեցվել է և դարձել անձայն"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Կարգավիճակը․</b> կարևորության մակարդակը բարձրացվել է"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Կարգավիճակը․</b> կարևորության մակարդակն իջեցվել է"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Այն միշտ ցուցադրվում է ձեր ծանուցումների վերևում, անգամ եթե միացված է առաջնահերթության ռեժիմը։"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Ցուցադրվում է զրույցների ծանուցումների վերևում, ինչպես նաև կողպէկրանին որպես պրոֆիլի նկար"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Ցուցադրվում է զրույցների ծանուցումների վերևում, ինչպես նաև կողպէկրանին որպես պրոֆիլի նկար, հայտնվում է ամպիկի տեսքով"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Ցուցադրվում է զրույցների ծանուցումների վերևում, ինչպես նաև կողպէկրանին որպես պրոֆիլի նկար, ընդհատում է «Չանհանգստացնել» ռեժիմը"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Ցուցադրվում է զրույցների ծանուցումների վերևում, ինչպես նաև կողպէկրանին որպես պրոֆիլի նկար, հայտնվում է ամպիկի տեսքով, ընդհատում է «Չանհանգստացնել» ռեժիմը"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Կարգավորումներ"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Կարևոր զրույցներ"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Կարևոր"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածը զրույցի գործառույթներ չի աջակցում"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Այս ծանուցումները չեն կարող փոփոխվել:"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ծանուցումների տվյալ խումբը հնարավոր չէ կարգավորել այստեղ"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Միացված է"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Անջատված է"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Հասանելի չէ"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Նավիգացիայի գոտի"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Դասավորություն"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Լրացուցիչ ձախ կոճակի տեսակ"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Համակարգի նավիգացիան թարմացվեց: Փոփոխություններ անելու համար անցեք կարգավորումներ:"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Թարմացրեք համակարգի նավիգացիան կարգավորումներում"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Սպասման ռեժիմ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Զրույցը նշված է որպես կարևոր"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Կարևոր զրույցներ"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Այս զրույցները ցուցադրվում են ցանկի վերևում, և դուք կարող եք դրանք կարդալ, անգամ եթե միացված է առաջնահերթության ռեժիմը։"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Պրոֆիլի նկարները ցուցադրվում են կողպէկրանին"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Այս զրույցները կարող եք գտնել ամպիկներում՝ ձեր հիմնական էկրանին"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Ընդհատել «Չանհանգստացնել» ռեժիմը"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Եղավ"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Կարգավորումներ"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Խոշորացման պատուհան"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Խոշորացման պատուհանի կառավարման տարրեր"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Մեծացնել"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Տեղափոխել ներքև՝ աջ"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Տեղափոխել եզրից դուրս և թաքցնել"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Տեղափոխել եզրից դուրս և ցուցադրել"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"միացնել/անջատել"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Սարքերի կառավարման տարրեր"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Ավելացրեք կառավարման տարրեր ձեր միացված սարքերի համար"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Սարքերի կառավարման տարրերի կարգավորում"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Փակել"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Շարունակել"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Կարգավորումներ"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Նվագարկել"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Ակտիվ չէ, ստուգեք հավելվածը"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Սխալ. նորից ենք փորձում…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Չի գտնվել"</string> @@ -1154,5 +1159,5 @@ <string name="accessibility_udfps_disabled_button" msgid="4284034245130239384">"Մատնահետքի սկաներն անջատված է"</string> <string name="accessibility_authenticate_hint" msgid="798914151813205721">"նույնականացնել"</string> <string name="accessibility_enter_hint" msgid="2617864063504824834">"նշել սարքը"</string> - <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Օգտագործեք մատնահետք՝ բացելու համար"</string> + <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Բացելու համար օգտագործեք մատնահետքը"</string> </resources> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index d9dae9237720..1e67b9a091e3 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Hotspot seluler dinonaktifkan."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Hotspot seluler diaktifkan."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Transmisi layar berhenti."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Mode kerja nonaktif."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Mode kerja aktif."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Mode kerja dinonaktifkan."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Mode kerja diaktifkan."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Penghemat Data nonaktif."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Penghemat Data diaktifkan."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Batas <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Peringatan <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profil kerja"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Cahaya Malam"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Aktif saat malam"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Sampai pagi"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Senyap\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Hanya\nprioritas"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Hanya\nalarm"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya secara nirkabel (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga baterai terisi penuh)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya dengan cepat (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengisi daya dengan lambat (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Beralih pengguna"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Ganti pengguna, pengguna saat ini <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Pengguna saat ini <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -524,7 +532,7 @@ <string name="profile_owned_footer" msgid="2756770645766113964">"Profil dapat dipantau"</string> <string name="vpn_footer" msgid="3457155078010607471">"Jaringan mungkin dipantau"</string> <string name="branded_vpn_footer" msgid="816930186313188514">"Jaringan mungkin dipantau"</string> - <string name="quick_settings_disclosure_parental_controls" msgid="2114102871438223600">"Perangkat ini dikelola oleh orang tua"</string> + <string name="quick_settings_disclosure_parental_controls" msgid="2114102871438223600">"Perangkat ini dikelola oleh orang tuamu"</string> <string name="quick_settings_disclosure_management_monitoring" msgid="8231336875820702180">"Organisasi Anda memiliki perangkat ini dan mungkin memantau traffic jaringan"</string> <string name="quick_settings_disclosure_named_management_monitoring" msgid="2831423806103479812">"<xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> memiliki perangkat ini dan mungkin memantau traffic jaringan"</string> <string name="quick_settings_financed_disclosure_named_management" msgid="2307703784594859524">"Perangkat ini disediakan oleh <xliff:g id="ORGANIZATION_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Tampilkan semua"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Buka kunci untuk membayar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Siap"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Siapkan pembayaran"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Buka kunci untuk menggunakan"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Terjadi masalah saat mendapatkan kartu Anda, coba lagi nanti"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profil kerja"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Mode pesawat"</string> <string name="add_tile" msgid="6239678623873086686">"Tambahkan ubin"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Didemosikan menjadi Senyap"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Diberi Peringkat Lebih Tinggi"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Diberi Peringkat Lebih Rendah"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Selalu tampilkan di notifikasi paling atas, meski Mode prioritas aktif"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Muncul di atas notifikasi percakapan dan sebagai foto profil di layar kunci"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Muncul di atas notifikasi percakapan dan sebagai foto profil di layar kunci, ditampilkan sebagai balon"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Muncul di atas notifikasi percakapan dan sebagai foto profil di layar kunci, mengganggu fitur Jangan Ganggu"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Muncul di atas notifikasi percakapan dan sebagai foto profil di layar kunci, ditampilkan sebagai balon, mengganggu fitur Jangan Ganggu"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Setelan"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Percakapan prioritas"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritas"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak mendukung fitur percakapan"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Notifikasi ini tidak dapat diubah."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Grup notifikasi ini tidak dapat dikonfigurasi di sini"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Aktif"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Nonaktif"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Tidak tersedia"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Bilah navigasi"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Tata Letak"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Jenis tombol ekstra kiri"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigasi sistem diupdate. Untuk melakukan perubahan, buka Setelan."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Buka Setelan untuk mengupdate navigasi sistem"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Siaga"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Percakapan ditetapkan jadi prioritas"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Percakapan prioritas"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Percakapan ini akan ditampilkan di daftar paling atas dan selalu ditampilkan untuk Anda saat Mode prioritas aktif"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Foto profil ditampilkan di layar kunci"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Anda dapat mudah menemukan percakapan ini dalam balon di Layar utama"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Mengganggu fitur Jangan Ganggu"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Oke"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Setelan"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Jendela Pembesaran"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrol Jendela Pembesaran"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Perbesar"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Pindahkan ke kanan bawah"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Pindahkan ke tepi dan sembunyikan"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Pindahkan dari tepi dan tampilkan"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"alihkan"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Kontrol perangkat"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Tambahkan kontrol untuk perangkat terhubung"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Siapkan kontrol perangkat"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Tutup"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Lanjutkan"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Setelan"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Putar"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Nonaktif, periksa aplikasi"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Error, mencoba lagi..."</string> <string name="controls_error_removed" msgid="6675638069846014366">"Tidak ditemukan"</string> @@ -1113,7 +1118,7 @@ <string name="media_output_dialog_disconnected" msgid="1834473104836986046">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> (terputus)"</string> <string name="media_output_dialog_connect_failed" msgid="3225190634236259010">"Tidak dapat terhubung. Coba lagi."</string> <string name="media_output_dialog_pairing_new" msgid="9099497976087485862">"Sambungkan perangkat baru"</string> - <string name="build_number_clip_data_label" msgid="3623176728412560914">"Nomor versi"</string> + <string name="build_number_clip_data_label" msgid="3623176728412560914">"Nomor build"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Nomor versi disalin ke papan klip."</string> <string name="basic_status" msgid="2315371112182658176">"Membuka percakapan"</string> <string name="select_conversation_title" msgid="6716364118095089519">"Widget Percakapan"</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index aaf2b5d8c31a..4295b96c22a3 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Slökkt á farsímaaðgangsstað."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Kveikt á farsímaaðgangsstað."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Skjáútsendingu hætt."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Slökkt á vinnustillingu."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Kveikt á vinnustillingu."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Slökkt á vinnustillingu."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Kveikt á vinnustillingu."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Slökkt var á gagnasparnaði."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Kveikt var á gagnasparnaði."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> hámark"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> viðvörun"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Vinnusnið"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Næturljós"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Kveikt við sólsetur"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Til sólarupprásar"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Algjör\nþögn"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Aðeins\nforgangur"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Aðeins\nvekjarar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Í þráðlausri hleðslu (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> í fulla hleðslu)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Í hleðslu (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> fram að fullri hleðslu)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hröð hleðsla (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> að fullri hleðslu)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hæg hleðsla (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> fram að fullri hleðslu)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Skipta um notanda"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Skipta um notanda; núverandi notandi er <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Núverandi notandi er <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Veski"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Sýna allt"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Taka úr lás til að greiða"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Tilbúið"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Setja upp greiðslu"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Taktu úr lás til að nota"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Vandamál kom upp við að sækja kortin þín. Reyndu aftur síðar"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Vinnusnið"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Flugstilling"</string> <string name="add_tile" msgid="6239678623873086686">"Bæta reit við"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Staða:</b> var gerð þögul"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Staða:</b> fékk hærri stöðu"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Staða:</b> fékk lægri stöðu"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Sýna alltaf efst í tilkynningum þó svo að kveikt sé á forgangsstillingu"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Birtist efst í samtalstilkynningum og sem prófílmynd á lásskjánum"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Birtist efst í samtalstilkynningum og sem prófílmynd á lásskjánum, birtist sem blaðra"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Birtist efst í samtalstilkynningum og sem prófílmynd á lásskjánum. Truflar „Ónáðið ekki“"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Birtist efst í samtalstilkynningum og sem prófílmynd á lásskjánum. Birtist sem blaðra sem truflar „Ónáðið ekki“"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Áfram"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Forgangssamtöl"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Forgangur"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> styður ekki samtalseiginleika"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ekki er hægt að breyta þessum tilkynningum."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ekki er hægt að stilla þessar tilkynningar hér"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Kveikt"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Slökkt"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Ekki í boði"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Yfirlitsstika"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Útlit"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Gerð aukahnapps til vinstri"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Kerfisstjórnun uppfærð. Þú getur breytt þessu í stillingunum."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Farðu í stillingar til að uppfæra kerfisstjórnun"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Biðstaða"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Samtal sett í forgang"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Forgangssamtöl"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Þessi samtöl birtast efst á listanum og þú getur alltaf séð þau þegar kveikt er á forgangsstillingu"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Prófílmyndir birtast á lásskjánum"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Þú finnur samtölin auðveldlega í blöðrum á heimaskjánum þínum"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Stöðva „Ónáðið ekki“"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Ég skil"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Stillingar"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Stækkunargluggi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Stækkunarstillingar glugga"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Auka aðdrátt"</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 40294d5a32fe..78b85c9eba80 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Hotspot mobile disattivato."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Hotspot mobile attivato."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Trasmissione dello schermo interrotta."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modalità Lavoro non attiva."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modalità Lavoro attiva."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Modalità Lavoro disattivata."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Modalità Lavoro attivata."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Funzione Risparmio dati disattivata."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Funzione Risparmio dati attivata."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limite di <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Avviso <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profilo di lavoro"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Luminosità notturna"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Attivata al tramonto"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Fino all\'alba"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silenzio\ntotale"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Solo con\npriorità"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Solo\nsveglie"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • In carica wireless (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • In carica (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ricarica veloce (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ricarica lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> al termine)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Cambio utente"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Cambia utente, utente corrente <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utente corrente <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Portafoglio"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Espandi"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Sblocca per pagare"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Pronto"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configura un metodo di pagamento"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Sblocca per usare"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Si è verificato un problema durante il recupero delle tue carte. Riprova più tardi."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profilo di lavoro"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Modalità aereo"</string> <string name="add_tile" msgid="6239678623873086686">"Aggiungi riquadro"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Stato:</b> retrocessa a Silenziosa"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Stato:</b> posizionata più in alto"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Stato:</b> posizionata più in basso"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Queste conversazioni vengono mostrate sempre in cima alle notifiche, anche quando la modalità Priorità è attiva"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Appare in cima alle notifiche delle conversazioni e compare come immagine del profilo nella schermata di blocco"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Appare in cima alle notifiche delle conversazioni, nonché compare come immagine del profilo nella schermata di blocco e come bolla"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Appare in cima alle notifiche delle conversazioni, interrompe la modalità Non disturbare e compare come immagine del profilo nella schermata di blocco"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Appare in cima alle notifiche delle conversazioni, interrompe la modalità Non disturbare, nonché compare come immagine del profilo nella schermata di blocco e come bolla"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Impostazioni"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversazioni prioritarie"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priorità"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> non supporta le funzionalità delle conversazioni"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossibile modificare queste notifiche."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Qui non è possibile configurare questo gruppo di notifiche"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"On"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Non disponibile"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barra di navigazione"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tipo di pulsante extra sinistra"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigazione del sistema aggiornata. Per apportare modifiche, usa le Impostazioni."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Usa le Impostazioni per aggiornare la navigazione del sistema"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversazione impostata come prioritaria"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversazioni prioritarie"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Queste conversazioni si trovano in cima all\'elenco e possono essere sempre mostrate quando la modalità Priorità è attiva"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Le immagini del profilo vengono mostrate nella schermata di blocco"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Puoi trovare facilmente queste conversazioni all\'interno di bolle nella schermata Home"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrompono la modalità Non disturbare"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Impostazioni"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Finestra ingrandimento"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Finestra controlli di ingrandimento"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Aumenta lo zoom"</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 0a9cceb32c5b..1853ecfc5315 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"נקודת האינטרנט (hotspot) כבויה."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"נקודת האינטרנט (hotspot) מופעלת."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"העברת המסך הופסקה."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"מצב עבודה כבוי."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"מצב עבודה מופעל."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"מצב עבודה הושבת."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"מצב עבודה הופעל."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"חוסך הנתונים (Data Saver) כובה."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"חוסך הנתונים (Data Saver) הופעל."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"הגבלה של <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"אזהרה – <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"פרופיל עבודה"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"תאורת לילה"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"התכונה מופעלת בשקיעה"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"עד הזריחה"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"שקט\nמוחלט"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"הודעות בעדיפות\nבלבד"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"התראות\nבלבד"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה אלחוטית (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה מהירה (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • בטעינה איטית (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> עד לסיום)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"החלפת משתמש"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"החלפת משתמש. המשתמש הנוכחי: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"משתמש נוכחי <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"ארנק"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"הצגת הכול"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"לביטול הנעילה ולתשלום"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"מוכן"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"הגדרת אמצעי התשלום"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"יש לבטל את הנעילה כדי להשתמש"</string> <string name="wallet_error_generic" msgid="257704570182963611">"הייתה בעיה בקבלת הכרטיסים שלך. כדאי לנסות שוב מאוחר יותר"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"פרופיל עבודה"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"מצב טיסה"</string> <string name="add_tile" msgid="6239678623873086686">"הוספת אריח"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>הסטטוס:</b> הורד בדרגה ל\'שקט\'"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>הסטטוס:</b> דורג גבוה יותר"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>הסטטוס:</b> דורג נמוך יותר"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"תמיד מוצגות בראש ההתראות, גם כשמצב העדיפות פועל"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"מוצגת בחלק העליון של קטע ההתראות וכתמונת פרופיל במסך הנעילה"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מופיעה בבועה הצפה"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מפריעה במצב \'נא לא להפריע\'"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"מוצגת בחלק העליון של קטע התראות השיחה וכתמונת פרופיל במסך הנעילה, מופיעה בבועה הצפה ומפריעה במצב \'נא לא להפריע\'"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"הגדרות"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"שיחות בעדיפות גבוהה"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"עדיפות"</string> <string name="no_shortcut" msgid="8257177117568230126">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> לא תומכת בתכונות השיחה"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"לא ניתן לשנות את ההתראות האלה."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"לא ניתן להגדיר כאן את קבוצת ההתראות הזו"</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"פועל"</string> <string name="switch_bar_off" msgid="5669805115416379556">"כבוי"</string> <string name="tile_unavailable" msgid="3095879009136616920">"לא זמין"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"סרגל ניווט"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"פריסה"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"סוג נוסף של לחצן שמאלי"</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"הניווט במערכת עודכן. אפשר לערוך שינויים דרך ההגדרות."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"יש לעבור להגדרות כדי לעדכן את הניווט במערכת"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"המתנה"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"השיחה הוגדרה כבעלת עדיפות גבוהה"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"שיחות בעדיפות גבוהה"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"השיחות האלה מוצגות בראש הרשימה והן יופיעו כל עוד מצב העדיפות פועל"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"תמונות הפרופיל מוצגות במסך הנעילה"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"קל למצוא את השיחות האלה בבועות המופיעות במסך הבית"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"גוברות על ההגדרה \'נא לא להפריע\'"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"הבנתי"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"הגדרות"</string> <string name="magnification_window_title" msgid="4863914360847258333">"חלון הגדלה"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"בקרות של חלון ההגדלה"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"התקרבות"</string> @@ -1054,8 +1061,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"העברה לפינה הימנית התחתונה"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"העברה לשוליים והסתרה"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"העברה מהשוליים והצגה"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"החלפת מצב"</string> <string name="quick_controls_title" msgid="6839108006171302273">"פקדי מכשירים"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"יש להוסיף פקדים למכשירים המחוברים"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"הגדרה של פקדי מכשירים"</string> @@ -1104,8 +1110,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"סגירה"</string> <string name="controls_media_resume" msgid="1933520684481586053">"המשך"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"הגדרות"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"הפעלה"</string> <string name="controls_error_timeout" msgid="794197289772728958">"לא פעיל, יש לבדוק את האפליקציה"</string> <string name="controls_error_retryable" msgid="864025882878378470">"שגיאה, מתבצע ניסיון חוזר…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"לא נמצא"</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 97d94ab4d41c..39abcde1e1ee 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"モバイルアクセスポイントをOFFにしました。"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"モバイルアクセスポイントをONにしました。"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"画面のキャストが停止しました。"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Work モードがオフです。"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Work モードがオンです。"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Work モードをオフにしました。"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Work モードをオンにしました。"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"データセーバーが OFF になりました。"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"データセーバーが ON になりました。"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"上限: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"警告: 上限は<xliff:g id="DATA_LIMIT">%s</xliff:g>です"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"仕事用プロファイル"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"夜間モード"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"日の入りに ON"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"日の出まで"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"サイレント\n"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"重要な\n通知のみ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"アラーム\nのみ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ワイヤレス充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 急速充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 低速充電中(完了まで <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ユーザーを切り替える"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ユーザーを切り替える、現在のユーザーは<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"現在のユーザー: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"ウォレット"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"すべて表示"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ロックを解除して支払う"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"準備完了"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"お支払いの設定"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ロックを解除して使用"</string> <string name="wallet_error_generic" msgid="257704570182963611">"カードの取得中に問題が発生しました。しばらくしてからもう一度お試しください"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"仕事用プロファイル"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"機内モード"</string> <string name="add_tile" msgid="6239678623873086686">"タイルを追加"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ステータス:</b> ランクがサイレントに下がりました"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ステータス:</b> ランクが上がりました"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ステータス:</b> ランクが下がりました"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"優先モードが ON の場合でも、常に通知の一番上に表示されます"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"会話通知の一番上に表示されると同時に、ロック画面にプロフィール写真として表示されます"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"会話通知の一番上に表示されると同時に、ロック画面にプロフィール写真として表示されるほか、バブルとして表示されます"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"会話通知の一番上に表示されると同時に、ロック画面にプロフィール写真として表示され、サイレント モードが中断されます"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"会話通知の一番上に表示されると同時に、ロック画面にプロフィール写真として表示されるほか、バブルとして表示され、サイレント モードが中断されます"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"設定"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"優先度の高い会話"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"優先"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>は会話機能に対応していません"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"これらの通知は変更できません。"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"このグループの通知はここでは設定できません"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ON"</string> <string name="switch_bar_off" msgid="5669805115416379556">"OFF"</string> <string name="tile_unavailable" msgid="3095879009136616920">"使用不可"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"ナビゲーション バー"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"レイアウト"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"その他の左ボタンタイプ"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"システム ナビゲーションを更新しました。変更するには [設定] に移動してください。"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"システム ナビゲーションを更新するには [設定] に移動してください"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"スタンバイ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"優先度を高く設定された会話"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"優先度の高い会話"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"優先モードが ON の場合、これらの会話はリストの一番上に表示されるのでいつでも確認できます"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"プロフィール写真がロック画面に表示されます"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"これらの会話はホーム画面のバブル内で簡単に確認できます"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"サイレント モードが ON でも表示"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"設定"</string> <string name="magnification_window_title" msgid="4863914360847258333">"拡大ウィンドウ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"拡大ウィンドウ コントロール"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"拡大"</string> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index df6aecbaf388..2d4d9bc62a88 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"მობილური ქსელის წერტილი გამოირთო."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"მობილური ქსელის წერტილი ჩაირთო."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"ეკრანის გადაცემა შეჩერებულია."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"სამსახურის რეჟიმი გამორთულია."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"სამსახურის რეჟიმი ჩართულია."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"სამსახურის რეჟიმი გამორთულია."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"სამსახურის რეჟიმი ჩართულია."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"მონაცემთა დამზოგველი გამორთულია."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"მონაცემთა დამზოგველი ჩართულია."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"ლიმიტი: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> გაფრთხილება"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"სამსახურის პროფილი"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ღამის განათება"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"ჩაირთოს მზის ჩასვლისას"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"მზის ამოსვლამდე"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"სრული\nსიჩუმე"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"მხოლოდ\nპრიორიტეტულები"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"მხოლოდ\nგაფრთხილებები"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება უსადენოდ (სრულად დატენვამდე დარჩა<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> სრულ დატენვამდე)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება სწრაფად (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> სრულ დატენვამდე)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • იტენება ნელა (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> სრულ დატენვამდე)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"მომხმარებლის გადართვა"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"მომხმარებლის გდართვა. ამჟამინდელი მომხმარებელი <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ამჟამინდელი მომხმარებელი <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"ყველას ჩვენება"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"გადასახდელად განბლოკვა"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"მზადაა"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"გადახდის დაყენება"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"გამოსაყენებლად განბლოკვა"</string> <string name="wallet_error_generic" msgid="257704570182963611">"თქვენი ბარათების მიღებისას პრობლემა წარმოიშვა. ცადეთ ხელახლა მოგვიანებით"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"სამსახურის პროფილი"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"თვითმფრინავის რეჟიმი"</string> <string name="add_tile" msgid="6239678623873086686">"მოზაიკის დამატება"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>სტატუსი:</b> „უხმო“ სტატუსზე გადასული"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>სტატუსი:</b> უფრო პრიორიტეტული"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>სტატუსი:</b> ნაკლებად პრიორიტეტული"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ყოველთვის განთავსებულია შეტყობინების ზემოთ, მაშინაც კი, როცა პრიორიტეტულობის რეჟიმი ჩართულია"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"გამოჩნდება საუბრის შეტყობინებების თავში და პროფილის სურათის სახით ჩაკეტილ ეკრანზე"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"გამოჩნდება საუბრის შეტყობინებების თავში და პროფილის სურათის სახით ჩაკეტილ ეკრანზე, ჩნდება ბუშტის სახით"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"გამოჩნდება საუბრის შეტყობინებების თავში და პროფილის სურათის სახით ჩაკეტილ ეკრანზე, წყვეტს ფუნქციას „არ შემაწუხოთ“"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"გამოჩნდება საუბრის შეტყობინებების თავში და პროფილის სურათის სახით ჩაკეტილ ეკრანზე, ჩნდება ბუშტის სახით, წყვეტს ფუნქციას „არ შემაწუხოთ“"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"პარამეტრები"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"პრიორიტეტული მიმოწერა"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"პრიორიტეტი"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ს არ აქვს მიმოწერის ფუნქციების მხარდაჭერა"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ამ შეტყობინებების შეცვლა შეუძლებელია."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"შეტყობინებების ამ ჯგუფის კონფიგურირება აქ შეუძლებელია"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ჩართული"</string> <string name="switch_bar_off" msgid="5669805115416379556">"გამორთვა"</string> <string name="tile_unavailable" msgid="3095879009136616920">"მიუწვდომელი"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"ნავიგაციის ზოლი"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"განლაგება"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"მარცხენა დამატებითი ღილაკის ტიპი"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"სისტემური ნავიგაცია განახლდა. ცვლილებების შესატანად გადადით პარამეტრებზე."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"სისტემური ნავიგაციის გასაახლებლად გადადით პარამეტრებზე"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"მოლოდინის რეჟიმი"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"მიმოწერა დაყენებულია პრიორიტეტად"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"პრიორიტეტული მიმოწერა"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ეს მიმოწერა თქვენი სიის ზემოთ არის განთავსებული და ყოველთვის აქტიურდება, როცა პრიორიტეტულობის რეჟიმი ჩართულია"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"პროფილის სურათები ჩაკეტილ ეკრანზე ჩნდება"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"ამ მიმოწერის პოვნა შეგიძლიათ მთავარ ეკრანზე, ბუშტებში"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"„არ შემაწუხოთ“ რეჟიმის შეწყვეტა"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"გასაგებია"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"პარამეტრები"</string> <string name="magnification_window_title" msgid="4863914360847258333">"გადიდების ფანჯარა"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"გადიდების კონტროლის ფანჯარა"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"მასშტაბის გადიდება"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"ქვემოთ და მარჯვნივ გადატანა"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"კიდეში გადატანა და დამალვა"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"კიდეში გადატანა და გამოჩენა"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"გადართვა"</string> <string name="quick_controls_title" msgid="6839108006171302273">"მოწყობილ. მართვის საშუალებები"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"მართვის საშუალებების დამატება თქვენს დაკავშირებულ მოწყობილობებზე"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"მოწყობილობის მართვის საშუალებების დაყენება"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"დახურვა"</string> <string name="controls_media_resume" msgid="1933520684481586053">"გაგრძელება"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"პარამეტრები"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"დაკვრა"</string> <string name="controls_error_timeout" msgid="794197289772728958">"არააქტიურია, გადაამოწმეთ აპი"</string> <string name="controls_error_retryable" msgid="864025882878378470">"შეცდომა, ხელახალი მცდელობა…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"ვერ მოიძებნა"</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 0a181b43d1e7..a4cfaaaeb75a 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -271,10 +271,10 @@ <string name="accessibility_quick_settings_bluetooth_connected" msgid="5237625393869747261">"Bluetooth қосылған."</string> <string name="accessibility_quick_settings_bluetooth_changed_off" msgid="3344226652293797283">"Bluetooth өшірілді."</string> <string name="accessibility_quick_settings_bluetooth_changed_on" msgid="1263282011749437549">"Bluetooth қосылды."</string> - <string name="accessibility_quick_settings_location_off" msgid="6122523378294740598">"Орындар туралы есептер өшірулі."</string> - <string name="accessibility_quick_settings_location_on" msgid="6869947200325467243">"Орындар туралы есептер қосулы."</string> - <string name="accessibility_quick_settings_location_changed_off" msgid="5132776369388699133">"Орындар туралы есептер өшірілді."</string> - <string name="accessibility_quick_settings_location_changed_on" msgid="7159115433070112154">"Орындар туралы есептер қосылды."</string> + <string name="accessibility_quick_settings_location_off" msgid="6122523378294740598">"Геодерек жіберу функциясы өшірулі."</string> + <string name="accessibility_quick_settings_location_on" msgid="6869947200325467243">"Геодерек жіберу функциясы қосулы."</string> + <string name="accessibility_quick_settings_location_changed_off" msgid="5132776369388699133">"Геодерек жіберу функциясы өшірілді."</string> + <string name="accessibility_quick_settings_location_changed_on" msgid="7159115433070112154">"Геодерек жіберу функциясы қосылды."</string> <string name="accessibility_quick_settings_alarm" msgid="558094529584082090">"Дабыл <xliff:g id="TIME">%s</xliff:g> уақытына реттелген."</string> <string name="accessibility_quick_settings_close" msgid="2974895537860082341">"Тақтаны жабу."</string> <string name="accessibility_quick_settings_more_time" msgid="7646479831704665284">"Көбірек уақыт."</string> @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Мобильді хотспот өшірілді."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Мобильді хотспот қосылды."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Экранды трансляциялау тоқтатылды."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Жұмыс режимі өшірулі."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Жұмыс режимі қосулы."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Жұмыс режимі өшірілді."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Жұмыс режимі қосылды."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Трафикті үнемдеу режимі өшірілді."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Трафикті үнемдеу режимі қосылды."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> шегі"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> туралы ескерту"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Жұмыс профилі"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Түнгі жарық"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Күн батқанда қосу"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Күн шыққанға дейін"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Толық\nтыныштық"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Тек\nбасымдық"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Тек\nдабылдар"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Сымсыз зарядталып жатыр (толық зарядталуға <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зарядталуда (толуына <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Жылдам зарядталуда (толуына <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Баяу зарядталуда (толуына <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> қалды)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Пайдаланушыны ауыстыру"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Пайдаланушыны ауыстыру, ағымдағы пайдаланушы <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Ағымдағы пайдаланушы: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Әмиян"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Барлығын көрсету"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Төлеу үшін құлыпты ашу"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Дайын"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Төлем әдісін реттеу"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Пайдалану үшін құлыпты ашу"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Карталарыңыз алынбады, кейінірек қайталап көріңіз."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Жұмыс профилі"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Ұшақ режимі"</string> <string name="add_tile" msgid="6239678623873086686">"Тақтайша қосу"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Күйі:</b> \"Үнсіз\" санатына төмендетілген"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Күйі:</b> маңыздылық деңгейі көтерілген"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Күйі:</b> маңыздылық деңгейі төмендетілген"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Әрдайым (тіпті \"Маңызды\" режимі қосулы болса да) хабарландыруларыңыздың жоғарғы жағында көрсетіледі"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Әңгіме туралы хабарландырулардың жоғарғы жағында тұрады және құлыптаулы экранда профиль суреті ретінде көрсетіледі."</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Әңгіме туралы хабарландырулардың жоғарғы жағында тұрады және құлыптаулы экранда профиль суреті ретінде көрсетіледі, қалқымалы анықтама ретінде шығады."</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Әңгіме туралы хабарландырулардың жоғарғы жағында тұрады және құлыптаулы экранда профиль суреті ретінде көрсетіледі, \"Мазаламау\" режимін тоқтатады."</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Әңгіме туралы хабарландырулардың жоғарғы жағында тұрады және құлыптаулы экранда профиль суреті ретінде көрсетіледі, қалқымалы анықтама ретінде шығады, \"Мазаламау\" режимін тоқтатады."</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Параметрлер"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Маңызды чаттар"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Маңызды"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> әңгімелесу функцияларын қолдамайды."</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Бұл хабарландыруларды өзгерту мүмкін емес."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Мұндай хабарландырулар бұл жерде конфигурацияланбайды."</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Қосулы"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Өшірулі"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Қолжетімді емес"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Шарлау тақтасы"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Формат"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Қосымша сол жақ түйме түрі"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Жүйе навигациясы жаңартылды. Өзгерту енгізу үшін \"Параметрлер\" бөліміне өтіңіз."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Жүйе навигациясын жаңарту үшін \"Параметрлер\" бөліміне өтіңіз."</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Күту режимі"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Әңгіме маңызды деп белгіленді"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Маңызды чаттар"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Бұл чаттар тізіміңіздің жоғарғы жағында көрсетіледі және \"Маңызды\" режимі қосулы болған кезде әрдайым қолжетімді болады."</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Профиль суреттері құлыптаулы экранда көрсетіледі."</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Бұл чаттарды негізгі экрандағы қалқыма хабарлардан оңай таба аласыз."</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Мазаламау режимінде көрсетіледі."</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Түсінікті"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Параметрлер"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Ұлғайту терезесі"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Ұлғайту терезесінің басқару элементтері"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Ұлғайту"</string> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index f872660aa1c8..78f228aa4a01 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"បានបិទហតស្ប៉តចល័ត។"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"បានបើកហតស្ប៉តចល័ត។"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"បានបញ្ឈប់ការចាត់ថ្នាក់អេក្រង់។"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"បិទរបៀបការងារ"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"បើករបៀបការងារ"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"បានបិទរបៀបការងារ"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"បានបើករបៀបការងារ"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"បានបិទកម្មវិធីសន្សំសំចៃទិន្នន័យ"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"បានបើកកម្មវិធីសន្សំសំចៃទិន្នន័យ"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"ដែនកំណត់ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ការព្រមាន"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"កម្រងព័ត៌មានការងារ"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ពន្លឺពេលយប់"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"បើកនៅពេលថ្ងៃលិច"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"រហូតដល់ពេលថ្ងៃរះ"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ស្ងៀមស្ងាត់\nទាំងស្រុង"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"អាទិភាព\nប៉ុណ្ណោះ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"សំឡេងរោទ៍\nប៉ុណ្ណោះ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្មឥតខ្សែ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្ម (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្មយ៉ាងឆាប់រហ័ស (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • កំពុងសាកថ្មយឺត (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ទៀតទើបពេញ)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ប្ដូរអ្នកប្រើ"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ប្ដូរអ្នកប្រើ អ្នកប្រើបច្ចុប្បន្ន <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"អ្នកប្រើបច្ចុប្បន្ន <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"កាបូប"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"បង្ហាញទាំងអស់"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ដោះសោដើម្បីបង់ប្រាក់"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"រួចរាល់"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"រៀបចំការបង់ប្រាក់"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ដោះសោដើម្បីប្រើប្រាស់"</string> <string name="wallet_error_generic" msgid="257704570182963611">"មានបញ្ហាក្នុងការទាញយកកាតរបស់អ្នក សូមព្យាយាមម្ដងទៀតនៅពេលក្រោយ"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"ប្រវត្តិរូបការងារ"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ពេលជិះយន្តហោះ"</string> <string name="add_tile" msgid="6239678623873086686">"បន្ថែមក្រឡាល្អិត"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ស្ថានភាព៖</b> បានបញ្ចុះទៅស្ងាត់"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ស្ថានភាព៖</b> បានចាត់ថ្នាក់ខ្ពស់ជាងមុន"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ស្ថានភាព៖</b> បានចាត់ថ្នាក់ទាបជាងមុន"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"បង្ហាញនៅផ្នែកខាងលើការជូនដំណឹងរបស់អ្នកជានិច្ច ទោះបីជានៅពេលបើកមុខងារអាទិភាពក៏ដោយ"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"បង្ហាញនៅខាងលើការជូនដំណឹងអំពីការសន្ទនា និងជារូបភាពកម្រងព័ត៌មាននៅលើអេក្រង់ចាក់សោ"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"បង្ហាញនៅខាងលើការជូនដំណឹងអំពីការសន្ទនា និងជារូបភាពកម្រងព័ត៌មាននៅលើអេក្រង់ចាក់សោ បង្ហាញជាពពុះ"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"បង្ហាញនៅខាងលើការជូនដំណឹងអំពីការសន្ទនា និងជារូបភាពកម្រងព័ត៌មាននៅលើអេក្រង់ចាក់សោ បង្អាក់មុខងារកុំរំខាន"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"បង្ហាញនៅខាងលើការជូនដំណឹងអំពីការសន្ទនា និងជារូបភាពកម្រងព័ត៌មាននៅលើអេក្រង់ចាក់សោ បង្ហាញជាពពុះ បង្អាក់មុខងារកុំរំខាន"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ការកំណត់"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ការសន្ទនាអាទិភាព"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"អាទិភាព"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> មិនអាចប្រើមុខងារសន្ទនាបានទេ"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"មិនអាចកែប្រែការជូនដំណឹងទាំងនេះបានទេ។"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"មិនអាចកំណត់រចនាសម្ព័ន្ធក្រុមការជូនដំណឹងនេះនៅទីនេះបានទេ"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"បើក"</string> <string name="switch_bar_off" msgid="5669805115416379556">"បិទ"</string> <string name="tile_unavailable" msgid="3095879009136616920">"មិនមាន"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"របាររុករក"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"ប្លង់"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"ប្រភេទប៊ូតុងខាងឆ្វេងបន្ថែម"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"បានធ្វើបច្ចុប្បន្នភាពការរុករកក្នុងប្រព័ន្ធ។ ដើម្បីធ្វើការផ្លាស់ប្ដូរ សូមចូលទៅកាន់ការកំណត់។"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ចូលទៅកាន់ការកំណត់ ដើម្បីធ្វើបច្ចុប្បន្នភាពការរុករកក្នុងប្រព័ន្ធ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ផ្អាកដំណើរការ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"បានកំណត់ការសន្ទនាជាអាទិភាព"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ការសន្ទនាអាទិភាព"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ការសន្ទនាទាំងនេះបង្ហាញនៅផ្នែកខាងលើបញ្ជីរបស់អ្នក និងអាចបង្ហាញដល់អ្នកជានិច្ច នៅពេលបើកមុខងារអាទិភាព"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"រូបភាពកម្រងព័ត៌មានបង្ហាញនៅលើអេក្រង់ចាក់សោ"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"អ្នកអាចរកមើលការសន្ទនាទាំងនេះបានយ៉ាងងាយស្រួលនៅក្នុងពពុះនៅលើអេក្រង់ដើមរបស់អ្នក"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"ផ្អាកមុខងារកុំរំខាន"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"យល់ហើយ"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ការកំណត់"</string> <string name="magnification_window_title" msgid="4863914360847258333">"វិនដូការពង្រីក"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"វិនដូគ្រប់គ្រងការពង្រីក"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ពង្រីក"</string> @@ -1086,10 +1093,8 @@ <string name="controls_structure_tooltip" msgid="4355922222944447867">"អូសដើម្បីមើលច្រើនទៀត"</string> <string name="controls_seeding_in_progress" msgid="3033855341410264148">"កំពុងផ្ទុកការណែនាំ"</string> <string name="controls_media_title" msgid="1746947284862928133">"មេឌៀ"</string> - <!-- no translation found for controls_media_close_session (1193000643003066508) --> - <skip /> - <!-- no translation found for controls_media_active_session (3146882316024153337) --> - <skip /> + <string name="controls_media_close_session" msgid="1193000643003066508">"លាក់វគ្គមេឌៀនេះឬ?"</string> + <string name="controls_media_active_session" msgid="3146882316024153337">"មិនអាចលាក់វគ្គមេឌៀបច្ចុប្បន្នបានទេ។"</string> <string name="controls_media_dismiss_button" msgid="9081375542265132213">"ច្រានចោល"</string> <string name="controls_media_resume" msgid="1933520684481586053">"បន្ត"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"ការកំណត់"</string> @@ -1154,6 +1159,5 @@ <string name="accessibility_udfps_disabled_button" msgid="4284034245130239384">"បានបិទឧបករណ៍ចាប់ស្នាមម្រាមដៃ"</string> <string name="accessibility_authenticate_hint" msgid="798914151813205721">"ផ្ទៀងផ្ទាត់"</string> <string name="accessibility_enter_hint" msgid="2617864063504824834">"បញ្ចូលឧបករណ៍"</string> - <!-- no translation found for keyguard_try_fingerprint (2825130772993061165) --> - <skip /> + <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ប្រើស្នាមម្រាមដៃ ដើម្បីបើក"</string> </resources> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index ffc634adbe4f..3cb20af5e969 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"ಮೊಬೈಲ್ ಹಾಟ್ಸ್ಪಾಟ್ ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"ಮೊಬೈಲ್ ಹಾಟ್ಸ್ಪಾಟ್ ಆನ್ ಮಾಡಲಾಗಿದೆ."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"ಸ್ಕ್ರೀನ್ ಪ್ರಸಾರವನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"ಕೆಲಸದ ಮೋಡ್ ಆಫ್ ಆಗಿದೆ."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"ಕೆಲಸದ ಮೋಡ್ ಆನ್ ಆಗಿದೆ."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"ಕೆಲಸದ ಮೋಡ್ ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"ಕೆಲಸದ ಮೋಡ್ ಆನ್ ಮಾಡಲಾಗಿದೆ."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ಡೇಟಾ ಸೇವರ್ ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ಡೇಟಾ ಸೇವರ್ ಆನ್ ಮಾಡಲಾಗಿದೆ."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ಮಿತಿ"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ಎಚ್ಚರಿಕೆ"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"ಕೆಲಸದ ಪ್ರೊಫೈಲ್"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ನೈಟ್ ಲೈಟ್"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"ಸೂರ್ಯಾಸ್ತದಲ್ಲಿ"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"ಸೂರ್ಯೋದಯದವರೆಗೆ"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ಸಂಪೂರ್ಣ\nನಿಶ್ಯಬ್ಧ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ಆದ್ಯತೆ\nಮಾತ್ರ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ಅಲಾರಮ್ಗಳು\nಮಾತ್ರ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ವೈರ್ಲೆಸ್ ಆಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ ಉಳಿದಿದೆ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ಚಾರ್ಜ್ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ವೇಗವಾಗಿ ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ (ಪೂರ್ಣಗೊಳ್ಳಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ನಿಧಾನವಾಗಿ ಚಾರ್ಜ್ಆಗುತ್ತಿದೆ (ಪೂರ್ಣವಾಗಲು <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ಬಳಕೆದಾರರನ್ನು ಬದಲಿಸಿ, ಪ್ರಸ್ತುತ ಬಳಕೆದಾರ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"<xliff:g id="CURRENT_USER_NAME">%s</xliff:g> ಪ್ರಸ್ತುತ ಬಳಕೆದಾರ"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"ವಾಲೆಟ್"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"ಎಲ್ಲವನ್ನೂ ತೋರಿಸಿ"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ಪಾವತಿಸಲು ಅನ್ಲಾಕ್ ಮಾಡಿ"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"ಸಿದ್ಧವಾಗಿದೆ"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ಪಾವತಿಯನ್ನು ಸೆಟಪ್ ಮಾಡಿ"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ಬಳಸಲು ಅನ್ಲಾಕ್ ಮಾಡಿ"</string> <string name="wallet_error_generic" msgid="257704570182963611">"ನಿಮ್ಮ ಕಾರ್ಡ್ಗಳನ್ನು ಪಡೆಯುವಾಗ ಸಮಸ್ಯೆ ಉಂಟಾಗಿದೆ, ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"ಕೆಲಸದ ಪ್ರೊಫೈಲ್"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ಏರ್ಪ್ಲೇನ್ ಮೋಡ್"</string> <string name="add_tile" msgid="6239678623873086686">"ಟೈಲ್ ಸೇರಿಸಿ"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ಸ್ಥಿತಿ:</b> ಸೈಲೆಂಟ್ಗೆ ಕೆಳದರ್ಜೆಗೆ ಇಳಿದಿದೆ"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ಸ್ಥಿತಿ:</b> ಉನ್ನತ ಸ್ಥಾನವನ್ನು ಹೊಂದಿದೆ"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ಸ್ಥಿತಿ:</b> ಕಡಿಮೆ ಸ್ಥಾನವನ್ನು ಹೊಂದಿದೆ"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ಆದ್ಯತಾ ಮೋಡ್ ಆನ್ ಆಗಿದ್ದರೂ ಸಹ, ನಿಮ್ಮ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಯಾವಾಗಲೂ ತೋರಿಸಲಾಗುತ್ತದೆ"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ, ಬಬಲ್ನಂತೆ ಗೋಚರಿಸುತ್ತದೆ"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ, ಅಡಚಣೆ ಮಾಡಬೇಡ ಮೋಡ್ಗೆ ಅಡ್ಡಿಯುಂಟುಮಾಡುತ್ತದೆ"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"ಸಂಭಾಷಣೆ ಅಧಿಸೂಚನೆಗಳ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಹಾಗೂ ಲಾಕ್ ಸ್ಕ್ರೀನ್ನ ಮೇಲೆ ಪ್ರೊಫೈಲ್ ಚಿತ್ರವಾಗಿ ತೋರಿಸುತ್ತದೆ, ಬಬಲ್ನಂತೆ ಗೋಚರಿಸುತ್ತದೆ, ಅಡಚಣೆ ಮಾಡಬೇಡ ಮೋಡ್ಗೆ ಅಡ್ಡಿಯುಂಟುಮಾಡುತ್ತದೆ"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ಆದ್ಯತೆಯ ಸಂಭಾಷಣೆಗಳು"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ಆದ್ಯತೆ"</string> <string name="no_shortcut" msgid="8257177117568230126">"ಸಂವಾದ ಫೀಚರ್ಗಳನ್ನು <xliff:g id="APP_NAME">%1$s</xliff:g> ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"ಈ ಗುಂಪಿನ ಅಧಿಸೂಚನೆಗಳನ್ನು ಇಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿರುವುದಿಲ್ಲ"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ಆನ್"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ಆಫ್"</string> <string name="tile_unavailable" msgid="3095879009136616920">"ಲಭ್ಯವಿಲ್ಲ"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"ನ್ಯಾವಿಗೇಷನ್ ಬಾರ್"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"ಲೇಔಟ್"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"ಹೆಚ್ಚುವರಿ ಎಡ ಬಟನ್ ವಿಧ"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಷನ ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು, ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಷನ್ ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ಸ್ಟ್ಯಾಂಡ್ಬೈ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"ಸಂವಾದವನ್ನು ಆದ್ಯತೆಯಾಗಿ ಹೊಂದಿಸಲಾಗಿದೆ"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ಆದ್ಯತೆಯ ಸಂಭಾಷಣೆಗಳು"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ಈ ಸಂಭಾಷಣೆಗಳನ್ನು ನಿಮ್ಮ ಪಟ್ಟಿಯ ಮೇಲ್ಭಾಗದಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ ಮತ್ತು ಆದ್ಯತಾ ಮೋಡ್ ಆನ್ ಆಗಿರುವಾಗ ಯಾವಾಗಲೂ ನಿಮ್ಮನ್ನು ತಲುಪಬಹುದು"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"ಪ್ರೊಫೈಲ್ ಚಿತ್ರಗಳನ್ನು ಲಾಕ್ ಸ್ಕ್ರೀನ್ನಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್ನ ಬಬಲ್ಸ್ನಲ್ಲಿ ಈ ಸಂಭಾಷಣೆಗಳನ್ನು ನೀವು ಸುಲಭವಾಗಿ ಕಾಣಬಹುದು"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"ಅಡಚಣೆ ಮಾಡಬೇಡ ಅನ್ನು ಅಡ್ಡಿಪಡಿಸಿ"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"ಅರ್ಥವಾಯಿತು"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> <string name="magnification_window_title" msgid="4863914360847258333">"ವರ್ಧನೆಯ ವಿಂಡೋ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ವರ್ಧನೆಯ ವಿಂಡೋ ನಿಯಂತ್ರಣಗಳು"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ಝೂಮ್ ಇನ್ ಮಾಡಿ"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"ಕೆಳಗಿನ ಬಲಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"ಅಂಚಿಗೆ ಸರಿಸಿ ಮತ್ತು ಮರೆಮಾಡಿ"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"ಅಂಚನ್ನು ಸರಿಸಿ ಮತ್ತು ತೋರಿಸಿ"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ಟಾಗಲ್ ಮಾಡಿ"</string> <string name="quick_controls_title" msgid="6839108006171302273">"ಸಾಧನ ನಿಯಂತ್ರಣಗಳು"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"ನಿಮ್ಮ ಕನೆಕ್ಟ್ ಆಗಿರುವ ಸಾಧನಗಳಿಗೆ ನಿಯಂತ್ರಣಗಳನ್ನು ಸೇರಿಸಿ"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"ಸಾಧನ ನಿಯಂತ್ರಣಗಳನ್ನು ಸೆಟಪ್ ಮಾಡಿ"</string> @@ -1087,15 +1093,12 @@ <string name="controls_structure_tooltip" msgid="4355922222944447867">"ಇನ್ನಷ್ಟು ನೋಡಲು ಸ್ವೈಪ್ ಮಾಡಿ"</string> <string name="controls_seeding_in_progress" msgid="3033855341410264148">"ಶಿಫಾರಸುಗಳು ಲೋಡ್ ಆಗುತ್ತಿವೆ"</string> <string name="controls_media_title" msgid="1746947284862928133">"ಮಾಧ್ಯಮ"</string> - <!-- no translation found for controls_media_close_session (1193000643003066508) --> - <skip /> - <!-- no translation found for controls_media_active_session (3146882316024153337) --> - <skip /> + <string name="controls_media_close_session" msgid="1193000643003066508">"ಈ ಮಾಧ್ಯಮ ಸೆಶನ್ ಅನ್ನು ಮರೆಮಾಡಬೇಕೆ?"</string> + <string name="controls_media_active_session" msgid="3146882316024153337">"ಪ್ರಸ್ತುತ ಮಾಧ್ಯಮ ಸೆಶನ್ ಅನ್ನು ಮರೆಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string> <string name="controls_media_dismiss_button" msgid="9081375542265132213">"ವಜಾಗೊಳಿಸಿ"</string> <string name="controls_media_resume" msgid="1933520684481586053">"ಪುನರಾರಂಭಿಸಿ"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"ಪ್ಲೇ ಮಾಡಿ"</string> <string name="controls_error_timeout" msgid="794197289772728958">"ನಿಷ್ಕ್ರಿಯ, ಆ್ಯಪ್ ಪರಿಶೀಲಿಸಿ"</string> <string name="controls_error_retryable" msgid="864025882878378470">"ದೋಷ, ಮರುಪ್ರಯತ್ನಿಸಲಾಗುತ್ತಿದೆ…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"ಕಂಡುಬಂದಿಲ್ಲ"</string> @@ -1156,6 +1159,5 @@ <string name="accessibility_udfps_disabled_button" msgid="4284034245130239384">"ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string> <string name="accessibility_authenticate_hint" msgid="798914151813205721">"ದೃಢೀಕರಿಸಿ"</string> <string name="accessibility_enter_hint" msgid="2617864063504824834">"ಸಾಧನವನ್ನು ಪ್ರವೇಶಿಸಿ"</string> - <!-- no translation found for keyguard_try_fingerprint (2825130772993061165) --> - <skip /> + <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ತೆರೆಯುವುದಕ್ಕಾಗಿ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ನು ಬಳಸಿ"</string> </resources> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 7d27acba2fd0..5f6bbcb00471 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"모바일 핫스팟이 사용 중지되었습니다."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"모바일 핫스팟을 사용합니다."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"화면 전송이 중지되었습니다."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"작업 모드가 사용 중지되었습니다."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"작업 모드가 사용 설정되었습니다."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"작업 모드가 사용 중지되었습니다."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"작업 모드가 사용 설정되었습니다."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"데이터 절약 모드를 사용 중지했습니다."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"데이터 절약 모드를 사용 설정했습니다."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"한도: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 경고"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"직장 프로필"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"야간 조명"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"일몰에"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"일출까지"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"모두\n차단"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"중요 알림만\n허용"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"알람만\n"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 무선 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>후 충전 완료)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> 후 충전 완료)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 고속 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> 후 충전 완료)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 저속 충전 중(<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> 후 충전 완료)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"사용자 전환"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"사용자 전환, 현재 사용자 <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"현재 사용자: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"모두 표시"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"잠금 해제하여 결제"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"준비됨"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"결제 설정"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"잠금 해제하여 사용"</string> <string name="wallet_error_generic" msgid="257704570182963611">"카드를 가져오는 중에 문제가 발생했습니다. 나중에 다시 시도해 보세요."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"직장 프로필"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"비행기 모드"</string> <string name="add_tile" msgid="6239678623873086686">"타일 추가"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>상태:</b> 무음으로 낮춤"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>상태:</b> 순위 높임"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>상태:</b> 순위 낮춤"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"우선순위 모드가 켜져 있어도 항상 알림 맨 위에 표시됩니다"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"대화 알림 상단에 표시, 잠금 화면에 프로필 사진으로 표시"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"대화 알림 상단에 표시, 잠금 화면에 프로필 사진으로 표시, 대화창으로 표시"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"대화 알림 상단에 표시, 잠금 화면에 프로필 사진으로 표시, 방해 금지 모드를 무시함"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"대화 알림 상단에 표시, 잠금 화면에 프로필 사진으로 표시, 대화창으로 표시, 방해 금지 모드를 무시함"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"설정"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"우선순위 대화"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"우선순위"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> 앱은 대화 기능을 지원하지 않습니다."</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"이 알림은 수정할 수 없습니다."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"이 알림 그룹은 여기에서 설정할 수 없습니다."</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"사용"</string> <string name="switch_bar_off" msgid="5669805115416379556">"사용 안함"</string> <string name="tile_unavailable" msgid="3095879009136616920">"사용할 수 없음"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"탐색 메뉴"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"레이아웃"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"추가 왼쪽 버튼 유형"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"시스템 탐색이 업데이트되었습니다. 변경하려면 설정으로 이동하세요."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"설정으로 이동하여 시스템 탐색을 업데이트하세요."</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"대기"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"대화가 우선순위 대화로 설정됨"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"우선순위 대화"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"우선순위 대화는 목록 맨 위에 표시되며 우선순위 모드가 켜져 있을 때는 항상 표시됩니다."</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"프로필 사진이 잠금 화면에 표시됩니다."</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"홈 화면에서 풍선 모양의 대화창을 쉽게 찾을 수 있습니다."</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"방해 금지 모드 무시"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"확인"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"설정"</string> <string name="magnification_window_title" msgid="4863914360847258333">"확대 창"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"확대 창 컨트롤"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"확대"</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index e1cc372f730f..90b16002191e 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Мобилдик байланыш түйүнү өчүрүлдү."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Мобилдик байланыш түйүнү күйгүзүлдү."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Тышкы экранга чыгаруу аракети токтотулду."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Иштөө режими өчүк."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Иштөө режими күйүк."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Иштөө режими өчүрүлдү."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Иштөө режими күйгүзүлдү."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Трафикти үнөмдөө режими өчүрүлдү."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Трафикти үнөмдөө режими күйгүзүлдү."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> чектөө"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> эскертүү"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Жумуш профили"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Түнкү режим"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Күн батканда күйөт"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Күн чыкканга чейин"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Тым-\nтырс"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Артыкчылыктуу\nгана"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Ойготкучтар\nгана"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Зымсыз кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Тез кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Жай кубатталууда (толгонго чейин <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> калды)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Колдонуучуну которуу"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Колдонуучуну күйгүзүү, учурдагы колдонуучу <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Учурдагы колдонуучу <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Баарын көрсөтүү"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Төлөө үчүн кулпусун ачыңыз"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Даяр"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Төлөмдү жөндөө"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Колдонуу үчүн кулпусун ачыңыз"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Кыйытмаларды алууда ката кетти. Бир аздан кийин кайталап көрүңүз."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Жумуш профили"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Учак режими"</string> <string name="add_tile" msgid="6239678623873086686">"Тайл кошуу"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Абалы:</b> Үнсүз абалга төмөндөдү"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Абалы:</b> Жогорулады"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Абалы:</b> Төмөндөдү"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Маанилүү жазышуулар режими күйүп турса да, ар дайым билдирмелердин үстүндө көрүнөт"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Сүйлөшүүлөр тууралуу билдирмелердин жогору жагында жана кулпуланган экранда профилдин сүрөтү катары көрсөтүлөт"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Cүйлөшүүлөр тууралуу билдирмелердин жогору жагында жана кулпуланган экранда профилдин сүрөтү, ошондой эле калкып чыкма билдирме катары көрсөтүлөт"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Cүйлөшүүлөр тууралуу билдирмелердин жогору жагында жана кулпуланган экранда профилдин сүрөтү катары көрсөтүлүп, \"Тынчымды алба\" режимин үзгүлтүккө учуратат"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Cүйлөшүүлөр тууралуу билдирмелердин жогору жагында жана кулпуланган экранда профилдин сүрөтү, ошондой эле калкып чыкма билдирме катары көрсөтүлүп, \"Тынчымды алба\" режимин үзгүлтүккө учуратат"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Жөндөөлөр"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Маанилүү жазышуулар"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Маанилүүлүгү"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунда оозеки сүйлөшкөнгө болбойт"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Бул билдирмелерди өзгөртүүгө болбойт."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Бул билдирмелердин тобун бул жерде конфигурациялоого болбойт"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Күйүк"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Өчүк"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Жеткиликсиз"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Чабыттоо тилкеси"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Калып"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Сол жактагы кошумча баскычтын түрү"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Тутум чабыттоосу жаңырды. Өзгөртүү үчүн, Жөндөөлөргө өтүңүз."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Тутум чабыттоосун жаңыртуу үчүн Жөндөөлөргө өтүңүз"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Көшүү режими"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Сүйлөшүү маанилүү болуп коюлду"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Маанилүү жазышуулар"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Маанилүү жазышуулар режими күйүп турганда бул жазышуулар ар дайым тизменин жогору жагында болуп, аларды тез табасыз"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Профилдин сүрөттөрү кулпуланган экранда көрүнөт"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Бул жазышууларды Башкы экраныңыздагы калкып чыкма билдирмелерден каалаганда таап алсаңыз болот"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"\"Тынчымды алба\" режими үзгүлтүккө учурайт"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Түшүндүм"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Жөндөөлөр"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Чоңойтуу терезеси"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Чоңойтуу терезесин башкаруу каражаттары"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Жакындатуу"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Төмөнкү оң жакка жылдырыңыз"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Ичине жылдырып, көрсөтүңүз"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Сыртка жылдырып, көрсөтүңүз"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"өчүрүү/күйгүзүү"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Түзмөктү башкаруу элементтери"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Түзмөктөрүңүздү башкаруу элементтерин кошосуз"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Түзмөктү башкаруу элементтерин жөндөө"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Жабуу"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Улантуу"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Жөндөөлөр"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Ойнотуу"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Жигерсиз. Колдонмону текшериңиз"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Ката, дагы аракет жасалууда…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Табылган жок"</string> diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml index 46e7d71c4c36..96809dc2ff55 100644 --- a/packages/SystemUI/res/values-land/dimens.xml +++ b/packages/SystemUI/res/values-land/dimens.xml @@ -32,7 +32,7 @@ <dimen name="qs_security_footer_single_line_height">@*android:dimen/quick_qs_offset_height</dimen> <dimen name="qs_footer_padding">14dp</dimen> - <dimen name="qs_security_footer_vertical_margin">0dp</dimen> + <dimen name="qs_footers_margin_bottom">0dp</dimen> <dimen name="qs_security_footer_background_inset">12dp</dimen> <dimen name="qs_security_footer_corner_radius">28dp</dimen> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index cf9b64655951..91bdc6e6a2dd 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"ປິດຮັອດສະປອດເຄື່ອນທີ່ແລ້ວ."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"ເປີດຮັອດສະປອດເຄື່ອນທີ່ແລ້ວ."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"ຢຸດການສົ່ງພາບໜ້າຈໍແລ້ວ."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"ໂໝດການເຮັດວຽກປິດຢູ່."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"ໂໝດການເຮັດວຽກເປີດຢູ່."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"ໂໝດການເຮັດວຽກປິດຢູ່."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"ໂໝດການເຮັດວຽກເປີດຢູ່."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ປິດຕົວປະຢັດອິນເຕີເນັດແລ້ວ."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ເປີດຕົວປະຢັດອິນເຕີເນັດແລ້ວ."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"ຈຳກັດ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"ຄຳເຕືອນ <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ແສງກາງຄືນ"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"ເປີດຕອນຕາເວັນຕົກ"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"ຈົນກວ່າຕາເວັນຂຶ້ນ"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ຄວາມງຽບ\nທັງໝົດ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ບຸລິມະສິດ\nເທົ່ານັ້ນ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ໂມງປຸກ\nເທົ່ານັ້ນ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກໄຟໄຮ້ສາຍ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈົນກວ່າຈະເຕັມ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈຶ່ງຈະເຕັມ)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກແບບດ່ວນ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈຶ່ງຈະເຕັມ)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ກຳລັງສາກແບບຊ້າ (ອີກ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ຈຶ່ງຈະເຕັມ)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ສະຫຼັບຜູ້ໃຊ້"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ປ່ຽນຜູ່ໃຊ້, ຜູ່ໃຊ້ປະຈຸບັນ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ຜູ້ໃຊ້ປະຈຸບັນ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"ກະເປົາ"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"ສະແດງທັງໝົດ"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ປົດລັອກເພື່ອຈ່າຍ"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"ພ້ອມແລ້ວ"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ຕັ້ງຄ່າການຈ່າຍເງິນ"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ປົດລັອກເພື່ອໃຊ້"</string> <string name="wallet_error_generic" msgid="257704570182963611">"ເກີດບັນຫາໃນການໂຫຼດບັດຂອງທ່ານ, ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກ"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ໂໝດເຮືອບິນ"</string> <string name="add_tile" msgid="6239678623873086686">"ເພີ່ມລາຍຕາກະໂລ່"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ສະຖານະ:</b> ຫຼຸດລະດັບເປັນປິດສຽງແລ້ວ"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ສະຖານະ:</b> ມີອັນດັບສູງຂຶ້ນແລ້ວ"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ສະຖານະ:</b> ມີອັນດັບຕ່ຳລົງແລ້ວ"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນທ່ານສະເໝີ, ເຖິງແມ່ນວ່າຈະເປີດໃຊ້ໂໝດຄວາມສຳຄັນຢູ່ກໍຕາມ"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ, ປາກົດເປັນຟອງ"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ, ສະແດງໃນໂໝດຫ້າມລົບກວນໄດ້"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"ສະແດງຢູ່ເທິງສຸດຂອງການແຈ້ງເຕືອນການສົນທະນາ ແລະ ເປັນຮູບໂປຣໄຟລ໌ຢູ່ໜ້າຈໍລັອກ, ປາກົດເປັນຟອງ, ສະແດງໃນໂໝດຫ້າມລົບກວນໄດ້"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ຕັ້ງຄ່າ"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ການສົນທະນາສຳຄັນ"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ສຳຄັນ"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ຮອງຮັບຄຸນສົມບັດການສົນທະນາ"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນເຫຼົ່ານີ້ໄດ້."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"ບໍ່ສາມາດຕັ້ງຄ່າກຸ່ມການແຈ້ງເຕືອນນີ້ຢູ່ບ່ອນນີ້ໄດ້"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ເປີດ"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ປິດ"</string> <string name="tile_unavailable" msgid="3095879009136616920">"ບໍ່ສາມາດໃຊ້ໄດ້"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"ແຖບນຳທາງ"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"ຮູບແບບ"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"ປະເພດປຸ່ມຊ້າຍພິເສດ"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ອັບເດດການນຳທາງລະບົບແລ້ວ. ເພື່ອປ່ຽນແປງ, ກະລຸນາໄປທີ່ການຕັ້ງຄ່າ."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ໄປທີ່ການຕັ້ງຄ່າເພື່ອອັບເດດການນຳທາງລະບົບ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ສະແຕນບາຍ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"ຕັ້ງການສົນທະນາເປັນສຳຄັນແລ້ວ"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ການສົນທະນາສຳຄັນ"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ການສົນທະນາເຫຼົ່ານີ້ຈະສະແດງຢູ່ເທິງສຸດຂອງລາຍຊື່ທ່ານ ແລະ ສາມາດຕິດຕໍ່ຫາທ່ານໄດ້ຕະຫຼອດເມື່ອເປີດໃຊ້ໂໝດຄວາມສຳຄັນ"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"ຮູບໂປຣໄຟລ໌ແມ່ນສະແດງຢູ່ໜ້າຈໍລັອກ"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"ທ່ານສາມາດຊອກຫາການສົນທະນາເຫຼົ່ານີ້ໄດ້ຢ່າງງ່າຍດາຍໃນຟອງຢູ່ໂຮມສະກຣີນຂອງທ່ານ"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"ລົບກວນໂໝດຫ້າມລົບກວນ"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"ເຂົ້າໃຈແລ້ວ"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ການຕັ້ງຄ່າ"</string> <string name="magnification_window_title" msgid="4863914360847258333">"ໜ້າຈໍການຂະຫຍາຍ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ການຄວບຄຸມໜ້າຈໍການຂະຫຍາຍ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ຊູມເຂົ້າ"</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index a3bffe06e4ff..407db297d31a 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobiliojo ryšio viešosios interneto prieigos taškas išjungtas."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobiliojo ryšio viešosios interneto prieigos taškas įjungtas."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ekrano perdavimas sustabdytas."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Darbo režimas išjungtas."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Darbo režimas įjungtas."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Darbo režimas išjungtas."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Darbo režimas įjungtas."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Duomenų taupymo priemonė išjungta."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Duomenų taupymo priemonė įjungta."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limitas: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> įspėjimas"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Darbo profilis"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nakties šviesa"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Per saulėlydį"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Iki saulėtekio"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Visiška\ntyla"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Tik\nprioritetiniai"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Tik\nsignalai"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kraunama be laidų (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>, kol bus visiškai įkrauta)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Įkraunama (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> iki visiško įkrovimo)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Greitai įkraunama (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> iki visiško įkr.)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lėtai įkraunama (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> iki visiško įkr.)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Perjungti naudotoją"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Perjungti naudotoją, dabartinis naudotojas <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Dabartinis naudotojas <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Piniginė"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Rodyti viską"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Atrakinti, kad būtų galima mokėti"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Paruošta"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Nustatyti mokėjimą"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Atrakinti, kad būtų galima naudoti"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Gaunant korteles kilo problema, bandykite dar kartą vėliau"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Darbo profilis"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Lėktuvo režimas"</string> <string name="add_tile" msgid="6239678623873086686">"Pridėti išklotinės elementą"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Būsena:</b> pakeista į begarsį lygį"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Būsenos:</b> reitingas padidintas"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Būsenos:</b> reitingas sumažintas"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Visada rodoma pranešimų viršuje, net įjungus svarbiausių pokalbių režimą"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Rodoma pokalbių pranešimų viršuje ir kaip profilio nuotrauka užrakinimo ekrane"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Rodoma pokalbių pranešimų viršuje ir kaip profilio nuotrauka užrakinimo ekrane, debesėlyje"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Rodoma pokalbių pranešimų viršuje ir kaip profilio nuotrauka užrakinimo ekrane, pertraukia netrukdymo režimą"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Rodoma pokalbių pranešimų viršuje ir kaip profilio nuotrauka užrakinimo ekrane, debesėlyje, pertraukia netrukdymo režimą"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Nustatymai"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Svarbiausi pokalbiai"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritetiniai"</string> <string name="no_shortcut" msgid="8257177117568230126">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ nepalaiko pokalbių funkcijų"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Šių pranešimų keisti negalima."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Šios grupės pranešimai čia nekonfigūruojami"</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Įjungta"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Išjungta"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nepasiekiama"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Naršymo juosta"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Išdėstymas"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Papildomo mygtuko kairėje tipas"</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Sistemos naršymo funkcijos atnaujintos. Jei norite pakeisti, eikite į skiltį „Nustatymai“."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Eikite į skiltį „Nustatymai“, kad atnaujintumėte sistemos naršymo funkcijas"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Budėjimo laikas"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Pokalbis nustatytas į prioritetinį"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Svarbiausi pokalbiai"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Įjungus svarbiausių pokalbių režimą, šie pokalbiai visada rodomi sąrašo viršuje"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profilio nuotraukos rodomos užrakinimo ekrane"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Lengvai rasite šiuos pokalbius burbuluose pagrindiniame ekrane"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Pertraukti netrukdymo režimą"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Supratau"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Nustatymai"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Didinimo langas"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Didinimo lango valdikliai"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Artinti"</string> @@ -1054,8 +1061,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Perkelti į apačią dešinėje"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Perkelti į kraštą ir slėpti"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Perkelti iš krašto ir rodyti"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"perjungti"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Įrenginio valdikliai"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Pridėkite prijungtų įrenginių valdiklių"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Įrenginio valdiklių nustatymas"</string> @@ -1104,8 +1110,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Atsisakyti"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Tęsti"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Nustatymai"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Leisti"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Neaktyvu, patikrinkite progr."</string> <string name="controls_error_retryable" msgid="864025882878378470">"Klaida, bandoma iš naujo…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Nerasta"</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 794614c11e49..307f0b6f1104 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobilais tīklājs ir izslēgts."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobilais tīklājs ir ieslēgts."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ekrāna apraidīšana ir apturēta."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Darba režīms ir izslēgts."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Darba režīms ir ieslēgts."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Darba režīms ir izslēgts."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Darba režīms ir ieslēgts."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Datu lietojuma samazinātājs ir izslēgts."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Datu lietojuma samazinātājs ir ieslēgts."</string> @@ -412,6 +414,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Ierobežojums: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> brīdinājums"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Darba profils"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nakts režīms"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Saulrietā"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Līdz saullēktam"</string> @@ -471,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Pilnīgs\nklusums"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Tikai\nprioritārie"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Tikai\nsignāli"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Notiek bezvadu uzlāde (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> līdz pilnai uzlādei)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Notiek uzlāde (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> līdz pilnai uzlādei)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ātrā uzlāde (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> līdz pilnai uzlādei)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lēnā uzlāde (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> līdz pilnai uzlādei)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mainīt lietotāju"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Pārslēgt lietotāju; pašreizējais lietotājs: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Pašreizējais lietotājs: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -671,10 +679,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Maks"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Rādīt visu"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Lai maksātu, atbloķējiet ekrānu"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Gatavs"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Maksājuma veida iestatīšana"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Lai izmantotu, atbloķējiet ekrānu"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Ienesot jūsu kartes, radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Darba profils"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Lidojuma režīms"</string> <string name="add_tile" msgid="6239678623873086686">"Pievienot elementu"</string> @@ -743,9 +753,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Statuss:</b> svarīgums pazemināts, un paziņojums tiks rādīts bez skaņas"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Statuss:</b> rangs paaugstināts"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Statuss:</b> rangs pazemināts"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Vienmēr tiek rādītas virs jūsu paziņojumiem (arī tad, ja ir ieslēgts režīms “Prioritāte”)"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Parādās sarunu paziņojumu augšdaļā un kā profila attēls bloķēšanas ekrānā."</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Parādās sarunu paziņojumu augšdaļā un kā profila attēls bloķēšanas ekrānā, arī kā burbulis."</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Parādās sarunu paziņojumu augšdaļā un kā profila attēls bloķēšanas ekrānā, pārtrauc režīmu “Netraucēt”."</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Parādās sarunu paziņojumu augšdaļā un kā profila attēls bloķēšanas ekrānā, arī kā burbulis, pārtrauc režīmu “Netraucēt”."</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Iestatījumi"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioritārās sarunas"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritārs"</string> <string name="no_shortcut" msgid="8257177117568230126">"Lietotnē <xliff:g id="APP_NAME">%1$s</xliff:g> netiek atbalstītas sarunu funkcijas."</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Šos paziņojumus nevar modificēt."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Šeit nevar konfigurēt šo paziņojumu grupu."</string> @@ -863,6 +876,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Ieslēgts"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Izslēgts"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nav pieejams"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigācijas josla"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Izkārtojums"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Kreisās puses papildu pogas veids"</string> @@ -1021,14 +1036,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Sistēmas navigācija ir atjaunināta. Lai veiktu izmaiņas, atveriet iestatījumus."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Atveriet iestatījumus, lai atjauninātu sistēmas navigāciju"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Gaidstāve"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Saruna iestatīta kā prioritāra"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioritārās sarunas"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Šīs sarunas tiek rādītas jūsu saraksta augšdaļā, un jūs vienmēr varat tās skatīt, ja ir ieslēgts režīms Prioritāte"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profila attēli tiek rādīti bloķēšanas ekrānā"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Šīs sarunas ērti varat skatīt sava sākuma ekrāna burbuļos"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Var tikt rādītas režīmā “Netraucēt”"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Labi"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Iestatījumi"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Palielināšanas logs"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Palielināšanas loga vadīklas"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Tuvināt"</string> @@ -1049,8 +1056,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Pārvietot apakšpusē pa labi"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Pārvietot uz malu un paslēpt"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Pārvietot no malas un parādīt"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"pārslēgt"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Ierīču vadīklas"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Pievienojiet vadīklas pievienotajām ierīcēm"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Ierīču vadīklu iestatīšana"</string> @@ -1098,8 +1104,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Nerādīt"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Atsākt"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Iestatījumi"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Atskaņot"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Neaktīva, pārbaudiet lietotni"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Radās kļūda. Mēģina vēlreiz…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Netika atrasta"</string> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index a8de9c271259..c4524f3d9e92 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Мобилната точка на пристап е исклучена."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Мобилната точка на пристап е вклучена."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Емитувањето на екранот запре."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Режимот на работа е исклучен."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Режимот на работа е вклучен."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Режимот на работа е исклучен."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Режимот на работа е вклучен."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Штедачот на интернет е исклучен."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Штедачот на интернет е вклучен."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Лимит: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Предупредување: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Работен профил"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Ноќно светло"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Вклуч. на зајдисонце"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"До изгрејсонце"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Целосна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Само\nприоритетни"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Само\nаларми"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Се полни безжично (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Се полни (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Брзо полнење (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Бавно полнење (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до полна батерија)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Промени го корисникот"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Промени го корисникот, тековен корисник <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Тековен корисник <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Паричник"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Прикажи ги сите"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Отклучете за да платите"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Подготвено"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Поставете плаќање"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Отклучете за да користите"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Имаше проблем при преземањето на картичките. Обидете се повторно подоцна"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Работен профил"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Авионски режим"</string> <string name="add_tile" msgid="6239678623873086686">"Додај плочка"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Статус:</b> намалено на „Тивко“"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Статус:</b> рангирано повисоко"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Статус:</b> рангирано пониско"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Секогаш прикажувај на врвот од известувањата, дури и кога е вклучен „Приоритетен режим“"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Се прикажува најгоре во известувањата за разговор и како профилна слика на заклучен екран"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Се прикажува најгоре во известувањата за разговор и како профилна слика на заклучен екран, се појавува како балонче"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Се прикажува најгоре во известувањата за разговор и како профилна слика на заклучен екран, ја прекинува „Не вознемирувај“"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Се прикажува најгоре во известувањата за разговор и како профилна слика на заклучен екран, се појавува како балонче, ја прекинува „Не вознемирувај“"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Поставки"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Приоритетни разговори"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Приоритетно"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не поддржува функции за разговор"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Овие известувања не може да се изменат"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Оваа група известувања не може да се конфигурира тука"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Вклучено"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Исклучено"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Недостапно"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Лента за навигација"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Распоред"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Тип дополнително лево копче"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Навигацијата на системот е ажурирана. За да извршите промени, одете во „Поставки“."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Одете во „Поставки“ за да ја ажурирате навигацијата на системот"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Подготвеност"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Разговорот е поставен како приоритетен"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Приоритетни разговори"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Разговориве се прикажани на врвот од списокот и секогаш може да ги видите кога е вклучен „Приоритетен режим“"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Профилните слики се прикажуваат на заклучен екран"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Лесно може да ги најдете разговориве во балончиња на почетниот екран"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Прекинува „Не вознемирувај“"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Сфатив"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Поставки"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Прозорец за зголемување"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Контроли на прозорец за зголемување"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Зумирај"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Премести долу десно"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Премести до работ и сокриј"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Премести над работ и прикажи"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"вклучување/исклучување"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Контроли за уредите"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Додајте контроли за поврзаните уреди"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Поставете ги контролите за уредите"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Отфрли"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Продолжи"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Поставки"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Пушти"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Неактивна, провери апликација"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Грешка, повторен обид…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Не е најдено"</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 2b234627e7a8..e793e19b5f52 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"മൊബൈൽ ഹോട്ട്സ്പോട്ട് ഓഫാക്കി."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"മൊബൈൽ ഹോട്ട്സ്പോട്ട് ഓണാക്കി."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"സ്ക്രീൻ കാസ്റ്റുചെയ്യൽ നിർത്തി."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"പ്രവർത്തന മോഡ് ഓഫാണ്."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"പ്രവർത്തന മോഡ് ഓണാണ്."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"പ്രവർത്തന മോഡ് ഓഫാക്കി."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"പ്രവർത്തന മോഡ് ഓണാക്കി."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ഡാറ്റ സേവർ ഓഫാക്കി."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ഡാറ്റ സേവർ ഓണാക്കി."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> പരിധി"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> മുന്നറിയിപ്പ്"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"ഔദ്യോഗിക പ്രൊഫൈൽ"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"നൈറ്റ് ലൈറ്റ്"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"സൂര്യാസ്തമയത്തിന്"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"സൂര്യോദയം വരെ"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"പൂർണ്ണ\nനിശബ്ദത"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"മുൻഗണന\nമാത്രം"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"അലാറങ്ങൾ\nമാത്രം"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • വയർലെസ്സ് ആയി ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • വേഗത്തിൽ ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • പതുക്കെ ചാർജ് ചെയ്യുന്നു (പൂർണ്ണമാകാൻ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ഉപയോക്താവ് മാറുക"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ഉപയോക്താവിനെ മാറ്റുക, <xliff:g id="CURRENT_USER_NAME">%s</xliff:g> എന്നയാളാണ് നിലവിലുള്ള ഉപയോക്താവ്"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"നിലവിലെ ഉപയോക്താവ് <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"വാലറ്റ്"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"എല്ലാം കാണിക്കുക"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"പണമടയ്ക്കാൻ അൺലോക്ക് ചെയ്യുക"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"തയ്യാർ"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"പേയ്മെന്റ് സജ്ജീകരിക്കുക"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ഉപയോഗിക്കാൻ അൺലോക്ക് ചെയ്യുക"</string> <string name="wallet_error_generic" msgid="257704570182963611">"നിങ്ങളുടെ കാർഡുകൾ ലഭ്യമാക്കുന്നതിൽ ഒരു പ്രശ്നമുണ്ടായി, പിന്നീട് വീണ്ടും ശ്രമിക്കുക"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"ഔദ്യോഗിക പ്രൊഫൈൽ"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ഫ്ലൈറ്റ് മോഡ്"</string> <string name="add_tile" msgid="6239678623873086686">"ടൈൽ ചേർക്കുക"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>നില:</b> നിശബ്ദമാക്കി തരം താഴ്ത്തി"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>നില:</b> ഉയർന്ന റാങ്കിംഗ് നൽകി"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>നില:</b> താഴ്ന്ന റാങ്കിംഗ് നൽകി"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"മുൻഗണനാ മോഡ് ഓണാണെങ്കിൽ പോലും എപ്പോഴും അറിയിപ്പുകളുടെ മുകളിൽ കാണിക്കും"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ഒരു ബബിൾ രൂപത്തിൽ ദൃശ്യമാകുന്നു"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ശല്യപ്പെടുത്തരുത് മോഡ് തടസ്സപ്പെടുത്തുന്നു"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"സംഭാഷണ അറിയിപ്പുകളുടെ മുകളിലും സ്ക്രീൻ ലോക്കായിരിക്കുമ്പോൾ ഒരു പ്രൊഫൈൽ ചിത്രമായും കാണിക്കുന്നു, ഒരു ബബിൾ രൂപത്തിൽ ദൃശ്യമാകുന്നു, ശല്യപ്പെടുത്തരുത് മോഡ് തടസ്സപ്പെടുത്തുന്നു"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ക്രമീകരണം"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"മുൻഗണനാ സംഭാഷണങ്ങൾ"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"മുൻഗണന"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> സംഭാഷണ ഫീച്ചറുകളെ പിന്തുണയ്ക്കുന്നില്ല"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ഈ അറിയിപ്പുകൾ പരിഷ്ക്കരിക്കാനാവില്ല."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"അറിയിപ്പുകളുടെ ഈ ഗ്രൂപ്പ് ഇവിടെ കോണ്ഫിഗര് ചെയ്യാൻ കഴിയില്ല"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ഓൺ"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ഓഫ്"</string> <string name="tile_unavailable" msgid="3095879009136616920">"ലഭ്യമല്ല"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"നാവിഗേഷൻ ബാർ"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"ലേഔട്ട്"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"അധിക ഇടത് ബട്ടൺ തരം"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"സിസ്റ്റം നാവിഗേഷൻ അപ്ഡേറ്റ് ചെയ്തു. മാറ്റങ്ങൾ വരുത്താൻ ക്രമീകരണത്തിലേക്ക് പോവുക."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"സിസ്റ്റം നാവിഗേഷൻ അപ്ഡേറ്റ് ചെയ്യാൻ ക്രമീകരണത്തിലേക്ക് പോവുക"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"സ്റ്റാൻഡ്ബൈ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"സംഭാഷണം മുൻഗണനയുള്ളതായി സജ്ജീകരിച്ചു"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"മുൻഗണനാ സംഭാഷണങ്ങൾ"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ഈ സംഭാഷണങ്ങൾ ലിസ്റ്റിന്റെ മുകളിൽ കാണിക്കും, മുൻഗണനാ മോഡ് ഓണാണെങ്കിൽ, എപ്പോഴും നിങ്ങളിലേക്ക് എത്താൻ അവയ്ക്ക് കഴിയും"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"പ്രൊഫെെൽ ചിത്രങ്ങൾ ലോക്ക് സ്ക്രീനിൽ കാണിക്കും"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"ഹോം സ്ക്രീനിലെ ബബിളുകളിൽ ഈ സംഭാഷണങ്ങൾ നിങ്ങൾക്ക് എളുപ്പത്തിൽ കണ്ടെത്താനാകും"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"\'ശല്യപ്പെടുത്തരുത്\' തടസ്സപ്പെടുത്തുക"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"മനസ്സിലായി"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ക്രമീകരണം"</string> <string name="magnification_window_title" msgid="4863914360847258333">"മാഗ്നിഫിക്കേഷൻ വിൻഡോ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"മാഗ്നിഫിക്കേഷൻ വിൻഡോ നിയന്ത്രണങ്ങൾ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"സൂം ഇൻ ചെയ്യുക"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"ചുവടെ വലതുഭാഗത്തേക്ക് നീക്കുക"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"എഡ്ജിലേക്ക് നീക്കി മറയ്ക്കുക"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"എഡ്ജിൽ നിന്ന് നീക്കി കാണിക്കൂ"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"മാറ്റുക"</string> <string name="quick_controls_title" msgid="6839108006171302273">"ഉപകരണ നിയന്ത്രണങ്ങൾ"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"കണക്റ്റ് ചെയ്തവയ്ക്ക് നിയന്ത്രണങ്ങൾ ചേർക്കുക"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"ഉപകരണ നിയന്ത്രണങ്ങൾ സജ്ജീകരിക്കുക"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"ഡിസ്മിസ് ചെയ്യുക"</string> <string name="controls_media_resume" msgid="1933520684481586053">"പുനരാരംഭിക്കുക"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"ക്രമീകരണം"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"പ്ലേ ചെയ്യുക"</string> <string name="controls_error_timeout" msgid="794197289772728958">"നിഷ്ക്രിയം, ആപ്പ് പരിശോധിക്കൂ"</string> <string name="controls_error_retryable" msgid="864025882878378470">"പിശക്, വീണ്ടും ശ്രമിക്കുന്നു…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"കണ്ടെത്തിയില്ല"</string> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 54310c102821..7001a1ace6e3 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Мобайл хотспотыг унтраасан."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Мобайл хотспотыг асаасан."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Дэлгэц дамжуулалт зогссон."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Ажлын горимыг унтраасан."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Ажлын горимыг асаасан."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Ажлын горимыг унтраасан."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Ажлын горимыг асаасан."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Дата хэмнэгчийг унтраасан."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Дата хэмнэгчийг асаасан."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> хязгаар"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> анхааруулга"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Ажлын профайл"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Шөнийн гэрэл"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Нар жаргах үед"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Нар мандах хүртэл"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Дуугүй\nболгох"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Зөвхөн\nхамгийн чухлыг"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Зөвхөн\nсэрүүлэг"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Утасгүй цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Хурдан цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Удаан цэнэглэж байна (дүүргэхэд <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> шаардлагатай)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Хэрэглэгчийг сэлгэх"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Хэрэглэгчийг сэлгэх, одоогийн хэрэглэгч <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Одоогийн хэрэглэгч <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Түрийвч"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Бүгдийг харуулах"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Төлөхийн тулд түгжээг тайлна уу"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Бэлэн"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Төлбөр тохируулах"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Ашиглахын тулд түгжээг тайлах"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Таны картыг авахад асуудал гарлаа. Дараа дахин оролдоно уу"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Ажлын профайл"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Нислэгийн горим"</string> <string name="add_tile" msgid="6239678623873086686">"Вебсайтын цонх нэмэх"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Төлөв:</b> Чимээгүй болгож зэрэглэлийг нь бууруулсан"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Төлөв:</b> Дээгүүр зэрэглэл хийсэн"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Төлөв:</b> Доогуур зэрэглэл хийсэн"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Чухал горим асаалттай байсан ч таны мэдэгдлийн дээр үргэлж харуулдаг"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Харилцан ярианы дээд талд болон түгжигдсэн дэлгэц дээр профайл зураг байдлаар харуулна"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Харилцан ярианы мэдэгдлийн дээд талд болон түгжигдсэн дэлгэц дээр профайл зураг байдлаар харуулах бөгөөд бөмбөлөг хэлбэрээр харагдана"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Харилцан ярианы мэдэгдлийн дээд талд болон түгжигдсэн дэлгэц дээр профайл зураг байдлаар харуулах бөгөөд Бүү саад бол горимыг тасалдуулна"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Харилцан ярианы мэдэгдлийн дээд талд болон түгжигдсэн дэлгэц дээр профайл зураг байдлаар харуулах бөгөөд бөмбөлөг хэлбэрээр харагдана. Бүү саад бол горимыг тасалдуулна"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Тохиргоо"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Чухал харилцан яриа"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Ач холбогдол"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> нь харилцан ярианы онцлогуудыг дэмждэггүй"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Эдгээр мэдэгдлийг өөрчлөх боломжгүй."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Энэ бүлэг мэдэгдлийг энд тохируулах боломжгүй байна"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Идэвхтэй"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Идэвхгүй"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Боломжгүй"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Навигацын самбар"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Бүдүүвч"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Нэмэлт зүүн товчлуураар шивэх"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Системийн навигацыг шинэчиллээ. Өөрчлөхийн тулд Тохиргоо руу очно уу."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Системийн навигацыг шинэчлэхийн тулд Тохиргоо руу очно уу"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Зогсолтын горим"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Харилцан яриаг чухал гэж тохируулсан"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Чухал харилцан яриа"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Эдгээр харилцан яриаг Чухал горим асаалттай үед таны жагсаалтын дээр харуулах бөгөөд танд үргэлж харуулах боломжтой"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Профайл зургийг түгжигдсэн дэлгэц дээр харуулдаг"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Та бөмбөлгүүд дэх эдгээр харилцан яриаг Үндсэн нүүрээсээ хялбархан олох боломжтой"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Бүү саад бол онцлогийг үл хэрэгсэн тасалдуулна"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Ойлголоо"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Тохиргоо"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Томруулалтын цонх"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Томруулалтын цонхны хяналт"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Томруулах"</string> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index 487d3a953933..f26bf3195481 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"मोबाइल हॉटस्पॉट बंद केला."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"मोबाइल हॉटस्पॉट सुरू केला."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"स्क्रीन कास्ट करणे थांबले."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"कार्य मोड बंद."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"कार्य मोड सुरू."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"कार्य मोड बंद केला."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"कार्य मोड सुरू केला."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"डेटा सर्व्हर बंद केला."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"डेटा सर्व्हर सुरू केला."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> मर्यादा"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावणी"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"कार्य प्रोफाइल"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"रात्रीचा प्रकाश"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"संध्याकाळी सुरू असते"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"सूर्योदयापर्यंत"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"संपूर्ण\nशांतता"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"केवळ\nप्राधान्य"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"केवळ\nअलार्म"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • वायरलेस पद्धतीने चार्ज करत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण चार्ज होईल)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज होत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण होईल)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • वेगाने चार्ज होत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण होईल)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • सावकाश चार्ज होत आहे (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> मध्ये पूर्ण होईल)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"वापरकर्ता स्विच करा"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"वापरकर्ता स्विच करा, वर्तमान वापरकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"वर्तमान वापरकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"सर्व दाखवा"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"पैसे देण्यासाठी अनलॉक करा"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"तयार आहे"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"पेमेंट सेट करा"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"वापरण्यासाठी अनलॉक करा"</string> <string name="wallet_error_generic" msgid="257704570182963611">"तुमची कार्ड मिळवताना समस्या आली, कृपया नंतर पुन्हा प्रयत्न करा"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"कार्य प्रोफाईल"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"विमान मोड"</string> <string name="add_tile" msgid="6239678623873086686">"टाइल जोडा"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>स्थिती</b> ला सायलंट म्हणून डीमोट केले गेले"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>स्थिती</b> ला थोडे जास्त म्हणून रँक केले गेले"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>स्थिती</b> ला थोडी कमी म्हणून रँक केले गेले"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"प्राधान्य मोड सुरू असतानादेखील, नेहमी तुमच्या सूचनांच्या वरती दाखवले जाते"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"संभाषण सूचनांच्या वरती आणि लॉक स्क्रीनवरील प्रोफाइल फोटो म्हणून दिसते"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"संभाषण सूचनांच्या वरती आणि लॉक स्क्रीनवरील प्रोफाइल फोटो म्हणून दिसते, बबल म्हणून दिसते"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"संभाषण सूचनांच्या वरती आणि लॉक स्क्रीनवरील प्रोफाइल फोटो म्हणून दिसते, व्यत्यय आणू नका यामध्ये अडथळा आणते"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"संभाषण सूचनांच्या वरती आणि लॉक स्क्रीनवरील प्रोफाइल फोटो म्हणून दिसते, बबल म्हणून दिसते, व्यत्यय आणू नका यामध्ये अडथळा आणते"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"सेटिंग्ज"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"प्राधान्य दिलेली संभाषणे"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"प्राधान्य"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> हे संभाषण वैशिष्ट्यांना सपोर्ट करत नाही"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"या सूचनांमध्ये सुधारणा केली जाऊ शकत नाही."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"या सूचनांचा संच येथे कॉंफिगर केला जाऊ शकत नाही"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"सुरू"</string> <string name="switch_bar_off" msgid="5669805115416379556">"बंद"</string> <string name="tile_unavailable" msgid="3095879009136616920">"उपलब्ध नाही"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"नॅव्हिगेशन बार"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"लेआउट"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"अतिरिक्त डाव्या बटणाचा प्रकार"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"सिस्टम नेव्हिगेशन अपडेट केले. बदल करण्यासाठी, सेटिंग्जवर जा."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"सिस्टम नेव्हिगेशन अपडेट करण्यासाठी सेटिंग्जवर जा"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्टँडबाय"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"संभाषणाला प्राधान्य म्हणून सेट केले आहे"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"प्राधान्य दिलेली संभाषणे"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ही संभाषणे तुमच्या सूचीच्या सर्वात वरती दाखवली जातात आणि प्राधान्य मोड सुरू असताना तुम्हाला नेहमी कळू शकते"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"प्रोफाइल फोटो लॉक स्क्रीनवर दाखवले जातात"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"तुम्हाला तुमच्या होम स्क्रीन वरील बबलमध्ये ही संभाषणे सहज आढळतील"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"व्यत्यय आणू नका मध्ये अडथळा आणतील"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"समजले"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"सेटिंग्ज"</string> <string name="magnification_window_title" msgid="4863914360847258333">"मॅग्निफिकेशन विंडो"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"मॅग्निफिकेशन विंडो नियंत्रणे"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"झूम इन करा"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"तळाशी उजवीकडे हलवा"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"एजवर हलवा आणि लपवा"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"एजवर हलवा आणि दाखवा"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"टॉगल करा"</string> <string name="quick_controls_title" msgid="6839108006171302273">"डिव्हाइस नियंत्रणे"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"तुमच्या कनेक्ट केलेल्या डिव्हाइससाठी नियंत्रणे जोडा"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"डिव्हाइस नियंत्रणे सेट करा"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"डिसमिस करा"</string> <string name="controls_media_resume" msgid="1933520684481586053">"पुन्हा सुरू करा"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"सेटिंग्ज"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"प्ले करणे"</string> <string name="controls_error_timeout" msgid="794197289772728958">"निष्क्रिय, ॲप तपासा"</string> <string name="controls_error_retryable" msgid="864025882878378470">"एरर, पुन्हा प्रयत्न करत आहे…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"आढळले नाही"</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index 3945370ca7b7..837d900fb935 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Tempat liputan mudah alih bergerak dimatikan."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Tempat liputan mudah alih bergerak dihidupkan."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Penghantaran skrin dihentikan."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Mod kerja mati."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Mod kerja hidup."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Mod kerja dimatikan."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Mod kerja dihidupkan."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Penjimat Data dimatikan."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Penjimat Data dihidupkan."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> had"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Amaran <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profil kerja"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Cahaya Malam"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Dihidupkan pd senja"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Hingga matahari terbit"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Senyap\nsepenuhnya"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Keutamaan\nsahaja"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Penggera\nsahaja"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas secara wayarles (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas dengan cepat (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mengecas dengan perlahan (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hingga penuh)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Tukar pengguna"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Tukar pengguna, pengguna semasa <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Pengguna semasa <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Tunjukkan semua"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Buka kunci untuk membayar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Sedia"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Sediakan pembayaran"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Buka kunci untuk menggunakan"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Terdapat masalah sewaktu mendapatkan kad anda. Sila cuba sebentar lagi"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profil kerja"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Mod pesawat"</string> <string name="add_tile" msgid="6239678623873086686">"Tambahkan jubin"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Diturunkan Taraf kepada Senyap"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Dinilai Lebih Tinggi"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Dinilai Lebih Rendah"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Sentiasa ditunjukkan di sebelah atas pemberitahuan anda, walaupun apabila mod Keutamaan dihidupkan"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Ditunjukkan di bahagian atas pemberitahuan perbualan dan sebagai gambar profil pada skrin kunci"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Ditunjukkan di bahagian atas pemberitahuan perbualan dan sebagai gambar profil pada skrin kunci, muncul sebagai gelembung"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Ditunjukkan di bahagian atas pemberitahuan perbualan dan sebagai gambar profil pada skrin kunci, mengganggu Jangan Ganggu"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Ditunjukkan di bahagian atas pemberitahuan perbualan dan sebagai gambar profil pada skrin kunci, muncul sebagai gelembung, mengganggu Jangan Ganggu"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Tetapan"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Perbualan keutamaan"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Keutamaan"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak menyokong ciri perbualan"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Pemberitahuan ini tidak boleh diubah suai."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Kumpulan pemberitahuan ini tidak boleh dikonfigurasikan di sini"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Hidup"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Mati"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Tidak tersedia"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Bar navigasi"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Reka letak"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Jenis butang kiri tambahan"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigasi sistem dikemas kini. Untuk membuat perubahan, pergi ke Tetapan."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Pergi ke Tetapan untuk mengemas kini navigasi sistem"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Tunggu sedia"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Perbualan ditetapkan kepada keutamaan"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Perbualan keutamaan"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Perbualan ini ditunjukkan di sebelah atas senarai anda dan sentiasa boleh mencapai anda apabila mod Keutamaan dihidupkan"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Gambar profil ditunjukkan pada skrin kunci"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Anda boleh menemukan perbualan ini dengan mudah dalam gelembung pada Skrin utama anda"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Ganggu ciri Jangan Ganggu"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Tetapan"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Tetingkap Pembesaran"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kawalan Tetingkap Pembesaran"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zum masuk"</string> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 0e5193e84f6d..1756d28ecba4 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"မိုဘိုင်း ဟော့စပေါ့ ပိတ်ထား။"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"မိုဘိုင်း ဟော့စပေါ့ ဖွင့်ထား။"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"မျက်နှာပြင် ကာစ်တင် လုပ်မှု ရပ်လိုက်ပြီ။"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"အလုပ် မုဒ်ကို ပိတ်ထားပါသည်။"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"အလုပ် မုဒ်ကို ဖွင့်ထားပါသည်။"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"အလုပ် မုဒ်ကို ပိတ်ထားပါသည်။"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"အလုပ် မုဒ်ကို ဖွင့်ထားပါသည်။"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ဒေတာချွေတာမှု ပိတ်ထားသည်။"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ဒေတာချွေတာမှု ဖွင့်ထားသည်။"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ကန့်သတ်ချက်"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> သတိပေးချက်"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"အလုပ်ပရိုဖိုင်"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ညအလင်းရောင်"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"နေဝင်ချိန်၌ ဖွင့်ရန်"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"နေထွက်ချိန် အထိ"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"လုံးဝ\nတိတ်ဆိတ်ခြင်း"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ဦးစားပေးမှု\nသာ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"နှိုးစက်များ\nသာ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ကြိုးမဲ့အားသွင်းနေသည် (ပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လိုပါသည်)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • အားသွင်းနေသည် (အားပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လို)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • အမြန်အားသွင်းနေသည် (အားပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လို)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • နှေးကွေးစွာ သွင်းနေသည် (အားပြည့်ရန် <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> လို)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"အသုံးပြုသူကို ပြောင်းလဲရန်"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"အသုံးပြုသူကို ပြောင်းရန်၊ လက်ရှိ အသုံးပြုသူ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"လတ်တလော သုံးစွဲသူ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"အားလုံးပြရန်"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ငွေပေးချေရန် လော့ခ်ဖွင့်ပါ"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"အဆင်သင့်"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ငွေပေးချေမှု သတ်မှတ်ရန်"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"သုံးရန် လော့ခ်ဖွင့်ပါ"</string> <string name="wallet_error_generic" msgid="257704570182963611">"သင်၏ကတ်များ ရယူရာတွင် ပြဿနာရှိနေသည်၊ နောက်မှ ထပ်စမ်းကြည့်ပါ"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"အလုပ် ပရိုဖိုင်"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"လေယာဉ်ပျံမုဒ်"</string> <string name="add_tile" msgid="6239678623873086686">"လေးထောင့်ကွက် ထည့်ရန်"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>အခြေအနေ-</b> အသံတိတ်ခြင်းသို့ ပြန်ချိန်ညှိထားသည်"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>အခြေအနေ-</b> အဆင့်တိုးထားသည်"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>အခြေအနေ-</b> အဆင့်လျှော့ထားသည်"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"‘ဦးစားပေးမုဒ်’ ကို ဖွင့်ထားသည့်အခါတွင်ပင် သင့်အကြောင်းကြားချက်များ၏ ထိပ်ဆုံးတွင် အမြဲပြသည်"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"စကားဝိုင်း အကြောင်းကြားချက်များ၏ ထိပ်ပိုင်းတွင် ပြ၍ လော့ခ်မျက်နှာပြင်တွင် ပရိုဖိုင်ပုံအဖြစ် ပြသည်"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"စကားဝိုင်း အကြောင်းကြားချက်များ၏ ထိပ်ပိုင်းတွင် ပြ၍ လော့ခ်မျက်နှာပြင်တွင် ပရိုဖိုင်ပုံအဖြစ် ပြကာ ပူဖောင်းကွက်အဖြစ် မြင်ရသည်"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"စကားဝိုင်း အကြောင်းကြားချက်များ၏ ထိပ်ပိုင်းတွင် ပြ၍ လော့ခ်မျက်နှာပြင်တွင် ပရိုဖိုင်ပုံအဖြစ် ပြကာ ‘မနှောင့်ယှက်ရ’ ကို ရပ်တန့်သည်"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"စကားဝိုင်း အကြောင်းကြားချက်များ၏ ထိပ်ပိုင်းတွင် ပြ၍ လော့ခ်မျက်နှာပြင်တွင် ပရိုဖိုင်ပုံအဖြစ် ပြကာ ပူဖောင်းကွက်အဖြစ် မြင်ရပြီး ‘မနှောင့်ယှက်ရ’ ကို ရပ်တန့်သည်"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ဆက်တင်များ"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ဦးစားပေး စကားဝိုင်းများ"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ဦးစားပေး"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> က စကားဝိုင်းဝန်ဆောင်မှုများကို မပံ့ပိုးပါ"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ဤအကြောင်းကြားချက်များကို ပြုပြင်၍ မရပါ။"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"ဤအကြောင်းကြားချက်အုပ်စုကို ဤနေရာတွင် စီစဉ်သတ်မှတ်၍ မရပါ"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ဖွင့်"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ပိတ်"</string> <string name="tile_unavailable" msgid="3095879009136616920">"မရနိုင်ပါ"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"ရွှေ့လျားရန်ဘားတန်း"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"အပြင်အဆင်"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"လက်ဝဲခလုတ် အမျိုးအစားအပို"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"စနစ်လမ်းညွှန်ခြင်း အပ်ဒိတ်လုပ်ပြီးပါပြီ။ အပြောင်းအလဲများ ပြုလုပ်ရန် \'ဆက်တင်များ\' သို့သွားပါ။"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"စနစ်လမ်းညွှန်ခြင်း အပ်ဒိတ်လုပ်ရန် \'ဆက်တင်များ\' သို့သွားပါ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"အသင့်အနေအထား"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"စကားဝိုင်းကို ဦးစားပေးအဖြစ် သတ်မှတ်ထားသည်"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ဦးစားပေး စကားဝိုင်းများ"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ဤစကားဝိုင်းများကို သင့်စာရင်း၏ထိပ်ဆုံးတွင် ပြပေးပြီး ‘ဦးစားပေးမုဒ်’ ကို ဖွင့်ထားသောအခါ သင့်ထံသို့ အမြဲရောက်ရှိနိုင်သည်"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"ပရိုဖိုင်ပုံများကို လော့ခ်ချထားချိန် ဖန်သားပြင်တွင် ပြပေးသည်"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"ဤစကားဝိုင်းများကို သင့်ပင်မစာမျက်နှာရှိ ပူဖောင်းကွက်များတွင် အလွယ်တကူ ရှာနိုင်ပါသည်"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"\'မနှောင့်ယှက်ရ\' ကို ကြားဖြတ်ခြင်း"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Ok"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ဆက်တင်များ"</string> <string name="magnification_window_title" msgid="4863914360847258333">"ဝင်းဒိုး ချဲ့ခြင်း"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ဝင်းဒိုး ထိန်းချုပ်မှုများ ချဲ့ခြင်း"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ဇူးမ်ဆွဲရန်"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"ညာဘက်အောက်ခြေသို့ ရွှေ့ရန်"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"အစွန်းသို့ရွှေ့ပြီး ဝှက်ရန်"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"အစွန်းမှရွှေ့ပြီး ပြရန်"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ခလုတ်"</string> <string name="quick_controls_title" msgid="6839108006171302273">"စက်ထိန်းစနစ်"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"ချိတ်ဆက်စက်များအတွက် ထိန်းချုပ်မှုများထည့်ပါ"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"စက်ထိန်းစနစ် ထည့်သွင်းခြင်း"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"ပယ်ရန်"</string> <string name="controls_media_resume" msgid="1933520684481586053">"ဆက်လုပ်ရန်"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"ဆက်တင်များ"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"ဖွင့်ခြင်း"</string> <string name="controls_error_timeout" msgid="794197289772728958">"ရပ်နေသည်၊ အက်ပ်ကို စစ်ဆေးပါ"</string> <string name="controls_error_retryable" msgid="864025882878378470">"မှားသွားသည်၊ ပြန်စမ်းနေသည်…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"မတွေ့ပါ"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 3dcea65e7701..fa6e62e83ef7 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobil Wi-Fi-sone er slått av."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobil Wi-Fi-sone er slått på."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Skjermcastingen er stoppet."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Arbeidsmodusen er av."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Arbeidsmodusen er på."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Arbeidsmodusen er slått av."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Arbeidsmodusen er slått på."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Datasparing er slått av."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Datasparing er slått på."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Grense på <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Advarsel for <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Jobbprofil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nattlys"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"På ved solnedgang"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Til soloppgang"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Total\nstillhet"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Bare\nPrioritet"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Bare\nalarmer"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader trådløst (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader raskt (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Lader sakte (fulladet om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Bytt bruker"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Bytt bruker, gjeldende bruker er <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Gjeldende bruker: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Vis alle"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Lås opp for å betale"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Klar"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Konfigurer betaling"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Lås opp for å bruke"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Det oppsto et problem med henting av kortene. Prøv igjen senere"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Work-profil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Flymodus"</string> <string name="add_tile" msgid="6239678623873086686">"Legg til felt"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Nedgradert til lydløst"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Rangert høyere"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Rangert lavere"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Vises alltid øverst i varslene – selv når prioritetsmodus er på"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Vises øverst på samtalevarsler og som et profilbilde på låseskjermen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Vises øverst på samtalevarsler og som et profilbilde på låseskjermen, vises som en boble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Vises øverst på samtalevarsler og som et profilbilde på låseskjermen, avbryter «Ikke forstyrr»"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Vises øverst på samtalevarsler og som et profilbilde på låseskjermen, vises som en boble, avbryter «Ikke forstyrr»"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Innstillinger"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioriterte samtaler"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> støtter ikke samtalefunksjoner"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse varslene kan ikke endres."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Denne varselgruppen kan ikke konfigureres her"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"På"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Av"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Utilgjengelig"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigasjonsrad"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Oppsett"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Ekstra venstre-knapptype"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemnavigeringen er oppdatert. For å gjøre endringer, gå til Innstillinger."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gå til Innstillinger for å oppdatere systemnavigeringen"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ventemodus"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Samtalen er prioritert"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioriterte samtaler"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Disse samtalene vises øverst i listen og kan alltid nå deg når prioritetsmodus er på"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profilbilder vises på låseskjermen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Det er lett å finne disse samtalene i bobler på startskjermen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Overstyr «Ikke forstyrr»"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Greit"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Innstillinger"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Forstørringsvindu"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontroller for forstørringsvindu"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom inn"</string> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index cd87cd5401d6..7c1e919a3a3a 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"मोबाइल हटस्पट बन्द गरियो।"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"मोबाइल हटस्पट खुला गरियो।"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"स्क्रिन कास्टिङ रोकियो।"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"कार्य मोड बन्द।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"कार्य मोड अन।"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"कार्य मोड बन्द भयो।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"कार्य मोड सक्रिय भयो।"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"डेटा सेभरलाई निष्क्रिय पारियो।"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"डेटा सेभरलाई सक्रिय गरियो।"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> सीमा"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> चेतावनी दिँदै"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"कार्य प्रोफाइल"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"सूर्यास्तमा सक्रिय"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"सूर्योदयसम्म"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"पूरै\nशान्त"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"प्राथमिकता \nमात्र"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"अलार्महरू \nमात्र"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • तारविनै चार्ज गर्दै (चार्ज पूरा हुन<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> बाँकी)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • चार्ज गरिँदै (चार्ज पूरा हुन <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> बाँकी)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • द्रुत गतिमा चार्ज गरिँदै (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> समय बाँकी)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • मन्द गतिमा चार्ज गरिँदै (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> समय बाँकी)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"प्रयोगकर्ता फेर्नुहोस्"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"प्रयोगकर्ता, हालको प्रयोगकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g> मा स्विच गर्नुहोस्"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"हालको प्रयोगकर्ता <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"वालेट"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"सबै देखाइयोस्"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"भुक्तानी गर्न अनलक गर्नुहोस्"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"सक्रिय छ"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"भुक्तानी विधि सेटअप गर्नुहोस्"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"यो वालेट प्रयोग गर्न डिभाइस अनलक गर्नुहोस्"</string> <string name="wallet_error_generic" msgid="257704570182963611">"तपाईंका कार्डहरू प्राप्त गर्ने क्रममा समस्या भयो, कृपया पछि फेरि प्रयास गर्नुहोस्"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"कार्य प्रोफाइल"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"हवाइजहाज मोड"</string> <string name="add_tile" msgid="6239678623873086686">"टाइल थप्नुहोस्"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>स्थिति:</b> सूचनालाई कम महत्त्वपूर्ण ठानी साइलेन्ट मोडमा सेट गरिएको छ"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>स्थिति:</b> धेरै महत्त्वपूर्ण सूचनाका रूपमा सेट गरिएको छ"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>स्थिति:</b> कम महत्त्वपूर्ण सूचनाका रूपमा सेट गरिएको छ"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"\'प्राथमिकता\' मोड अन भएका बेला पनि यो सधैँ तपाईंको सूचनाको सिरानमा देखाइन्छ"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"यो वार्तालापका सूचनाहरूको सिरानमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"यो वार्तालापका सूचनाहरूको सिरानमा, बबलका रूपमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"यो वार्तालापका सूचनाहरूको सिरानमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ। साथै, यसले गर्दा \'बाधा नपुऱ्याउनुहोस्\' नामक सुविधामा अवरोध आउँछ"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"यो वार्तालापका सूचनाहरूको सिरानमा, बबलका रूपमा र लक स्क्रिनमा प्रोफाइल फोटोका रूपमा देखिन्छ। साथै, यसले गर्दा \'बाधा नपुऱ्याउनुहोस्\' नामक सुविधामा अवरोध आउँछ"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"सेटिङ"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"महत्त्वपूर्ण वार्तालापहरू"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"प्राथमिकता"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> मा वार्तालापसम्बन्धी सुविधा प्रयोग गर्न मिल्दैन"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"यी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"यहाँबाट सूचनाहरूको यो समूह कन्फिगर गर्न सकिँदैन"</string> @@ -856,8 +869,10 @@ <string name="accessibility_data_saver_on" msgid="5394743820189757731">"डेटा सेभर सक्रिय छ"</string> <string name="accessibility_data_saver_off" msgid="58339669022107171">"डेटा सेभर बन्द छ"</string> <string name="switch_bar_on" msgid="1770868129120096114">"अन छ"</string> - <string name="switch_bar_off" msgid="5669805115416379556">"अफ"</string> + <string name="switch_bar_off" msgid="5669805115416379556">"अफ छ"</string> <string name="tile_unavailable" msgid="3095879009136616920">"उपलब्ध छैन"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"नेभिगेशन पट्टी"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"लेआउट"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"अतिरिक्त बायाँतिरको बटनको प्रकार"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"सिस्टम नेभिगेसन अद्यावधिक गरियो। परिवर्तन गर्न सेटिङमा जानुहोस्।"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"सिस्टम नेभिगेसन अद्यावधिक गर्न सेटिङमा जानुहोस्"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्ट्यान्डबाई"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"वार्तालापको प्राथमिकता निर्धारण गरी \"महत्त्वपूर्ण\" बनाइयो"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"महत्त्वपूर्ण वार्तालापहरू"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"यी वार्तालापहरू तपाईंको सूचीको सिरानमा देखाइन्छन् र प्राथमिकता मोड अन भएका बेला तपाईंलाई यी वार्तालापहरू सधैँ देखाइन्छन्"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"प्रोफाइल फोटोहरू लक स्क्रिनमा देखाइन्छन्"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"तपाईं यी वार्तालापहरू आफ्नो होम स्क्रिनमा रहेका बबलमा सजिलैसँग भेट्टाउन सक्नुहुन्छ"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"बाधा नपुऱ्याउनुहोस् मोडलाई बेवास्ता गरियोस्"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"बुझेँ"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"सेटिङ"</string> <string name="magnification_window_title" msgid="4863914360847258333">"म्याग्निफिकेसन विन्डो"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"म्याग्निफिकेसन विन्डोका नियन्त्रणहरू"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"जुम इन गर्नुहोस्"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"पुछारको दायाँतिर सार्नुहोस्"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"किनारामा सार्नुहोस् र नदेखिने पार्नु…"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"किनाराबाट सार्नुहोस् र देखिने पार्नु…"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"टगल गर्नुहोस्"</string> <string name="quick_controls_title" msgid="6839108006171302273">"डिभाइस नियन्त्रण गर्ने विजेटहरू"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"आफ्ना कनेक्ट गरिएका यन्त्रका लागि नियन्त्रण सुविधाहरू थप्नुहोस्"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"डिभाइस नियन्त्रण गर्ने विजेटहरू सेटअप गर्नुहोस्"</string> @@ -1087,15 +1093,12 @@ <string name="controls_structure_tooltip" msgid="4355922222944447867">"थप हेर्न स्वाइप गर्नुहोस्"</string> <string name="controls_seeding_in_progress" msgid="3033855341410264148">"सिफारिसहरू लोड गर्दै"</string> <string name="controls_media_title" msgid="1746947284862928133">"मिडिया"</string> - <!-- no translation found for controls_media_close_session (1193000643003066508) --> - <skip /> - <!-- no translation found for controls_media_active_session (3146882316024153337) --> - <skip /> + <string name="controls_media_close_session" msgid="1193000643003066508">"यो मिडिया सत्र लुकाउने हो?"</string> + <string name="controls_media_active_session" msgid="3146882316024153337">"हालको मिडिया सत्र लुकाउन मिल्दैन।"</string> <string name="controls_media_dismiss_button" msgid="9081375542265132213">"हटाउनुहोस्"</string> <string name="controls_media_resume" msgid="1933520684481586053">"सुचारु गर्नुहोस्"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"सेटिङ"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"प्ले गर्नुहोस्"</string> <string name="controls_error_timeout" msgid="794197289772728958">"निष्क्रिय छ, एप जाँच गर्नु…"</string> <string name="controls_error_retryable" msgid="864025882878378470">"त्रुटि भयो, फेरि प्रयास गर्दै…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"फेला परेन"</string> @@ -1156,6 +1159,5 @@ <string name="accessibility_udfps_disabled_button" msgid="4284034245130239384">"फिंगरप्रिन्ट सेन्सर असक्षम पारिएको छ"</string> <string name="accessibility_authenticate_hint" msgid="798914151813205721">"प्रमाणित गर्नुहोस्"</string> <string name="accessibility_enter_hint" msgid="2617864063504824834">"डिभाइस हाल्नुहोस्"</string> - <!-- no translation found for keyguard_try_fingerprint (2825130772993061165) --> - <skip /> + <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"फिंगरप्रिन्ट प्रयोग गरी खोल्नुहोस्"</string> </resources> diff --git a/packages/SystemUI/res/values-night/colors.xml b/packages/SystemUI/res/values-night/colors.xml index 8f88950b0524..c473229b1a17 100644 --- a/packages/SystemUI/res/values-night/colors.xml +++ b/packages/SystemUI/res/values-night/colors.xml @@ -95,9 +95,6 @@ <!-- Color of background circle of user avatars in quick settings user switcher --> <color name="qs_user_switcher_avatar_background">#3C4043</color> - <!-- Colors for privacy dialog. These should be changed to the new palette --> - <color name="privacy_circle">#81C995</color> <!-- g300 --> - <!-- Accessibility floating menu --> <color name="accessibility_floating_menu_background">#B3000000</color> <!-- 70% --> </resources> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index d5d094684dd0..26412ce92287 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobiele hotspot staat uit."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobiele hotspot staat aan."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Casten van scherm gestopt."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Werkmodus uit."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Werkmodus aan."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Werkmodus staat uit."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Werkmodus staat aan."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Databesparing staat uit."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Databesparing staat aan."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limiet van <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Waarschuwing voor <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Werkprofiel"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nachtverlichting"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Aan bij zonsondergang"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Tot zonsopgang"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Totale\nstilte"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Alleen\nprioriteit"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Alleen\nalarmen"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Draadloos opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Snel opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Langzaam opladen (vol over <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Gebruiker wijzigen"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Schakelen tussen gebruikers, huidige gebruiker <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Huidige gebruiker <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Alles tonen"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Ontgrendelen om te betalen"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Klaar"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Betaling instellen"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Ontgrendelen om te gebruiken"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Er is een probleem opgetreden bij het ophalen van je kaarten. Probeer het later opnieuw."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Werkprofiel"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Vliegtuigmodus"</string> <string name="add_tile" msgid="6239678623873086686">"Tegel toevoegen"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> verlaagd naar Stil"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> hoger gerangschikt"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> lager gerangschikt"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Staat altijd bovenaan je meldingen, ook als de prioriteitsstand aanstaat"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Wordt getoond bovenaan gespreksmeldingen en als profielfoto op het vergrendelscherm"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Wordt getoond bovenaan gespreksmeldingen en als profielfoto op het vergrendelscherm, verschijnt als bubbel"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Wordt getoond bovenaan gespreksmeldingen en als profielfoto op het vergrendelscherm, onderbreekt Niet storen"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Wordt getoond bovenaan gespreksmeldingen en als profielfoto op het vergrendelscherm, verschijnt als bubbel, onderbreekt Niet storen"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Instellingen"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioriteitsgesprekken"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioriteit"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ondersteunt geen gespreksfuncties"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Deze meldingen kunnen niet worden aangepast."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Deze groep meldingen kan hier niet worden ingesteld"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Aan"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Uit"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Niet beschikbaar"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigatiebalk"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Lay-out"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Extra knoptype links"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systeemnavigatie geüpdatet. Als je wijzigingen wilt aanbrengen, ga je naar Instellingen."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Ga naar Instellingen om de systeemnavigatie te updaten"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stand-by"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Gesprek ingesteld als prioriteit"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioriteitsgesprekken"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Deze gesprekken staan bovenaan je lijst en kunnen je altijd bereiken als de prioriteitsstand aanstaat"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profielfoto\'s worden getoond op het vergrendelscherm"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Je kunt deze gesprekken makkelijk vinden in ballonnen op je startscherm"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Onderbreken \'Niet storen\'"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Instellingen"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Vergrotingsvenster"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Bediening van vergrotingsvenster"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Inzoomen"</string> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index 95f1d3589ca4..268c245b1361 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"ମୋବାଇଲ୍ ହଟସ୍ପଟ୍ ବନ୍ଦ ଅଛି।"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"ମୋବାଇଲ୍ ହଟସ୍ପଟ୍ ଅନ୍ ଅଛି।"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"ସ୍କ୍ରୀନ୍ କାଷ୍ଟ କରିବା ରହିଯାଇଛି।"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"ୱର୍କ ମୋଡ୍ ଅଫ୍।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"ୱର୍କ ମୋଡ୍ ଅନ୍।"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"ୱର୍କ ମୋଡ୍କୁ ଅଫ୍ କରାଯାଇଛି।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"ୱର୍କ ମୋଡ୍କୁ ଅନ୍ କରାଯାଇଛି।"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ଡାଟା ସେଭର୍ ଅଫ୍ କରାଗଲା।"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ଡାଟା ସେଭର୍ ଅନ୍ କରାଗଲା।"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ସୀମା"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ଚେତାବନୀ"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"ୱର୍କ ପ୍ରୋଫାଇଲ୍"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ନାଇଟ୍ ଲାଇଟ୍"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"ସୂର୍ଯ୍ୟାସ୍ତ ବେଳେ ଅନ୍ ହେବ"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"ସୂର୍ଯ୍ୟୋଦୟ ପର୍ଯ୍ୟନ୍ତ"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ସମ୍ପୂର୍ଣ୍ଣ\nନୀରବ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"କେବଳ\nପ୍ରାଥମିକତା"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"କେବଳ\nଆଲାର୍ମ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"ୱାୟାର୍ଲେସ୍ଭାବରେ <xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଚାର୍ଜ ହୋଇଛି (ସମ୍ପୁର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବାକି ଅଛି)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବଳକା ଅଛି)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଶୀଘ୍ର ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବଳକା ଅଛି)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ଧୀରେ ଚାର୍ଜ ହେଉଛି (ପୂର୍ଣ୍ଣ ହେବା ପାଇଁ <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ବଳକା ଅଛି)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ୟୁଜର୍ ବଦଳାନ୍ତୁ"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ୟୁଜର୍ ବଦଳାନ୍ତୁ, ବର୍ତ୍ତମାନର ୟୁଜର୍ ହେଉଛନ୍ତି <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ବର୍ତ୍ତମାନର ୟୁଜର୍ ହେଉଛନ୍ତି <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"ୱାଲେଟ୍"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"ସବୁ ଦେଖାନ୍ତୁ"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ପେମେଣ୍ଟ କରିବାକୁ ଅନଲକ୍ କରନ୍ତୁ"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"ପ୍ରସ୍ତୁତ"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ପେମେଣ୍ଟ ସେଟ୍ ଅପ୍ କରନ୍ତୁ"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ବ୍ୟବହାର କରିବାକୁ ଅନଲକ୍ କରନ୍ତୁ"</string> <string name="wallet_error_generic" msgid="257704570182963611">"ଆପଣଙ୍କ କାର୍ଡଗୁଡ଼ିକ ପାଇବାରେ ଏକ ସମସ୍ୟା ହୋଇଥିଲା। ଦୟାକରି ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"ୱର୍କ ପ୍ରୋଫାଇଲ୍"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ଏରୋପ୍ଲେନ୍ ମୋଡ୍"</string> <string name="add_tile" msgid="6239678623873086686">"ଟାଇଲ୍ ଯୋଡ଼ନ୍ତୁ"</string> @@ -740,9 +750,16 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ସ୍ଥିତି:</b> ନୀରବକୁ ଡିମୋଟ୍ କରାଯାଇଛି"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ସ୍ଥିତି:</b> ରେଙ୍କ ଉପରକୁ କରାଯାଇଛି"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ସ୍ଥିତି:</b> ରେଙ୍କ ତଳକୁ କରାଯାଇଛି"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ଆପଣଙ୍କ ପ୍ରାଥମିକତା ମୋଡ୍ ଚାଲୁ ଥିବା ସମୟରେ ମଧ୍ୟ ସର୍ବଦା ଆପଣଙ୍କ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଶୀର୍ଷରେ ଦେଖାଯାଇଥାଏ"</string> + <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> + <skip /> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ସେଟିଂସ୍"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ପ୍ରାଥମିକତା ଦିଆଯାଇଥିବା ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ପ୍ରାଥମିକତା"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବାର୍ତ୍ତାଳାପ ଫିଚରଗୁଡ଼ିକୁ ସମର୍ଥନ କରେ ନାହିଁ"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ କରିହେବ ନାହିଁ।"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"ଏଠାରେ ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଗ୍ରୁପ୍ କନଫ୍ୟୁଗର୍ କରାଯାଇପାରିବ ନାହିଁ"</string> @@ -858,6 +875,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ଚାଲୁ"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ବନ୍ଦ"</string> <string name="tile_unavailable" msgid="3095879009136616920">"ଅନୁପଲବ୍ଧ"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"ନାଭିଗେଶନ୍ ବାର୍"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"ଲେଆଉଟ୍"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"ସମ୍ପୂର୍ଣ୍ଣ ବାମ ବଟନ୍ ପ୍ରକାର"</string> @@ -1016,14 +1035,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍ଡେଟ୍ ହୋଇଛି। ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ, ସେଟିଂସ୍କୁ ଯାଆନ୍ତୁ।"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍ଡେଟ୍ କରିବା ପାଇଁ ସେଟିଂସ୍କୁ ଯାଆନ୍ତୁ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ଷ୍ଟାଣ୍ଡବାଏ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"ବାର୍ତ୍ତାଳାପ ପ୍ରାଥମିକତାରେ ସେଟ୍ କରାଯାଇଛି"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ପ୍ରାଥମିକତା ଦିଆଯାଇଥିବା ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ଏହି ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ ଆପଣଙ୍କ ତାଲିକାର ଶୀର୍ଷରେ ଦେଖାଯାଏ ଏବଂ ପ୍ରାଥମିକତା ମୋଡ୍ ଚାଲୁ ଥିବା ସମୟରେ ସର୍ବଦା ଆପଣଙ୍କ ନିକଟରେ ପହଞ୍ଚିପାରିବ"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"ପ୍ରୋଫାଇଲ୍ ଛବିଗୁଡ଼ିକ ଲକ୍ ସ୍କ୍ରିନରେ ଦେଖାଯାଏ"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"ଆପଣ ଆପଣଙ୍କ ମୂଳସ୍କ୍ରିନରେ ଥିବା ବବଲଗୁଡ଼ିକରେ ଏହି ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକୁ ସହଜରେ ପାଇପାରିବେ"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"\'ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\' ମୋଡରେ ବାଧା"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"ବୁଝିଗଲି"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ସେଟିଂସ୍"</string> <string name="magnification_window_title" msgid="4863914360847258333">"ମ୍ୟାଗ୍ନିଫିକେସନ୍ ୱିଣ୍ଡୋ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ମ୍ୟାଗ୍ନିଫିକେସନ୍ ୱିଣ୍ଡୋ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ଜୁମ୍ ଇନ୍ କରନ୍ତୁ"</string> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index e0e1b4f2f119..635cb2f46fda 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"ਮੋਬਾਈਲ ਹੌਟਸਪੌਟ ਬੰਦ ਕੀਤਾ।"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"ਮੋਬਾਈਲ ਹੌਟਸਪੌਟ ਚਾਲੂ ਕੀਤਾ।"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"ਸਕ੍ਰੀਨ ਜੋੜਨਾ ਬੰਦ ਹੋਇਆ।"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"ਕੰਮ ਮੋਡ ਬੰਦ ਹੈ।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"ਕੰਮ ਮੋਡ ਚਾਲੂ ਹੈ।"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"ਕੰਮ ਮੋਡ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"ਕੰਮ ਮੋਡ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ਡਾਟਾ ਸੇਵਰ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ਡਾਟਾ ਸੇਵਰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ਸੀਮਾ"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ਚਿਤਾਵਨੀ"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"ਰਾਤ ਦੀ ਰੋਸ਼ਨੀ"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"ਸੂਰਜ ਛਿਪਣ \'ਤੇ ਚਾਲੂ"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"ਸੂਰਜ ਚੜ੍ਹਨ ਤੱਕ"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ਕੁਲ \n ਚੁੱਪੀ"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ਕੇਵਲ\nਤਰਜੀਹੀ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ਕੇਵਲ\nਅਲਾਰਮ"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਬਿਨਾਂ ਤਾਰ ਤੋਂ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਤੇਜ਼ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ਵਿੱਚ ਮੁਕੰਮਲ)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"ਵਰਤੋਂਕਾਰ ਸਵਿੱਚ ਕਰੋ"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"ਵਰਤੋਂਕਾਰ, ਵਰਤਮਾਨ ਵਰਤੋਂਕਾਰ ਸਵਿੱਚ ਕਰੋ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ਮੌਜੂਦਾ ਉਪਭੋਗਤਾ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"ਵਾਲੇਟ"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"ਸਭ ਦਿਖਾਓ"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ਭੁਗਤਾਨ ਕਰਨ ਲਈ ਅਣਲਾਕ ਕਰੋ"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"ਤਿਆਰ"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ਭੁਗਤਾਨ ਸੈੱਟਅੱਪ ਕਰੋ"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ਵਰਤਣ ਲਈ ਅਣਲਾਕ ਕਰੋ"</string> <string name="wallet_error_generic" msgid="257704570182963611">"ਤੁਹਾਡੇ ਕਾਰਡ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਕੋਈ ਸਮੱਸਿਆ ਆਈ, ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ਹਵਾਈ-ਜਹਾਜ਼ ਮੋਡ"</string> <string name="add_tile" msgid="6239678623873086686">"ਟਾਇਲ ਸ਼ਾਮਲ ਕਰੋ"</string> @@ -740,9 +750,16 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>ਸਥਿਤੀ:</b> ਦਰਜਾ ਘਟਾ ਕੇ ਸ਼ਾਂਤ \'ਤੇ ਸੈੱਟ ਕੀਤਾ ਗਿਆ"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>ਸਥਿਤੀ:</b> ਦਰਜਾ ਵਧਾਇਆ ਗਿਆ"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>ਸਥਿਤੀ:</b> ਦਰਜਾ ਘਟਾਇਆ ਗਿਆ"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ਹਮੇਸ਼ਾਂ ਤੁਹਾਡੀਆਂ ਸੂਚਨਾਵਾਂ ਦੇ ਸਿਖਰ \'ਤੇ ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ, ਭਾਵੇਂ ਤਰਜੀਹ ਮੋਡ ਚਾਲੂ ਹੋਵੇ"</string> + <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> + <skip /> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ਸੈਟਿੰਗਾਂ"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ਤਰਜੀਹੀ ਗੱਲਾਂਬਾਤਾਂ"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ਤਰਜੀਹ"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ ਗੱਲਬਾਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦੀ"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"ਇਹ ਸੂਚਨਾਵਾਂ ਦਾ ਗਰੁੱਪ ਇੱਥੇ ਸੰਰੂਪਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string> @@ -858,6 +875,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ਚਾਲੂ"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ਬੰਦ"</string> <string name="tile_unavailable" msgid="3095879009136616920">"ਅਣਉਪਲਬਧ"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"ਦਿਸ਼ਾ-ਨਿਰਦੇਸ਼ ਪੱਟੀ"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"ਖਾਕਾ"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"ਵਧੇਰੇ ਖੱਬੇ ਬਟਨ ਕਿਸਮ"</string> @@ -1016,14 +1035,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਅੱਪਡੇਟ ਹੋ ਗਿਆ। ਤਬਦੀਲੀਆਂ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ।"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ਸਟੈਂਡਬਾਈ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"ਗੱਲਬਾਤ ਨੂੰ ਤਰਜੀਹੀ ਗੱਲਬਾਤ ਵਜੋਂ ਸੈੱਟ ਕੀਤਾ ਗਿਆ"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ਤਰਜੀਹੀ ਗੱਲਾਂਬਾਤਾਂ"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ਇਹ ਗੱਲਾਂਬਾਤਾਂ ਤੁਹਾਡੀ ਸੂਚੀ ਦੇ ਸਿਖਰ \'ਤੇ ਦਿਖਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ ਅਤੇ ਤਰਜੀਹ ਮੋਡ ਚਾਲੂ ਹੋਣ \'ਤੇ ਹਮੇਸ਼ਾਂ ਤੁਹਾਡੇ ਤੱਕ ਪਹੁੰਚ ਸਕਦੀਆਂ ਹਨ"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"ਪ੍ਰੋਫਾਈਲ ਤਸਵੀਰਾਂ ਨੂੰ ਲਾਕ ਸਕ੍ਰੀਨ \'ਤੇ ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"ਤੁਸੀਂ ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਬੁਲਬੁਲਿਆਂ ਵਿੱਚ ਇਹਨਾਂ ਗੱਲਾਂਬਾਤਾਂ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਲੱਭ ਸਕਦੇ ਹੋ"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਵਿਘਨ ਪੈ ਸਕਦਾ ਹੈ"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"ਸਮਝ ਲਿਆ"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ਸੈਟਿੰਗਾਂ"</string> <string name="magnification_window_title" msgid="4863914360847258333">"ਵੱਡਦਰਸ਼ੀਕਰਨ Window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ਵੱਡਦਰਸ਼ੀਕਰਨ Window ਦੇ ਕੰਟਰੋਲ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ਜ਼ੂਮ ਵਧਾਓ"</string> @@ -1044,8 +1055,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"ਹੇਠਾਂ ਵੱਲ ਸੱਜੇ ਲਿਜਾਓ"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"ਕਿਨਾਰੇ ਵਿੱਚ ਲਿਜਾ ਕੇ ਲੁਕਾਓ"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"ਕਿਨਾਰੇ ਤੋਂ ਬਾਹਰ ਕੱਢ ਕੇ ਦਿਖਾਓ"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ਟੌਗਲ ਕਰੋ"</string> <string name="quick_controls_title" msgid="6839108006171302273">"ਡੀਵਾਈਸ ਕੰਟਰੋਲ"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"ਆਪਣੇ ਕਨੈਕਟ ਕੀਤੇ ਡੀਵਾਈਸਾਂ ਲਈ ਕੰਟਰੋਲ ਸ਼ਾਮਲ ਕਰੋ"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"ਡੀਵਾਈਸ ਕੰਟਰੋਲਾਂ ਦਾ ਸੈੱਟਅੱਪ ਕਰੋ"</string> @@ -1092,8 +1102,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"ਖਾਰਜ ਕਰੋ"</string> <string name="controls_media_resume" msgid="1933520684481586053">"ਮੁੜ-ਚਾਲੂ ਕਰੋ"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"ਸੈਟਿੰਗਾਂ"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"ਚਲਾਓ"</string> <string name="controls_error_timeout" msgid="794197289772728958">"ਅਕਿਰਿਆਸ਼ੀਲ, ਐਪ ਦੀ ਜਾਂਚ ਕਰੋ"</string> <string name="controls_error_retryable" msgid="864025882878378470">"ਗੜਬੜ, ਮੁੜ ਕੋਸ਼ਿਸ਼ ਹੋ ਰਹੀ ਹੈ…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"ਨਹੀਂ ਮਿਲਿਆ"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index d95eabc8c35a..6ee745310fc7 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobilny hotspot został wyłączony."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobilny hotspot został włączony."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Zatrzymano przesyłanie ekranu."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Tryb pracy wyłączony."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Tryb pracy włączony."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Tryb pracy wyłączony."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Tryb pracy włączony."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Oszczędzanie danych jest wyłączone."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Oszczędzanie danych jest włączone."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limit <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Ostrzeżenie: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profil służbowy"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Podświetlenie nocne"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Włącz o zachodzie"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Do wschodu słońca"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Całkowita\ncisza"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Tylko\npriorytetowe"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Tylko\nalarmy"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ładowanie bezprzewodowe (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do pełnego naładowania)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ładowanie (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do końca)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Szybkie ładowanie (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do końca)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wolne ładowanie (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do końca)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Przełącz użytkownika"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Przełącz użytkownika. Bieżący użytkownik: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Bieżący użytkownik: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Portfel"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Pokaż wszystko"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Odblokuj, aby zapłacić"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Gotowe"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Skonfiguruj płatność"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Odblokuj, aby użyć"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Podczas pobierania kart wystąpił problem. Spróbuj ponownie później."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profil służbowy"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Tryb samolotowy"</string> <string name="add_tile" msgid="6239678623873086686">"Dodaj nazwę"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Stan:</b> zmieniono na Ciche"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Stan:</b> podniesiono ważność"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Stan:</b> obniżono ważność"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Zawsze pokazywane u góry powiadomień, nawet po włączeniu trybu Priorytet"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Wyświetla się u góry powiadomień w rozmowach oraz jako zdjęcie profilowe na ekran blokady"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Wyświetla się u góry powiadomień w rozmowach oraz jako zdjęcie profilowe na ekran blokady, jako dymek"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Wyświetla się u góry powiadomień w rozmowach oraz jako zdjęcie profilowe na ekran blokady, przerywa działanie trybu Nie przeszkadzać"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Wyświetla się u góry powiadomień w rozmowach oraz jako zdjęcie profilowe na ekran blokady, jako dymek, przerywa działanie trybu Nie przeszkadzać"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ustawienia"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Rozmowy priorytetowe"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priorytet"</string> <string name="no_shortcut" msgid="8257177117568230126">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> nie obsługuje funkcji rozmów"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Tych powiadomień nie można zmodyfikować."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Tej grupy powiadomień nie można tu skonfigurować"</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Wł."</string> <string name="switch_bar_off" msgid="5669805115416379556">"Wył."</string> <string name="tile_unavailable" msgid="3095879009136616920">"Niedostępne"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Pasek nawigacji"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Układ"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Typ dodatkowego lewego przycisku"</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Nawigacja w systemie została zaktualizowana. Aby wprowadzić zmiany, otwórz Ustawienia."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Otwórz Ustawienia, by zaktualizować nawigację w systemie"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Tryb gotowości"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Rozmowę ustawiono jako priorytetową"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Rozmowy priorytetowe"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Te rozmowy są pokazywane na początku listy i nie przegapisz ich, jeśli włączysz tryb Priorytet"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Zdjęcia profilowe są widoczne na ekranie blokady"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Łatwo znajdziesz te rozmowy w dymkach na ekranie głównym"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Ignorują tryb Nie przeszkadzać"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Ustawienia"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Okno powiększenia"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Elementy sterujące okna powiększenia"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Powiększ"</string> @@ -1054,8 +1061,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Przenieś w prawy dolny róg"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Przenieś do krawędzi i ukryj"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Przenieś poza krawędź i pokaż"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"przełącz"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Sterowanie urządzeniami"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Dodaj elementy sterujące połączonymi urządzeniami"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Konfigurowanie sterowania urządzeniami"</string> @@ -1104,8 +1110,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Odrzuć"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Wznów"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Ustawienia"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Odtwórz"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Nieaktywny, sprawdź aplikację"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Błąd, próbuję jeszcze raz…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Nie znaleziono"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index b786dfb46b03..b15a14414040 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"O ponto de acesso móvel foi desativado."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"O ponto de acesso móvel foi ativado."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"A transmissão de tela foi interrompida."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modo de trabalho desativado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modo de trabalho ativado."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Modo de trabalho desativado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Modo de trabalho ativado."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Economia de dados desativada."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Economia de dados ativada."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limite: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Perfil de trabalho"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Modo noturno"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Ativ. ao pôr do sol"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Até o nascer do sol"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Somente\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Somente\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando sem fio (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga rápida (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Alternar usuário. Usuário atual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuário atual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Carteira"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Mostrar tudo"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Desbloqueie para pagar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Pronto"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurar o pagamento"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para usar"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Ocorreu um problema ao carregar os cards. Tente novamente mais tarde"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabalho"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Modo avião"</string> <string name="add_tile" msgid="6239678623873086686">"Adicionar bloco"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> rebaixada a Silenciosa"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> classificada com maior prioridade"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> classificada com menor prioridade"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Sempre aparecem em cima das notificações, mesmo quando o modo Prioridade está ativado"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Aparece na parte superior das notificações de conversa e como uma foto do perfil na tela de bloqueio"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Aparece na parte superior das notificações de conversa, como uma foto do perfil na tela de bloqueio e como um balão"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Aparece na parte superior das notificações de conversa e como uma foto do perfil na tela de bloqueio. Interrompe o Não perturbe"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Aparece na parte superior das notificações de conversa, como uma foto do perfil na tela de bloqueio e como um balão. Interrompe o Não perturbe"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configurações"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversas prioritárias"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritárias"</string> <string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Ativado"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Desativado"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Indisponível"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barra de navegação"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tipo de botão esquerdo extra"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navegação no sistema atualizada. Se quiser alterá-la, acesse as configurações."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Acesse as configurações para atualizar a navegação no sistema"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Em espera"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"A conversa foi definida como prioritária"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversas prioritárias"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Essas conversas são exibidas em cima da sua lista e ficam em evidência quando o modo Prioridade está ativado"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"As fotos do perfil são exibidas na tela de bloqueio"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Veja essas conversas com facilidade em balões na sua tela inicial"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interromper o \"Não perturbe\""</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Ok"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Configurações"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controles da janela de ampliação"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Aumentar zoom"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 496fcb21f838..90b193163afd 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Zona Wi-Fi móvel desligada."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Zona Wi-Fi móvel ligada."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Transmissão do ecrã interrompida."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modo de trabalho desativado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modo de trabalho ativado."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"O modo de trabalho foi desativado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"O modo de trabalho foi ativado."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Poupança de dados desativada."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Poupança de dados ativada."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limite de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Perfil de trabalho"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Luz noturna"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Ativ. ao pôr-do-sol"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Até ao amanhecer"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Apenas\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Apenas\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar sem fios (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até ao carregamento completo)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até à carga máxima)…"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar rapid. (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até carga máx.)…"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • A carregar lentam. (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até carga máx.)…"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Mudar utilizador"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Mudar de utilizador; o utilizador atual é <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utilizador atual: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Carteira"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Mostrar tudo"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Desbloquear para pagar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Pronto"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurar pagamento"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para utilizar"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Ocorreu um problema ao obter os seus cartões. Tente novamente mais tarde."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabalho"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Modo de avião"</string> <string name="add_tile" msgid="6239678623873086686">"Adicionar mosaico"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Estado:</b> despromovida para Silenciosa"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Estado:</b> passou para classificação superior"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Estado:</b> passou para classificação inferior"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Apresentadas sempre no topo das suas notificações, mesmo quando o modo Prioridade está ativado"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Aparece na parte superior das notificações de conversas e como uma imagem do perfil no ecrã de bloqueio"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Aparece na parte superior das notificações de conversas e como uma imagem do perfil no ecrã de bloqueio, surge como um balão"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Aparece na parte superior das notificações de conversas e como uma imagem do perfil no ecrã de bloqueio, interrompe o modo Não incomodar"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Aparece na parte superior das notificações de conversas e como uma imagem do perfil no ecrã de bloqueio, surge como um balão, interrompe o modo Não incomodar"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Definições"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversas com prioridade"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioridade"</string> <string name="no_shortcut" msgid="8257177117568230126">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> não suporta funcionalidades de conversa."</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar estas notificações."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar este grupo de notificações aqui."</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Ativado"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Desativado"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Indisponível"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barra de navegação"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Esquema"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tipo de botão esquerdo adicional"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"A navegação no sistema foi atualizada. Para efetuar alterações, aceda às Definições."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Aceda às Definições para atualizar a navegação no sistema."</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Modo de espera"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversa definida como prioritária"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversas com prioridade"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Estas conversas são apresentadas no topo da sua lista e recebe-as sempre quando o modo Prioridade está ativado"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"As imagens de perfil são apresentadas no ecrã de bloqueio"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Pode encontrar facilmente estas conversas em balões no seu ecrã principal"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interrompem o modo Não incomodar."</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Definições"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controlos da janela de ampliação"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Aumentar zoom"</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index b786dfb46b03..b15a14414040 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"O ponto de acesso móvel foi desativado."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"O ponto de acesso móvel foi ativado."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"A transmissão de tela foi interrompida."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modo de trabalho desativado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modo de trabalho ativado."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Modo de trabalho desativado."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Modo de trabalho ativado."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Economia de dados desativada."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Economia de dados ativada."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limite: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Aviso de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Perfil de trabalho"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Modo noturno"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Ativ. ao pôr do sol"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Até o nascer do sol"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Silêncio\ntotal"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Somente\nprioridade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Somente\nalarmes"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando sem fio (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carregando (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga rápida (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Carga lenta (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> até a conclusão)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Trocar usuário"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Alternar usuário. Usuário atual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Usuário atual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Carteira"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Mostrar tudo"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Desbloqueie para pagar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Pronto"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurar o pagamento"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Desbloquear para usar"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Ocorreu um problema ao carregar os cards. Tente novamente mais tarde"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Perfil de trabalho"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Modo avião"</string> <string name="add_tile" msgid="6239678623873086686">"Adicionar bloco"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> rebaixada a Silenciosa"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> classificada com maior prioridade"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> classificada com menor prioridade"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Sempre aparecem em cima das notificações, mesmo quando o modo Prioridade está ativado"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Aparece na parte superior das notificações de conversa e como uma foto do perfil na tela de bloqueio"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Aparece na parte superior das notificações de conversa, como uma foto do perfil na tela de bloqueio e como um balão"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Aparece na parte superior das notificações de conversa e como uma foto do perfil na tela de bloqueio. Interrompe o Não perturbe"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Aparece na parte superior das notificações de conversa, como uma foto do perfil na tela de bloqueio e como um balão. Interrompe o Não perturbe"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Configurações"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversas prioritárias"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritárias"</string> <string name="no_shortcut" msgid="8257177117568230126">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não é compatível com recursos de conversa"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Ativado"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Desativado"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Indisponível"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Barra de navegação"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tipo de botão esquerdo extra"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navegação no sistema atualizada. Se quiser alterá-la, acesse as configurações."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Acesse as configurações para atualizar a navegação no sistema"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Em espera"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"A conversa foi definida como prioritária"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversas prioritárias"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Essas conversas são exibidas em cima da sua lista e ficam em evidência quando o modo Prioridade está ativado"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"As fotos do perfil são exibidas na tela de bloqueio"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Veja essas conversas com facilidade em balões na sua tela inicial"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Interromper o \"Não perturbe\""</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Ok"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Configurações"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controles da janela de ampliação"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Aumentar zoom"</string> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 2100466e2cdf..87f9e9884c02 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Hotspotul mobil este dezactivat."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Hotspotul mobil este activat."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Transmiterea ecranului a fost oprită."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modul de lucru este dezactivat."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modul de lucru este activat."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Modul de lucru a fost dezactivat."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Modul de lucru a fost activat."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Economizorul de date a fost dezactivat."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Economizorul de date a fost activat."</string> @@ -412,6 +414,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limită de <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Avertizare: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profil de serviciu"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Lumină de noapte"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Activată la apus"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Până la răsărit"</string> @@ -471,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Niciun\nsunet"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Numai\ncu prioritate"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Numai\nalarme"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă wireless (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la încărcarea completă)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la finalizare)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă rapid (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la finalizare)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Se încarcă lent (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> până la finalizare)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Comutați între utilizatori"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Schimbați utilizatorul (utilizator actual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Utilizator actual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -671,10 +679,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Afișați-le pe toate"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Deblocați pentru a plăti"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Gata"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Configurați o metodă de plată"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Deblocați pentru a folosi"</string> <string name="wallet_error_generic" msgid="257704570182963611">"A apărut o problemă la preluarea cardurilor. Încercați din nou mai târziu"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profil de serviciu"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Mod Avion"</string> <string name="add_tile" msgid="6239678623873086686">"Adăugați o casetă"</string> @@ -743,9 +753,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Stare:</b> setată ca Silențioasă"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Stare:</b> clasificată mai sus"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Stare:</b> clasificată mai jos"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Se afișează întotdeauna în partea de sus a notificărilor, chiar și când modul Cu prioritate este activat"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Se afișează în partea de sus a notificărilor pentru conversații și ca fotografie de profil pe ecranul de blocare"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Se afișează în partea de sus a notificărilor pentru conversații și ca fotografie de profil pe ecranul de blocare, apare ca un balon"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Se afișează în partea de sus a notificărilor pentru conversații și ca fotografie de profil pe ecranul de blocare, întrerupe funcția Nu deranja"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Se afișează în partea de sus a notificărilor pentru conversații și ca fotografie de profil pe ecranul de blocare, apare ca un balon, întrerupe funcția Nu deranja"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Setări"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Conversații cu prioritate"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritate"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu acceptă funcții pentru conversații"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Aceste notificări nu pot fi modificate."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Acest grup de notificări nu poate fi configurat aici"</string> @@ -863,6 +876,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Activat"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Dezactivați"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Indisponibil"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Bară de navigare"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Aspect"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Tip de buton din extrema stângă"</string> @@ -1021,14 +1036,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigarea în sistem a fost actualizată. Pentru a face modificări, accesați Setările."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Accesați Setările pentru a actualiza navigarea în sistem"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Conversația a fost setată ca prioritară"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Conversații cu prioritate"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Aceste conversații se afișează în partea de sus a listei și apar chiar și când modul Cu prioritate este activat"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Fotografiile de profil apar pe ecranul de blocare"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Găsiți cu ușurință aceste conversații în baloane pe ecranul de pornire"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Întrerup modul Nu deranja"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Setări"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Fereastra de mărire"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Comenzi pentru fereastra de mărire"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Măriți"</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 6fdb8bc1f32e..c64d557f5646 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Точка доступа отключена."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Точка доступа включена."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Трансляция прекращена."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Рабочий режим отключен."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Рабочий режим включен."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Рабочий режим отключен."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Рабочий режим включен."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Режим экономии трафика отключен."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Режим экономии трафика включен."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Ограничение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Предупреждение: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Рабочий профиль"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Ночная подсветка"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Вкл. на закате"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"До рассвета"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Полная\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Только\nважные"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Только\nбудильник"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Беспроводная зарядка (ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"Идет зарядка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"Идет быстрая зарядка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"Идет медленная зарядка (<xliff:g id="PERCENTAGE">%2$s</xliff:g>, ещё <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Сменить пользователя."</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Сменить аккаунт. Вход выполнен под именем <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>."</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Выбран аккаунт пользователя <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Кошелек"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Показать все"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Разблокировать для оплаты"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Можно использовать"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Добавить способ оплаты"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Разблокировать для использования"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Не удалось получить информацию о картах. Повторите попытку позже."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Рабочий профиль"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Режим полета"</string> <string name="add_tile" msgid="6239678623873086686">"Добавить кнопку быстрого доступа"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Статус:</b> понижено до уровня \"Без звука\""</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Статус:</b> уровень важности повышен"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Статус:</b> уровень важности понижен"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Всегда показывается вверху списка уведомлений, даже если включен режим \"Только важные\""</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Появляется в верхней части уведомлений о сообщениях, а также в качестве фото профиля на заблокированном экране"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Появляется в верхней части уведомлений о сообщениях, в виде всплывающего чата, а также в качестве фото профиля на заблокированном экране."</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Появляется в верхней части уведомлений о сообщениях, а также в качестве фото профиля на заблокированном экране, прерывает режим \"Не беспокоить\"."</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Появляется в верхней части уведомлений о сообщениях, в виде всплывающего чата, а также в качестве фото профиля на заблокированном экране, прерывает режим \"Не беспокоить\"."</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Настройки"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Важные разговоры"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string> <string name="no_shortcut" msgid="8257177117568230126">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" не поддерживает функции разговоров."</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Эти уведомления нельзя изменить."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Эту группу уведомлений нельзя настроить здесь."</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Включено"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Отключено"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Недоступно"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Панель навигации"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Расположение кнопок"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Дополнительный тип кнопки \"Влево\""</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Параметры навигации в системе обновлены. Чтобы изменить их, перейдите в настройки."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Чтобы обновить параметры навигации в системе, перейдите в настройки."</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Переход в режим ожидания"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Разговор помечен как важный"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Важные разговоры."</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Эти разговоры показываются вверху списка, и вы можете их читать при включенном режиме \"Только важные\"."</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"На заблокированном экране показываются фото профиля."</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Эти разговоры можно найти во всплывающих чатах на главном экране."</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Показывать в режиме \"Не беспокоить\""</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"ОК"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Настройки"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Окно увеличения"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Настройки окна увеличения"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Увеличить"</string> @@ -1054,8 +1061,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Перенести в правый нижний угол"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Перенести к краю и скрыть"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Вернуть из-за края и показать"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"включить или отключить"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Управление устройствами"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Добавьте виджеты для управления устройствами."</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Настройте виджеты управления устройствами"</string> @@ -1104,8 +1110,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Скрыть"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Возобновить"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Настройки"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Воспроизведение"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Нет ответа. Проверьте приложение."</string> <string name="controls_error_retryable" msgid="864025882878378470">"Ошибка. Повторная попытка…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Не найдено."</string> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 45abf9550ff3..961fe173752c 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"ජංගම හොට්ස්පොටය අක්රිය කරන ලදි."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"ජංගම හොට්ස්පොටය සක්රිය කරන ලදි."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"තිරය විකාශය කිරීම නැවත් වන ලදි."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"වැඩ ප්රකාරය ක්රියාවිරහිතයි."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"වැඩ ප්රකාරය ක්රියාත්මකයි."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"වැඩ ප්රකාරය ක්රියාවිරහිත කරන ලදී."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"වැඩ ප්රකාරය ක්රියාත්මක කරන ලදී."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"දත්ත සුරැකුම ක්රියාවිරහිත කරන ලදී."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"දත්ත සුරැකුම ක්රියාත්මක කරන ලදී."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> සීමිත"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> අවවාද කිරීම"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"කාර්යාල පැතිකඩ"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"රාත්රී ආලෝකය"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"හිරු බැසීමේදී ක්රි."</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"හිරු නගින තෙක්"</string> @@ -469,10 +473,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"සම්පූර්ණ\nනිහඬතාව"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ප්රමුඛතා\nපමණි"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"ඇඟවීම්\nපමණි"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • නොරැහැන්ව ආරෝපණ කෙරේ (සම්පූර්ණ වන තෙක් <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ආරෝපණය වෙමින් (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> සම්පූර්ණ වන තෙක්)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • වේගයෙන් ආරෝපණය වෙමින් (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> සම්පූර්ණ වන තෙක්)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • සෙමින් ආරෝපණය වෙමින් (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> සම්පූර්ණ වන තෙක්)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • නොරැහැන්ව ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • වේගයෙන් ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • සෙමින් ආරෝපණය වෙමින් • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>කින් සම්පූර්ණ වේ"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"පරිශීලක මාරුව"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"පරිශීලකයා මාරු කරන්න,දැන් සිටින පරිශීලකයා <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"වත්මන් පරිශීලක <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +672,12 @@ <string name="wallet_title" msgid="5369767670735827105">"පසුම්බිය"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"සියල්ල පෙන්වන්න"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ගෙවීමට අගුලු හරින්න"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"සූදානම්"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ගෙවීම පිහිටුවන්න"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"භාවිත කිරීමට අගුලු හරින්න"</string> <string name="wallet_error_generic" msgid="257704570182963611">"ඔබගේ කාඩ්පත ලබා ගැනීමේ ගැටලුවක් විය, කරුණාකර පසුව නැවත උත්සාහ කරන්න"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"කාර්යාල පැතිකඩ"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ගුවන්යානා ප්රකාරය"</string> <string name="add_tile" msgid="6239678623873086686">"ටයිල් එක් කරන්න"</string> @@ -740,9 +746,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>තත්ත්වය:</b> නිශ්ශබ්ද වෙත පහත දමන ලදි"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>තත්ත්වය:</b> ඉහළට ශ්රේණිගත කරන ලදි"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>තත්ත්වය:</b> පහළට ශ්රේණිගත කරන ලදි"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ප්රමුඛතා ප්රකාරය ක්රියාත්මක විට පවා, ඔබගේ දැනුම්දීම්වල ඉහළින්ම පෙන්වයි"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"සංවාද දැනුම්දීම්වල ඉහළින්ම සහ අගුලු තිරයේ ඇති පැතිකඩ පින්තූරයක් ලෙස පෙන්වයි"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"සංවාද දැනුම්දීම්වල ඉහළින්ම සහ අගුලු තිරයේ ඇති පැතිකඩ පින්තූරයක් ලෙස පෙන්වයි, බුබුළක් ලෙස දිස් වේ"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"සංවාද දැනුම්දීම්වල ඉහළින්ම සහ අගුලු තිරයේ ඇති පැතිකඩ පින්තූරයක් ලෙස පෙන්වයි, බාධා නොකරන්න සඳහා බාධා කරයි"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"සංවාද දැනුම්දීම්වල ඉහළින්ම සහ අගුලු තිරයේ ඇති පැතිකඩ පින්තූරයක් ලෙස පෙන්වයි, බුබුළක් ලෙස දිස් වේ, බාධා නොකරන්න සඳහා බාධා කරයි"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"සැකසීම්"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ප්රමුඛතා සංවාද"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ප්රමුඛතාව"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> සංවාද විශේෂාංගවලට සහාය නොදක්වයි"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"මෙම දැනුම්දීම් වෙනස් කළ නොහැක."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"මෙම දැනුම්දීම් සමූහය මෙහි වින්යාස කළ නොහැක"</string> @@ -858,6 +867,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ක්රියාත්මකයි"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ක්රියාවිරහිතයි"</string> <string name="tile_unavailable" msgid="3095879009136616920">"ලබා ගත නොහැකිය"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"සංචලන තීරුව"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"පිරිසැලසුම"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"අමතර වම් බොත්තම් වර්ගය"</string> @@ -1016,14 +1027,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"පද්ධති සංචලනය යාවත්කාලීන කළා. වෙනස්කම් සිදු කිරීමට, සැකසීම් වෙත යන්න."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"පද්ධති සංචලනය යාවත්කාලීන කිරීමට සැකසීම් වෙත යන්න"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"පොරොත්තු"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"සංවාදය ප්රමුඛතාව වෙත සකසන ලදී"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ප්රමුඛතා සංවාද"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"මෙම සංවාද ඔබගේ ලැයිස්තුවේ ඉහළින්ම පෙන්වන අතර ප්රමුඛතා ප්රකාරය ක්රියාත්මක විට සෑම විටම ඔබ වෙත ළඟා විය හැකිය"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"අගුලු තිරයේ පැතිකඩ පින්තූර පෙන්වයි"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"ඔබටද ඔබගේ මුල් තිරයේ බුබුළුවල මෙම සංවාද පහසුවෙන් සොයා ගත හැකිය"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"බාධා නොකරන්න හට බාධා කරන්න"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"තේරුණා"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"සැකසීම්"</string> <string name="magnification_window_title" msgid="4863914360847258333">"විශාලන කවුළුව"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"විශාලනය කිරීමේ කවුළු පාලන"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"විශාලනය වැඩි කරන්න"</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index 63c3b8bc5876..44325f70bc16 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobilný hotspot je vypnutý."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobilný hotspot je zapnutý."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Prenášanie bolo zastavené."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Pracovný režim vypnutý"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Pracovný režim zapnutý"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Pracovný režim je vypnutý."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Pracovný režim je zapnutý."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Šetrič dát bol vypnutý."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Šetrič dát bol zapnutý."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Limit: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Upozornenie pri <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Pracovný profil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nočný režim"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Zapne sa pri západe slnka"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Do východu slnka"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Úplné\nticho"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Iba\nprioritné"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Iba\nbudíky"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa bezdrôtovo (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa rýchlo (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nabíja sa pomaly (úplné nabitie o <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Prepnutie používateľa"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Prepnúť používateľa (súčasný používateľ: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>)"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktuálny používateľ <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Peňaženka"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Zobraziť všetko"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Odomknúť a zaplatiť"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Pripravené"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Nastaviť platbu"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Odomknúť a použiť"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Pri načítavaní kariet sa vyskytol problém. Skúste to neskôr."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Pracovný profil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Režim v lietadle"</string> <string name="add_tile" msgid="6239678623873086686">"Pridať dlaždicu"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Preradené nižšie do kategórie Tiché"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Preradené vyššie"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Stav:</b> Preradené nižšie"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Vždy sa zobrazuje v hornej časti upozornení, aj keď je zapnutý režim priority"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Zobrazuje sa v hornej časti upozornení konverzácie a ako profilová fotka na uzamknutej obrazovke"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Zobrazuje sa ako bublina v hornej časti upozornení konverzácie a profilová fotka na uzamknutej obrazovke"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Zobrazuje sa v hornej časti upozornení konverzácie a ako profilová fotka na uzamknutej obrazovke, preruší režim bez vyrušení"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Zobrazuje sa ako bublina v hornej časti upozornení konverzácie a profilová fotka na uzamknutej obrazovke, preruší režim bez vyrušení"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Nastavenia"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioritné konverzácie"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priorita"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nepodporuje funkcie konverzácie"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Tieto upozornenia sa nedajú upraviť."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Túto skupinu upozornení nejde na tomto mieste konfigurovať"</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Zapnuté"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Vypnuté"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nedostupné"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigačný panel"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Rozloženie"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Dodatočný typ ľavého tlačidla"</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigácia v systéme bola aktualizovaná. Ak chcete vykonať zmeny, prejdite do Nastavení."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Prejdite do Nastavení a aktualizujte navigáciu v systéme"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Pohotovostný režim"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Konverzácia je nastavená ako prioritná"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioritné konverzácie"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Tieto konverzácie sa zobrazujú na začiatku zoznamu a keď je zapnutý režim priority, vždy dostanete upozornenie"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profilové fotky sa zobrazujú na uzamknutej obrazovke"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Tieto konverzácie ľahko nájdete v bublinách na ploche"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Prerušovať režim bez vyrušení"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Dobre"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Nastavenia"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Okno priblíženia"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Ovládacie prvky okna priblíženia"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Priblížiť"</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index b1f8a2bd309c..f11db070526e 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobilna dostopna točka je izklopljena."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobilna dostopna točka je vklopljena."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Predvajanje zaslona je ustavljeno."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Način za delo izklopljen."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Način za delo vklopljen."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Način za delo je izklopljen."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Način za delo je vklopljen."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Varčevanje s podatki je izklopljeno."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Varčevanje s podatki je vklopljeno."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Omejitev: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Opozorilo – <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Delovni profil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nočna svetloba"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Ob sončnem zahodu"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Do sončnega vzhoda"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Popolna\ntišina"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Samo\nprednostno"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Samo\nalarmi"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • brezžično polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • hitro polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • počasno polnjenje (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> do napolnjenosti)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Preklop med uporabniki"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Preklop med uporabniki, trenutni uporabnik <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Trenutni uporabnik: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Denarnica"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Prikaži vse"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Odklenite za plačevanje"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Pripravljeno"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Nastavite plačilno sredstvo"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Odklenite za uporabo"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Pri pridobivanju kartic je prišlo do težave. Poskusite znova pozneje."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profil za Android Work"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Način za letalo"</string> <string name="add_tile" msgid="6239678623873086686">"Dodajanje ploščice"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Stanje:</b> Uvrščeno med obvestila brez zvoka"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Stanje:</b> Uvrščeno višje"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Stanje:</b> Uvrščeno nižje"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Vedno prikazano na vrhu obvestil, tudi ko je vklopljen prednostni način"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Prikaz na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Prikaz v obliki oblačka na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Prikaz na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu, preglasitev načina Ne moti"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Prikaz v obliki oblačka na vrhu razdelka z obvestili za pogovor in kot profilna slika na zaklenjenem zaslonu, preglasitev načina Ne moti"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Nastavitve"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prednostni pogovori"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prednostno"</string> <string name="no_shortcut" msgid="8257177117568230126">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> ne podpira pogovornih funkcij."</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Za ta obvestila ni mogoče spremeniti nastavitev."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Te skupine obvestil ni mogoče konfigurirati tukaj"</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Vklopljeno"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Izklopljeno"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Ni na voljo"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Vrstica za krmarjenje"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Postavitev"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Vrsta dodatnega levega gumba"</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Krmarjenje po sistemu je posodobljeno. Če želite opraviti spremembe, odprite nastavitve."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Če želite posodobiti krmarjenje po sistemu, odprite nastavitve"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje pripravljenosti"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Pogovor je nastavljen kot prednosten"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prednostni pogovori"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ti pogovori so prikazani na vrhu seznama in vas lahko vedno dosežejo, ko je vklopljen prednostni način."</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profilne slike so prikazane na zaklenjenem zaslonu."</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Te pogovore brez težav najdete v oblačkih na začetnem zaslonu."</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Preglasi način »ne moti«"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"V redu"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Nastavitve"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Povečevalno okno"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrolniki povečevalnega okna"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Povečaj"</string> @@ -1054,8 +1061,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Premakni spodaj desno"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Premakni na rob in skrij"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Premakni z roba in pokaži"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"preklop"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Kontrolniki naprave"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Dodajte kontrolnike za povezane naprave."</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Nastavitev kontrolnikov naprave"</string> @@ -1104,8 +1110,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Opusti"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Nadaljuj"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Nastavitve"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Predvajaj"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Neaktivno, poglejte aplikacijo"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Napaka, vnovični poskus …"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Ni mogoče najti"</string> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index f1f7a7a63ff7..70b53cbf68dd 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Qasja në zona publike interneti është e çaktivizuar."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Zona e qasjes publike për internet është e aktivizuar."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Transmetimi i ekranit ndaloi."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Modaliteti i punës është i çaktivizuar."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Modaliteti i punës është i aktivizuar."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Modaliteti i punës është i çaktivizuar."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Modaliteti i punës është i aktivizuar."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Kursyesi i të dhënave është çaktivizuar."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Kursyesi i të dhënave është aktivizuar."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Kufiri: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Paralajmërim për kufirin prej <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profili i punës"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Drita e natës"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Në perëndim të diellit"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Deri në lindje të diellit"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Heshtje\ne plotë"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Vetëm\nme prioritet"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Vetëm\nalarmet"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet me valë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> deri sa të mbushet)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet me shpejtësi (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Po karikohet ngadalë (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> derisa të mbushet)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Ndërro përdorues"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Ndërro përdoruesin. Përdoruesi aktual është <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Përdoruesi aktual <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Shfaqi të gjitha"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Shkyçe për të paguar"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Gati"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Konfiguro pagesën"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Shkyçe për ta përdorur"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Pati një problem me marrjen e kartave të tua. Provo përsëri më vonë"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profili i punës"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Modaliteti i aeroplanit"</string> <string name="add_tile" msgid="6239678623873086686">"Shto një pllakëz"</string> @@ -740,9 +750,16 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Statusi:</b> Ulur në nivel si në heshtje"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Statusi:</b> Renditur më lart"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Statusi:</b> Renditur më poshtë"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Shfaqen gjithmonë në krye të njoftimeve, edhe kur modaliteti \"Me përparësi\" është aktiv"</string> + <!-- no translation found for notification_channel_summary_priority_baseline (46674690072551234) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_bubble (1275413109619074576) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_dnd (6665395023264154361) --> + <skip /> + <!-- no translation found for notification_channel_summary_priority_all (7151752959650048285) --> + <skip /> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Cilësimet"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Bisedat me përparësi"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Përparësia"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk mbështet veçoritë e bisedës"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Këto njoftime nuk mund të modifikohen."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ky grup njoftimesh nuk mund të konfigurohet këtu"</string> @@ -858,6 +875,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Aktiv"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Joaktiv"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Nuk ofrohet"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Shiriti i navigimit"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Struktura"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Lloji i butonit shtesë majtas"</string> @@ -1016,14 +1035,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigimi i sistemit u përditësua. Për të bërë ndryshime, shko te \"Cilësimet\"."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Shko te \"Cilësimet\" për të përditësuar navigimin e sistemit"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Në gatishmëri"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Biseda u caktua me përparësi"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Bisedat me përparësi"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Këto biseda shfaqen në krye të listës sate dhe mund të të shfaqen gjithmonë kur modaliteti \"Me përparësi\" është aktiv"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Fotografitë e profilit shfaqen në ekranin e kyçjes"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Mund t\'i gjesh me lehtësi këto biseda te flluskat në ekranin bazë"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Ndërprit \"Mos shqetëso\""</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"E kuptova"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Cilësimet"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Dritarja e zmadhimit"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrollet e dritares së zmadhimit"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zmadho"</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 22af16a5e242..de1c9a44a35d 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Мобилни хотспот је искључен."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Мобилни хотспот је укључен."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Пребацивање екрана је заустављено."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Режим рада је искључен."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Режим рада је укључен."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Режим рада је искључен."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Режим рада је укључен."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Уштеда података је искључена."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Уштеда података је укључена."</string> @@ -412,6 +414,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Ограничење од <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Упозорење за <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Пословни профил"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Ноћно светло"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Укључује се по заласку сунца"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"До изласка сунца"</string> @@ -471,10 +475,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Потпуна\nтишина"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Само\nприорит. прекиди"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Само\nаларми"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Бежично пуњење (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Пуни се (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Брзо се пуни (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Споро се пуни (напуниће се за <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Замени корисника"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Промените корисника, актуелни корисник је <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Актуелни корисник <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -671,10 +679,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Новчаник"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Прикажи све"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Откључај ради плаћања"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Спремно"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Подесите плаћање"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Откључај ради коришћења"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Дошло је до проблема при преузимању картица. Пробајте поново касније"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Пословни профил"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Режим рада у авиону"</string> <string name="add_tile" msgid="6239678623873086686">"Додај плочицу"</string> @@ -743,9 +753,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Статус:</b> Деградирано у Нечујно"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Статус:</b> Рангирано више"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Статус:</b> Рангирано ниже"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Увек се приказује у врху обавештења чак и када је Приоритетни режим укључен"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Приказује се у врху обавештења о конверзацијама и као слика профила на закључаном екрану"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Приказује се у врху обавештења о конверзацијама и као слика профила на закључаном екрану, појављује се као облачић"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Приказује се у врху обавештења о конверзацијама и као слика профила на закључаном екрану, прекида режим Не узнемиравај"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Приказује се у врху обавештења о конверзацијама и као слика профила на закључаном екрану, појављује се као облачић, прекида режим Не узнемиравај"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Подешавања"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Приоритетне конверзације"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Приоритет"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не подржава функције конверзације"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ова обавештења не могу да се мењају."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ова група обавештења не може да се конфигурише овде"</string> @@ -863,6 +876,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Укључено"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Искључено"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Недоступно"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Трака за навигацију"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Распоред"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Додатни тип левог дугмета"</string> @@ -1021,14 +1036,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Навигација система је ажурирана. Да бисте унели измене, идите у Подешавања."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Идите у Подешавања да бисте ажурирали навигацију система"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Стање приправности"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Конверзација је подешена на приоритетну"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Приоритетне конверзације"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ове конверзације се приказују у врху листе и увек могу да допру до вас када је Приоритетни режим укључен"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Слике профила се приказују на закључаном екрану"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Лако можете да пронађете ове конверзације у облачићима на почетном екрану"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Омета подешавање Не узнемиравај"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Важи"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Подешавања"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Прозор за увећање"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Контроле прозора за увећање"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Увећајте"</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index ebcae0f3ade8..fcbe07d03a9c 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Den mobila surfzonen har inaktiverats."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Den mobila surfzonen har aktiverats."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Castningen av skärmen har stoppats."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Arbetsläget är inaktiverat."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Arbetsläget aktiverat."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Arbetsläget har inaktiverats."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Arbetsläget har aktiverats."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Databesparing har inaktiverats."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Databesparing har aktiverats."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Gräns: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Varning <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Jobbprofil"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Nattljus"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"På från solnedgången"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Till soluppgången"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Helt\ntyst"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Endast\nprioriterade"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Endast\nalarm"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas trådlöst (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas snabbt (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Laddas långsamt (fulladdat om <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Byt användare"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Byt användare. Aktuell användare: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Aktuell användare <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Visa alla"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Lås upp för att betala"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Klar"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Konfigurera betalning"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Lås upp för att använda"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Det gick inte att hämta dina kort. Försök igen senare."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Jobbprofil"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Flygplansläge"</string> <string name="add_tile" msgid="6239678623873086686">"Lägg till en ruta"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Ändrad till Tyst"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Höjd"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Sänkt"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Visas alltid överst i aviseringarna, även när prioritetsläget är på"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Visas högst upp i konversationsaviseringarna och som profilbild på låsskärmen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Visas högst upp i konversationsaviseringarna och som profilbild på låsskärmen, visas som bubbla"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Visas högst upp i konversationsaviseringarna och som profilbild på låsskärmen, åsidosätter Stör ej"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Visas högst upp i konversationsaviseringarna och som profilbild på låsskärmen, visas som bubbla, åsidosätter Stör ej"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Inställningar"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Prioriterade konversationer"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Prioritet"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> har inte stöd för konversationsfunktioner"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Det går inte att ändra de här aviseringarna."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Den här aviseringsgruppen kan inte konfigureras här"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"På"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Av"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Inte tillgängligt"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigeringsfält"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Knapptyp för extra vänster"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemnavigeringen har uppdaterats. Öppna inställningarna om du vill ändra något."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Öppna inställningarna och uppdatera systemnavigeringen"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Viloläge"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Konversationen har angetts som prioriterad"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Prioriterade konversationer"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"De här konversationerna visas överst i listan och kan alltid nå dig när prioritetsläget på"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profilbilder visas på låsskärmen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Du hittar enkelt de här konversationerna i bubblor på startskärmen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Avbryt Stör ej"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Inställningar"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Förstoringsfönster"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Inställningar för förstoringsfönster"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zooma in"</string> @@ -1087,7 +1094,7 @@ <string name="controls_seeding_in_progress" msgid="3033855341410264148">"Rekommendationer läses in"</string> <string name="controls_media_title" msgid="1746947284862928133">"Media"</string> <string name="controls_media_close_session" msgid="1193000643003066508">"Vill du dölja mediesessionen?"</string> - <string name="controls_media_active_session" msgid="3146882316024153337">"Den aktuella mediesessionen kan inte döljas"</string> + <string name="controls_media_active_session" msgid="3146882316024153337">"Den aktuella mediesessionen kan inte döljas."</string> <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Stäng"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Återuppta"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Inställningar"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 2a45ce5a0a33..a591d0056361 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mtandaopepe unahamishika umezimwa."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mtandaopepe unaohamishika umewashwa."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Utumaji wa skrini umesitishwa."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Hali ya kazi imezimwa."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Hali ya kazi imewashwa."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Hali ya kazi imezimwa."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Hali ya kazi imewashwa."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Kiokoa Data kimezimwa."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Kiokoa Data kimewashwa."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"kikomo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Onyo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Wasifu wa kazini"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Mwanga wa Usiku"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Itawashwa machweo"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Hadi macheo"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Kimya\nkabisa"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Kipaumbele\npekee"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Kengele\npekee"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji bila kutumia waya (imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ili ijae)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji (Imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ili ijae)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji kwa kasi (Imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ili ijae)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Inachaji pole pole (Imebakisha <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ijae)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Badili mtumiaji"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Badili mtumiaji, mtumiaji wa sasa <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Mtumiaji wa sasa <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Onyesha zote"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Fungua ili ulipe"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Tayari"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Weka njia ya kulipa"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Fungua ili utumie"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Hitilafu imetokea wakati wa kuleta kadi zako, tafadhali jaribu tena baadaye"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Wasifu wa kazini"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Hali ya ndegeni"</string> <string name="add_tile" msgid="6239678623873086686">"Ongeza kigae"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Imeshushwa Hadhi Kuwa Kimya"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Hali:</b> Imeorodheshwa Katika Nafasi ya Juu"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Hali:</b> Imeorodheshwa Katika Nafasi ya Chini"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Huonyeshwa kwenye sehemu ya juu ya arifa zako kila wakati, hata wakati umewasha hali ya Kipaumbele"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Huonyeshwa kwenye sehemu ya juu ya arifa za mazungumzo na kama picha ya wasifu kwenye skrini iliyofungwa"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Huonyeshwa kwenye sehemu ya juu ya arifa za mazungumzo na kama picha ya wasifu kwenye skrini iliyofungwa. Huonekana kama kiputo"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Huonyeshwa kwenye sehemu ya juu ya arifa za mazungumzo na kama picha ya wasifu kwenye skrini iliyofungwa. Hukatiza kipengele cha Usinisumbue"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Huonyeshwa kwenye sehemu ya juu ya arifa za mazungumzo na kama picha ya wasifu kwenye skrini iliyofungwa. Huonekana kama kiputo na hukatiza kipengele cha Usinisumbue"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Mipangilio"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Mazungumzo ya kipaumbele"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Kipaumbele"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> haitumii vipengele vya mazungumzo"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Arifa hizi haziwezi kubadilishwa."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Kikundi hiki cha arifa hakiwezi kuwekewa mipangilio hapa"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Imewashwa"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Imezimwa"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Hakipatikani"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Sehemu ya viungo muhimu"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Mpangilio"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Aina ya kitufe cha kushoto cha ziada"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Umesasisha usogezaji kwenye mfumo. Ili ubadilishe, nenda kwenye Mipangilio."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Nenda kwenye mipangilio ili usasishe usogezaji kwenye mfumo"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Hali tuli"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Mazungumzo yamepewa kipaumbele"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Mazungumzo ya kipaumbele"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Mazungumzo haya yanaonyeshwa kwenye sehemu ya juu ya orodha yako na yanaweza kukufikia ukiwa umewasha hali ya Kipaumbele"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Picha za wasifu zinaonyeshwa kwenye skrini iliyofungwa"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Unaweza kupata mazungumzo haya kwa urahisi katika viputo kwenye Skrini yako ya kwanza"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Katiza kipengele cha Usinisumbue"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Nimeelewa"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Mipangilio"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Dirisha la Ukuzaji"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Vidhibiti vya Dirisha la Ukuzaji"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Vuta karibu"</string> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index 63b4c3b8560d..d616eabdc023 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"மொபைல் ஹாட்ஸ்பாட் முடக்கப்பட்டது."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"மொபைல் ஹாட்ஸ்பாட் இயக்கப்பட்டது."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"திரையை அனுப்புதல் நிறுத்தப்பட்டது."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"பணிப் பயன்முறை முடக்கப்பட்டுள்ளது."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"பணிப் பயன்முறை இயக்கப்பட்டுள்ளது."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"பணிப் பயன்முறை முடக்கப்பட்டது."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"பணிப் பயன்முறை இயக்கப்பட்டது."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"டேட்டா சேமிப்பான் முடக்கப்பட்டது."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"டேட்டா சேமிப்பான் இயக்கப்பட்டது."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> வரம்பு"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> எச்சரிக்கை"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"பணிக் கணக்கு"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"நைட் லைட்"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"மாலையில் ஆன் செய்"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"காலை வரை"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"அறிவிப்புகள்\nவேண்டாம்"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"முன்னுரிமைகள்\nமட்டும்"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"அலாரங்கள்\nமட்டும்"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • வயர்லெஸ் முறையில் சார்ஜாகிறது (முடிய <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ஆகும்)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • சார்ஜாகிறது (முழு சார்ஜ்: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • வேகமாகச் சார்ஜாகிறது (முழு சார்ஜ்: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • மெதுவாகச் சார்ஜாகிறது (முழு சார்ஜ்: <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"பயனரை மாற்று"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"பயனரை மாற்று, தற்போதைய பயனர் <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"தற்போதைய பயனர்: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"வாலட்"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"அனைத்தையும் காட்டு"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"பணம் செலுத்த அன்லாக் செய்க"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"தயார்"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"பேமெண்ட் முறையை அமையுங்கள்"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"பயன்படுத்துவதற்கு அன்லாக் செய்க"</string> <string name="wallet_error_generic" msgid="257704570182963611">"உங்கள் கார்டுகளின் விவரங்களைப் பெறுவதில் சிக்கல் ஏற்பட்டது, பிறகு முயலவும்"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"பணிக் கணக்கு"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"விமானப் பயன்முறை"</string> <string name="add_tile" msgid="6239678623873086686">"டைலைச் சேர்க்கும்"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>நிலை:</b> சைலன்ட் நிலைக்குக் குறைத்து அமைக்கப்பட்டது"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>நிலை:</b> முக்கியத்துவம் உயர்த்தப்பட்டது"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>நிலை:</b> முக்கியத்துவம் குறைக்கப்பட்டது"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"முன்னுரிமைப் பயன்முறை இயக்கப்பட்டிருக்கும்போதும், எப்போதுமே அறிவிப்புகளின் மேல்புறத்தில் காட்டப்படும்"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"உரையாடல் அறிவிப்புகளின் மேற்பகுதியில் காட்டப்படும், திரை பூட்டப்பட்டிருக்கும்போது சுயவிவரப் படமாகக் காட்டப்படும்"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"உரையாடல் அறிவிப்புகளின் மேற்பகுதியில் காட்டப்படும், திரை பூட்டப்பட்டிருக்கும்போது சுயவிவரப் படமாகக் காட்டப்படும், குமிழாகத் தோன்றும்"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"உரையாடல் அறிவிப்புகளின் மேற்பகுதியில் காட்டப்படும், திரை பூட்டப்பட்டிருக்கும்போது சுயவிவரப் படமாகக் காட்டப்படும், தொந்தரவு செய்ய வேண்டாம் அம்சம் இயக்கப்பட்டிருக்கும்போதும் காட்டப்படும்"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"உரையாடல் அறிவிப்புகளின் மேற்பகுதியில் காட்டப்படும், திரை பூட்டப்பட்டிருக்கும்போது சுயவிவரப் படமாகக் காட்டப்படும், குமிழாகத் தோன்றும், தொந்தரவு செய்ய வேண்டாம் அம்சம் இயக்கப்பட்டிருக்கும்போதும் காட்டப்படும்"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"அமைப்புகள்"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"முன்னுரிமை உரையாடல்கள்"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"முன்னுரிமை"</string> <string name="no_shortcut" msgid="8257177117568230126">"உரையாடல் அம்சங்களை <xliff:g id="APP_NAME">%1$s</xliff:g> ஆதரிக்காது"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"இந்த அறிவிப்புகளை மாற்ற இயலாது."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"இந்த அறிவுப்புக் குழுக்களை இங்கே உள்ளமைக்க இயலாது"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ஆன்"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ஆஃப்"</string> <string name="tile_unavailable" msgid="3095879009136616920">"இல்லை"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"வழிசெலுத்தல் பட்டி"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"தளவமைப்பு"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"கூடுதல் இடப்புற பட்டன் வகை"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"சிஸ்டம் நேவிகேஷன் மாற்றப்பட்டது. மாற்றங்களைச் செய்ய ‘அமைப்புகளுக்குச்’ செல்லவும்."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"சிஸ்டம் நேவிகேஷனை மாற்ற ’அமைப்புகளுக்குச்’ செல்லவும்"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"இயக்க நேரம்"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"முன்னுரிமை அளிக்கப்பட்ட உரையாடலாக அமைக்கப்பட்டது"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"முன்னுரிமை உரையாடல்கள்"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"முன்னுரிமைப் பயன்முறை இயக்கப்பட்டிருக்கும்போது பட்டியலின் மேல்புறத்தில் இந்த உரையாடல்கள் எப்போதுமே காட்டப்படும்"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"லாக் ஸ்கிரீனில் சுயவிவரப் படங்கள் காட்டப்படும்"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"முகப்புத் திரையில் தோன்றும் குமிழ்களில் இந்த உரையாடல்களை எளிதாகப் பார்க்கலாம்"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"\'தொந்தரவு செய்ய வேண்டாம்\' அம்சத்தைக் குறுக்கிடும்"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"சரி"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"அமைப்புகள்"</string> <string name="magnification_window_title" msgid="4863914360847258333">"பெரிதாக்கல் சாளரம்"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"பெரிதாக்கல் சாளரக் கட்டுப்பாடுகள்"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"பெரிதாக்கு"</string> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 7b05e3620d9b..7d44b2b594ca 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"మొబైల్ హాట్స్పాట్ ఆఫ్ చేయబడింది."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"మొబైల్ హాట్స్పాట్ ఆన్ చేయబడింది."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"స్క్రీన్ ప్రసారం ఆపివేయబడింది."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"పని మోడ్ ఆఫ్లో ఉంది."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"పని మోడ్ ఆన్లో ఉంది."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"పని మోడ్ ఆఫ్ చేయబడింది."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"పని మోడ్ ఆన్ చేయబడింది."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"డేటా సేవర్ ఆఫ్ చేయబడింది."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"డేటా సేవర్ ఆన్ చేయబడింది."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> పరిమితి"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> హెచ్చరిక"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"ఆఫీస్ ప్రొఫైల్"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"రాత్రి కాంతి"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"సూర్యాస్తమయానికి"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"సూర్యోదయం వరకు"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"మొత్తం\nనిశ్శబ్దం"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"ప్రాధాన్యమైనవి\nమాత్రమే"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"అలారాలు\nమాత్రమే"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • వైర్ లేకుండా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> పడుతుంది)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • వేగంగా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • నెమ్మదిగా ఛార్జ్ అవుతోంది (పూర్తి కావడానికి <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"వినియోగదారుని మార్చు"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"వినియోగదారుని మార్చు, ప్రస్తుత వినియోగదారు <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ప్రస్తుత వినియోగదారు <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"అన్నింటినీ చూపు"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"పే చేయడానికి అన్లాక్ చేయండి"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"సిద్ధంగా ఉంది"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"పేమెంట్ను సెటప్ చేయండి"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ఉపయోగించడానికి అన్లాక్ చేయండి"</string> <string name="wallet_error_generic" msgid="257704570182963611">"మీ కార్డ్లను పొందడంలో సమస్య ఉంది, దయచేసి తర్వాత మళ్లీ ట్రై చేయండి"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"ఆఫీస్ ప్రొఫైల్"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ఎయిర్ప్లేన్ మోడ్"</string> <string name="add_tile" msgid="6239678623873086686">"టైల్ను జోడించండి"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>స్టేటస్:</b> నిశ్శబ్దం స్థాయికి తగ్గించబడింది"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>స్టేటస్:</b> ఎక్కువ ర్యాంక్కు సర్దుబాటు చేయబడింది"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>స్టేటస్:</b> తక్కువ ర్యాంక్కు సర్దుబాటు చేయబడింది"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ప్రాధాన్యత మోడ్ ఆన్లో ఉన్నప్పుడు కూడా ఇది ఎల్లప్పుడూ మీ నోటిఫికేషన్ల ఎగువన కనిపిస్తుంది"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"సంభాషణ నోటిఫికేషన్ల ఎగువున, లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోగా చూపిస్తుంది"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"సంభాషణ నోటిఫికేషన్ల ఎగువున, లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోగా చూపిస్తుంది, బబుల్గా కనిపిస్తుంది"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"సంభాషణ నోటిఫికేషన్ల ఎగువున, లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోగా చూపిస్తుంది, \'అంతరాయం కలిగించవద్దు\'ను అంతరాయం కలిగిస్తుంది"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"సంభాషణ నోటిఫికేషన్ల ఎగువున, లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోగా చూపిస్తుంది, బబుల్గా కనిపిస్తుంది, \'అంతరాయం కలిగించవద్దు\'ను అంతరాయం కలిగిస్తుంది"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"సెట్టింగ్లు"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ప్రాధాన్య సంభాషణలు"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ప్రాధాన్యత"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> సంభాషణ ఫీచర్లను సపోర్ట్ చేయదు"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ఈ నోటిఫికేషన్లను సవరించడం వీలుపడదు."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"ఈ నోటిఫికేషన్ల సమూహాన్ని ఇక్కడ కాన్ఫిగర్ చేయలేము"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"ఆన్"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ఆఫ్ చేయి"</string> <string name="tile_unavailable" msgid="3095879009136616920">"అందుబాటులో లేదు"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"నావిగేషన్ బార్"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"లేఅవుట్"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"అత్యంత ఎడమ వైపు ఉన్న బటన్ రకం"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"సిస్టమ్ నావిగేషన్ అప్డేట్ చేయబడింది. మార్పులు చేయడానికి, సెట్టింగ్లకు వెళ్లండి."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"సిస్టమ్ నావిగేషన్ను అప్డేట్ చేయడానికి సెట్టింగ్లకు వెళ్లండి"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"స్టాండ్బై"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"సంభాషణ ప్రధానమైనదిగా సెట్ చేయబడింది"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ప్రాధాన్య సంభాషణలు"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"ఈ సంభాషణలు మీ లిస్ట్ ఎగువన కనిపిస్తాయి అలాగే మీ ప్రాధాన్యత మోడ్ ఆన్లో ఉన్నప్పుడు ఎల్లప్పుడూ మిమ్మల్ని చేరుకోవచ్చు"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"లాక్ స్క్రీన్లో ప్రొఫైల్ ఫోటోలు చూపబడతాయి"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"మీరు ఈ సంభాషణలను మీ మొదటి స్క్రీన్లో బబుల్స్లో సులభంగా కనుగొనవచ్చు"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"\'అంతరాయం కలిగించవద్దు\' మోడ్కు అంతరాయం"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"అర్థమైంది"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"సెట్టింగ్లు"</string> <string name="magnification_window_title" msgid="4863914360847258333">"మాగ్నిఫికేషన్ విండో"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"మాగ్నిఫికేషన్ నియంత్రణల విండో"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"దగ్గరగా జూమ్ చేయండి"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"దిగువ కుడి వైపునకు తరలించు"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"అంచుకు తరలించి దాచండి"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"అంచుని తరలించి చూపించు"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"టోగుల్ చేయి"</string> <string name="quick_controls_title" msgid="6839108006171302273">"డివైజ్ కంట్రోల్స్"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"మీ కనెక్ట్ అయిన పరికరాలకు కంట్రోల్స్ను జోడించండి"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"పరికరం నియంత్రణలను సెటప్ చేయడం"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"విస్మరించు"</string> <string name="controls_media_resume" msgid="1933520684481586053">"కొనసాగించండి"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"సెట్టింగ్లు"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"ప్లే చేయండి"</string> <string name="controls_error_timeout" msgid="794197289772728958">"ఇన్యాక్టివ్, యాప్ చెక్ చేయండి"</string> <string name="controls_error_retryable" msgid="864025882878378470">"లోపం, మళ్లీ ప్రయత్నిస్తోంది..."</string> <string name="controls_error_removed" msgid="6675638069846014366">"కనుగొనబడలేదు"</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 171ecd449b06..ff216a48c693 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"ปิดฮอตสปอตเคลื่อนที่แล้ว"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"เปิดฮอตสปอตเคลื่อนที่แล้ว"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"หยุดการส่งหน้าจอแล้ว"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"โหมดการทำงานปิดอยู่"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"โหมดการทำงานเปิดอยู่"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"ปิดโหมดการทำงานแล้ว"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"เปิดโหมดการทำงานแล้ว"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ปิดโปรแกรมประหยัดอินเทอร์เน็ตแล้ว"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"เปิดโปรแกรมประหยัดอินเทอร์เน็ตแล้ว"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"ขีดจำกัด <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"คำเตือน <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"โปรไฟล์งาน"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"แสงตอนกลางคืน"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"เปิดตอนพระอาทิตย์ตก"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"จนพระอาทิตย์ขึ้น"</string> @@ -469,17 +473,21 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"ปิดเสียง\nทั้งหมด"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"เฉพาะเรื่อง\nสำคัญ"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"เฉพาะปลุก\nเท่านั้น"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จแบบไร้สาย (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จ (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จอย่างเร็ว (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • กำลังชาร์จอย่างช้าๆ (อีก <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> จะเต็ม)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"สลับผู้ใช้"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"เปลี่ยนผู้ใช้จากผู้ใช้ปัจจุบัน <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"ผู้ใช้ปัจจุบัน <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_quick_contact" msgid="4504508915324898576">"แสดงโปรไฟล์"</string> <string name="user_add_user" msgid="4336657383006913022">"เพิ่มผู้ใช้"</string> <string name="user_new_user_name" msgid="2019166282704195789">"ผู้ใช้ใหม่"</string> - <string name="guest_exit_guest_dialog_title" msgid="5015697561580641422">"ต้องการนำผู้เข้าร่วมออกไหม"</string> + <string name="guest_exit_guest_dialog_title" msgid="5015697561580641422">"ต้องการนำผู้ใช้ชั่วคราวออกไหม"</string> <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"ระบบจะลบแอปและข้อมูลทั้งหมดในเซสชันนี้"</string> <string name="guest_exit_guest_dialog_remove" msgid="7505817591242703757">"นำออก"</string> <string name="guest_wipe_session_title" msgid="7147965814683990944">"ยินดีต้อนรับผู้เข้าร่วมกลับมาอีกครั้ง"</string> @@ -488,7 +496,7 @@ <string name="guest_wipe_session_dontwipe" msgid="3211052048269304205">"ใช่ ดำเนินการต่อ"</string> <string name="guest_notification_title" msgid="4434456703930764167">"ผู้ใช้ที่เป็นผู้เข้าร่วม"</string> <string name="guest_notification_text" msgid="4202692942089571351">"หากต้องการลบแอปและข้อมูล ให้นำผู้ใช้ที่เป็นผู้เข้าร่วมออก"</string> - <string name="guest_notification_remove_action" msgid="4153019027696868099">"นำผู้เข้าร่วมออก"</string> + <string name="guest_notification_remove_action" msgid="4153019027696868099">"นำผู้ใช้ชั่วคราวออก"</string> <string name="user_logout_notification_title" msgid="3644848998053832589">"ออกจากระบบผู้ใช้"</string> <string name="user_logout_notification_text" msgid="7441286737342997991">"ทำการออกจากระบบให้ผู้ใช้รายปัจจุบัน"</string> <string name="user_logout_notification_action" msgid="7974458760719361881">"ออกจากระบบผู้ใช้"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"แสดงทั้งหมด"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ปลดล็อกเพื่อชำระเงิน"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"พร้อม"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ตั้งค่าการชำระเงิน"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"ปลดล็อกเพื่อใช้"</string> <string name="wallet_error_generic" msgid="257704570182963611">"เกิดปัญหาในการดึงข้อมูลบัตรของคุณ โปรดลองอีกครั้งในภายหลัง"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"โปรไฟล์งาน"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"โหมดบนเครื่องบิน"</string> <string name="add_tile" msgid="6239678623873086686">"เพิ่มไทล์"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>สถานะ:</b> ลดระดับเป็นปิดเสียง"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>สถานะ:</b> อันดับสูงขึ้น"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>สถานะ:</b> อันดับต่ำลง"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"แสดงที่ด้านบนของการแจ้งเตือนเสมอแม้ว่าโหมดลำดับความสำคัญสูงจะเปิดอยู่"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"แสดงที่ด้านบนของการแจ้งเตือนการสนทนาและเป็นรูปโปรไฟล์บนหน้าจอล็อก"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"แสดงที่ด้านบนของการแจ้งเตือนการสนทนาและเป็นรูปโปรไฟล์บนหน้าจอล็อก ปรากฏเป็นบับเบิล"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"แสดงที่ด้านบนของการแจ้งเตือนการสนทนาและเป็นรูปโปรไฟล์บนหน้าจอล็อก แสดงในโหมดห้ามรบกวน"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"แสดงที่ด้านบนของการแจ้งเตือนการสนทนาและเป็นรูปโปรไฟล์บนหน้าจอล็อก ปรากฏเป็นบับเบิล แสดงในโหมดห้ามรบกวน"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"การตั้งค่า"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"การสนทนาสำคัญ"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ลำดับความสำคัญ"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่รองรับฟีเจอร์การสนทนา"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"แก้ไขการแจ้งเตือนเหล่านี้ไม่ได้"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"การแจ้งเตือนกลุ่มนี้กำหนดค่าที่นี่ไม่ได้"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"เปิด"</string> <string name="switch_bar_off" msgid="5669805115416379556">"ปิด"</string> <string name="tile_unavailable" msgid="3095879009136616920">"ไม่มี"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"แถบนำทาง"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"การจัดวาง"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"ประเภทปุ่มทางซ้ายเพิ่มเติม"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"อัปเดตการไปยังส่วนต่างๆ ของระบบแล้ว หากต้องการเปลี่ยนแปลง ให้ไปที่การตั้งค่า"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ไปที่การตั้งค่าเพื่ออัปเดตการไปยังส่วนต่างๆ ของระบบ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"สแตนด์บาย"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"ตั้งค่าเป็นการสนทนาสำคัญแล้ว"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"การสนทนาสำคัญ"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"การสนทนาเหล่านี้จะแสดงที่ด้านบนของรายการและให้คุณเข้าถึงได้อยู่เสมอเมื่อโหมดลำดับความสำคัญสูงเปิดอยู่"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"รูปโปรไฟล์จะแสดงในหน้าจอล็อก"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"คุณค้นหาการสนทนาเหล่านี้ได้ง่ายๆ ในบับเบิลบนหน้าจอหลัก"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"แสดงในโหมดห้ามรบกวน"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"รับทราบ"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"การตั้งค่า"</string> <string name="magnification_window_title" msgid="4863914360847258333">"หน้าต่างการขยาย"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"การควบคุมหน้าต่างการขยาย"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ซูมเข้า"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 0490ff7ce286..fe75e012a826 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Na-off ang mobile hotspot."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Na-on ang mobile hotspot."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Itinigil ang pagka-cast sa screen."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Naka-off ang work mode."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Naka-on ang work mode."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Na-off ang work mode."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Na-on ang work mode."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Na-off ang Data Saver."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Na-on ang Data Saver."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> ang limitasyon"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Babala sa <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Profile sa trabaho"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Night Light"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Mao-on sa sunset"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Hanggang sunrise"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Ganap na\nkatahimikan"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Priyoridad\nlang"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Mga alarm\nlang"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Wireless na nagcha-charge (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> bago mapuno)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Nagcha-charge (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> hanggang mapuno)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mabilis na nagcha-charge (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> na lang)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Mabagal na nagcha-charge (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> na lang)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Magpalit ng user"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Magpalit ng user, kasalukuyang user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Kasalukuyang user <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Ipakita lahat"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"I-unlock para magbayad"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Handa na"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Mag-set up ng pagbabayad"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"I-unlock para magamit"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Nagkaproblema sa pagkuha ng iyong mga card, pakisubukan ulit sa ibang pagkakataon"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Profile sa trabaho"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Airplane mode"</string> <string name="add_tile" msgid="6239678623873086686">"Magdagdag ng tile"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Status:</b> Na-demote sa Naka-silent"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Status:</b> Ranked nang Mas Mataas"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Status:</b> Na-rank nang Mas Mababa"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Palaging ipinapakita sa itaas ng iyong mga notification, kahit na naka-on ang Priority mode"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Makikita sa itaas ng mga notification ng pag-uusap at bilang larawan sa profile sa lock screen"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Makikita sa itaas ng mga notification ng pag-uusap at bilang larawan sa profile sa lock screen, lumalabas bilang bubble"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Makikita sa itaas ng mga notification ng pag-uusap at bilang larawan sa profile sa lock screen, naaabala ang Huwag Istorbohin"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Makikita sa itaas ng mga notification ng pag-uusap at bilang larawan sa profile sa lock screen, lumalabas bilang bubble, naaabala ang Huwag Istorbohin"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Mga Setting"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Mga priyoridad na pag-uusap"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Priyoridad"</string> <string name="no_shortcut" msgid="8257177117568230126">"Hindi sinusuportahan ng <xliff:g id="APP_NAME">%1$s</xliff:g> ang mga feature ng pag-uusap"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Hindi puwedeng baguhin ang mga notification na ito."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Hindi mako-configure dito ang pangkat na ito ng mga notification"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"I-on"</string> <string name="switch_bar_off" msgid="5669805115416379556">"I-off"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Hindi available"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Navigation bar"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Layout"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Uri ng extra na button ng kaliwa"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Na-update na ang pag-navigate ng system. Para gumawa ng mga pagbabago, pumunta sa Mga Setting."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Pumunta sa Mga Setting para i-update ang pag-navigate sa system"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Naka-standby"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Ginawang priyoridad ang pag-uusap"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Mga priyoridad na pag-uusap"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ipinapakita ang pag-uusap na ito sa itaas ng listahan mo at palaging ipapakita sa iyo kapag naka-on ang Priority mode"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Ipinapakita ang mga larawan sa profile sa lock screen"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Madali mong mahahanap ang mga pag-uusap na ito sa mga bubble sa iyong Home screen"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Ihinto ang Huwag Istorbohin"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Mga Setting"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Window ng Pag-magnify"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Mga Kontrol sa Pag-magnify ng Window"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Mag-zoom in"</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 12cae9b93216..6d3743f10c47 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobil hotspot kapatıldı."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobil hotspot açıldı."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ekran yayını durduruldu."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Çalışma modu kapalı."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Çalışma modu açık."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Çalışma modu kapatıldı."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Çalışma modu açıldı."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Veri Tasarrufu kapatıldı."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Veri Tasarrufu açıldı."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Sınır: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> uyarısı"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"İş profili"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Gece Işığı"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Gün batımı açılacak"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Sabaha kadar"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Tamamen\nsessiz"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Yalnızca\nöncelik"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Yalnızca\nalarmlar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Kablosuz olarak şarj ediliyor (tam şarj olmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Şarj oluyor (dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Hızlı şarj oluyor (dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Yavaş şarj oluyor (dolmasına <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kaldı)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Kullanıcı değiştirme"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Kullanıcı değiştir. Geçerli kullanıcı: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Geçerli kullanıcı: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Cüzdan"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Tümünü göster"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Ödeme için kilidi aç"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Hazır"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Ödeme ayarlarını belirle"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Kullanmak için kilidi aç"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Kartlarınız alınırken bir sorun oluştu. Lütfen daha sonra tekrar deneyin"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"İş profili"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Uçak modu"</string> <string name="add_tile" msgid="6239678623873086686">"Blok ekle"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Durum:</b> Sessize Düşürüldü"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Durum:</b> Daha Yüksek Sıralandı"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Durum:</b> Daha Düşük Sıralandı"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Öncelik modu açık olduğunda bile her zaman bildirimlerinizin üst kısmında gösterilir"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Görüşme bildirimlerinin üstünde ve kilit ekranında profil resmi olarak gösterilir"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Görüşme bildirimlerinin üstünde ve kilit ekranında profil resmi olarak gösterilir, baloncuk olarak görünür"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Görüşme bildirimlerinin üstünde ve kilit ekranında profil resmi olarak gösterilir, Rahatsız Etmeyin\'i kesintiye uğratır"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Görüşme bildirimlerinin üstünde ve kilit ekranında profil resmi olarak gösterilir, baloncuk olarak görünür, Rahatsız Etmeyin\'i kesintiye uğratır"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Ayarlar"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Öncelikli görüşmeler"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Öncelik"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>, sohbet özelliklerini desteklemiyor"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirimler değiştirilemez."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildirim grubu burada yapılandırılamaz"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Açık"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Kapalı"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Kullanılamıyor"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Gezinme çubuğu"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Düzen"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Ekstra sol düğme türü"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Sistemde gezinme yöntemi güncellendi. Değişiklik yapmak için Ayarlar\'a gidin."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Sistemde gezinme yöntemini güncellemek için Ayarlar\'a gidin"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Beklemeye alınıyor"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Görüşme öncelikli olarak ayarlandı"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Öncelikli görüşmeler"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Listenizin üst kısmında gösterilen bu görüşmeler, Öncelik modu açık olduğunda her zaman size ulaşabilir"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profil resimleri kilit ekranında gösterilir"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Bu görüşmeleri, ana ekranınızdaki baloncuklarda kolayca bulabilirsiniz"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Rahatsız Etmeyin\'i keser"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Anladım"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Ayarlar"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Büyütme Penceresi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Büyütme Penceresi Kontrolleri"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Yakınlaştır"</string> @@ -1132,7 +1139,7 @@ <string name="location_status" msgid="1294990572202541812">"Konum paylaşılıyor"</string> <string name="location_status_content_description" msgid="2982386178160071305">"<xliff:g id="NAME">%1$s</xliff:g>, konum bilgisini paylaşıyor"</string> <string name="new_story_status" msgid="9012195158584846525">"Yeni hikaye"</string> - <string name="new_story_status_content_description" msgid="4963137422622516708">"<xliff:g id="NAME">%1$s</xliff:g>, yeni bir hikaye paylaştı"</string> + <string name="new_story_status_content_description" msgid="4963137422622516708">"<xliff:g id="NAME">%1$s</xliff:g> yeni bir hikaye paylaştı"</string> <string name="video_status" msgid="4548544654316843225">"İzleniyor"</string> <string name="audio_status" msgid="4237055636967709208">"Dinleniyor"</string> <string name="game_status" msgid="1340694320630973259">"Çalınıyor"</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 4e7de7110672..c0f6e746bdf0 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Мобільну точку доступу вимкнено."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Мобільну точку доступу ввімкнено."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Трансляцію екрана зупинено."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Робочий режим вимкнено."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Робочий режим увімкнено."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Робочий режим вимкнено."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Робочий режим увімкнено."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Заощадження трафіку вимкнено."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Заощадження трафіку ввімкнено."</string> @@ -414,6 +416,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Обмеження: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Застереження: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Робочий профіль"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Нічний екран"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Вмикається ввечері"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"До сходу сонця"</string> @@ -473,10 +477,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Без\nсигналів"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Лише\nприорітетні"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Лише\nсигнали"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Бездротове заряджання (залишилося <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Заряджання (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до повного)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Швидке заряджання (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до повного)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Повільне заряджання (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> до повного)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Змінити користувача"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Змінити користувача, поточний користувач – <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Поточний користувач: <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -674,10 +682,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Гаманець"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Показати все"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Розблокувати, щоб сплатити"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Готово"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Налаштувати платіж"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Розблокувати, щоб використовувати"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Не вдалось отримати ваші картки. Повторіть спробу пізніше."</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Робочий профіль"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Режим польоту"</string> <string name="add_tile" msgid="6239678623873086686">"Додавання опції"</string> @@ -746,9 +756,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Статус</b>: знижено до \"Без звуку\""</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Статус</b>: пріоритет підвищено"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Статус</b>: пріоритет знижено"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Завжди відображаються вгорі списку сповіщень, навіть коли ввімкнено режим пріоритетності"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані, відображається у вигляді спливаючої підказки"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані, показується навіть у режимі \"Не турбувати\""</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"З’являється вгорі сповіщень про розмови та як зображення профілю на заблокованому екрані, відображається у вигляді спливаючої підказки, показується навіть у режимі \"Не турбувати\""</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Налаштування"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Важливі розмови"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Пріоритет"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> не підтримує функції розмов"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Ці сповіщення не можна змінити."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Цю групу сповіщень не можна налаштувати тут"</string> @@ -868,6 +881,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Увімкнено"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Вимкнено"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Недоступно"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Панель навігації"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Макет"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Додатковий тип кнопки ліворуч"</string> @@ -1026,14 +1041,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Навігацію в системі оновлено. Щоб внести зміни, перейдіть у налаштування."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Перейдіть у налаштування, щоб оновити навігацію в системі"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Режим очікування"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Розмову призначено важливою"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Важливі розмови"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Ці розмови відображаються вгорі списку, і ви завжди можете їх побачити, якщо ввімкнено режим пріоритетності"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Зображення профілів видно на заблокованому екрані"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Для зручності ці розмови відображаються в спливаючих чатах на головному екрані"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Переривають режим \"Не турбувати\""</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Налаштування"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Вікно збільшення"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Елементи керування вікна збільшення"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Наблизити"</string> @@ -1054,8 +1061,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"Перемістити праворуч униз"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"Перемістити до краю, приховати"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"Перемістити від краю, показати"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"перемкнути"</string> <string name="quick_controls_title" msgid="6839108006171302273">"Керування пристроями"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"Додайте елементи керування для підключених пристроїв"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"Налаштувати елементи керування пристроями"</string> @@ -1104,8 +1110,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"Закрити"</string> <string name="controls_media_resume" msgid="1933520684481586053">"Відновити"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"Налаштування"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"Відтворення"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Неактивно, перейдіть у додаток"</string> <string name="controls_error_retryable" msgid="864025882878378470">"Помилка. Повторна спроба…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Не знайдено"</string> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 702bc7efd36b..491454a40ae0 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"موبائل ہاٹ اسپاٹ کو آف کر دیا گیا۔"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"موبائل ہاٹ اسپاٹ کو آن کر دیا گیا۔"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"اسکرین کو کاسٹ کرنا بند کر دیا۔"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"کام موڈ آف ہے۔"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"کام موڈ آن ہے۔"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"کام موڈ آف ہو گیا۔"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"کام موڈ آن ہو گیا۔"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"ڈیٹا سیور آف ہو گیا۔"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"ڈیٹا سرور آن ہو گیا۔"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> حد"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> وارننگ"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"دفتری پروفائل"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"نائٹ لائٹ"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"غروب آفتاب کے وقت آن ہوگی"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"طلوع آفتاب تک"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"مکمل\nخاموشی"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"صرف\nترجیحی"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"صرف\nالارمز"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • وائرلیس طریقے سے چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> باقی)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • تیزی سے چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> باقی)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • آہستہ چارج ہو رہا ہے (مکمل ہونے میں <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> باقی)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"صارف سوئچ کریں"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"صارف سوئچ کریں، موجودہ صارف <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"موجودہ صارف <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"سبھی دکھائیں"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"ادائیگی کرنے کے لیے غیر مقفل کریں"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"تیار ہے"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"ادائیگی سیٹ اپ کریں"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"استعمال کرنے کے لیے غیر مقفل کریں"</string> <string name="wallet_error_generic" msgid="257704570182963611">"آپ کے کارڈز حاصل کرنے میں ایک مسئلہ درپیش تھا، براہ کرم بعد میں دوبارہ کوشش کریں"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"دفتری پروفائل"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"ہوائی جہاز وضع"</string> <string name="add_tile" msgid="6239678623873086686">"ٹائل شامل کریں"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>اسٹیٹس:</b> کو خاموش پر درجہ بند کیا گیا"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>اسٹیٹس:</b> کو اعلی درجہ دیا گیا"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>اسٹیٹس:</b> کو کم درجہ دیا گیا"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"ترجیحی موڈ آن ہونے پر بھی، ہمیشہ آپ کی اطلاعات کے اوپری حصے میں دکھائی جاتی ہے"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"یہ گفتگو کی اطلاعات کے اوپری حصّے پر اور مقفل اسکرین پر پروفائل کی تصویر کے بطور دکھائی دیتا ہے"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"یہ گفتگو کی اطلاعات کے اوپری حصّے پر اور مقفل اسکرین پر پروفائل کی تصویر کے بطور دکھائی دیتا ہے، بلبلے کے بطور ظاہر ہوتا ہے"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"یہ گفتگو کی اطلاعات کے اوپری حصّے پر اور مقفل اسکرین پر پروفائل کی تصویر کے بطور دکھائی دیتا ہے، \'ڈسٹرب نہ کریں\' میں مداخلت کرتا ہے"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"یہ گفتگو کی اطلاعات کے اوپری حصّے پر اور مقفل اسکرین پر پروفائل کی تصویر کے بطور دکھائی دیتا ہے، بلبلے کے بطور ظاہر ہوتا ہے، \'ڈسٹرب نہ کریں\' میں مداخلت کرتا ہے"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"ترتیبات"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"ترجیحی گفتگوئیں"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"ترجیح"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> گفتگو کی خصوصیات کو سپورٹ نہیں کرتا ہے"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"ان اطلاعات کی ترمیم نہیں کی جا سکتی۔"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"اطلاعات کے اس گروپ کو یہاں کنفیگر نہیں کیا جا سکتا"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"آن"</string> <string name="switch_bar_off" msgid="5669805115416379556">"آف"</string> <string name="tile_unavailable" msgid="3095879009136616920">"غیر دستیاب ہے"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"نیویگیشن بار"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"لے آؤٹ"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"بائيں جانب کی اضافی بٹن کی قسم"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"سسٹم نیویگیشن اپ ڈیٹ کیا گیا۔ تبدیلیاں کرنے کے لیے، ترتیبات پر جائیں۔"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"سسٹم نیویگیشن اپ ڈیٹ کرنے کے لیے ترتیبات پر جائیں"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"اسٹینڈ بائی"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"گفتگو کو ترجیح پر سیٹ کیا گیا"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"ترجیحی گفتگوئیں"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"یہ گفتگوئیں آپ کی فہرست کے اوپری حصے میں دکھائ جاتی ہیں اور جب آپ کا ترجیحی موڈ آن ہوتا ہے تو ہمیشہ آپ تک پہنچ سکتی ہیں"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"پروفائل کی تصاویر مقفل اسکرین پر دکھائی جاتی ہیں"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"آپ ان مکالموں کو آسانی سے اپنی ہوم اسکرین پر بلبلوں میں تلاش کر سکتے ہیں"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"ڈسٹرب نہ کریں میں مداخلت کریں"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"سمجھ آ گئی"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"ترتیبات"</string> <string name="magnification_window_title" msgid="4863914360847258333">"میگنیفکیشن ونڈو"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"میگنیفکیشن ونڈو کنٹرولز"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"زوم ان کریں"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"نیچے دائیں جانب لے جائیں"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"EDGE پر لے جائیں اور چھپائیں"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"EDGE اور شو سے باہر منتقل کریں"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"ٹوگل کریں"</string> <string name="quick_controls_title" msgid="6839108006171302273">"آلہ کے کنٹرولز"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"اپنے منسلک آلات کے لیے کنٹرولز شامل کریں"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"آلہ کے کنٹرولز سیٹ اپ کریں"</string> @@ -1092,8 +1098,7 @@ <string name="controls_media_dismiss_button" msgid="9081375542265132213">"برخاست کریں"</string> <string name="controls_media_resume" msgid="1933520684481586053">"دوبارہ شروع کریں"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"ترتیبات"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"چلائیں"</string> <string name="controls_error_timeout" msgid="794197289772728958">"غیر فعال، ایپ چیک کریں"</string> <string name="controls_error_retryable" msgid="864025882878378470">"خرابی، دوبارہ کوشش کی جا رہی ہے…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"نہیں ملا"</string> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 216a0944fcad..1ba1eed9a2ab 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -289,9 +289,9 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Mobil ulanish nuqtasi o‘chirildi."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Mobil ulanish nuqtasi yoqildi."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ekranni translatsiya qilish to‘xtadi."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Ish rejimi o‘chiq."</string> + <string name="accessibility_quick_settings_work_mode_off" msgid="9106217884005620744">"Ish rejimi pauzada."</string> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Ish rejimi yoniq."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Ish rejimi o‘chirib qo‘yildi."</string> + <string name="accessibility_quick_settings_work_mode_changed_off" msgid="2653550342355027441">"Ish rejimi pauza qilindi."</string> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Ishchi rejim yoqildi."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Trafik tejash rejimi o‘chirib qo‘yildi."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Trafik tejash rejimi yoqildi."</string> @@ -410,6 +410,7 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Cheklov: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Ogohlantirish: <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Ish profili"</string> + <string name="quick_settings_work_mode_paused" msgid="4841109346916998613">"Pauzada"</string> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Tungi rejim"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Kunbotarda yoqish"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Quyosh chiqqunicha"</string> @@ -469,10 +470,10 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Tinchlik\nsaqlansin"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Faqat\nmuhimlar"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Faqat\nsignallar"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Simsiz quvvatlanyapti (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Quvvat olmoqda (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Tez quvvat olmoqda (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sekin quvvat olmoqda (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi)"</string> + <string name="keyguard_indication_charging_time_wireless" msgid="577856646141738675">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Simsiz quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string> + <string name="keyguard_indication_charging_time" msgid="6492711711891071502">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string> + <string name="keyguard_indication_charging_time_fast" msgid="8390311020603859480">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Tez quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string> + <string name="keyguard_indication_charging_time_slowly" msgid="301936949731705417">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Sekin quvvat olmoqda • <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> qoldi"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Foydalanuvchini almashtirish"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Foydalanuvchini o‘zgartirish. Joriy foydalanuvchi – <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Joriy foydalanuvchi <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +669,10 @@ <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Hammasi"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Toʻlov uchun qulfdan chiqarish"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Tayyor"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Toʻlovni sozlash"</string> + <string name="wallet_secondary_label_no_card" msgid="1282609666895946317">"Sozlanmagan"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Foydalanish uchun qulfdan chiqarish"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Bildirgilarni yuklashda xatolik yuz berdi, keyinroq qaytadan urining"</string> + <string name="wallet_lockscreen_settings_label" msgid="3539105300870383570">"Qulflangan ekran sozlamalari"</string> <string name="status_bar_work" msgid="5238641949837091056">"Ish profili"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Parvoz rejimi"</string> <string name="add_tile" msgid="6239678623873086686">"Tezkor sozlamalar tugmasini qo‘shish"</string> @@ -740,9 +741,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Holati:</b> Sokin darajaga tushirildi"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Holati:</b> Yuqori darajaga chiqarildi"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Holati:</b> Quyi darajaga tushirildi"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"“Faqat muhim” rejimi yoniq boʻlsa ham doimo bildirishnomalaringizning tepasida chiqadi"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Suhbat bildirishnomalari tepasida va ekran qulfida profil rasmi sifatida chiqariladi"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Suhbat bildirishnomalari tepasida va ekran qulfida profil rasmi sifatida chiqariladi, bulutcha sifatida chiqadi"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Suhbat bildirishnomalari tepasida va ekran qulfida profil rasmi sifatida chiqariladi, Bezovta qilinmasin rejimini bekor qiladi"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Suhbat bildirishnomalari tepasida va ekran qulfida profil rasmi sifatida chiqariladi, bulutcha sifatida chiqadi, Bezovta qilinmasin rejimini bekor qiladi"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Sozlamalar"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Muhim suhbatlar"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Muhim"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasida suhbat funksiyalari ishlamaydi"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirishnomalarni tahrirlash imkonsiz."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Ushbu bildirishnomalar guruhi bu yerda sozlanmaydi"</string> @@ -858,6 +862,7 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Yoniq"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Yoqilmagan"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Mavjud emas"</string> + <string name="tile_disabled" msgid="373212051546573069">"Faolsizlantirilgan"</string> <string name="nav_bar" msgid="4642708685386136807">"Navigatsiya paneli"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Tugmalar joylashuvi"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Qo‘shimcha Chapga tugmasi turi"</string> @@ -1016,14 +1021,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Tizim navigatsiyasi yangilandi. Buni Sozlamalar orqali oʻzgartirishingiz mumkin."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Tizim navigatsiyasini yangilash uchun Sozlamalarni oching"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Kutib turing"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Suhbat muhim deb belgilandi"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Muhim suhbatlar"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Bu suhbatlar roʻyxat yuqorisida chiqadi va “M|uhim” rejimi yoniq boʻlganda oʻqish mumkin"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Profil rasmlari ekran qulfida chiqadi"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Bu suhbatlarni osongina bosh ekrandagi bulutchalardan topishingiz mumkin"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Bezovta qilinmasin rejimida chiqarish"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Sozlamalar"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Kattalashtirish oynasi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kattalashtirish oynasi sozlamalari"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Yaqinlashtirish"</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index a6a9ace99e4c..902c30f2564b 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"Đã tắt điểm phát sóng di động."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"Đã bật điểm phát sóng di động."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Đã ngừng truyền màn hình."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Chế độ làm việc tắt."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Chế độ làm việc bật."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Chế độ làm việc đã tắt."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Chế độ làm việc đã bật."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Đã tắt Trình tiết kiệm dữ liệu."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Đã bật Trình tiết kiệm dữ liệu."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"Giới hạn <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"Cảnh báo <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Hồ sơ công việc"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Ánh sáng đêm"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Bật khi trời tối"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Cho đến khi trời sáng"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Hoàn toàn\ntắt tiếng"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Chỉ\nưu tiên"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Chỉ\nbáo thức"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc không dây (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> cho tới khi đầy)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> cho tới khi đầy)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc nhanh (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> cho tới khi đầy)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Đang sạc chậm (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> cho tới khi đầy)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Chuyển đổi người dùng"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Chuyển người dùng, người dùng hiện tại <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Người dùng hiện tại <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"Ví"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Hiện tất cả"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Mở khóa để thanh toán"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Sẵn sàng"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Thiết lập phương thức thanh toán"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Mở khóa để sử dụng"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Đã xảy ra sự cố khi tải thẻ của bạn. Vui lòng thử lại sau"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Hồ sơ công việc"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Chế độ máy bay"</string> <string name="add_tile" msgid="6239678623873086686">"Thêm ô"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Trạng thái:</b> Đã thay đổi thành Im lặng"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Trạng thái:</b> Đã tăng mức độ quan trọng"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Trạng thái:</b> Đã giảm mức độ quan trọng"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Luôn hiển thị ở đầu thông báo, ngay cả khi Chế độ ưu tiên đang bật"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Hiện ở đầu phần thông báo cuộc trò chuyện và ở dạng ảnh hồ sơ trên màn hình khóa"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Hiện ở đầu phần thông báo cuộc trò chuyện và ở dạng ảnh hồ sơ trên màn hình khóa, xuất hiện ở dạng bong bóng"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Hiện ở đầu phần thông báo cuộc trò chuyện và ở dạng ảnh hồ sơ trên màn hình khóa, làm gián đoạn chế độ Không làm phiền"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Hiện ở đầu phần thông báo cuộc trò chuyện và ở dạng ảnh hồ sơ trên màn hình khóa, xuất hiện ở dạng bong bóng, làm gián đoạn chế độ Không làm phiền"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Cài đặt"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Cuộc trò chuyện ưu tiên"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Mức độ ưu tiên"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g> không hỗ trợ các tính năng trò chuyện"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Không thể sửa đổi các thông báo này."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Không thể định cấu hình nhóm thông báo này tại đây"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Đang bật"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Đang tắt"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Không có sẵn"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Thanh điều hướng"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Bố cục"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Loại nút bổ sung bên trái"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Đã cập nhật chế độ di chuyển trên hệ thống. Để thay đổi, hãy chuyển đến phần Cài đặt."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Chuyển đến phần Cài đặt để cập nhật chế độ di chuyển trên hệ thống"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Chế độ chờ"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Đặt cuộc trò chuyện thành ưu tiên"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Cuộc trò chuyện ưu tiên"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Các cuộc trò chuyện này hiển thị ở đầu danh sách và luôn trong tầm nhìn của bạn khi Chế độ ưu tiên đang bật"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Ảnh hồ sơ hiển thị trên màn hình khóa"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Bạn có thể dễ dàng tìm thấy những cuộc trò chuyện này trong bong bóng trò chuyện trên Màn hình chính"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Làm gián đoạn chế độ Không làm phiền"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"OK"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Cài đặt"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Cửa sổ phóng to"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Các tùy chọn điều khiển cửa sổ phóng to"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Phóng to"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 04b239ba091a..728e0255b01a 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"移动热点已关闭。"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"移动热点已开启。"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"屏幕投射已停止。"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"工作模式关闭。"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"工作模式开启。"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"工作模式已关闭。"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"工作模式已开启。"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"流量节省程序已关闭。"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"流量节省程序已开启。"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"上限为<xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g>警告"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"工作资料"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"护眼模式"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"在日落时开启"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"在日出时关闭"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"完全\n静音"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"仅限\n优先打扰"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"仅限\n闹钟"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在无线充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在快速充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在慢速充电(还需 <xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>充满)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切换用户"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"切换用户,当前用户为<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"当前用户为<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"电子钱包"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"全部显示"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"解锁设备才能付款"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"已可使用"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"设置付款方式"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"解锁设备即可使用"</string> <string name="wallet_error_generic" msgid="257704570182963611">"获取您的卡片时出现问题,请稍后重试"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"工作资料"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"飞行模式"</string> <string name="add_tile" msgid="6239678623873086686">"添加图块"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>状态</b>:已降低为“静音”"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>状态</b>:已调高顺序"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>状态</b>:已调低顺序"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"始终显示在通知列表的顶部,即使“优先”模式处于开启状态也是如此"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"显示在对话通知顶部(屏幕锁定时显示为个人资料照片)"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"以气泡形式显示在对话通知顶部(屏幕锁定时显示为个人资料照片)"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"显示在对话通知顶部(屏幕锁定时显示为个人资料照片),并且会中断勿扰模式"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"以气泡形式显示在对话通知顶部(屏幕锁定时显示为个人资料照片),并且会中断勿扰模式"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"设置"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"优先对话"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"优先"</string> <string name="no_shortcut" msgid="8257177117568230126">"<xliff:g id="APP_NAME">%1$s</xliff:g>不支持对话功能"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"无法修改这些通知。"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"您无法在此处配置这组通知"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"开启"</string> <string name="switch_bar_off" msgid="5669805115416379556">"关闭"</string> <string name="tile_unavailable" msgid="3095879009136616920">"不可用"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"导航栏"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"布局"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"其他向左按钮类型"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"系统导航已更新。要进行更改,请转到“设置”。"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"转到“设置”即可更新系统导航"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待机"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"已设置为优先对话"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"优先对话"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"“优先”模式处于开启状态时,这些对话会显示在对话列表顶部,并且始终显示在屏幕上"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"个人资料照片会显示在锁定屏幕上"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"这些对话会以对话泡形式显示在主屏幕上,您可以轻松查看"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"中断勿扰模式"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"知道了"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"设置"</string> <string name="magnification_window_title" msgid="4863914360847258333">"放大窗口"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"放大窗口控件"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"放大"</string> @@ -1044,8 +1051,7 @@ <string name="accessibility_floating_button_action_move_bottom_right" msgid="6196904373227440500">"移至右下角"</string> <string name="accessibility_floating_button_action_move_to_edge_and_hide_to_half" msgid="662401168245782658">"移至边缘并隐藏"</string> <string name="accessibility_floating_button_action_move_out_edge_and_show" msgid="8354760891651663326">"移至边缘以外并显示"</string> - <!-- no translation found for accessibility_floating_button_action_double_tap_to_toggle (7976492639670692037) --> - <skip /> + <string name="accessibility_floating_button_action_double_tap_to_toggle" msgid="7976492639670692037">"开启/关闭"</string> <string name="quick_controls_title" msgid="6839108006171302273">"设备控制器"</string> <string name="quick_controls_subtitle" msgid="1667408093326318053">"为您所连接的设备添加控制器"</string> <string name="quick_controls_setup_title" msgid="8901436655997849822">"设置设备控件"</string> @@ -1087,15 +1093,12 @@ <string name="controls_structure_tooltip" msgid="4355922222944447867">"滑动可查看更多结构"</string> <string name="controls_seeding_in_progress" msgid="3033855341410264148">"正在加载推荐内容"</string> <string name="controls_media_title" msgid="1746947284862928133">"媒体"</string> - <!-- no translation found for controls_media_close_session (1193000643003066508) --> - <skip /> - <!-- no translation found for controls_media_active_session (3146882316024153337) --> - <skip /> + <string name="controls_media_close_session" msgid="1193000643003066508">"要隐藏此媒体会话吗?"</string> + <string name="controls_media_active_session" msgid="3146882316024153337">"无法隐藏当前的媒体会话。"</string> <string name="controls_media_dismiss_button" msgid="9081375542265132213">"关闭"</string> <string name="controls_media_resume" msgid="1933520684481586053">"继续播放"</string> <string name="controls_media_settings_button" msgid="5815790345117172504">"设置"</string> - <!-- no translation found for controls_media_smartspace_rec_title (1699818353932537407) --> - <skip /> + <string name="controls_media_smartspace_rec_title" msgid="1699818353932537407">"播放"</string> <string name="controls_error_timeout" msgid="794197289772728958">"无效,请检查应用"</string> <string name="controls_error_retryable" msgid="864025882878378470">"出现错误,正在重试…"</string> <string name="controls_error_removed" msgid="6675638069846014366">"未找到"</string> @@ -1156,6 +1159,5 @@ <string name="accessibility_udfps_disabled_button" msgid="4284034245130239384">"指纹传感器已停用"</string> <string name="accessibility_authenticate_hint" msgid="798914151813205721">"身份验证"</string> <string name="accessibility_enter_hint" msgid="2617864063504824834">"进入设备"</string> - <!-- no translation found for keyguard_try_fingerprint (2825130772993061165) --> - <skip /> + <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"使用指纹即可打开"</string> </resources> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index 51b9a545721e..165ccf9694af 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"流動熱點已關閉。"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"流動熱點已開啟。"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"已停止投放螢幕。"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"工作模式已關閉。"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"工作模式已開啟。"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"已關閉工作模式。"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"已開啟工作模式。"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"已關閉數據節省模式。"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"已開啟數據節省模式。"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"上限為 <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 警告"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"工作設定檔"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"夜間模式"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"在日落時開啟"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"在日出時關閉"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"完全\n靜音"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"僅限\n優先"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"僅限\n鬧鐘"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 無線充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成充電)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成充電)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在快速充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成充電)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 正在慢速充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後完成)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"切換使用者,目前使用者是<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"目前的使用者是 <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"電子錢包"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"顯示全部"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"解鎖裝置才能付款"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"準備就緒"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"設定付款方法"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"解鎖即可使用"</string> <string name="wallet_error_generic" msgid="257704570182963611">"擷取資訊卡時發生問題,請稍後再試。"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"工作設定檔"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"飛行模式"</string> <string name="add_tile" msgid="6239678623873086686">"加入圖塊"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>狀態:</b>已降低為靜音"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>狀態:</b>已提高次序"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>狀態:</b>已調低次序"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"無論是否開啟「優先」模式,一律在通知頂端顯示"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"顯示在對話通知頂部 (在上鎖畫面會顯示為個人檔案相片)"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"以對話氣泡形式顯示在對話通知頂部 (在上鎖畫面會顯示為個人檔案相片)"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"顯示在對話通知頂部 (在上鎖畫面會顯示為個人檔案相片),並會中斷「請勿打擾」模式"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"以對話氣泡形式顯示在對話通知頂部 (在上鎖畫面會顯示為個人檔案相片),並會中斷「請勿打擾」模式"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"設定"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"優先對話"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"優先"</string> <string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在此設定這組通知"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"開啟"</string> <string name="switch_bar_off" msgid="5669805115416379556">"關閉"</string> <string name="tile_unavailable" msgid="3095879009136616920">"無法使用"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"導覽列"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"配置"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"其他向左按鈕類型"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"系統導覽已更新。如需變更,請前往「設定」。"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"前往「設定」更新系統導覽"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待機"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"對話已設為優先"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"優先對話"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"開啟「優先」模式後,這些對話會顯示在清單頂端,讓您一眼就能看見"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"上鎖畫面會顯示個人檔案相片"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"主畫面上會以對話氣泡顯示這些對話,讓您一眼就能看見"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"中斷「請勿騷擾」"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"知道了"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"設定"</string> <string name="magnification_window_title" msgid="4863914360847258333">"放大視窗"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"放大視窗控制項"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"放大"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 8a93729c1e34..8e2ecda4343d 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"可攜式無線基地台已關閉。"</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"可攜式無線基地台已開啟。"</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"已停止投放螢幕。"</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"工作模式已關閉。"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"工作模式已開啟。"</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"工作模式已關閉。"</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"工作模式已開啟。"</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"數據節省模式已關閉。"</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"數據節省模式已開啟。"</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"上限為 <xliff:g id="DATA_LIMIT">%s</xliff:g>"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> 警告"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"工作資料夾"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"夜燈"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"於日落時開啟"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"於日出時關閉"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"完全\n靜音"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"僅允許\n優先通知"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"僅允許\n鬧鐘"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 無線充電 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 快速充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • 慢速充電中 (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g>後充飽)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"切換使用者"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"切換使用者,目前使用者是<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"目前使用者是「<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>」"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"電子錢包"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"顯示全部"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"解鎖裝置才能付款"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"已可使用"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"設定付款方式"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"解鎖即可使用"</string> <string name="wallet_error_generic" msgid="257704570182963611">"擷取卡片時發生問題,請稍後再試"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"工作資料夾"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"飛航模式"</string> <string name="add_tile" msgid="6239678623873086686">"新增圖塊"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>狀態:</b>已降低為靜音"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>狀態:</b>已調高順序"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>狀態:</b>已調降順序"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"一律顯示在通知頂端 (無論是否開啟「優先」模式)"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"顯示在對話通知頂端 (螢幕鎖定時會顯示為個人資料相片)"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"以對話框的形式顯示在對話通知頂端 (螢幕鎖定時會顯示為個人資料相片)"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"顯示在對話通知頂端 (螢幕鎖定時會顯示為個人資料相片),並會中斷「零打擾」模式"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"以對話框的形式顯示在對話通知頂端 (螢幕鎖定時會顯示為個人資料相片),並會中斷「零打擾」模式"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"設定"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"優先對話"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"優先"</string> <string name="no_shortcut" msgid="8257177117568230126">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」不支援對話功能"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在這裡設定這個通知群組"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"開啟"</string> <string name="switch_bar_off" msgid="5669805115416379556">"關閉"</string> <string name="tile_unavailable" msgid="3095879009136616920">"無法使用"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"導覽列"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"配置"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"其他向左按鈕類型"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"系統操作機制已更新。如要進行變更,請前往「設定」。"</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"請前往「設定」更新系統操作機制"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待機"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"對話已設為優先"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"優先對話"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"開啟「優先」模式後,這些對話會顯示在清單頂端,讓你一眼就能看見"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"螢幕鎖定畫面上會顯示個人資料相片"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"主畫面上會以對話框形式顯示這些對話,讓你一眼就能看見"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"中斷零打擾模式"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"我知道了"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"設定"</string> <string name="magnification_window_title" msgid="4863914360847258333">"放大視窗"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"放大視窗控制項"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"放大"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 674a7c843f5f..1c70acc18722 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -289,9 +289,11 @@ <string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"I-hotspot ivaliwe."</string> <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"I-hotspot ivuliwe."</string> <string name="accessibility_casting_turned_off" msgid="1387906158563374962">"Ukusakaza kwesikrini kumisiwe."</string> - <string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"Imodi yomsebenzi ivaliwe."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_off (9106217884005620744) --> + <skip /> <string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"Imodi yomsebenzi ivuliwe."</string> - <string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"Imodi yomsebenzi ivaliwe."</string> + <!-- no translation found for accessibility_quick_settings_work_mode_changed_off (2653550342355027441) --> + <skip /> <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"Imodi yomsebenzi ivuliwe."</string> <string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"Iseva yedatha ivaliwe."</string> <string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"Iseva yedatha ivuliwe."</string> @@ -410,6 +412,8 @@ <string name="quick_settings_cellular_detail_data_limit" msgid="1791389609409211628">"<xliff:g id="DATA_LIMIT">%s</xliff:g> umkhawulo"</string> <string name="quick_settings_cellular_detail_data_warning" msgid="7957253810481086455">"<xliff:g id="DATA_LIMIT">%s</xliff:g> isexwayiso"</string> <string name="quick_settings_work_mode_label" msgid="2754212289804324685">"Iphrofayela yomsebenzi"</string> + <!-- no translation found for quick_settings_work_mode_paused (4841109346916998613) --> + <skip /> <string name="quick_settings_night_display_label" msgid="8180030659141778180">"Ukukhanya kwasebusuku"</string> <string name="quick_settings_night_secondary_label_on_at_sunset" msgid="3358706312129866626">"Kuvulwe ekushoneni kwelanga"</string> <string name="quick_settings_night_secondary_label_until_sunrise" msgid="4063448287758262485">"Kuze kube sekuphumeni kwelanga"</string> @@ -469,10 +473,14 @@ <string name="interruption_level_none_twoline" msgid="8579382742855486372">"Ukuthula\niokuphelele"</string> <string name="interruption_level_priority_twoline" msgid="8523482736582498083">"Okubalulekile\nkuphela"</string> <string name="interruption_level_alarms_twoline" msgid="2045067991335708767">"Ama-alamu\nkuphela"</string> - <string name="keyguard_indication_charging_time_wireless" msgid="7343602278805644915">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ishaja ngokungenantambo (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> kuze kugcwale)"</string> - <string name="keyguard_indication_charging_time" msgid="4927557805886436909">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Iyashaja (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ize igcwale)"</string> - <string name="keyguard_indication_charging_time_fast" msgid="7895986003578341126">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • ishaja kaningi (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ize igcwale)"</string> - <string name="keyguard_indication_charging_time_slowly" msgid="245442950133408398">"<xliff:g id="PERCENTAGE">%2$s</xliff:g> • Ishaja kancane (<xliff:g id="CHARGING_TIME_LEFT">%1$s</xliff:g> ize igcwale)"</string> + <!-- no translation found for keyguard_indication_charging_time_wireless (577856646141738675) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time (6492711711891071502) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_fast (8390311020603859480) --> + <skip /> + <!-- no translation found for keyguard_indication_charging_time_slowly (301936949731705417) --> + <skip /> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"Shintsha umsebenzisi"</string> <string name="accessibility_multi_user_switch_switcher_with_current" msgid="5759855008166759399">"Shintsha umsebenzisi, umsebenzisi wamanje ngu-<xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> <string name="accessibility_multi_user_switch_inactive" msgid="383168614528618402">"Umsebenzisi wamanje <xliff:g id="CURRENT_USER_NAME">%s</xliff:g>"</string> @@ -668,10 +676,12 @@ <string name="wallet_title" msgid="5369767670735827105">"I-wallet"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"Bonisa konke"</string> <string name="wallet_action_button_label_unlock" msgid="8663239748726774487">"Vula ukuze ukhokhele"</string> - <string name="wallet_secondary_label_active" msgid="4909706168969888137">"Isikulungele"</string> - <string name="wallet_secondary_label_no_card" msgid="1750103386908123401">"Setha inkokhelo"</string> + <!-- no translation found for wallet_secondary_label_no_card (1282609666895946317) --> + <skip /> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"Vula ukuze usebenzise"</string> <string name="wallet_error_generic" msgid="257704570182963611">"Kube khona inkinga yokuthola amakhadi akho, sicela uzame futhi ngemuva kwesikhathi"</string> + <!-- no translation found for wallet_lockscreen_settings_label (3539105300870383570) --> + <skip /> <string name="status_bar_work" msgid="5238641949837091056">"Iphrofayela yomsebenzi"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"Imodi yendiza"</string> <string name="add_tile" msgid="6239678623873086686">"Engeza ithayili"</string> @@ -740,9 +750,12 @@ <string name="notification_channel_summary_automatic_silenced" msgid="7403004439649872047">"<b>Isimo:</b> Sehliselwe Kokuthulile"</string> <string name="notification_channel_summary_automatic_promoted" msgid="1301710305149590426">"<b>Isimo:</b> Silinganiselwe phezulu"</string> <string name="notification_channel_summary_automatic_demoted" msgid="1831303964660807700">"<b>Isimo:</b> Silinganiselwe phansi"</string> - <string name="notification_channel_summary_priority" msgid="4592979359953954258">"Iboniswa phezulu njalo ezazisweni zakho, ngisho nalapho kuvulwe imodi Ebalulekile"</string> + <string name="notification_channel_summary_priority_baseline" msgid="46674690072551234">"Ivela phezu kwezaziso zengxoxo nanjengesithombe sephrofayela esikrinini sokukhiya"</string> + <string name="notification_channel_summary_priority_bubble" msgid="1275413109619074576">"Ivela phezu kwezaziso zengxoxo futhi njengesithombe sephrofayela esikrinini sokukhiya, ivela njengebhamuza"</string> + <string name="notification_channel_summary_priority_dnd" msgid="6665395023264154361">"Ivela phezu kwezaziso zengxoxo futhi njengesithombe sephrofayela esikrinini sokukhiya, ukuphazamisa okuthi Ungaphazamisi"</string> + <string name="notification_channel_summary_priority_all" msgid="7151752959650048285">"Ivela phezu kwezaziso zengxoxo futhi njengesithombe sephrofayela esikrinini sokukhiya, ivela njengebhamuza, ukuphazamisa okuthi Ungaphazamisi"</string> <string name="notification_conversation_channel_settings" msgid="2409977688430606835">"Izilungiselelo"</string> - <string name="notification_priority_title" msgid="5256226572739882190">"Izingxoxo ezibalulekile"</string> + <string name="notification_priority_title" msgid="2079708866333537093">"Okubalulekile"</string> <string name="no_shortcut" msgid="8257177117568230126">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayisekeli izici zengxoxo"</string> <string name="notification_unblockable_desc" msgid="2073030886006190804">"Lezi zaziso azikwazi ukushintshwa."</string> <string name="notification_multichannel_desc" msgid="7414593090056236179">"Leli qembu lezaziso alikwazi ukulungiselelwa lapha"</string> @@ -858,6 +871,8 @@ <string name="switch_bar_on" msgid="1770868129120096114">"Vuliwe"</string> <string name="switch_bar_off" msgid="5669805115416379556">"Valiwe"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Akutholakali"</string> + <!-- no translation found for tile_disabled (373212051546573069) --> + <skip /> <string name="nav_bar" msgid="4642708685386136807">"Ibha yokuzula"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"Isakhiwo"</string> <string name="left_nav_bar_button_type" msgid="2634852842345192790">"Uhlobo lwenkinobho engakwesokunxele engeziwe"</string> @@ -1016,14 +1031,6 @@ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Ukuzulazula kwesistimu kubuyekeziwe. Ukuze wenze ushintsho, hamba kokuthi Izilungiselelo."</string> <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Hamba kuzilungiselelo ukuze ubuyekeze ukuzulazula kwesistimu"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ilindile"</string> - <string name="priority_onboarding_title" msgid="2893070698479227616">"Izingxoxo zisethwe kweziza kuqala"</string> - <string name="priority_onboarding_behavior" msgid="636826237468953117">"Izingxoxo ezibalulekile"</string> - <string name="priority_onboarding_show_at_top_text" msgid="3861580571311518785">"Lezi zingxoxo ziboniswe phezulu ohlwini lwakho futhi zingafinyelela kuwe njalo lapho imodi Ebalulekile ivuliwe"</string> - <string name="priority_onboarding_show_avatar_text" msgid="1781653813573865071">"Izithombe zephrofayela ziboniswe esikrinini esikhiyiwe"</string> - <string name="priority_onboarding_appear_as_bubble_text" msgid="4359924720680083057">"Ungathola lezi zingxoxo kalula emabhamuzeni esikrinini sakho Sasekhaya"</string> - <string name="priority_onboarding_ignores_dnd_text" msgid="2918952762719600529">"Thikameza Ukungaphazamisi"</string> - <string name="priority_onboarding_done_button_title" msgid="4569550984286506007">"Ngiyezwa"</string> - <string name="priority_onboarding_settings_button_title" msgid="6663601574303585927">"Amasethingi"</string> <string name="magnification_window_title" msgid="4863914360847258333">"Iwindi Lesikhulisi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Izilawuli Zewindi Lesikhulisi"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Sondeza"</string> diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index ee25a1059d63..08a2e196214c 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -255,7 +255,6 @@ <!-- media --> <color name="media_disabled">#80ffffff</color> <color name="media_seamless_border">?android:attr/colorAccent</color> - <color name="media_divider">#1d000000</color> <!-- controls --> <color name="control_primary_text">#E6FFFFFF</color> @@ -280,7 +279,7 @@ <color name="screenrecord_status_color">#E94235</color> - <color name="privacy_circle">#5BB974</color> <!-- g400 --> + <color name="privacy_chip_background">#3ddc84</color> <!-- Accessibility floating menu --> <color name="accessibility_floating_menu_background">#CCFFFFFF</color> <!-- 80% --> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 120b3f8afd5d..d4dbcf969a73 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -148,6 +148,9 @@ <!-- Minimum display time for a heads up notification, in milliseconds. --> <integer name="heads_up_notification_minimum_time">2000</integer> + <!-- Whether to hide the notification header when the HUN is expanded. --> + <bool name="heads_up_notification_hides_header">false</bool> + <!-- The number of milliseconds before the heads up notification accepts touches. --> <integer name="touch_acceptance_delay">700</integer> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index edd8486379a2..c60ec78053ee 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -549,13 +549,16 @@ (Toolbar_minWidth (56dp) + qs_tile_margin_top_bottom (4dp)) --> <dimen name="qs_customize_header_min_height">54dp</dimen> + <dimen name="qs_customize_internal_side_paddings">8dp</dimen> <dimen name="qs_tile_margin_top">18dp</dimen> <dimen name="qs_tile_icon_background_stroke_width">-1dp</dimen> <dimen name="qs_tile_background_size">56dp</dimen> <dimen name="qs_icon_size">20dp</dimen> <dimen name="qs_label_container_margin">10dp</dimen> <dimen name="qs_quick_tile_size">60dp</dimen> - <dimen name="qs_quick_tile_padding">12dp</dimen> + <dimen name="qs_tile_padding">12dp</dimen> + <dimen name="qs_tile_start_padding">16dp</dimen> + <dimen name="qs_drawable_end_margin">4dp</dimen> <dimen name="qs_header_gear_translation">16dp</dimen> <dimen name="qs_header_tile_margin_bottom">18dp</dimen> <dimen name="qs_page_indicator_width">16dp</dimen> @@ -564,8 +567,6 @@ Scaled @dimen/qs_page_indicator-width by .4f. --> <dimen name="qs_page_indicator_dot_width">6.4dp</dimen> - <dimen name="qs_tile_side_label_padding">12dp</dimen> - <dimen name="qs_tile_icon_size">24dp</dimen> <dimen name="qs_tile_text_size">14sp</dimen> <dimen name="qs_tile_divider_height">1dp</dimen> <dimen name="qs_panel_padding">16dp</dimen> @@ -616,7 +617,7 @@ <dimen name="qs_footer_padding">20dp</dimen> <dimen name="qs_security_footer_height">88dp</dimen> <dimen name="qs_security_footer_single_line_height">48dp</dimen> - <dimen name="qs_security_footer_vertical_margin">8dp</dimen> + <dimen name="qs_footers_margin_bottom">8dp</dimen> <dimen name="qs_security_footer_background_inset">0dp</dimen> <dimen name="qs_security_footer_corner_radius">28dp</dimen> @@ -1483,6 +1484,7 @@ <!-- Wallet activity screen specs --> <dimen name="wallet_icon_size">36sp</dimen> + <dimen name="wallet_view_header_icon_size">56dp</dimen> <dimen name="card_margin">16dp</dimen> <dimen name="card_carousel_dot_offset">24dp</dimen> <dimen name="card_carousel_dot_unselected_radius">2dp</dimen> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index d9cc24fa38ef..30add200a152 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -690,11 +690,11 @@ <!-- Announcement made when the screen stopped casting (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_casting_turned_off">Screen casting stopped.</string> <!-- Content description of the work mode title in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] --> - <string name="accessibility_quick_settings_work_mode_off">Work mode off.</string> + <string name="accessibility_quick_settings_work_mode_off">Work mode paused.</string> <!-- Content description of the work mode title in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_quick_settings_work_mode_on">Work mode on.</string> <!-- Announcement made when the work mode changes to off (not shown on the screen). [CHAR LIMIT=NONE] --> - <string name="accessibility_quick_settings_work_mode_changed_off">Work mode turned off.</string> + <string name="accessibility_quick_settings_work_mode_changed_off">Work mode turned paused.</string> <!-- Announcement made when the work mode changes to on (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_quick_settings_work_mode_changed_on">Work mode turned on.</string> <!-- Announcement made when the Data Saver changes to off (not shown on the screen). [CHAR LIMIT=NONE] --> @@ -954,6 +954,8 @@ off. "Work profile" means a separate profile on a user's phone that's specifically for their work apps and managed by their company. "Work" is used as an adjective. [CHAR LIMIT=NONE] --> <string name="quick_settings_work_mode_label">Work profile</string> + <!-- QuickSettings: Secondary label for work mode tile when it's off. [CHAR LIMIT=NONE] --> + <string name="quick_settings_work_mode_paused">Paused</string> <!-- QuickSettings: Label for the toggle to activate Night display (renamed "Night Light" with title caps). [CHAR LIMIT=20] --> <string name="quick_settings_night_display_label">Night Light</string> <!-- QuickSettings: Secondary text for when the Night Light will be enabled at sunset. [CHAR LIMIT=20] --> @@ -1113,16 +1115,16 @@ <string name="interruption_level_alarms_twoline">Alarms\nonly</string> <!-- Indication on the keyguard that is shown when the device is wirelessly charging. [CHAR LIMIT=80]--> - <string name="keyguard_indication_charging_time_wireless"><xliff:g id="percentage" example="20%">%2$s</xliff:g> • Charging wirelessly (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%1$s</xliff:g> until full)</string> + <string name="keyguard_indication_charging_time_wireless"><xliff:g id="percentage" example="20%">%2$s</xliff:g> • Charging wirelessly • Full in <xliff:g id="charging_time_left" example="4 hr, 2 min">%1$s</xliff:g></string> <!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=50]--> - <string name="keyguard_indication_charging_time"><xliff:g id="percentage">%2$s</xliff:g> • Charging (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%1$s</xliff:g> until full)</string> + <string name="keyguard_indication_charging_time"><xliff:g id="percentage">%2$s</xliff:g> • Charging • Full in <xliff:g id="charging_time_left" example="4 hr, 2 min">%1$s</xliff:g></string> <!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=50]--> - <string name="keyguard_indication_charging_time_fast"><xliff:g id="percentage">%2$s</xliff:g> • Charging rapidly (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%1$s</xliff:g> until full)</string> + <string name="keyguard_indication_charging_time_fast"><xliff:g id="percentage">%2$s</xliff:g> • Charging rapidly • Full in <xliff:g id="charging_time_left" example="4 hr, 2 min">%1$s</xliff:g></string> <!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=50]--> - <string name="keyguard_indication_charging_time_slowly"><xliff:g id="percentage">%2$s</xliff:g> • Charging slowly (<xliff:g id="charging_time_left" example="4 hours and 2 minutes">%1$s</xliff:g> until full)</string> + <string name="keyguard_indication_charging_time_slowly"><xliff:g id="percentage">%2$s</xliff:g> • Charging slowly • Full in <xliff:g id="charging_time_left" example="4 hr, 2 min">%1$s</xliff:g></string> <!-- Related to user switcher --><skip/> @@ -1656,14 +1658,14 @@ <string name="wallet_app_button_label">Show all</string> <!-- Label of the button underneath the card carousel prompting user unlock device. [CHAR LIMIT=NONE] --> <string name="wallet_action_button_label_unlock">Unlock to pay</string> - <!-- Secondary label of the quick access wallet tile if active. [CHAR LIMIT=32] --> - <string name="wallet_secondary_label_active">Ready</string> <!-- Secondary label of the quick access wallet tile if no card. [CHAR LIMIT=NONE] --> - <string name="wallet_secondary_label_no_card">Set up payment</string> + <string name="wallet_secondary_label_no_card">Not set up</string> <!-- Secondary label of the quick access wallet tile if device locked. [CHAR LIMIT=NONE] --> <string name="wallet_secondary_label_device_locked">Unlock to use</string> <!-- Message shown when an unknown failure occurred when fetching cards. [CHAR LIMIT=NONE] --> <string name="wallet_error_generic">There was a problem getting your cards, please try again later</string> + <!-- Overflow menu item label to open the lockscreen settings in wallet activity. [CHAR LIMIT=NONE] --> + <string name="wallet_lockscreen_settings_label">Lock screen settings</string> <!-- Name of the work status bar icon. --> <string name="status_bar_work">Work profile</string> @@ -2187,6 +2189,9 @@ <!-- The tile in quick settings is unavailable. [CHAR LIMIT=32] --> <string name="tile_unavailable">Unavailable</string> + <!-- The tile in quick settings is disabled by a device administration policy [CHAR LIMIT=32] --> + <string name="tile_disabled">Disabled</string> + <!-- SysUI Tuner: Button that leads to the navigation bar customization screen [CHAR LIMIT=60] --> <string name="nav_bar">Navigation bar</string> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index aa1f954cb27a..10f7e4019867 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -14,8 +14,8 @@ limitations under the License. --> -<resources xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + <!-- NOTE: Adding the androidprv: namespace to this file will break the studio build. --> <style name="ClearAllButtonDefaultMargins"> <item name="android:layout_marginStart">0dp</item> <item name="android:layout_marginTop">0dp</item> @@ -226,13 +226,21 @@ <item name="android:textSize">@dimen/qs_tile_text_size</item> </style> - <style name="TextAppearance.QS.Status" parent="TextAppearance.QS.TileLabel.Secondary"> - <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item> - <item name="android:textColor">@color/dark_mode_qs_icon_color_single_tone</item> + <style name="TextAppearance.QS.Status"> + <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item> + <item name="android:textColor">?android:attr/textColorPrimary</item> + <item name="android:textSize">14sp</item> + <item name="android:letterSpacing">0.01</item> + <item name="android:lineHeight">20sp</item> + </style> + + <style name="TextAppearance.QS.Status.NoCarrierText"> + <item name="android:textColor">?android:attr/textColorTertiary</item> </style> <style name="TextAppearance.QS.Build"> <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item> + <item name="android:textColor">?android:attr/textColorSecondary</item> <item name="android:textSize">14sp</item> </style> @@ -334,7 +342,6 @@ <item name="wallpaperTextColorSecondary">@*android:color/secondary_text_material_dark</item> <item name="wallpaperTextColorAccent">@*android:color/system_accent1_100</item> <item name="android:colorError">@*android:color/error_color_material_dark</item> - <item name="android:colorControlHighlight">@*android:color/primary_text_material_dark</item> <item name="*android:lockPatternStyle">@style/LockPatternStyle</item> <item name="passwordStyle">@style/PasswordTheme</item> <item name="numPadKeyStyle">@style/NumPadKey</item> @@ -351,7 +358,6 @@ <item name="wallpaperTextColorSecondary">@*android:color/secondary_text_material_light</item> <item name="wallpaperTextColorAccent">@*android:color/system_accent2_600</item> <item name="android:colorError">@*android:color/error_color_material_light</item> - <item name="android:colorControlHighlight">#40000000</item> <item name="shadowRadius">0</item> <!-- Needed for MediaRoute chooser dialog --> @@ -389,7 +395,6 @@ <style name="Theme.SystemUI.QuickSettings" parent="@*android:style/Theme.DeviceDefault"> <item name="lightIconTheme">@style/QSIconTheme</item> <item name="darkIconTheme">@style/QSIconTheme</item> - <item name="android:textColor">?android:attr/textColorPrimary</item> <item name="android:colorError">@*android:color/error_color_material_dark</item> <item name="android:windowIsFloating">true</item> <item name="android:homeAsUpIndicator">@drawable/ic_arrow_back</item> @@ -632,12 +637,14 @@ <item name="android:background">@drawable/qs_media_light_source</item> <item name="android:tint">?android:attr/textColorPrimary</item> <item name="android:stateListAnimator">@anim/media_button_state_list_animator</item> + <item name="android:padding">12dp</item> + <item name="android:scaleType">fitCenter</item> </style> <style name="MediaPlayer.OutlineButton"> <item name="android:background">@drawable/qs_media_button_background</item> <item name="android:textColor">?android:attr/textColorPrimary</item> - <item name="android:backgroundTint">?androidprv:attr/colorAccentPrimaryVariant</item> + <item name="android:backgroundTint">@color/media_player_outline_button_bg</item> <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item> </style> @@ -654,7 +661,7 @@ </style> <style name="MediaPlayer.Album"> - <item name="android:backgroundTint">?androidprv:attr/colorAccentSecondary</item> + <item name="android:backgroundTint">@color/media_player_album_bg</item> </style> diff --git a/packages/SystemUI/res/xml/media_collapsed.xml b/packages/SystemUI/res/xml/media_collapsed.xml index 9bd462e66e3b..bdb8c049b861 100644 --- a/packages/SystemUI/res/xml/media_collapsed.xml +++ b/packages/SystemUI/res/xml/media_collapsed.xml @@ -40,10 +40,7 @@ app:layout_constrainedWidth="true" app:layout_constraintWidth_min="48dp" app:layout_constraintHeight_min="48dp" - android:paddingTop="@dimen/qs_media_padding" - android:paddingEnd="@dimen/qs_media_padding" android:layout_marginStart="@dimen/qs_center_guideline_padding" - android:layout_marginBottom="4dp" /> <Constraint @@ -125,10 +122,9 @@ <Constraint android:id="@+id/action0" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_padding" android:layout_marginEnd="@dimen/qs_media_action_spacing" - android:layout_marginTop="@dimen/qs_media_action_spacing" android:visibility="gone" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" @@ -142,10 +138,9 @@ <Constraint android:id="@+id/action1" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_action_spacing" - android:layout_marginTop="@dimen/qs_media_action_spacing" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action0" @@ -156,10 +151,9 @@ <Constraint android:id="@+id/action2" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_action_spacing" - android:layout_marginTop="@dimen/qs_media_action_spacing" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action1" @@ -170,10 +164,9 @@ <Constraint android:id="@+id/action3" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_action_spacing" - android:layout_marginTop="@dimen/qs_media_action_spacing" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/action2" @@ -184,11 +177,10 @@ <Constraint android:id="@+id/action4" android:layout_width="48dp" - android:layout_height="48dp" + android:layout_height="56dp" android:layout_marginStart="@dimen/qs_media_action_spacing" android:layout_marginEnd="@dimen/qs_media_padding" android:visibility="gone" - android:layout_marginTop="@dimen/qs_media_action_spacing" app:layout_constraintHorizontal_chainStyle="packed" app:layout_constraintTop_toBottomOf="@id/center_horizontal_guideline" app:layout_constraintBottom_toBottomOf="parent" diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl index 114472b15f02..277b2e31f7be 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/IOverviewProxy.aidl @@ -75,4 +75,10 @@ oneway interface IOverviewProxy { * Sent when the split screen is resized */ void onSplitScreenSecondaryBoundsChanged(in Rect bounds, in Rect insets) = 17; + + /** + * Sent IME status changes + */ + void onImeWindowStatusChanged(int displayId, IBinder token, int vis, int backDisposition, + boolean showImeSwitcher) = 18; } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/tracing/FrameProtoTracer.java b/packages/SystemUI/shared/src/com/android/systemui/shared/tracing/FrameProtoTracer.java index 356e0ca7193c..4394ecbf79eb 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/tracing/FrameProtoTracer.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/tracing/FrameProtoTracer.java @@ -49,7 +49,7 @@ public class FrameProtoTracer<P, S extends P, T extends P, R> private final TraceBuffer<P, S, T> mBuffer; private final File mTraceFile; private final ProtoTraceParams<P, S, T, R> mParams; - private final Choreographer mChoreographer; + private Choreographer mChoreographer; private final Queue<T> mPool = new LinkedList<>(); private final ArrayList<ProtoTraceable<R>> mTraceables = new ArrayList<>(); private final ArrayList<ProtoTraceable<R>> mTmpTraceables = new ArrayList<>(); @@ -94,7 +94,6 @@ public class FrameProtoTracer<P, S extends P, T extends P, R> } }); mTraceFile = params.getTraceFile(); - mChoreographer = Choreographer.getMainThreadInstance(); } public void start() { @@ -140,6 +139,9 @@ public class FrameProtoTracer<P, S extends P, T extends P, R> } // Schedule an update on the next frame + if (mChoreographer == null) { + mChoreographer = Choreographer.getMainThreadInstance(); + } mChoreographer.postFrameCallback(this); mFrameScheduled = true; } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java index e92cae4506fc..4b71a3a8fbdc 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java @@ -25,7 +25,6 @@ import android.app.smartspace.SmartspaceConfig; import android.app.smartspace.SmartspaceManager; import android.app.smartspace.SmartspaceSession; import android.app.smartspace.SmartspaceTarget; -import android.content.Context; import android.content.Intent; import android.content.pm.UserInfo; import android.content.res.Resources; @@ -45,7 +44,6 @@ import com.android.internal.colorextraction.ColorExtractor; import com.android.keyguard.clock.ClockManager; import com.android.settingslib.Utils; import com.android.systemui.R; -import com.android.systemui.SystemUIFactory; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.Main; @@ -69,6 +67,7 @@ import com.android.systemui.util.ViewController; import com.android.systemui.util.settings.SecureSettings; import java.util.Locale; +import java.util.Optional; import java.util.TimeZone; import java.util.concurrent.Executor; @@ -89,7 +88,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS private final Executor mUiExecutor; private final BatteryController mBatteryController; private final FeatureFlags mFeatureFlags; - private final SystemUIFactory mSystemUIFactory; /** * Clock for both small and large sizes @@ -113,7 +111,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS private boolean mShowSensitiveContentForCurrentUser; private boolean mShowSensitiveContentForManagedUser; private UserHandle mManagedUserHandle; - private UserTracker.Callback mUserTrackerCallback; /** * Listener for changes to the color palette. @@ -152,6 +149,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS // If set, will replace keyguard_status_area private BcSmartspaceDataPlugin.SmartspaceView mSmartspaceView; + private Optional<BcSmartspaceDataPlugin> mSmartspacePlugin; @Inject public KeyguardClockSwitchController( @@ -165,14 +163,14 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS @Main Executor uiExecutor, BatteryController batteryController, ConfigurationController configurationController, - SystemUIFactory systemUIFactory, ActivityStarter activityStarter, FalsingManager falsingManager, KeyguardUpdateMonitor keyguardUpdateMonitor, KeyguardBypassController bypassController, @Main Handler handler, UserTracker userTracker, - SecureSettings secureSettings) { + SecureSettings secureSettings, + Optional<BcSmartspaceDataPlugin> smartspacePlugin) { super(keyguardClockSwitch); mStatusBarStateController = statusBarStateController; mColorExtractor = colorExtractor; @@ -184,7 +182,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mUiExecutor = uiExecutor; mBatteryController = batteryController; mConfigurationController = configurationController; - mSystemUIFactory = systemUIFactory; mActivityStarter = activityStarter; mFalsingManager = falsingManager; mKeyguardUpdateMonitor = keyguardUpdateMonitor; @@ -192,6 +189,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mHandler = handler; mUserTracker = userTracker; mSecureSettings = secureSettings; + mSmartspacePlugin = smartspacePlugin; } /** @@ -237,8 +235,8 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mStatusBarStateController.addCallback(mStatusBarStateListener); mConfigurationController.addCallback(mConfigurationListener); - BcSmartspaceDataPlugin smartspaceDataPlugin = mSystemUIFactory.getSmartspaceDataProvider(); - if (mFeatureFlags.isSmartspaceEnabled() && smartspaceDataPlugin != null) { + if (mFeatureFlags.isSmartspaceEnabled() && mSmartspacePlugin.isPresent()) { + BcSmartspaceDataPlugin smartspaceDataPlugin = mSmartspacePlugin.get(); View ksa = mView.findViewById(R.id.keyguard_status_area); int ksaIndex = mView.indexOfChild(ksa); ksa.setVisibility(View.GONE); @@ -294,13 +292,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS } }; - mUserTrackerCallback = new UserTracker.Callback() { - public void onUserChanged(int newUser, Context userContext) { - reloadSmartspace(); - } - }; - mUserTracker.addCallback(mUserTrackerCallback, mUiExecutor); - getContext().getContentResolver().registerContentObserver( Settings.Secure.getUriFor( Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS), @@ -376,10 +367,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS if (mSettingsObserver != null) { getContext().getContentResolver().unregisterContentObserver(mSettingsObserver); } - - if (mUserTrackerCallback != null) { - mUserTracker.removeCallback(mUserTrackerCallback); - } } /** diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java index 3d42da2e5158..97d3a5a4cd18 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java @@ -28,7 +28,6 @@ import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.systemui.R; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.statusbar.FeatureFlags; import com.android.systemui.util.ViewController; import com.android.systemui.util.concurrency.DelayableExecutor; @@ -167,7 +166,6 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> private final TelephonyManager mTelephonyManager; private final EmergencyButtonController.Factory mEmergencyButtonControllerFactory; private final FalsingCollector mFalsingCollector; - private final boolean mIsNewLayoutEnabled; @Inject public Factory(KeyguardUpdateMonitor keyguardUpdateMonitor, @@ -177,8 +175,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> InputMethodManager inputMethodManager, @Main DelayableExecutor mainExecutor, @Main Resources resources, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, - EmergencyButtonController.Factory emergencyButtonControllerFactory, - FeatureFlags featureFlags) { + EmergencyButtonController.Factory emergencyButtonControllerFactory) { mKeyguardUpdateMonitor = keyguardUpdateMonitor; mLockPatternUtils = lockPatternUtils; mLatencyTracker = latencyTracker; @@ -190,7 +187,6 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> mTelephonyManager = telephonyManager; mEmergencyButtonControllerFactory = emergencyButtonControllerFactory; mFalsingCollector = falsingCollector; - mIsNewLayoutEnabled = featureFlags.isKeyguardLayoutEnabled(); } /** Create a new {@link KeyguardInputViewController}. */ @@ -216,20 +212,19 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> return new KeyguardPinViewController((KeyguardPINView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, - mLiftToActivateListener, emergencyButtonController, mFalsingCollector, - mIsNewLayoutEnabled); + mLiftToActivateListener, emergencyButtonController, mFalsingCollector); } else if (keyguardInputView instanceof KeyguardSimPinView) { return new KeyguardSimPinViewController((KeyguardSimPinView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, mLiftToActivateListener, mTelephonyManager, mFalsingCollector, - emergencyButtonController, mIsNewLayoutEnabled); + emergencyButtonController); } else if (keyguardInputView instanceof KeyguardSimPukView) { return new KeyguardSimPukViewController((KeyguardSimPukView) keyguardInputView, mKeyguardUpdateMonitor, securityMode, mLockPatternUtils, keyguardSecurityCallback, mMessageAreaControllerFactory, mLatencyTracker, mLiftToActivateListener, mTelephonyManager, mFalsingCollector, - emergencyButtonController, mIsNewLayoutEnabled); + emergencyButtonController); } throw new RuntimeException("Unable to find controller for " + keyguardInputView); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java index 09fb8efba4e8..0b8868f6d3c4 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinBasedInputView.java @@ -169,20 +169,6 @@ public abstract class KeyguardPinBasedInputView extends KeyguardAbsKeyInputView } /** - * By default, the new layout will be enabled. When false, revert to the old style. - */ - public void setIsNewLayoutEnabled(boolean isEnabled) { - if (!isEnabled) { - for (int i = 0; i < mButtons.length; i++) { - mButtons[i].disableNewLayout(); - } - mDeleteButton.disableNewLayout(); - mOkButton.disableNewLayout(); - reloadColors(); - } - } - - /** * Reload colors from resources. **/ public void reloadColors() { diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java index a456d42f5be5..262bed3f695c 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardPinViewController.java @@ -35,12 +35,11 @@ public class KeyguardPinViewController KeyguardMessageAreaController.Factory messageAreaControllerFactory, LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener, EmergencyButtonController emergencyButtonController, - FalsingCollector falsingCollector, boolean isNewLayoutEnabled) { + FalsingCollector falsingCollector) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, emergencyButtonController, falsingCollector); mKeyguardUpdateMonitor = keyguardUpdateMonitor; - view.setIsNewLayoutEnabled(isNewLayoutEnabled); } @Override diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java index fddbb3cdfc84..e04bfdc3868d 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPinViewController.java @@ -79,14 +79,13 @@ public class KeyguardSimPinViewController KeyguardMessageAreaController.Factory messageAreaControllerFactory, LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, - EmergencyButtonController emergencyButtonController, boolean isNewLayoutEnabled) { + EmergencyButtonController emergencyButtonController) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, emergencyButtonController, falsingCollector); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mTelephonyManager = telephonyManager; mSimImageView = mView.findViewById(R.id.keyguard_sim); - view.setIsNewLayoutEnabled(isNewLayoutEnabled); } @Override diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java index 50bd0c71752b..07309224608e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSimPukViewController.java @@ -85,14 +85,13 @@ public class KeyguardSimPukViewController KeyguardMessageAreaController.Factory messageAreaControllerFactory, LatencyTracker latencyTracker, LiftToActivateListener liftToActivateListener, TelephonyManager telephonyManager, FalsingCollector falsingCollector, - EmergencyButtonController emergencyButtonController, boolean isNewLayoutEnabled) { + EmergencyButtonController emergencyButtonController) { super(view, keyguardUpdateMonitor, securityMode, lockPatternUtils, keyguardSecurityCallback, messageAreaControllerFactory, latencyTracker, liftToActivateListener, emergencyButtonController, falsingCollector); mKeyguardUpdateMonitor = keyguardUpdateMonitor; mTelephonyManager = telephonyManager; mSimImageView = mView.findViewById(R.id.keyguard_sim); - view.setIsNewLayoutEnabled(isNewLayoutEnabled); } @Override diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java index abdd770c37d4..e6298a426c5b 100644 --- a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java +++ b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java @@ -21,7 +21,6 @@ import android.content.Context; import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.drawable.GradientDrawable; -import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.RippleDrawable; import android.view.ContextThemeWrapper; @@ -40,17 +39,14 @@ class NumPadAnimator { private ValueAnimator mContractAnimator; private GradientDrawable mBackground; private RippleDrawable mRipple; - private GradientDrawable mRippleMask; private int mNormalColor; private int mHighlightColor; private int mStyle; - NumPadAnimator(Context context, LayerDrawable drawable, @StyleRes int style) { - LayerDrawable ld = (LayerDrawable) drawable.mutate(); - mBackground = (GradientDrawable) ld.findDrawableByLayerId(R.id.background); - mRipple = (RippleDrawable) ld.findDrawableByLayerId(R.id.ripple); - mRippleMask = (GradientDrawable) mRipple.findDrawableByLayerId(android.R.id.mask); + NumPadAnimator(Context context, final RippleDrawable drawable, @StyleRes int style) { mStyle = style; + mRipple = (RippleDrawable) drawable.mutate(); + mBackground = (GradientDrawable) mRipple.findDrawableByLayerId(R.id.background); reloadColors(context); @@ -62,7 +58,7 @@ class NumPadAnimator { mExpandAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator anim) { mBackground.setCornerRadius((float) anim.getAnimatedValue()); - mRippleMask.setCornerRadius((float) anim.getAnimatedValue()); + mRipple.invalidateSelf(); } }); @@ -73,7 +69,7 @@ class NumPadAnimator { mContractAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator anim) { mBackground.setCornerRadius((float) anim.getAnimatedValue()); - mRippleMask.setCornerRadius((float) anim.getAnimatedValue()); + mRipple.invalidateSelf(); } }); mAnimator.playSequentially(mExpandAnimator, mContractAnimator); diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadButton.java b/packages/SystemUI/src/com/android/keyguard/NumPadButton.java index b76499a39ff8..096597afa889 100644 --- a/packages/SystemUI/src/com/android/keyguard/NumPadButton.java +++ b/packages/SystemUI/src/com/android/keyguard/NumPadButton.java @@ -16,37 +16,22 @@ package com.android.keyguard; import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.LayerDrawable; -import android.graphics.drawable.VectorDrawable; +import android.graphics.drawable.RippleDrawable; import android.util.AttributeSet; -import android.view.ContextThemeWrapper; import android.view.MotionEvent; -import androidx.annotation.Nullable; - -import com.android.settingslib.Utils; -import com.android.systemui.R; - /** * Similar to the {@link NumPadKey}, but displays an image. */ public class NumPadButton extends AlphaOptimizedImageButton { - @Nullable private NumPadAnimator mAnimator; public NumPadButton(Context context, AttributeSet attrs) { super(context, attrs); - Drawable background = getBackground(); - if (background instanceof LayerDrawable) { - mAnimator = new NumPadAnimator(context, (LayerDrawable) background, - attrs.getStyleAttribute()); - } else { - mAnimator = null; - } + mAnimator = new NumPadAnimator(context, (RippleDrawable) getBackground(), + attrs.getStyleAttribute()); } @Override @@ -56,7 +41,7 @@ public class NumPadButton extends AlphaOptimizedImageButton { // Set width/height to the same value to ensure a smooth circle for the bg, but shrink // the height to match the old pin bouncer int width = getMeasuredWidth(); - int height = mAnimator == null ? (int) (width * .75f) : width; + int height = width; setMeasuredDimension(getMeasuredWidth(), height); } @@ -65,13 +50,13 @@ public class NumPadButton extends AlphaOptimizedImageButton { protected void onLayout(boolean changed, int l, int t, int r, int b) { super.onLayout(changed, l, t, r, b); - if (mAnimator != null) mAnimator.onLayout(b - t); + mAnimator.onLayout(b - t); } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { - if (mAnimator != null) mAnimator.start(); + mAnimator.start(); } return super.onTouchEvent(event); } @@ -80,25 +65,6 @@ public class NumPadButton extends AlphaOptimizedImageButton { * Reload colors from resources. **/ public void reloadColors() { - if (mAnimator != null) { - mAnimator.reloadColors(getContext()); - } else { - // Needed for old style pin - int textColor = Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary) - .getDefaultColor(); - ((VectorDrawable) getDrawable()).setTintList(ColorStateList.valueOf(textColor)); - } - } - - /** - * By default, the new layout will be enabled. Invoking will revert to the old style - */ - public void disableNewLayout() { - if (mAnimator != null) { - mAnimator = null; - ContextThemeWrapper ctw = new ContextThemeWrapper(getContext(), R.style.NumPadKey); - setBackground(getContext().getResources().getDrawable( - R.drawable.ripple_drawable_pin, ctw.getTheme())); - } + mAnimator.reloadColors(getContext()); } } diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadKey.java b/packages/SystemUI/src/com/android/keyguard/NumPadKey.java index 89c1a7fe21ca..35ace0d1a404 100644 --- a/packages/SystemUI/src/com/android/keyguard/NumPadKey.java +++ b/packages/SystemUI/src/com/android/keyguard/NumPadKey.java @@ -18,12 +18,10 @@ package com.android.keyguard; import android.content.Context; import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.LayerDrawable; +import android.graphics.drawable.RippleDrawable; import android.os.PowerManager; import android.os.SystemClock; import android.util.AttributeSet; -import android.view.ContextThemeWrapper; import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -32,8 +30,6 @@ import android.view.ViewGroup; import android.view.accessibility.AccessibilityManager; import android.widget.TextView; -import androidx.annotation.Nullable; - import com.android.internal.widget.LockPatternUtils; import com.android.settingslib.Utils; import com.android.systemui.R; @@ -51,7 +47,6 @@ public class NumPadKey extends ViewGroup { private int mTextViewResId; private PasswordTextView mTextView; - @Nullable private NumPadAnimator mAnimator; private View.OnClickListener mListener = new View.OnClickListener() { @@ -131,26 +126,8 @@ public class NumPadKey extends ViewGroup { setContentDescription(mDigitText.getText().toString()); - Drawable background = getBackground(); - if (background instanceof LayerDrawable) { - mAnimator = new NumPadAnimator(context, (LayerDrawable) background, - R.style.NumPadKey); - } else { - mAnimator = null; - } - } - - /** - * By default, the new layout will be enabled. Invoking will revert to the old style - */ - public void disableNewLayout() { - findViewById(R.id.klondike_text).setVisibility(View.VISIBLE); - if (mAnimator != null) { - mAnimator = null; - ContextThemeWrapper ctw = new ContextThemeWrapper(getContext(), R.style.NumPadKey); - setBackground(getContext().getResources().getDrawable( - R.drawable.ripple_drawable_pin, ctw.getTheme())); - } + mAnimator = new NumPadAnimator(context, (RippleDrawable) getBackground(), + R.style.NumPadKey); } /** @@ -164,14 +141,14 @@ public class NumPadKey extends ViewGroup { mDigitText.setTextColor(textColor); mKlondikeText.setTextColor(klondikeColor); - if (mAnimator != null) mAnimator.reloadColors(getContext()); + mAnimator.reloadColors(getContext()); } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { doHapticKeyClick(); - if (mAnimator != null) mAnimator.start(); + mAnimator.start(); } return super.onTouchEvent(event); @@ -185,7 +162,7 @@ public class NumPadKey extends ViewGroup { // Set width/height to the same value to ensure a smooth circle for the bg, but shrink // the height to match the old pin bouncer int width = getMeasuredWidth(); - int height = mAnimator == null ? (int) (width * .75f) : width; + int height = width; setMeasuredDimension(getMeasuredWidth(), height); } @@ -206,7 +183,7 @@ public class NumPadKey extends ViewGroup { left = centerX - mKlondikeText.getMeasuredWidth() / 2; mKlondikeText.layout(left, top, left + mKlondikeText.getMeasuredWidth(), bottom); - if (mAnimator != null) mAnimator.onLayout(b - t); + mAnimator.onLayout(b - t); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java index 351ae8298ff4..67cf4812ba6b 100644 --- a/packages/SystemUI/src/com/android/systemui/Dependency.java +++ b/packages/SystemUI/src/com/android/systemui/Dependency.java @@ -28,6 +28,7 @@ import android.view.IWindowManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.UiEventLogger; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.Preconditions; import com.android.keyguard.KeyguardSecurityModel; @@ -358,6 +359,7 @@ public class Dependency { @Inject Lazy<SystemStatusAnimationScheduler> mSystemStatusAnimationSchedulerLazy; @Inject Lazy<PrivacyDotViewController> mPrivacyDotViewControllerLazy; @Inject Lazy<EdgeBackGestureHandler> mEdgeBackGestureHandler; + @Inject Lazy<UiEventLogger> mUiEventLogger; @Inject public Dependency() { @@ -571,6 +573,7 @@ public class Dependency { mSystemStatusAnimationSchedulerLazy::get); mProviders.put(PrivacyDotViewController.class, mPrivacyDotViewControllerLazy::get); mProviders.put(EdgeBackGestureHandler.class, mEdgeBackGestureHandler::get); + mProviders.put(UiEventLogger.class, mUiEventLogger::get); Dependency.setInstance(this); } diff --git a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java index d07723e475fb..be50eb1934ad 100644 --- a/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java +++ b/packages/SystemUI/src/com/android/systemui/ScreenDecorations.java @@ -91,6 +91,7 @@ import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.events.PrivacyDotViewController; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; +import com.android.systemui.util.concurrency.ThreadFactory; import com.android.systemui.util.settings.SecureSettings; import java.util.ArrayList; @@ -128,6 +129,7 @@ public class ScreenDecorations extends SystemUI implements Tunable { private CameraAvailabilityListener mCameraListener; private final UserTracker mUserTracker; private final PrivacyDotViewController mDotViewController; + private final ThreadFactory mThreadFactory; //TODO: These are piecemeal being updated to Points for now to support non-square rounded // corners. for now it is only supposed when reading the intrinsic size from the drawables with @@ -215,7 +217,8 @@ public class ScreenDecorations extends SystemUI implements Tunable { BroadcastDispatcher broadcastDispatcher, TunerService tunerService, UserTracker userTracker, - PrivacyDotViewController dotViewController) { + PrivacyDotViewController dotViewController, + ThreadFactory threadFactory) { super(context); mMainHandler = handler; mSecureSettings = secureSettings; @@ -223,6 +226,7 @@ public class ScreenDecorations extends SystemUI implements Tunable { mTunerService = tunerService; mUserTracker = userTracker; mDotViewController = dotViewController; + mThreadFactory = threadFactory; } @Override @@ -233,7 +237,8 @@ public class ScreenDecorations extends SystemUI implements Tunable { } mHandler = startHandlerThread(); mHandler.post(this::startOnScreenDecorationsThread); - mDotViewController.setUiExecutor(mHandler::post); + mDotViewController.setUiExecutor( + mThreadFactory.buildDelayableExecutorOnLooper(mHandler.getLooper())); } @VisibleForTesting @@ -643,7 +648,7 @@ public class ScreenDecorations extends SystemUI implements Tunable { int newRotation = mContext.getDisplay().getRotation(); if (mRotation != newRotation) { - mDotViewController.updateRotation(newRotation); + mDotViewController.setNewRotation(newRotation); } if (mPendingRotationChange) { diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java index af064e11d526..cc167b928c3c 100644 --- a/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +++ b/packages/SystemUI/src/com/android/systemui/SystemUIFactory.java @@ -29,7 +29,6 @@ import com.android.systemui.dagger.GlobalRootComponent; import com.android.systemui.dagger.SysUIComponent; import com.android.systemui.dagger.WMComponent; import com.android.systemui.navigationbar.gestural.BackGestureTfClassifierProvider; -import com.android.systemui.plugins.BcSmartspaceDataPlugin; import com.android.systemui.screenshot.ScreenshotNotificationSmartActionsProvider; import com.android.wm.shell.transition.Transitions; @@ -210,8 +209,4 @@ public class SystemUIFactory { AssetManager am, String modelName) { return new BackGestureTfClassifierProvider(); } - - public BcSmartspaceDataPlugin getSmartspaceDataProvider() { - return null; - } } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java index 5647e4366075..2d403f63c2cd 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationView.java @@ -20,6 +20,8 @@ import android.annotation.Nullable; import android.content.Context; import android.graphics.RectF; import android.util.AttributeSet; +import android.view.View; +import android.view.ViewGroup; import android.widget.FrameLayout; /** @@ -73,7 +75,15 @@ abstract class UdfpsAnimationView extends FrameLayout { } protected void updateAlpha() { - getDrawable().setAlpha(calculateAlpha()); + int alpha = calculateAlpha(); + getDrawable().setAlpha(alpha); + + // this is necessary so that touches won't be intercepted if udfps is paused: + if (mPauseAuth && alpha == 0 && getParent() != null) { + ((ViewGroup) getParent()).setVisibility(View.INVISIBLE); + } else { + ((ViewGroup) getParent()).setVisibility(View.VISIBLE); + } } int calculateAlpha() { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java index 195d00606693..b7344fbc6dda 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java @@ -45,7 +45,7 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView> @NonNull final StatusBar mStatusBar; @NonNull final DumpManager mDumpManger; - private boolean mNotificationShadeExpanded; + boolean mNotificationShadeExpanded; protected UdfpsAnimationViewController( T view, diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index ee5fb313fff3..5f27400741a9 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -65,6 +65,7 @@ import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.doze.DozeReceiver; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.KeyguardViewMediator; +import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.StatusBar; @@ -131,6 +132,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { // mode. private boolean mIsAodInterruptActive; @Nullable private Runnable mCancelAodTimeoutAction; + private boolean mScreenOn; + private Runnable mAodInterruptRunnable; private static final AudioAttributes VIBRATION_SONIFICATION_ATTRIBUTES = new AudioAttributes.Builder() @@ -155,6 +158,22 @@ public class UdfpsController implements DozeReceiver, HbmCallback { } }; + private final ScreenLifecycle.Observer mScreenObserver = new ScreenLifecycle.Observer() { + @Override + public void onScreenTurnedOn() { + mScreenOn = true; + if (mAodInterruptRunnable != null) { + mAodInterruptRunnable.run(); + mAodInterruptRunnable = null; + } + } + + @Override + public void onScreenTurnedOff() { + mScreenOn = false; + } + }; + /** * Keeps track of state within a single FingerprintService request. Note that this state * persists across configuration changes, etc, since it is considered a single request. @@ -296,7 +315,13 @@ public class UdfpsController implements DozeReceiver, HbmCallback { // TODO: move isWithinSensorArea to UdfpsController. return udfpsView.isWithinSensorArea(x, y); } - return getSensorLocation().contains(x, y); + + if (mView == null || mView.getAnimationViewController() == null) { + return false; + } + + return !mView.getAnimationViewController().shouldPauseAuth() + && getSensorLocation().contains(x, y); } private boolean onTouch(View view, MotionEvent event, boolean fromUdfpsView) { @@ -320,7 +345,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { } if (isWithinSensorArea(udfpsView, event.getX(), event.getY(), fromUdfpsView)) { Trace.beginAsyncSection( - "UdfpsController.mOnTouchListener#isWithinSensorArea", 1); + "UdfpsController#ACTION_DOWN", 1); // The pointer that causes ACTION_DOWN is always at index 0. // We need to persist its ID to track it during ACTION_MOVE that could include // data for many other pointers because of multi-touch support. @@ -357,8 +382,6 @@ public class UdfpsController implements DozeReceiver, HbmCallback { minor, major, v, exceedsVelocityThreshold); final long sinceLastLog = SystemClock.elapsedRealtime() - mTouchLogTime; if (!isFingerDown && !exceedsVelocityThreshold) { - Trace.endAsyncSection( - "UdfpsController.mOnTouchListener#isWithinSensorArea", 1); onFingerDown((int) x, (int) y, minor, major); Log.v(TAG, "onTouch | finger down: " + touchInfo); mTouchLogTime = SystemClock.elapsedRealtime(); @@ -432,7 +455,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { @NonNull KeyguardViewMediator keyguardViewMediator, @NonNull FalsingManager falsingManager, @NonNull PowerManager powerManager, - @NonNull AccessibilityManager accessibilityManager) { + @NonNull AccessibilityManager accessibilityManager, + @NonNull ScreenLifecycle screenLifecycle) { mContext = context; // TODO (b/185124905): inject main handler and vibrator once done prototyping mMainHandler = new Handler(Looper.getMainLooper()); @@ -452,6 +476,8 @@ public class UdfpsController implements DozeReceiver, HbmCallback { mFalsingManager = falsingManager; mPowerManager = powerManager; mAccessibilityManager = accessibilityManager; + screenLifecycle.addObserver(mScreenObserver); + mScreenOn = screenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_ON; mSensorProps = findFirstUdfps(); // At least one UDFPS sensor exists @@ -529,7 +555,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback { final int paddingY = animation != null ? animation.getPaddingY() : 0; mCoreLayoutParams.flags = getCoreLayoutParamFlags(); - if (animation.listenForTouchesOutsideView()) { + if (animation != null && animation.listenForTouchesOutsideView()) { mCoreLayoutParams.flags |= WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH; } @@ -685,14 +711,23 @@ public class UdfpsController implements DozeReceiver, HbmCallback { if (mIsAodInterruptActive) { return; } - mIsAodInterruptActive = true; - // Since the sensor that triggers the AOD interrupt doesn't provide ACTION_UP/ACTION_CANCEL, - // we need to be careful about not letting the screen accidentally remain in high brightness - // mode. As a mitigation, queue a call to cancel the fingerprint scan. - mCancelAodTimeoutAction = mFgExecutor.executeDelayed(this::onCancelUdfps, - AOD_INTERRUPT_TIMEOUT_MILLIS); - // using a hard-coded value for major and minor until it is available from the sensor - onFingerDown(screenX, screenY, minor, major); + + mAodInterruptRunnable = () -> { + mIsAodInterruptActive = true; + // Since the sensor that triggers the AOD interrupt doesn't provide + // ACTION_UP/ACTION_CANCEL, we need to be careful about not letting the screen + // accidentally remain in high brightness mode. As a mitigation, queue a call to + // cancel the fingerprint scan. + mCancelAodTimeoutAction = mFgExecutor.executeDelayed(this::onCancelUdfps, + AOD_INTERRUPT_TIMEOUT_MILLIS); + // using a hard-coded value for major and minor until it is available from the sensor + onFingerDown(screenX, screenY, minor, major); + }; + + if (mScreenOn && mAodInterruptRunnable != null) { + mAodInterruptRunnable.run(); + mAodInterruptRunnable = null; + } } /** @@ -724,10 +759,13 @@ public class UdfpsController implements DozeReceiver, HbmCallback { Log.w(TAG, "Null view in onFingerDown"); return; } + mFingerprintManager.onPointerDown(mSensorProps.sensorId, x, y, minor, major); + Trace.endAsyncSection( + "UdfpsController#ACTION_DOWN", 1); Trace.beginAsyncSection("UdfpsController#startIllumination", 1); mView.startIllumination(() -> { + mFingerprintManager.onUiReady(mSensorProps.sensorId); Trace.endAsyncSection("UdfpsController#startIllumination", 1); - mFingerprintManager.onPointerDown(mSensorProps.sensorId, x, y, minor, major); }); } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java index 37ea251c08b8..52576a7cd4e3 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardView.java @@ -40,12 +40,14 @@ import com.android.systemui.statusbar.StatusBarState; public class UdfpsKeyguardView extends UdfpsAnimationView { private final UdfpsKeyguardDrawable mFingerprintDrawable; private ImageView mFingerprintView; - private int mWallpaperTexColor; + private int mWallpaperTextColor; private int mStatusBarState; // used when highlighting fp icon: private int mTextColorPrimary; private ImageView mBgProtection; + boolean mUdfpsRequested; + int mUdfpsRequestedColor; private AnimatorSet mAnimatorSet; private int mAlpha; // 0-255 @@ -63,10 +65,11 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { mBgProtection = findViewById(R.id.udfps_keyguard_fp_bg); - mWallpaperTexColor = Utils.getColorAttrDefaultColor(mContext, + mWallpaperTextColor = Utils.getColorAttrDefaultColor(mContext, R.attr.wallpaperTextColorAccent); mTextColorPrimary = Utils.getColorAttrDefaultColor(mContext, android.R.attr.textColorPrimary); + mUdfpsRequested = false; } @Override @@ -90,11 +93,31 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { return true; } + void requestUdfps(boolean request, int color) { + if (request) { + mUdfpsRequestedColor = color; + } else { + mUdfpsRequestedColor = -1; + } + mUdfpsRequested = request; + updateColor(); + } + void setStatusBarState(int statusBarState) { mStatusBarState = statusBarState; - if (!isShadeLocked()) { - mFingerprintView.setAlpha(1f); - mFingerprintDrawable.setLockScreenColor(mWallpaperTexColor); + updateColor(); + } + + void updateColor() { + mFingerprintView.setAlpha(1f); + mFingerprintDrawable.setLockScreenColor(getColor()); + } + + private int getColor() { + if (mUdfpsRequested && mUdfpsRequestedColor != -1) { + return mUdfpsRequestedColor; + } else { + return mWallpaperTextColor; } } @@ -142,7 +165,7 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { } else { // update icon color fpIconAnim = new ValueAnimator(); - fpIconAnim.setIntValues(mWallpaperTexColor, mTextColorPrimary); + fpIconAnim.setIntValues(getColor(), mTextColorPrimary); fpIconAnim.setEvaluator(new ArgbEvaluator()); fpIconAnim.addUpdateListener(valueAnimator -> mFingerprintDrawable.setLockScreenColor( (Integer) valueAnimator.getAnimatedValue())); @@ -170,10 +193,6 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { return mStatusBarState == StatusBarState.SHADE_LOCKED; } - boolean isHome() { - return mStatusBarState == StatusBarState.SHADE; - } - /** * Animates out the bg protection circle behind the fp icon to unhighlight the icon. */ @@ -193,7 +212,7 @@ public class UdfpsKeyguardView extends UdfpsAnimationView { } else { // update icon color fpIconAnim = new ValueAnimator(); - fpIconAnim.setIntValues(mTextColorPrimary, mWallpaperTexColor); + fpIconAnim.setIntValues(mTextColorPrimary, getColor()); fpIconAnim.setEvaluator(new ArgbEvaluator()); fpIconAnim.addUpdateListener(valueAnimator -> mFingerprintDrawable.setLockScreenColor( (Integer) valueAnimator.getAnimatedValue())); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java index 4d2f809531fd..33d0d0c5b5ff 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java @@ -57,6 +57,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud @Nullable private Runnable mCancelRunnable; private boolean mShowingUdfpsBouncer; + private boolean mUdfpsRequested; private boolean mQsExpanded; private boolean mFaceDetectRunning; private boolean mHintShown; @@ -70,6 +71,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud * {@link KeyguardBouncer#EXPANSION_HIDDEN} (1f) */ private float mInputBouncerHiddenAmount; + private boolean mIsBouncerVisible; protected UdfpsKeyguardViewController( @NonNull UdfpsKeyguardView view, @@ -105,6 +107,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud mStateListener.onDozeAmountChanged(dozeAmount, dozeAmount); mStatusBarStateController.addCallback(mStateListener); + mUdfpsRequested = false; mStatusBarState = mStatusBarStateController.getState(); mQsExpanded = mKeyguardViewManager.isQsExpanded(); mKeyguardIsVisible = mKeyguardUpdateMonitor.isKeyguardVisible(); @@ -113,6 +116,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud updatePauseAuth(); mKeyguardViewManager.setAlternateAuthInterceptor(mAlternateAuthInterceptor); + mIsBouncerVisible = mKeyguardViewManager.bouncerIsOrWillBeShowing(); } @Override @@ -137,11 +141,15 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud pw.println("mShowingUdfpsBouncer=" + mShowingUdfpsBouncer); pw.println("mFaceDetectRunning=" + mFaceDetectRunning); pw.println("mTransitioningFromHomeToKeyguard=" + mTransitioningFromHome); - pw.println("mStatusBarState" + StatusBarState.toShortString(mStatusBarState)); + pw.println("mStatusBarState=" + StatusBarState.toShortString(mStatusBarState)); pw.println("mQsExpanded=" + mQsExpanded); pw.println("mKeyguardVisible=" + mKeyguardIsVisible); + pw.println("mIsBouncerVisible=" + mIsBouncerVisible); pw.println("mInputBouncerHiddenAmount=" + mInputBouncerHiddenAmount); pw.println("mAlpha=" + mView.getAlpha()); + pw.println("mUdfpsRequested=" + mUdfpsRequested); + pw.println("mView.mUdfpsRequested=" + mView.mUdfpsRequested); + pw.println("mView.mUdfpsRequestedColor=" + mView.mUdfpsRequestedColor); } /** @@ -173,6 +181,12 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud return false; } + if (mUdfpsRequested && !mNotificationShadeExpanded + && (!mIsBouncerVisible + || mInputBouncerHiddenAmount != KeyguardBouncer.EXPANSION_VISIBLE)) { + return false; + } + if (mStatusBarState != KEYGUARD) { return true; } @@ -333,6 +347,13 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud } @Override + public void requestUdfps(boolean request, int color) { + mUdfpsRequested = request; + mView.requestUdfps(request, color); + updatePauseAuth(); + } + + @Override public boolean isAnimating() { return mView.isAnimating(); } @@ -356,6 +377,12 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud } @Override + public void onBouncerVisibilityChanged() { + mIsBouncerVisible = mKeyguardViewManager.bouncerIsOrWillBeShowing(); + updatePauseAuth(); + } + + @Override public void dump(PrintWriter pw) { pw.println(getTag()); } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.java index d92d8dfd3554..f10d5f3bca1f 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsView.java @@ -87,7 +87,8 @@ public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIllumin // Don't propagate any touch events to the child views. @Override public boolean onInterceptTouchEvent(MotionEvent ev) { - return true; + return mAnimationViewController == null + || !mAnimationViewController.shouldPauseAuth(); } @Override @@ -131,13 +132,20 @@ public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIllumin } void onTouchOutsideView() { - mAnimationViewController.onTouchOutsideView(); + if (mAnimationViewController != null) { + mAnimationViewController.onTouchOutsideView(); + } } - void setAnimationViewController(UdfpsAnimationViewController animationViewController) { + void setAnimationViewController( + @Nullable UdfpsAnimationViewController animationViewController) { mAnimationViewController = animationViewController; } + @Nullable UdfpsAnimationViewController getAnimationViewController() { + return mAnimationViewController; + } + @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java index 2e60a65c3bd1..2f688dd9d247 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingDataProvider.java @@ -49,7 +49,7 @@ public class FalsingDataProvider { private TimeLimitedMotionEventBuffer mRecentMotionEvents = new TimeLimitedMotionEventBuffer(MOTION_EVENT_AGE_MS); - private List<MotionEvent> mPriorMotionEvents; + private List<MotionEvent> mPriorMotionEvents = new ArrayList<>(); private boolean mDirty = true; diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java index 126724c92a4f..7fa48d405643 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java @@ -38,6 +38,7 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.fragments.FragmentService; import com.android.systemui.log.dagger.LogModule; import com.android.systemui.model.SysUiState; +import com.android.systemui.plugins.BcSmartspaceDataPlugin; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.power.dagger.PowerModule; import com.android.systemui.recents.Recents; @@ -151,6 +152,9 @@ public abstract class SystemUIModule { abstract HeadsUpManager optionalHeadsUpManager(); @BindsOptionalOf + abstract BcSmartspaceDataPlugin optionalBcSmartspaceDataPlugin(); + + @BindsOptionalOf abstract Recents optionalRecents(); @BindsOptionalOf diff --git a/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt b/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt index c76f55631ac9..ed11db52b95c 100644 --- a/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt +++ b/packages/SystemUI/src/com/android/systemui/demomode/DemoModeController.kt @@ -85,8 +85,6 @@ class DemoModeController constructor( } override fun addCallback(listener: DemoMode) { - Assert.isMainThread() - // Register this listener for its commands val commands = listener.demoCommands() @@ -99,20 +97,23 @@ class DemoModeController constructor( receiverMap[command]!!.add(listener) } - receivers.add(listener) + synchronized(this) { + receivers.add(listener) + } + if (isInDemoMode) { listener.onDemoModeStarted() } } override fun removeCallback(listener: DemoMode) { - Assert.isMainThread() + synchronized(this) { + listener.demoCommands().forEach { command -> + receiverMap[command]!!.remove(listener) + } - listener.demoCommands().forEach { command -> - receiverMap[command]!!.remove(listener) + receivers.remove(listener) } - - receivers.remove(listener) } private fun setIsDemoModeAllowed(enabled: Boolean) { @@ -125,7 +126,13 @@ class DemoModeController constructor( private fun enterDemoMode() { isInDemoMode = true Assert.isMainThread() - receivers.forEach { r -> + + val copy: List<DemoModeCommandReceiver> + synchronized(this) { + copy = receivers.toList() + } + + copy.forEach { r -> r.onDemoModeStarted() } } @@ -133,7 +140,13 @@ class DemoModeController constructor( private fun exitDemoMode() { isInDemoMode = false Assert.isMainThread() - receivers.forEach { r -> + + val copy: List<DemoModeCommandReceiver> + synchronized(this) { + copy = receivers.toList() + } + + copy.forEach { r -> r.onDemoModeFinished() } } @@ -168,7 +181,11 @@ class DemoModeController constructor( pw.println(" isInDemoMode=$isInDemoMode") pw.println(" isDemoModeAllowed=$isAvailable") pw.print(" receivers=[") - receivers.forEach { recv -> + val copy: List<DemoModeCommandReceiver> + synchronized(this) { + copy = receivers.toList() + } + copy.forEach { recv -> pw.print(" ${recv.javaClass.simpleName}") } pw.println(" ]") diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java index 19edeb80c10c..2eb37624f598 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java @@ -583,7 +583,6 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mStatusBarService, mNotificationShadeWindowController, mSysUiState, this::onRotate, mKeyguardShowing, mPowerAdapter); - dialog.setCanceledOnTouchOutside(true); dialog.setOnDismissListener(this); dialog.setOnShowListener(this); @@ -2080,7 +2079,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene window.getDecorView(); window.getAttributes().systemUiVisibility |= View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; - window.setLayout(MATCH_PARENT, WRAP_CONTENT); + window.setLayout(MATCH_PARENT, MATCH_PARENT); window.addFlags( WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR @@ -2141,6 +2140,10 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mGlobalActionsLayout.setRotationListener(this::onRotate); mGlobalActionsLayout.setAdapter(mAdapter); mContainer = findViewById(com.android.systemui.R.id.global_actions_container); + mContainer.setOnClickListener(v -> { + // TODO: add logging (b/182830510) + cancel(); + }); View overflowButton = findViewById( com.android.systemui.R.id.global_actions_overflow_button); @@ -2178,7 +2181,6 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene @Override protected void onStart() { - super.setCanceledOnTouchOutside(true); super.onStart(); mGlobalActionsLayout.updateList(); diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsLayoutLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsLayoutLite.java index eb4cd6b449a2..f1e5b0862ae0 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsLayoutLite.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsLayoutLite.java @@ -42,6 +42,7 @@ public class GlobalActionsLayoutLite extends GlobalActionsLayout { com.android.systemui.R.integer.power_menu_lite_max_columns); mMaxRows = getResources().getInteger( com.android.systemui.R.integer.power_menu_lite_max_rows); + setOnClickListener(v -> { }); // Prevent parent onClickListener from triggering } @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java index bd3b899adee7..30429fbf8cfa 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java @@ -38,7 +38,6 @@ import android.provider.Settings; import android.service.notification.ZenModeConfig; import android.text.TextUtils; import android.text.style.StyleSpan; -import android.util.Log; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; @@ -53,8 +52,6 @@ import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SystemUIAppComponentFactory; -import com.android.systemui.SystemUIFactory; -import com.android.systemui.dagger.SysUIComponent; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationMediaManager; import com.android.systemui.statusbar.StatusBarState; @@ -65,8 +62,6 @@ import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.util.wakelock.SettableWakeLock; import com.android.systemui.util.wakelock.WakeLock; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.Date; import java.util.Locale; import java.util.TimeZone; @@ -318,25 +313,7 @@ public class KeyguardSliceProvider extends SliceProvider implements mPendingIntent = PendingIntent.getActivity(getContext(), 0, new Intent(getContext(), KeyguardSliceProvider.class), PendingIntent.FLAG_IMMUTABLE); - try { - //TODO(b/168778439): Remove this whole try catch. This is for debugging in dogfood. - mMediaManager.addCallback(this); - } catch (NullPointerException e) { - // We are sometimes failing to set the media manager. Why? - Log.w(TAG, "Failed to setup mMediaManager. Trying again."); - SysUIComponent rootComponent = SystemUIFactory.getInstance().getSysUIComponent(); - try { - Method injectMethod = rootComponent.getClass() - .getMethod("inject", getClass()); - injectMethod.invoke(rootComponent, this); - Log.w(TAG, "mMediaManager is now: " + mMediaManager); - } catch (NoSuchMethodException ex) { - Log.e(TAG, "Failed to find inject method for KeyguardSliceProvider", ex); - } catch (IllegalAccessException | InvocationTargetException ex) { - Log.e(TAG, "Failed to call inject", ex); - } - throw e; - } + mMediaManager.addCallback(this); mStatusBarStateController.addCallback(this); mNextAlarmController.addCallback(this); mZenModeController.addCallback(this); diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 48f9a58d7d1a..36a0acc6fb4c 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -104,6 +104,7 @@ import com.android.systemui.keyguard.dagger.KeyguardModule; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.shared.system.QuickStepContract; +import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.phone.BiometricUnlockController; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.KeyguardBypassController; @@ -229,6 +230,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, private AlarmManager mAlarmManager; private AudioManager mAudioManager; private StatusBarManager mStatusBarManager; + private final SysuiStatusBarStateController mStatusBarStateController; private final Executor mUiBgExecutor; private boolean mSystemReady; @@ -779,7 +781,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, NavigationModeController navigationModeController, KeyguardDisplayManager keyguardDisplayManager, DozeParameters dozeParameters, - StatusBarStateController statusBarStateController, + SysuiStatusBarStateController statusBarStateController, KeyguardStateController keyguardStateController, Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationControllerLazy) { super(context); @@ -808,6 +810,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mInGestureNavigationMode = QuickStepContract.isGesturalMode(mode); })); mDozeParameters = dozeParameters; + mStatusBarStateController = statusBarStateController; statusBarStateController.addCallback(this); mKeyguardStateController = keyguardStateController; @@ -2100,19 +2103,17 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, playSounds(false); } - if (KeyguardService.sEnableRemoteKeyguardAnimation) { + // When remaining on the shade, there's no need to do a fancy remote animation, + // it will dismiss the panel in that case. + if (KeyguardService.sEnableRemoteKeyguardAnimation + && !mStatusBarStateController.leaveOpenOnKeyguardHide() + && apps != null && apps.length > 0) { mSurfaceBehindRemoteAnimationFinishedCallback = finishedCallback; mSurfaceBehindRemoteAnimationRunning = true; - if (apps != null && apps.length > 0) { - // Pass the surface and metadata to the unlock animation controller. - mKeyguardUnlockAnimationControllerLazy.get().notifyStartKeyguardExitAnimation( - apps[0], startTime, mSurfaceBehindRemoteAnimationRequested); - } else { - // We weren't given any surfaces to animate, so just finish. - onKeyguardExitRemoteAnimationFinished(); - return; - } + // Pass the surface and metadata to the unlock animation controller. + mKeyguardUnlockAnimationControllerLazy.get().notifyStartKeyguardExitAnimation( + apps[0], startTime, mSurfaceBehindRemoteAnimationRequested); } else { setShowingLocked(false); mWakeAndUnlocking = false; diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java index ecee1b508ce0..119e9c433f67 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java @@ -47,6 +47,7 @@ import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationShadeWindowController; +import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.KeyguardLiftController; import com.android.systemui.statusbar.phone.StatusBar; @@ -94,7 +95,7 @@ public class KeyguardModule { NavigationModeController navigationModeController, KeyguardDisplayManager keyguardDisplayManager, DozeParameters dozeParameters, - StatusBarStateController statusBarStateController, + SysuiStatusBarStateController statusBarStateController, KeyguardStateController keyguardStateController, Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController) { return new KeyguardViewMediator( diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt index 24503675ae36..644876c6b1af 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt @@ -106,7 +106,7 @@ class MediaCarouselController @Inject constructor( private var carouselMeasureHeight: Int = 0 private var desiredHostState: MediaHostState? = null private val mediaCarousel: MediaScrollView - private val mediaCarouselScrollHandler: MediaCarouselScrollHandler + val mediaCarouselScrollHandler: MediaCarouselScrollHandler val mediaFrame: ViewGroup private lateinit var settingsButton: View private val mediaContent: ViewGroup @@ -115,6 +115,7 @@ class MediaCarouselController @Inject constructor( private var needsReordering: Boolean = false private var keysNeedRemoval = mutableSetOf<String>() private var bgColor = getBackgroundColor() + private var shouldScrollToActivePlayer: Boolean = false private var isRtl: Boolean = false set(value) { if (value != field) { @@ -155,20 +156,13 @@ class MediaCarouselController @Inject constructor( } } - var visibleToUser: Boolean = false - set(value) { - if (field != value) { - field = value - } - } - init { mediaFrame = inflateMediaCarousel() mediaCarousel = mediaFrame.requireViewById(R.id.media_carousel_scroller) pageIndicator = mediaFrame.requireViewById(R.id.media_page_indicator) mediaCarouselScrollHandler = MediaCarouselScrollHandler(mediaCarousel, pageIndicator, - executor, mediaManager::onSwipeToDismiss, this::updatePageIndicatorLocation, - this::closeGuts, falsingCollector, falsingManager) + executor, this::onSwipeToDismiss, this::updatePageIndicatorLocation, + this::closeGuts, falsingCollector, falsingManager, this::logSmartspaceImpression) isRtl = context.resources.configuration.layoutDirection == View.LAYOUT_DIRECTION_RTL inflateSettingsButton() mediaContent = mediaCarousel.requireViewById(R.id.media_carousel) @@ -209,7 +203,7 @@ class MediaCarouselController @Inject constructor( override fun onSmartspaceMediaDataLoaded(key: String, data: SmartspaceTarget) { Log.d(TAG, "My Smartspace media update is here") addSmartspaceMediaRecommendations(key, data) - if (visibleToUser) { + if (mediaCarouselScrollHandler.visibleToUser) { logSmartspaceImpression() } } @@ -271,6 +265,15 @@ class MediaCarouselController @Inject constructor( } } mediaCarouselScrollHandler.onPlayersChanged() + + // Automatically scroll to the active player if needed + if (shouldScrollToActivePlayer) { + shouldScrollToActivePlayer = false + val activeMediaIndex = MediaPlayerData.getActiveMediaIndex() + if (activeMediaIndex != -1) { + mediaCarouselScrollHandler.scrollToActivePlayer(activeMediaIndex) + } + } } private fun addOrUpdatePlayer(key: String, oldKey: String?, data: MediaData) { @@ -322,8 +325,8 @@ class MediaCarouselController @Inject constructor( val lp = LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) newRecs.recommendationViewHolder?.recommendations?.setLayoutParams(lp) - newRecs.bindRecommendation(data, bgColor) - MediaPlayerData.addMediaPlayer(key, newRecs) + newRecs.bindRecommendation(data, bgColor, { v -> shouldScrollToActivePlayer = true }) + MediaPlayerData.addMediaRecommendation(key, newRecs) updatePlayerToState(newRecs, noAnimation = true) reorderAllPlayers() updatePageIndicator() @@ -570,32 +573,77 @@ class MediaCarouselController @Inject constructor( * Log the user impression for media card. */ fun logSmartspaceImpression() { - MediaPlayerData.players().forEach { - // Log every impression of media recommendation card since it will only be shown - // for 1 minute after each connection. - if (it.recommendationViewHolder?.recommendations?.visibility == View.VISIBLE) { - /* ktlint-disable max-line-length */ - SysUiStatsLog.write(SysUiStatsLog.SMARTSPACE_CARD_REPORTED, - 800, // SMARTSPACE_CARD_SEEN - it.getInstanceId(), - SysUiStatsLog.SMART_SPACE_CARD_REPORTED__CARD_TYPE__HEADPHONE_MEDIA_RECOMMENDATIONS, - it.getSurfaceForSmartspaceLogging(), - /* rank */ 0, - /* cardinality */ 1) - /* ktlint-disable max-line-length */ + val visibleMediaIndex = mediaCarouselScrollHandler.visibleMediaIndex + if (MediaPlayerData.players().size > visibleMediaIndex) { + val mediaControlPanel = MediaPlayerData.players().elementAt(visibleMediaIndex) + val isMediaActive = + MediaPlayerData.playerKeys().elementAt(visibleMediaIndex).data?.active + val isRecommendationCard = mediaControlPanel.recommendationViewHolder != null + if (!isRecommendationCard && !isMediaActive) { + // Media control card time out or swiped away + return } + logSmartspaceCardReported(800, // SMARTSPACE_CARD_SEEN + mediaControlPanel.mInstanceId, + isRecommendationCard, + mediaControlPanel.surfaceForSmartspaceLogging) + } + } - // TODO(shijieru): add logging for media control card + @JvmOverloads + fun logSmartspaceCardReported( + eventId: Int, + instanceId: Int, + isRecommendationCard: Boolean, + surface: Int, + rank: Int = mediaCarouselScrollHandler.visibleMediaIndex + ) { + /* ktlint-disable max-line-length */ + SysUiStatsLog.write(SysUiStatsLog.SMARTSPACE_CARD_REPORTED, + eventId, + instanceId, + if (isRecommendationCard) + SysUiStatsLog.SMART_SPACE_CARD_REPORTED__CARD_TYPE__HEADPHONE_MEDIA_RECOMMENDATIONS + else + SysUiStatsLog.SMART_SPACE_CARD_REPORTED__CARD_TYPE__HEADPHONE_RESUME_MEDIA, + surface, + rank, + mediaContent.getChildCount()) + /* ktlint-disable max-line-length */ + } + + private fun onSwipeToDismiss() { + val recommendation = MediaPlayerData.players().filter { + it.recommendationViewHolder != null + } + // Use -1 as rank value to indicate user swipe to dismiss the card + if (!recommendation.isEmpty()) { + logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS + recommendation.get(0).mInstanceId, + true, + recommendation.get(0).surfaceForSmartspaceLogging, + /* rank */-1) + } else { + val visibleMediaIndex = mediaCarouselScrollHandler.visibleMediaIndex + if (MediaPlayerData.players().size > visibleMediaIndex) { + val player = MediaPlayerData.players().elementAt(visibleMediaIndex) + logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS + player.mInstanceId, + false, + player.surfaceForSmartspaceLogging, + /* rank */-1) + } } + mediaManager.onSwipeToDismiss() } } @VisibleForTesting internal object MediaPlayerData { private val EMPTY = MediaData(-1, false, 0, null, null, null, null, null, - emptyList(), emptyList(), "INVALID", null, null, null, true, null) + emptyList(), emptyList(), "INVALID", null, null, null, false, null) - private data class MediaSortKey( + data class MediaSortKey( // Is Smartspace media recommendation. When the Smartspace media is present, it should // always be the first card in carousel. val isSsMediaRec: Boolean, @@ -620,7 +668,7 @@ internal object MediaPlayerData { mediaPlayers.put(sortKey, player) } - fun addMediaPlayer(key: String, player: MediaControlPanel) { + fun addMediaRecommendation(key: String, player: MediaControlPanel) { removeMediaPlayer(key) val sortKey = MediaSortKey(isSsMediaRec = true, EMPTY, System.currentTimeMillis()) mediaData.put(key, sortKey) @@ -643,6 +691,18 @@ internal object MediaPlayerData { fun players() = mediaPlayers.values + /** Returns the index of the first non-timeout media. */ + fun getActiveMediaIndex(): Int { + mediaPlayers.entries.forEachIndexed { index, e -> + if (e.key.data.active) { + return index + } + } + return -1 + } + + fun playerKeys() = mediaPlayers.keys + @VisibleForTesting fun clear() { mediaData.clear() diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselScrollHandler.kt b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselScrollHandler.kt index f0b78dde0ebd..e5a62711a8d0 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselScrollHandler.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselScrollHandler.kt @@ -28,16 +28,17 @@ import androidx.dynamicanimation.animation.FloatPropertyCompat import androidx.dynamicanimation.animation.SpringForce import com.android.settingslib.Utils import com.android.systemui.Gefingerpoken -import com.android.systemui.qs.PageIndicator import com.android.systemui.R import com.android.systemui.classifier.Classifier.NOTIFICATION_DISMISS import com.android.systemui.classifier.FalsingCollector import com.android.systemui.plugins.FalsingManager -import com.android.wm.shell.animation.PhysicsAnimator +import com.android.systemui.qs.PageIndicator import com.android.systemui.util.concurrency.DelayableExecutor +import com.android.wm.shell.animation.PhysicsAnimator private const val FLING_SLOP = 1000000 private const val DISMISS_DELAY = 100L +private const val SCROLL_DELAY = 100L private const val RUBBERBAND_FACTOR = 0.2f private const val SETTINGS_BUTTON_TRANSLATION_FRACTION = 0.3f @@ -60,7 +61,8 @@ class MediaCarouselScrollHandler( private var translationChangedListener: () -> Unit, private val closeGuts: () -> Unit, private val falsingCollector: FalsingCollector, - private val falsingManager: FalsingManager + private val falsingManager: FalsingManager, + private val logSmartspaceImpression: () -> Unit ) { /** * Is the view in RTL @@ -100,10 +102,11 @@ class MediaCarouselScrollHandler( private lateinit var settingsButton: View /** - * What's the currently active player index? + * What's the currently visible player index? */ - var activeMediaIndex: Int = 0 + var visibleMediaIndex: Int = 0 private set + /** * How much are we scrolled into the current media? */ @@ -129,7 +132,7 @@ class MediaCarouselScrollHandler( field = value // The player width has changed, let's update the scroll position to make sure // it's still at the same place - var newRelativeScroll = activeMediaIndex * playerWidthPlusPadding + var newRelativeScroll = visibleMediaIndex * playerWidthPlusPadding if (scrollIntoCurrentMedia > playerWidthPlusPadding) { newRelativeScroll += playerWidthPlusPadding - (scrollIntoCurrentMedia - playerWidthPlusPadding) @@ -198,6 +201,13 @@ class MediaCarouselScrollHandler( } } + var visibleToUser: Boolean = false + set(value) { + if (field != value) { + field = value + } + } + init { gestureDetector = GestureDetectorCompat(scrollView.context, gestureListener) scrollView.touchListener = touchListener @@ -457,12 +467,16 @@ class MediaCarouselScrollHandler( val wasScrolledIn = scrollIntoCurrentMedia != 0 scrollIntoCurrentMedia = scrollInAmount val nowScrolledIn = scrollIntoCurrentMedia != 0 - if (newIndex != activeMediaIndex || wasScrolledIn != nowScrolledIn) { - activeMediaIndex = newIndex + if (newIndex != visibleMediaIndex || wasScrolledIn != nowScrolledIn) { + val oldIndex = visibleMediaIndex + visibleMediaIndex = newIndex + if (oldIndex != visibleMediaIndex && visibleToUser) { + logSmartspaceImpression() + } closeGuts() updatePlayerVisibilities() } - val relativeLocation = activeMediaIndex.toFloat() + if (playerWidthPlusPadding > 0) + val relativeLocation = visibleMediaIndex.toFloat() + if (playerWidthPlusPadding > 0) scrollInAmount.toFloat() / playerWidthPlusPadding else 0f // Fix the location, because PageIndicator does not handle RTL internally val location = if (isRtl) { @@ -500,7 +514,7 @@ class MediaCarouselScrollHandler( val scrolledIn = scrollIntoCurrentMedia != 0 for (i in 0 until mediaContent.childCount) { val view = mediaContent.getChildAt(i) - val visible = (i == activeMediaIndex) || ((i == (activeMediaIndex + 1)) && scrolledIn) + val visible = (i == visibleMediaIndex) || ((i == (visibleMediaIndex + 1)) && scrolledIn) view.visibility = if (visible) View.VISIBLE else View.INVISIBLE } } @@ -511,12 +525,12 @@ class MediaCarouselScrollHandler( */ fun onPrePlayerRemoved(removed: MediaControlPanel) { val removedIndex = mediaContent.indexOfChild(removed.playerViewHolder?.player) - // If the removed index is less than the activeMediaIndex, then we need to decrement it. + // If the removed index is less than the visibleMediaIndex, then we need to decrement it. // RTL has no effect on this, because indices are always relative (start-to-end). // Update the index 'manually' since we won't always get a call to onMediaScrollingChanged - val beforeActive = removedIndex <= activeMediaIndex + val beforeActive = removedIndex <= visibleMediaIndex if (beforeActive) { - activeMediaIndex = Math.max(0, activeMediaIndex - 1) + visibleMediaIndex = Math.max(0, visibleMediaIndex - 1) } // If the removed media item is "left of" the active one (in an absolute sense), we need to // scroll the view to keep that player in view. This is because scroll position is always @@ -545,6 +559,17 @@ class MediaCarouselScrollHandler( scrollView.relativeScrollX = 0 } + fun scrollToActivePlayer(activePlayerIndex: Int) { + var destIndex = activePlayerIndex + destIndex = Math.min(mediaContent.getChildCount() - 1, destIndex) + val view = mediaContent.getChildAt(destIndex) + // We need to post this to wait for the active player becomes visible. + mainExecutor.executeDelayed({ + visibleMediaIndex = activePlayerIndex + scrollView.smoothScrollTo(view.left, scrollView.scrollY) + }, SCROLL_DELAY) + } + companion object { private val CONTENT_TRANSLATION = object : FloatPropertyCompat<MediaCarouselScrollHandler>( "contentTranslation") { diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index 1e9cc8cb08cc..fe3463f853f0 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -105,7 +105,8 @@ public class MediaControlPanel { private int mDevicePadding; private int mAlbumArtSize; // Instance id for logging purpose. - private int mInstanceId; + protected int mInstanceId = -1; + private MediaCarouselController mMediaCarouselController; private final MediaOutputDialogFactory mMediaOutputDialogFactory; /** @@ -119,7 +120,7 @@ public class MediaControlPanel { ActivityStarter activityStarter, MediaViewController mediaViewController, SeekBarViewModel seekBarViewModel, Lazy<MediaDataManager> lazyMediaDataManager, KeyguardDismissUtil keyguardDismissUtil, MediaOutputDialogFactory - mediaOutputDialogFactory) { + mediaOutputDialogFactory, MediaCarouselController mediaCarouselController) { mContext = context; mBackgroundExecutor = backgroundExecutor; mActivityStarter = activityStarter; @@ -128,6 +129,7 @@ public class MediaControlPanel { mMediaDataManagerLazy = lazyMediaDataManager; mKeyguardDismissUtil = keyguardDismissUtil; mMediaOutputDialogFactory = mediaOutputDialogFactory; + mMediaCarouselController = mediaCarouselController; loadDimens(); } @@ -251,6 +253,8 @@ public class MediaControlPanel { } mKey = key; MediaSession.Token token = data.getToken(); + mInstanceId = data.getPackageName().hashCode(); + mBackgroundColor = data.getBackgroundColor(); if (mToken == null || !mToken.equals(token)) { mToken = token; @@ -270,6 +274,9 @@ public class MediaControlPanel { if (clickIntent != null) { mPlayerViewHolder.getPlayer().setOnClickListener(v -> { if (mMediaViewController.isGutsVisible()) return; + + logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK + false); mActivityStarter.postStartActivityDismissingKeyguard(clickIntent, buildLaunchAnimatorController(mPlayerViewHolder.getPlayer())); }); @@ -376,6 +383,8 @@ public class MediaControlPanel { } else { button.setEnabled(true); button.setOnClickListener(v -> { + logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK + false); action.run(); }); } @@ -408,6 +417,9 @@ public class MediaControlPanel { mPlayerViewHolder.getDismissLabel().setAlpha(isDismissible ? 1 : DISABLED_ALPHA); mPlayerViewHolder.getDismiss().setEnabled(isDismissible); mPlayerViewHolder.getDismiss().setOnClickListener(v -> { + logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS + false); + if (mKey != null) { closeGuts(); mKeyguardDismissUtil.executeWhenUnlocked(() -> { @@ -462,7 +474,8 @@ public class MediaControlPanel { /** Bind this recommendation view based on the data given. */ public void bindRecommendation( @NonNull SmartspaceTarget target, - @NonNull int backgroundColor) { + @NonNull int backgroundColor, + @Nullable View.OnClickListener callback) { if (mRecommendationViewHolder == null) { return; } @@ -526,7 +539,7 @@ public class MediaControlPanel { setSmartspaceRecItemOnClickListener( mediaCoverImageView, recommendation, - null); + callback); if (uiComponentIndex < MEDIA_RECOMMENDATION_ITEMS_PER_ROW) { setVisibleAndAlpha(collapsedSet, @@ -549,6 +562,8 @@ public class MediaControlPanel { // Set up long press to show guts setting panel. mRecommendationViewHolder.getDismiss().setOnClickListener(v -> { + logSmartspaceCardReported(761, // SMARTSPACE_CARD_DISMISS + true); closeGuts(); mKeyguardDismissUtil.executeWhenUnlocked(() -> { mMediaDataManagerLazy.get().dismissSmartspaceRecommendation( @@ -651,15 +666,9 @@ public class MediaControlPanel { } view.setOnClickListener(v -> { - // When media recommendation card is shown, there could be only one card. - SysUiStatsLog.write(SysUiStatsLog.SMARTSPACE_CARD_REPORTED, - 760, // SMARTSPACE_CARD_CLICK - mInstanceId, - SysUiStatsLog - .SMART_SPACE_CARD_REPORTED__CARD_TYPE__HEADPHONE_MEDIA_RECOMMENDATIONS, - getSurfaceForSmartspaceLogging(), - /* rank */ 0, - /* cardinality */ 1); + // When media recommendation card is shown, it will always be the top card. + logSmartspaceCardReported(760, // SMARTSPACE_CARD_CLICK + true); if (shouldSmartspaceRecItemOpenInForeground(action)) { // Request to unlock the device if the activity needs to be opened in foreground. @@ -717,7 +726,10 @@ public class MediaControlPanel { return SysUiStatsLog.SMART_SPACE_CARD_REPORTED__DISPLAY_SURFACE__DEFAULT_SURFACE; } - protected int getInstanceId() { - return mInstanceId; + private void logSmartspaceCardReported(int eventId, boolean isRecommendationCard) { + mMediaCarouselController.logSmartspaceCardReported(eventId, + mInstanceId, + isRecommendationCard, + getSurfaceForSmartspaceLogging()); } } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt index a80a410d32db..3c28f6e1651a 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaHierarchyManager.kt @@ -171,16 +171,15 @@ class MediaHierarchyManager @Inject constructor( if (field != value) { field = value } - // Pull down shade from lock screen (exclude the case when shade is brought out by - // tapping twice on lock screen) - if (value && isLockScreenShadeVisibleToUser()) { + // qs is expanded on LS shade and HS shade + if (value && (isLockScreenShadeVisibleToUser() || isHomeScreenShadeVisibleToUser())) { mediaCarouselController.logSmartspaceImpression() } // Release shade and back to lock screen if (isLockScreenVisibleToUser()) { mediaCarouselController.logSmartspaceImpression() } - mediaCarouselController.visibleToUser = isVisibleToUser() + mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = isVisibleToUser() } /** @@ -257,7 +256,7 @@ class MediaHierarchyManager @Inject constructor( if (newState == StatusBarState.SHADE_LOCKED && isLockScreenShadeVisibleToUser()) { mediaCarouselController.logSmartspaceImpression() } - mediaCarouselController.visibleToUser = isVisibleToUser() + mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = isVisibleToUser() } override fun onDozeAmountChanged(linear: Float, eased: Float) { @@ -275,7 +274,7 @@ class MediaHierarchyManager @Inject constructor( updateDesiredLocation() qsExpanded = false } - mediaCarouselController.visibleToUser = isVisibleToUser() + mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = isVisibleToUser() } override fun onExpandedChanged(isExpanded: Boolean) { @@ -287,7 +286,7 @@ class MediaHierarchyManager @Inject constructor( if (isLockScreenVisibleToUser()) { mediaCarouselController.logSmartspaceImpression() } - mediaCarouselController.visibleToUser = isVisibleToUser() + mediaCarouselController.mediaCarouselScrollHandler.visibleToUser = isVisibleToUser() } }) diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java index 56375adb3d4e..4e41d75e3f43 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java @@ -101,6 +101,7 @@ import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener; +import android.view.inputmethod.InputMethodManager; import androidx.annotation.VisibleForTesting; @@ -1175,6 +1176,9 @@ public class NavigationBar implements View.OnAttachStateChangeListener, accessibilityButton.setOnLongClickListener(this::onAccessibilityLongClick); updateAccessibilityServicesState(mAccessibilityManager); + ButtonDispatcher imeSwitcherButton = mNavigationBarView.getImeSwitchButton(); + imeSwitcherButton.setOnClickListener(this::onImeSwitcherClick); + updateScreenPinningGestures(); } @@ -1274,6 +1278,11 @@ public class NavigationBar implements View.OnAttachStateChangeListener, mCommandQueue.toggleRecentApps(); } + private void onImeSwitcherClick(View v) { + mContext.getSystemService(InputMethodManager.class).showInputMethodPickerFromSystem( + true /* showAuxiliarySubtypes */, mDisplayId); + }; + private boolean onLongPressBackHome(View v) { return onLongPressNavigationButtons(v, R.id.back, R.id.home); } @@ -1282,7 +1291,6 @@ public class NavigationBar implements View.OnAttachStateChangeListener, return onLongPressNavigationButtons(v, R.id.back, R.id.recent_apps); } - /** * This handles long-press of both back and recents/home. Back is the common button with * combination of recents if it is visible or home if recents is invisible. diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java index 3544f60601a8..9c3cb2e4604d 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java @@ -113,6 +113,7 @@ public class NavigationBarController implements Callbacks, private final Handler mHandler; private final DisplayManager mDisplayManager; private final NavigationBarOverlayController mNavBarOverlayController; + private final TaskbarDelegate mTaskbarDelegate; private int mNavMode; private boolean mIsTablet; @@ -182,6 +183,7 @@ public class NavigationBarController implements Callbacks, mNavBarOverlayController = navBarOverlayController; mNavMode = mNavigationModeController.addListener(this); mNavigationModeController.addListener(this); + mTaskbarDelegate = new TaskbarDelegate(mOverviewProxyService); } @Override @@ -190,17 +192,7 @@ public class NavigationBarController implements Callbacks, mIsTablet = isTablet(newConfig); boolean largeScreenChanged = mIsTablet != isOldConfigTablet; // If we folded/unfolded while in 3 button, show navbar in folded state, hide in unfolded - if (isThreeButtonTaskbarFlagEnabled() && - largeScreenChanged && mNavMode == NAV_BAR_MODE_3BUTTON) { - if (!mIsTablet) { - // Folded state, show 3 button nav bar - createNavigationBar(mContext.getDisplay(), null, null); - } else { - // Unfolded state, hide 3 button nav bars - for (int i = 0; i < mNavigationBars.size(); i++) { - removeNavigationBar(mNavigationBars.keyAt(i)); - } - } + if (largeScreenChanged && updateNavbarForTaskbar()) { return; } @@ -217,18 +209,15 @@ public class NavigationBarController implements Callbacks, @Override public void onNavigationModeChanged(int mode) { + if (mNavMode == mode) { + return; + } final int oldMode = mNavMode; mNavMode = mode; mHandler.post(() -> { // create/destroy nav bar based on nav mode only in unfolded state - if (isThreeButtonTaskbarFlagEnabled() && oldMode != mNavMode && mIsTablet) { - if (oldMode == NAV_BAR_MODE_3BUTTON && - mNavigationBars.get(mContext.getDisplayId()) == null) { - // We remove navbar for 3 button unfolded, add it back in - createNavigationBar(mContext.getDisplay(), null, null); - } else if (mNavMode == NAV_BAR_MODE_3BUTTON) { - removeNavigationBar(mContext.getDisplayId()); - } + if (oldMode != mNavMode) { + updateNavbarForTaskbar(); } for (int i = 0; i < mNavigationBars.size(); i++) { NavigationBar navBar = mNavigationBars.valueAt(i); @@ -243,6 +232,27 @@ public class NavigationBarController implements Callbacks, }); } + /** + * @return {@code true} if navbar was added/removed, false otherwise + */ + public boolean updateNavbarForTaskbar() { + if (!isThreeButtonTaskbarFlagEnabled()) { + return false; + } + + if (mIsTablet && mNavMode == NAV_BAR_MODE_3BUTTON) { + // Remove navigation bar when taskbar is showing, currently only for 3 button mode + removeNavigationBar(mContext.getDisplayId()); + mCommandQueue.addCallback(mTaskbarDelegate); + } else if (mNavigationBars.get(mContext.getDisplayId()) == null) { + // Add navigation bar after taskbar goes away + createNavigationBar(mContext.getDisplay(), null, null); + mCommandQueue.removeCallback(mTaskbarDelegate); + } + + return true; + } + @Override public void onDisplayRemoved(int displayId) { removeNavigationBar(displayId); diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java index 7342f91a8108..4d9175b8db68 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarInflaterView.java @@ -158,7 +158,6 @@ public class NavigationBarInflaterView extends FrameLayout } public void onLikelyDefaultLayoutChange() { - // Reevaluate new layout final String newValue = getDefaultLayout(); if (!Objects.equals(mCurrentLayout, newValue)) { diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java index 0ed4d861c712..f82d265d12d6 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarView.java @@ -166,6 +166,7 @@ public class NavigationBarView extends FrameLayout implements private NavigationBarInflaterView mNavigationInflaterView; private RecentsOnboarding mRecentsOnboarding; private NotificationPanelViewController mPanelView; + private RotationContextButton mRotationContextButton; private FloatingRotationButton mFloatingRotationButton; private RotationButtonController mRotationButtonController; private NavigationBarOverlayController mNavBarOverlayController; @@ -233,14 +234,6 @@ public class NavigationBarView extends FrameLayout implements } } - private final OnClickListener mImeSwitcherClickListener = new OnClickListener() { - @Override - public void onClick(View view) { - mContext.getSystemService(InputMethodManager.class).showInputMethodPickerFromSystem( - true /* showAuxiliarySubtypes */, getContext().getDisplayId()); - } - }; - private final AccessibilityDelegate mQuickStepAccessibilityDelegate = new AccessibilityDelegate() { private AccessibilityAction mToggleOverviewAction; @@ -311,33 +304,26 @@ public class NavigationBarView extends FrameLayout implements mIsVertical = false; mLongClickableAccessibilityButton = false; mNavBarMode = Dependency.get(NavigationModeController.class).addListener(this); - boolean isGesturalMode = isGesturalMode(mNavBarMode); mSysUiFlagContainer = Dependency.get(SysUiState.class); // Set up the context group of buttons mContextualButtonGroup = new ContextualButtonGroup(R.id.menu_container); final ContextualButton imeSwitcherButton = new ContextualButton(R.id.ime_switcher, mLightContext, R.drawable.ic_ime_switcher_default); - final RotationContextButton rotateSuggestionButton = new RotationContextButton( - R.id.rotate_suggestion, mLightContext, - R.drawable.ic_sysbar_rotate_button_ccw_start_0); final ContextualButton accessibilityButton = new ContextualButton(R.id.accessibility_button, mLightContext, R.drawable.ic_sysbar_accessibility_button); mContextualButtonGroup.addButton(imeSwitcherButton); - if (!isGesturalMode) { - mContextualButtonGroup.addButton(rotateSuggestionButton); - } mContextualButtonGroup.addButton(accessibilityButton); - - mOverviewProxyService = Dependency.get(OverviewProxyService.class); + mRotationContextButton = new RotationContextButton(R.id.rotate_suggestion, + mLightContext, R.drawable.ic_sysbar_rotate_button_ccw_start_0); mFloatingRotationButton = new FloatingRotationButton(context); - mRecentsOnboarding = new RecentsOnboarding(context, mOverviewProxyService); mRotationButtonController = new RotationButtonController(mLightContext, - mLightIconColor, mDarkIconColor, - isGesturalMode ? mFloatingRotationButton : rotateSuggestionButton, - mRotationButtonListener); + mLightIconColor, mDarkIconColor); + updateRotationButton(); + mOverviewProxyService = Dependency.get(OverviewProxyService.class); + mRecentsOnboarding = new RecentsOnboarding(context, mOverviewProxyService); mNavBarOverlayController = Dependency.get(NavigationBarOverlayController.class); if (mNavBarOverlayController.isNavigationBarOverlayEnabled()) { mNavBarOverlayController.init( @@ -357,7 +343,6 @@ public class NavigationBarView extends FrameLayout implements mButtonDispatchers.put(R.id.recent_apps, new ButtonDispatcher(R.id.recent_apps)); mButtonDispatchers.put(R.id.ime_switcher, imeSwitcherButton); mButtonDispatchers.put(R.id.accessibility_button, accessibilityButton); - mButtonDispatchers.put(R.id.rotate_suggestion, rotateSuggestionButton); mButtonDispatchers.put(R.id.menu_container, mContextualButtonGroup); mDeadZone = new DeadZone(this); @@ -555,6 +540,23 @@ public class NavigationBarView extends FrameLayout implements } } + /** + * Updates the rotation button based on the current navigation mode. + */ + private void updateRotationButton() { + if (isGesturalMode(mNavBarMode)) { + mContextualButtonGroup.removeButton(R.id.rotate_suggestion); + mButtonDispatchers.remove(R.id.rotate_suggestion); + mRotationButtonController.setRotationButton(mFloatingRotationButton, + mRotationButtonListener); + } else if (mContextualButtonGroup.getContextButton(R.id.rotate_suggestion) == null) { + mContextualButtonGroup.addButton(mRotationContextButton); + mButtonDispatchers.put(R.id.rotate_suggestion, mRotationContextButton); + mRotationButtonController.setRotationButton(mRotationContextButton, + mRotationButtonListener); + } + } + public KeyButtonDrawable getBackDrawable() { KeyButtonDrawable drawable = getDrawable(getBackDrawableRes()); orientBackButton(drawable); @@ -908,6 +910,7 @@ public class NavigationBarView extends FrameLayout implements mBarTransitions.onNavigationModeChanged(mNavBarMode); mEdgeBackGestureHandler.onNavigationModeChanged(mNavBarMode); mRecentsOnboarding.onNavigationModeChanged(mNavBarMode); + updateRotationButton(); if (isGesturalMode(mNavBarMode)) { mRegionSamplingHelper.start(mSamplingBounds); @@ -932,7 +935,6 @@ public class NavigationBarView extends FrameLayout implements mNavigationInflaterView = findViewById(R.id.navigation_inflater); mNavigationInflaterView.setButtonDispatchers(mButtonDispatchers); - getImeSwitchButton().setOnClickListener(mImeSwitcherClickListener); updateOrientationViews(); reloadNavIcons(); } @@ -1027,6 +1029,9 @@ public class NavigationBarView extends FrameLayout implements private void updateButtonLocation(ButtonDispatcher button, boolean inScreenSpace, boolean useNearestRegion) { + if (button == null) { + return; + } View view = button.getCurrentView(); if (view == null || !button.isVisible()) { return; diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java index 4bcb0193c7d0..ddf089bac25e 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/RotationButtonController.java @@ -66,10 +66,10 @@ public class RotationButtonController { private static final int NUM_ACCEPTED_ROTATION_SUGGESTIONS_FOR_INTRODUCTION = 3; private final Context mContext; - private final RotationButton mRotationButton; private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper()); private final UiEventLogger mUiEventLogger = new UiEventLoggerImpl(); private final ViewRippler mViewRippler = new ViewRippler(); + private RotationButton mRotationButton; private int mLastRotationSuggestion; private boolean mPendingRotationSuggestion; @@ -125,20 +125,21 @@ public class RotationButtonController { } RotationButtonController(Context context, @ColorInt int lightIconColor, - @ColorInt int darkIconColor, RotationButton rotationButton, - Consumer<Boolean> visibilityChangedCallback) { + @ColorInt int darkIconColor) { mContext = context; mLightIconColor = lightIconColor; mDarkIconColor = darkIconColor; - mRotationButton = rotationButton; - mRotationButton.setRotationButtonController(this); mIsNavigationBarShowing = true; mRotationLockController = Dependency.get(RotationLockController.class); mAccessibilityManagerWrapper = Dependency.get(AccessibilityManagerWrapper.class); - - // Register the task stack listener mTaskStackListener = new TaskStackListenerImpl(); + } + + void setRotationButton(RotationButton rotationButton, + Consumer<Boolean> visibilityChangedCallback) { + mRotationButton = rotationButton; + mRotationButton.setRotationButtonController(this); mRotationButton.setOnClickListener(this::onRotateSuggestionClick); mRotationButton.setOnHoverListener(this::onRotateSuggestionHover); mRotationButton.setVisibilityChangedCallback(visibilityChangedCallback); diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java new file mode 100644 index 000000000000..03147d8f1085 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java @@ -0,0 +1,38 @@ +/* + * Copyright 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.navigationbar; + +import android.os.IBinder; + +import com.android.systemui.recents.OverviewProxyService; +import com.android.systemui.statusbar.CommandQueue; + +public class TaskbarDelegate implements CommandQueue.Callbacks { + + private final OverviewProxyService mOverviewProxyService; + + public TaskbarDelegate(OverviewProxyService overviewProxyService) { + mOverviewProxyService = overviewProxyService; + } + + @Override + public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition, + boolean showImeSwitcher) { + mOverviewProxyService.notifyImeWindowStatus(displayId, token, vis, backDisposition, + showImeSwitcher); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java b/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java index 50b638bcc903..2ace303986fe 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/buttons/ContextualButtonGroup.java @@ -41,10 +41,23 @@ public class ContextualButtonGroup extends ButtonDispatcher { * @param button the button added to the group */ public void addButton(@NonNull ContextualButton button) { + // By default buttons in the context group are not visible until + // {@link #setButtonVisibility()) is called to show one of the buttons + button.setVisibility(View.INVISIBLE); button.attachToGroup(this); mButtonData.add(new ButtonData(button)); } + /** + * Removes a contextual button from the group. + */ + public void removeButton(@IdRes int buttonResId) { + int index = getContextButtonIndex(buttonResId); + if (index != INVALID_INDEX) { + mButtonData.remove(index); + } + } + public ContextualButton getContextButton(@IdRes int buttonResId) { int index = getContextButtonIndex(buttonResId); if (index != INVALID_INDEX) { diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java index a6c6103ae4c5..29685a4c628b 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java @@ -203,7 +203,7 @@ public class PeopleSpaceUtils { if (DEBUG) { Log.i(TAG, "Removing any notification stored for tile Id: " + tile.getId()); } - return tile + PeopleSpaceTile.Builder updatedTile = tile .toBuilder() // Reset notification content. .setNotificationKey(null) @@ -212,8 +212,15 @@ public class PeopleSpaceUtils { .setNotificationDataUri(null) .setMessagesCount(0) // Reset missed calls category. - .setNotificationCategory(null) - .build(); + .setNotificationCategory(null); + + // Only set last interaction to now if we are clearing a notification. + if (!TextUtils.isEmpty(tile.getNotificationKey())) { + long currentTimeMillis = System.currentTimeMillis(); + if (DEBUG) Log.d(TAG, "Set last interaction on clear: " + currentTimeMillis); + updatedTile.setLastInteractionTimestamp(currentTimeMillis); + } + return updatedTile.build(); } /** @@ -227,10 +234,11 @@ public class PeopleSpaceUtils { if (DEBUG) Log.d(TAG, "Tile key: " + key.toString() + ". Notification is null"); return removeNotificationFields(tile); } - Notification notification = notificationEntry.getSbn().getNotification(); + StatusBarNotification sbn = notificationEntry.getSbn(); + Notification notification = sbn.getNotification(); PeopleSpaceTile.Builder updatedTile = tile.toBuilder(); - String uriFromNotification = getContactUri(notificationEntry.getSbn()); + String uriFromNotification = getContactUri(sbn); if (appWidgetId.isPresent() && tile.getContactUri() == null && !TextUtils.isEmpty( uriFromNotification)) { if (DEBUG) Log.d(TAG, "Add uri from notification to tile: " + uriFromNotification); @@ -241,7 +249,6 @@ public class PeopleSpaceUtils { // Update cached tile in-memory. updatedTile.setContactUri(contactUri); } - boolean isMissedCall = isMissedCall(notification); List<Notification.MessagingStyle.Message> messages = getMessagingStyleMessages(notification); @@ -261,12 +268,13 @@ public class PeopleSpaceUtils { Uri dataUri = message != null ? message.getDataUri() : null; if (DEBUG) { Log.d(TAG, "Tile key: " + key.toString() + ". Notification message has text: " - + hasMessageText); + + hasMessageText + " Has last interaction: " + sbn.getPostTime()); } CharSequence sender = getSenderIfGroupConversation(notification, message); return updatedTile - .setNotificationKey(notificationEntry.getSbn().getKey()) + .setLastInteractionTimestamp(sbn.getPostTime()) + .setNotificationKey(sbn.getKey()) .setNotificationCategory(notification.category) .setNotificationContent(content) .setNotificationSender(sender) diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java index 6980d723583b..06f8a60dd015 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java @@ -835,7 +835,7 @@ public class PeopleTileViewHelper { return null; } else if (durationSinceLastInteraction.toDays() < DAYS_IN_A_WEEK) { return context.getString(R.string.timestamp, formatter.formatMeasures( - new Measure(durationSinceLastInteraction.toHours(), + new Measure(durationSinceLastInteraction.toDays(), MeasureUnit.DAY))); } else if (durationSinceLastInteraction.toDays() <= DAYS_IN_A_WEEK * 2) { return context.getString(durationSinceLastInteraction.toDays() == DAYS_IN_A_WEEK diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/AppWidgetOptionsHelper.java b/packages/SystemUI/src/com/android/systemui/people/widget/AppWidgetOptionsHelper.java index 73c43ebfdaf0..b49533eed219 100644 --- a/packages/SystemUI/src/com/android/systemui/people/widget/AppWidgetOptionsHelper.java +++ b/packages/SystemUI/src/com/android/systemui/people/widget/AppWidgetOptionsHelper.java @@ -16,7 +16,6 @@ package com.android.systemui.people.widget; -import static com.android.systemui.people.PeopleSpaceUtils.DEBUG; import static com.android.systemui.people.PeopleSpaceUtils.EMPTY_KEY; import static com.android.systemui.people.PeopleSpaceUtils.EMPTY_STRING; import static com.android.systemui.people.PeopleSpaceUtils.INVALID_USER_ID; @@ -24,38 +23,13 @@ import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME; import static com.android.systemui.people.PeopleSpaceUtils.SHORTCUT_ID; import static com.android.systemui.people.PeopleSpaceUtils.USER_ID; -import android.app.people.PeopleSpaceTile; import android.appwidget.AppWidgetManager; import android.os.Bundle; -import android.util.Log; /** Helper class encapsulating AppWidgetOptions for People Tile. */ public class AppWidgetOptionsHelper { private static final String TAG = "AppWidgetOptionsHelper"; - /** Key to store {@link PeopleSpaceTile} in AppWidgetOptions Bundle. */ - public static final String OPTIONS_PEOPLE_TILE = "options_people_tile"; - - /** Sets {@link PeopleSpaceTile} in AppWidgetOptions. */ - public static Bundle setPeopleTile(AppWidgetManager appWidgetManager, int appWidgetId, - PeopleSpaceTile tile) { - Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId); - if (tile == null) { - if (DEBUG) Log.w(TAG, "Requested to store null tile"); - return options; - } - options.putParcelable(OPTIONS_PEOPLE_TILE, tile); - appWidgetManager.updateAppWidgetOptions(appWidgetId, options); - return options; - } - - /** Gets {@link PeopleSpaceTile} from AppWidgetOptions. */ - public static PeopleSpaceTile getPeopleTile(AppWidgetManager appWidgetManager, - int appWidgetId) { - Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId); - return options != null ? options.getParcelable(OPTIONS_PEOPLE_TILE) : null; - } - /** Sets {@link PeopleTileKey} in AppWidgetOptions. */ public static void setPeopleTileKey(AppWidgetManager appWidgetManager, int appWidgetId, PeopleTileKey key) { @@ -66,16 +40,6 @@ public class AppWidgetOptionsHelper { appWidgetManager.updateAppWidgetOptions(appWidgetId, options); } - /** Gets {@link PeopleTileKey} from AppWidgetOptions. */ - public static PeopleTileKey getPeopleTileKey(AppWidgetManager appWidgetManager, - int appWidgetId) { - Bundle options = appWidgetManager.getAppWidgetOptions(appWidgetId); - if (options == null) { - return EMPTY_KEY; - } - return getPeopleTileKeyFromBundle(options); - } - /** Gets {@link PeopleTileKey} from Bundle {@code options}. */ public static PeopleTileKey getPeopleTileKeyFromBundle(Bundle options) { String pkg = options.getString(PACKAGE_NAME, EMPTY_STRING); diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java index ea1724f96669..9e0dd72e77f5 100644 --- a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java +++ b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java @@ -136,6 +136,9 @@ public class PeopleSpaceWidgetManager { private Map<String, Set<String>> mNotificationKeyToWidgetIdsMatchedByUri = new HashMap<>(); private boolean mRegisteredReceivers; + @GuardedBy("mLock") + public static Map<Integer, PeopleSpaceTile> mTiles = new HashMap<>(); + @Inject public PeopleSpaceWidgetManager(Context context, LauncherApps launcherApps, NotificationEntryManager notificationEntryManager, @@ -252,8 +255,7 @@ public class PeopleSpaceWidgetManager { if (tile == null) { Log.e(TAG, "Matching conversation not found for shortcut ID"); } - Bundle options = mAppWidgetManager.getAppWidgetOptions(appWidgetId); - updateAppWidgetViews(appWidgetId, tile, options); + updateAppWidgetOptionsAndView(appWidgetId, tile); widgetIdToTile.put(appWidgetId, tile); if (tile != null) { registerConversationListenerIfNeeded(appWidgetId, @@ -289,7 +291,14 @@ public class PeopleSpaceWidgetManager { /** Updates tile in app widget options and the current view. */ public void updateAppWidgetOptionsAndView(int appWidgetId, PeopleSpaceTile tile) { - Bundle options = AppWidgetOptionsHelper.setPeopleTile(mAppWidgetManager, appWidgetId, tile); + if (tile == null) { + if (DEBUG) Log.w(TAG, "Requested to store null tile"); + return; + } + synchronized (mTiles) { + mTiles.put(appWidgetId, tile); + } + Bundle options = mAppWidgetManager.getAppWidgetOptions(appWidgetId); updateAppWidgetViews(appWidgetId, tile, options); } @@ -299,8 +308,11 @@ public class PeopleSpaceWidgetManager { */ @Nullable public PeopleSpaceTile getTileForExistingWidget(int appWidgetId) { - // First, check if tile is cached in AppWidgetOptions. - PeopleSpaceTile tile = AppWidgetOptionsHelper.getPeopleTile(mAppWidgetManager, appWidgetId); + // First, check if tile is cached in memory. + PeopleSpaceTile tile; + synchronized (mTiles) { + tile = mTiles.get(appWidgetId); + } if (tile != null) { if (DEBUG) Log.d(TAG, "People Tile is cached for widget: " + appWidgetId); return tile; @@ -781,7 +793,6 @@ public class PeopleSpaceWidgetManager { } catch (Exception e) { Log.w(TAG, "Exception caching shortcut:" + e); } - updateAppWidgetOptionsAndView(appWidgetId, tile); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java index be96ba8a09d7..1010b6a0b97b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java @@ -398,14 +398,8 @@ public class QSAnimator implements Callback, PageListener, Listener, OnLayoutCha // Fade in the security footer and the divider as we reach the final position builder = new Builder().setStartDelay(EXPANDED_TILE_DELAY); builder.addFloat(mSecurityFooter.getView(), "alpha", 0, 1); - if (mQsPanelController.getDivider() != null) { - builder.addFloat(mQsPanelController.getDivider(), "alpha", 0, 1); - } mAllPagesDelayedAnimator = builder.build(); mAllViews.add(mSecurityFooter.getView()); - if (mQsPanelController.getDivider() != null) { - mAllViews.add(mQsPanelController.getDivider()); - } translationYBuilder.setInterpolator(mQSExpansionPathInterpolator.getYInterpolator()); mTranslationYAnimator = translationYBuilder.build(); if (mQQSTileHeightAnimator != null) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java index 3b436769a456..dd1a4af18f7f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java @@ -297,9 +297,7 @@ public class QSContainerImpl extends FrameLayout { // start margin of next page). qsPanelController.setPageMargin(2 * mSideMargins); } else if (view == mHeader) { - // The header contains the QQS panel which needs to have special padding, to - // visually align them. - quickStatusBarHeaderController.setContentMargins(mContentPadding, mContentPadding); + // No content padding for the header. } else { view.setPaddingRelative( mContentPadding, diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java index 40967ede057e..57438d189b22 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterView.java @@ -45,7 +45,6 @@ import com.android.settingslib.Utils; import com.android.settingslib.development.DevelopmentSettingsEnabler; import com.android.settingslib.drawable.UserIconDrawable; import com.android.systemui.R; -import com.android.systemui.R.dimen; import com.android.systemui.qs.TouchAnimator.Builder; import com.android.systemui.statusbar.phone.MultiUserSwitch; import com.android.systemui.statusbar.phone.SettingsButton; @@ -140,7 +139,7 @@ public class QSFooterView extends FrameLayout { void updateAnimator(int width, int numTiles) { int size = mContext.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_size) - - mContext.getResources().getDimensionPixelSize(dimen.qs_quick_tile_padding); + - mContext.getResources().getDimensionPixelSize(R.dimen.qs_tile_padding); int remaining = (width - numTiles * size) / (numTiles - 1); int defSpace = mContext.getResources().getDimensionPixelOffset(R.dimen.default_gear_space); @@ -167,6 +166,9 @@ public class QSFooterView extends FrameLayout { private void updateResources() { updateFooterAnimator(); + MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams(); + lp.bottomMargin = getResources().getDimensionPixelSize(R.dimen.qs_footers_margin_bottom); + setLayoutParams(lp); mTunerIconTranslation = mContext.getResources() .getDimensionPixelOffset(R.dimen.qs_footer_tuner_icon_translation); mTunerIcon.setTranslationX(isLayoutRtl() ? -mTunerIconTranslation : mTunerIconTranslation); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 4e16b7414ff1..7062e8cea207 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -84,8 +84,6 @@ public class QSPanel extends LinearLayout implements Tunable { @Nullable protected View mFooter; - @Nullable - protected View mDivider; @Nullable private ViewGroup mHeaderContainer; @@ -327,7 +325,6 @@ public class QSPanel extends LinearLayout implements Tunable { protected void onFinishInflate() { super.onFinishInflate(); mFooter = findViewById(R.id.qs_footer); - mDivider = findViewById(R.id.divider); } private void updateHorizontalLinearLayoutMargins() { @@ -602,11 +599,6 @@ public class QSPanel extends LinearLayout implements Tunable { return mTileLayout; } - @Nullable - public View getDivider() { - return mDivider; - } - /** */ public void setContentMargins(int startMargin, int endMargin, ViewGroup mediaHostView) { // Only some views actually want this content padding, others want to go all the way @@ -614,12 +606,6 @@ public class QSPanel extends LinearLayout implements Tunable { mContentMarginStart = startMargin; mContentMarginEnd = endMargin; updateMediaHostContentMargins(mediaHostView); - updateDividerMargin(); - } - - private void updateDividerMargin() { - if (mDivider == null) return; - updateMargins(mDivider, mContentMarginStart, mContentMarginEnd); } /** @@ -712,7 +698,6 @@ public class QSPanel extends LinearLayout implements Tunable { } private void updateMargins(ViewGroup mediaHostView) { - updateDividerMargin(); updateMediaHostContentMargins(mediaHostView); updateHorizontalLinearLayoutMargins(); updatePadding(); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index fff3d1fe4b5f..ac92d4fe44e2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -284,10 +284,6 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { return mView.getBrightnessView(); } - public View getDivider() { - return mView.getDivider(); - } - /** */ public void setPageListener(PagedTileLayout.PageListener listener) { mView.setPageListener(listener); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index e40f2936de51..170785ca7aab 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -22,7 +22,6 @@ import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLA import android.content.ComponentName; import android.content.res.Configuration; import android.metrics.LogMaker; -import android.view.View; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; @@ -294,13 +293,6 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr boolean switchTileLayout(boolean force) { /** Whether or not the QuickQSPanel currently contains a media player. */ boolean horizontal = shouldUseHorizontalLayout(); - if (mView.getDivider() != null) { - if (!horizontal && mUsingMediaPlayer && mMediaHost.getVisible()) { - mView.getDivider().setVisibility(View.VISIBLE); - } else { - mView.getDivider().setVisibility(View.GONE); - } - } if (horizontal != mUsingHorizontalLayout || force) { mUsingHorizontalLayout = horizontal; for (QSPanelControllerBase.TileRecord record : mRecords) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java b/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java index baf781d38441..04e32a10db17 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java @@ -128,11 +128,10 @@ class QSSecurityFooter implements OnClickListener, DialogInterface.OnClickListen int padding = r.getDimensionPixelSize(R.dimen.qs_footer_padding); mRootView.setPaddingRelative(padding, padding, padding, padding); - int verticalMargin = r.getDimensionPixelSize(R.dimen.qs_security_footer_vertical_margin); + int bottomMargin = r.getDimensionPixelSize(R.dimen.qs_footers_margin_bottom); ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) mRootView.getLayoutParams(); - lp.topMargin = verticalMargin; - lp.bottomMargin = verticalMargin; + lp.bottomMargin = bottomMargin; lp.width = r.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT ? MATCH_PARENT : WRAP_CONTENT; mRootView.setLayoutParams(lp); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java index 63733b392631..c3458feb5dfe 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java @@ -285,8 +285,6 @@ public class QuickQSPanel extends QSPanel { if (record.tileView.getVisibility() == GONE) continue; previousView = record.tileView.updateAccessibilityOrder(previousView); } - mRecords.get(mRecords.size() - 1).tileView.setAccessibilityTraversalBefore( - R.id.expand_indicator); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index c69956f90c67..73a6b34c612e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -77,8 +77,6 @@ public class QuickStatusBarHeader extends FrameLayout { private int mStatusBarPaddingTop = 0; private int mRoundedCornerPadding = 0; - private int mContentMarginStart; - private int mContentMarginEnd; private int mWaterfallTopInset; private int mCutOutPaddingLeft; private int mCutOutPaddingRight; @@ -242,35 +240,26 @@ public class QuickStatusBarHeader extends FrameLayout { .addFloat(mDateView, "alpha", 0, 1) .addFloat(mSecurityHeaderView, "alpha", 0, 1) .addFloat(mQSCarriers, "alpha", 0, 1); + builder.setListener(new TouchAnimator.ListenerAdapter() { + @Override + public void onAnimationAtEnd() { + mIconContainer.addIgnoredSlot(mMobileSlotName); + mIconContainer.addIgnoredSlot(mCallStrengthSlotName); + } - if (noCallingIcon != null || callStrengthIcon != null) { - if (noCallingIcon != null) { - builder.addFloat(noCallingIcon, "alpha", 1, 0); + @Override + public void onAnimationStarted() { + mIconContainer.addIgnoredSlot(mMobileSlotName); + mIconContainer.addIgnoredSlot(mCallStrengthSlotName); } - if (callStrengthIcon != null) { - builder.addFloat(callStrengthIcon, "alpha", 1, 0); + + @Override + public void onAnimationAtStart() { + super.onAnimationAtStart(); + mIconContainer.removeIgnoredSlot(mMobileSlotName); + mIconContainer.removeIgnoredSlot(mCallStrengthSlotName); } - builder.setListener(new TouchAnimator.ListenerAdapter() { - @Override - public void onAnimationAtEnd() { - mIconContainer.addIgnoredSlot(mMobileSlotName); - mIconContainer.addIgnoredSlot(mCallStrengthSlotName); - } - - @Override - public void onAnimationStarted() { - mIconContainer.removeIgnoredSlot(mMobileSlotName); - mIconContainer.removeIgnoredSlot(mCallStrengthSlotName); - } - - @Override - public void onAnimationAtStart() { - super.onAnimationAtStart(); - mIconContainer.removeIgnoredSlot(mMobileSlotName); - mIconContainer.removeIgnoredSlot(mCallStrengthSlotName); - } - }); - } + }); mAlphaAnimator = builder.build(); } @@ -370,6 +359,8 @@ public class QuickStatusBarHeader extends FrameLayout { } private void updateHeadersPadding() { + setContentMargins(mDatePrivacyView, 0, 0); + setContentMargins(mClockIconsView, 0, 0); int paddingLeft = 0; int paddingRight = 0; @@ -383,14 +374,12 @@ public class QuickStatusBarHeader extends FrameLayout { if (mCutOutPaddingLeft > 0) { // if there's a cutout, let's use at least the rounded corner inset int cutoutPadding = Math.max(mCutOutPaddingLeft, mRoundedCornerPadding); - int contentMarginLeft = isLayoutRtl() ? mContentMarginEnd : mContentMarginStart; - paddingLeft = Math.max(cutoutPadding - contentMarginLeft - leftMargin, 0); + paddingLeft = Math.max(cutoutPadding - leftMargin, 0); } if (mCutOutPaddingRight > 0) { // if there's a cutout, let's use at least the rounded corner inset int cutoutPadding = Math.max(mCutOutPaddingRight, mRoundedCornerPadding); - int contentMarginRight = isLayoutRtl() ? mContentMarginStart : mContentMarginEnd; - paddingRight = Math.max(cutoutPadding - contentMarginRight - rightMargin, 0); + paddingRight = Math.max(cutoutPadding - rightMargin, 0); } mDatePrivacyView.setPadding(paddingLeft, @@ -411,19 +400,6 @@ public class QuickStatusBarHeader extends FrameLayout { mHeaderQsPanel.setCallback(qsPanelCallback); } - /** */ - public void setContentMargins(int marginStart, int marginEnd, - QuickQSPanelController quickQSPanelController) { - mContentMarginStart = marginStart; - mContentMarginEnd = marginEnd; - // The clock and QQS are not direct children, but the container should be just a wrapper to - // be able to move them together. So we set the margins to the actual views. - quickQSPanelController.setContentMargins(0, 0); - setContentMargins(mDatePrivacyView, marginStart, marginEnd); - setContentMargins(mClockIconsView, marginStart, marginEnd); - updateHeadersPadding(); - } - private void setContentMargins(View view, int marginStart, int marginEnd) { MarginLayoutParams lp = (MarginLayoutParams) view.getLayoutParams(); lp.setMarginStart(marginStart); diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java index 617b067be891..1a828e45dc38 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeaderController.java @@ -183,6 +183,7 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader mView.onAttach(mIconManager, mQSExpansionPathInterpolator); mDemoModeController.addCallback(mDemoModeReceiver); + mHeaderQsPanelController.setContentMargins(0, 0); } @Override @@ -259,11 +260,6 @@ class QuickStatusBarHeaderController extends ViewController<QuickStatusBarHeader return mMicCameraIndicatorsEnabled || mLocationIndicatorsEnabled; } - public void setContentMargins(int contentPaddingStart, int contentPaddingEnd) { - mView.setContentMargins(contentPaddingStart, contentPaddingEnd, mHeaderQsPanelController); - } - - private static class ClockDemoModeReceiver implements DemoMode { private Clock mClockView; diff --git a/packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrierGroupController.java b/packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrierGroupController.java index 5afe1c87121d..c49e0547e433 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrierGroupController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/carrier/QSCarrierGroupController.java @@ -43,6 +43,7 @@ import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; +import com.android.systemui.util.CarrierConfigTracker; import java.util.function.Consumer; @@ -71,6 +72,7 @@ public class QSCarrierGroupController { private int[] mLastSignalLevel = new int[SIM_SLOTS]; private String[] mLastSignalLevelDescription = new String[SIM_SLOTS]; private final boolean mProviderModel; + private final CarrierConfigTracker mCarrierConfigTracker; private final NetworkController.SignalCallback mSignalCallback = new NetworkController.SignalCallback() { @@ -112,6 +114,10 @@ public class QSCarrierGroupController { Log.e(TAG, "Invalid SIM slot index for subscription: " + subId); return; } + + boolean displayCallStrengthIcon = + mCarrierConfigTracker.getCallStrengthConfig(subId); + if (statusIcon.icon == R.drawable.ic_qs_no_calling_sms) { if (statusIcon.visible) { mInfos[slotIndex] = new CellSignalState(true, @@ -119,9 +125,14 @@ public class QSCarrierGroupController { } else { // Whenever the no Calling & SMS state is cleared, switched to the last // known call strength icon. - mInfos[slotIndex] = new CellSignalState( - true, mLastSignalLevel[slotIndex], - mLastSignalLevelDescription[slotIndex], "", false); + if (displayCallStrengthIcon) { + mInfos[slotIndex] = new CellSignalState( + true, mLastSignalLevel[slotIndex], + mLastSignalLevelDescription[slotIndex], "", false); + } else { + mInfos[slotIndex] = new CellSignalState( + true, R.drawable.ic_qs_sim_card, "", "", false); + } } mMainHandler.obtainMessage(H.MSG_UPDATE_STATE).sendToTarget(); } else { @@ -131,8 +142,13 @@ public class QSCarrierGroupController { // shown. if (mInfos[slotIndex].mobileSignalIconId != R.drawable.ic_qs_no_calling_sms) { - mInfos[slotIndex] = new CellSignalState(true, statusIcon.icon, - statusIcon.contentDescription, "", false); + if (displayCallStrengthIcon) { + mInfos[slotIndex] = new CellSignalState(true, statusIcon.icon, + statusIcon.contentDescription, "", false); + } else { + mInfos[slotIndex] = new CellSignalState( + true, R.drawable.ic_qs_sim_card, "", "", false); + } mMainHandler.obtainMessage(H.MSG_UPDATE_STATE).sendToTarget(); } } @@ -165,7 +181,8 @@ public class QSCarrierGroupController { private QSCarrierGroupController(QSCarrierGroup view, ActivityStarter activityStarter, @Background Handler bgHandler, @Main Looper mainLooper, NetworkController networkController, - CarrierTextManager.Builder carrierTextManagerBuilder, Context context) { + CarrierTextManager.Builder carrierTextManagerBuilder, Context context, + CarrierConfigTracker carrierConfigTracker) { if (FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL)) { mProviderModel = true; } else { @@ -178,7 +195,7 @@ public class QSCarrierGroupController { .setShowAirplaneMode(false) .setShowMissingSim(false) .build(); - + mCarrierConfigTracker = carrierConfigTracker; View.OnClickListener onClickListener = v -> { if (!v.isVisibleToUser()) { return; @@ -228,6 +245,17 @@ public class QSCarrierGroupController { return SubscriptionManager.getSlotIndex(subscriptionId); } + private boolean isSingleCarrier() { + int carrierCount = 0; + for (int i = 0; i < SIM_SLOTS; i++) { + + if (mInfos[i].visible) { + carrierCount++; + } + } + return carrierCount == 1; + } + public void setListening(boolean listening) { if (listening == mListening) { return; @@ -257,6 +285,15 @@ public class QSCarrierGroupController { return; } + if (isSingleCarrier()) { + for (int i = 0; i < SIM_SLOTS; i++) { + if (mInfos[i].visible + && mInfos[i].mobileSignalIconId == R.drawable.ic_qs_sim_card) { + mInfos[i] = new CellSignalState(true, R.drawable.ic_blank, "", "", false); + } + } + } + for (int i = 0; i < SIM_SLOTS; i++) { mCarrierGroups[i].updateState(mInfos[i]); } @@ -363,17 +400,20 @@ public class QSCarrierGroupController { private final NetworkController mNetworkController; private final CarrierTextManager.Builder mCarrierTextControllerBuilder; private final Context mContext; + private final CarrierConfigTracker mCarrierConfigTracker; @Inject public Builder(ActivityStarter activityStarter, @Background Handler handler, @Main Looper looper, NetworkController networkController, - CarrierTextManager.Builder carrierTextControllerBuilder, Context context) { + CarrierTextManager.Builder carrierTextControllerBuilder, Context context, + CarrierConfigTracker carrierConfigTracker) { mActivityStarter = activityStarter; mHandler = handler; mLooper = looper; mNetworkController = networkController; mCarrierTextControllerBuilder = carrierTextControllerBuilder; mContext = context; + mCarrierConfigTracker = carrierConfigTracker; } public Builder setQSCarrierGroup(QSCarrierGroup view) { @@ -383,7 +423,8 @@ public class QSCarrierGroupController { public QSCarrierGroupController build() { return new QSCarrierGroupController(mView, mActivityStarter, mHandler, mLooper, - mNetworkController, mCarrierTextControllerBuilder, mContext); + mNetworkController, mCarrierTextControllerBuilder, mContext, + mCarrierConfigTracker); } } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java b/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java deleted file mode 100644 index ce8f6c1737d7..000000000000 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open 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.systemui.qs.customize; - -import android.content.Context; -import android.view.View; - -import com.android.systemui.plugins.qs.QSIconView; -import com.android.systemui.plugins.qs.QSTile; -import com.android.systemui.qs.tileimpl.QSTileView; - -public class CustomizeTileView extends QSTileView implements TileAdapter.CustomizeView { - private boolean mShowAppLabel; - - public CustomizeTileView(Context context, QSIconView icon) { - super(context, icon); - } - - @Override - public void setShowAppLabel(boolean showAppLabel) { - mShowAppLabel = showAppLabel; - mSecondLine.setVisibility(showAppLabel ? View.VISIBLE : View.GONE); - mLabel.setSingleLine(showAppLabel); - } - - @Override - protected void handleStateChanged(QSTile.State state) { - super.handleStateChanged(state); - mSecondLine.setVisibility(mShowAppLabel ? View.VISIBLE : View.GONE); - } - - @Override - protected boolean animationsEnabled() { - return false; - } - - @Override - public boolean isLongClickable() { - return false; - } - - @Override - public void changeState(QSTile.State state) { - handleStateChanged(state); - } -} diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.kt b/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.kt new file mode 100644 index 000000000000..a316e6aa5f1b --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileView.kt @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.qs.customize + +import android.content.Context +import android.text.TextUtils +import com.android.systemui.plugins.qs.QSIconView +import com.android.systemui.plugins.qs.QSTile +import com.android.systemui.qs.tileimpl.QSTileViewImpl + +/** + * Class for displaying tiles in [QSCustomizer] with the new design (labels on the side). + */ +class CustomizeTileView( + context: Context, + icon: QSIconView +) : QSTileViewImpl(context, icon, collapsed = false) { + + var showAppLabel = false + set(value) { + field = value + secondaryLabel.visibility = getVisibilityState(secondaryLabel.text) + } + + var showSideView = true + set(value) { + field = value + if (!showSideView) sideView.visibility = GONE + } + + override fun handleStateChanged(state: QSTile.State) { + super.handleStateChanged(state) + showRippleEffect = false + secondaryLabel.visibility = getVisibilityState(state.secondaryLabel) + if (!showSideView) sideView.visibility = GONE + } + + private fun getVisibilityState(text: CharSequence?): Int { + return if (showAppLabel && !TextUtils.isEmpty(text)) { + VISIBLE + } else { + GONE + } + } + + override fun animationsEnabled(): Boolean { + return false + } + + override fun isLongClickable(): Boolean { + return false + } + + fun changeState(state: QSTile.State) { + handleStateChanged(state) + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileViewHorizontal.kt b/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileViewHorizontal.kt deleted file mode 100644 index 7977b4904a7d..000000000000 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/CustomizeTileViewHorizontal.kt +++ /dev/null @@ -1,45 +0,0 @@ -package com.android.systemui.qs.customize - -import android.content.Context -import android.view.View -import com.android.systemui.plugins.qs.QSIconView -import com.android.systemui.plugins.qs.QSTile -import com.android.systemui.qs.tileimpl.QSTileViewHorizontal - -/** - * Class for displaying tiles in [QSCustomizer] with the new design (labels on the side). - * - * This is a class parallel to [CustomizeTileView], but inheriting from [QSTileViewHorizontal]. - */ -class CustomizeTileViewHorizontal( - context: Context, - icon: QSIconView -) : QSTileViewHorizontal(context, icon, collapsed = false), - TileAdapter.CustomizeView { - - private var showAppLabel = false - - override fun setShowAppLabel(showAppLabel: Boolean) { - this.showAppLabel = showAppLabel - mSecondLine.visibility = if (showAppLabel) View.VISIBLE else View.GONE - mLabel.isSingleLine = showAppLabel - } - - override fun handleStateChanged(state: QSTile.State) { - super.handleStateChanged(state) - mShowRippleEffect = false - mSecondLine.visibility = if (showAppLabel) View.VISIBLE else View.GONE - } - - override fun animationsEnabled(): Boolean { - return false - } - - override fun isLongClickable(): Boolean { - return false - } - - override fun changeState(state: QSTile.State) { - handleStateChanged(state) - } -}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java index 50805330cf1f..12c6906d87f7 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java @@ -43,7 +43,6 @@ import androidx.recyclerview.widget.RecyclerView.ViewHolder; import com.android.internal.logging.UiEventLogger; import com.android.systemui.R; -import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.QSEditEvent; import com.android.systemui.qs.QSTileHost; import com.android.systemui.qs.customize.TileAdapter.Holder; @@ -53,7 +52,7 @@ import com.android.systemui.qs.dagger.QSScope; import com.android.systemui.qs.dagger.QSThemedContext; import com.android.systemui.qs.external.CustomTile; import com.android.systemui.qs.tileimpl.QSIconViewImpl; -import com.android.systemui.qs.tileimpl.QSTileView; +import com.android.systemui.qs.tileimpl.QSTileViewImpl; import java.util.ArrayList; import java.util.List; @@ -280,7 +279,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } FrameLayout frame = (FrameLayout) inflater.inflate(R.layout.qs_customize_tile_frame, parent, false); - View view = new CustomizeTileViewHorizontal(context, new QSIconViewImpl(context)); + View view = new CustomizeTileView(context, new QSIconViewImpl(context)); frame.addView(view); return new Holder(frame); } @@ -367,6 +366,8 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta // The holder has a tileView, therefore this call is not null holder.getTileAsCustomizeView().changeState(info.state); holder.getTileAsCustomizeView().setShowAppLabel(position > mEditIndex && !info.isSystem); + // Don't show the side view for third party tiles, as we don't have the actual state. + holder.getTileAsCustomizeView().setShowSideView(position < mEditIndex || info.isSystem); holder.mTileView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); holder.mTileView.setClickable(true); holder.mTileView.setOnClickListener(null); @@ -545,15 +546,12 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } public class Holder extends ViewHolder { - private QSTileView mTileView; + private QSTileViewImpl mTileView; public Holder(View itemView) { super(itemView); if (itemView instanceof FrameLayout) { - mTileView = (QSTileView) ((FrameLayout) itemView).getChildAt(0); - if (mTileView instanceof CustomizeTileView) { - mTileView.setBackground(null); - } + mTileView = (QSTileViewImpl) ((FrameLayout) itemView).getChildAt(0); mTileView.getIcon().disableAnimation(); mTileView.setTag(this); ViewCompat.setAccessibilityDelegate(mTileView, mAccessibilityDelegate); @@ -561,8 +559,8 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta } @Nullable - public CustomizeView getTileAsCustomizeView() { - return (CustomizeView) mTileView; + public CustomizeTileView getTileAsCustomizeView() { + return (CustomizeTileView) mTileView; } public void clearDrag() { @@ -570,8 +568,8 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta if (mTileView instanceof CustomizeTileView) { mTileView.findViewById(R.id.tile_label).clearAnimation(); mTileView.findViewById(R.id.tile_label).setAlpha(1); - mTileView.getAppLabel().clearAnimation(); - mTileView.getAppLabel().setAlpha(.6f); + mTileView.getSecondaryLabel().clearAnimation(); + mTileView.getSecondaryLabel().setAlpha(.6f); } } @@ -584,7 +582,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mTileView.findViewById(R.id.tile_label).animate() .setDuration(DRAG_LENGTH) .alpha(0); - mTileView.getAppLabel().animate() + mTileView.getSecondaryLabel().animate() .setDuration(DRAG_LENGTH) .alpha(0); } @@ -599,7 +597,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta mTileView.findViewById(R.id.tile_label).animate() .setDuration(DRAG_LENGTH) .alpha(1); - mTileView.getAppLabel().animate() + mTileView.getSecondaryLabel().animate() .setDuration(DRAG_LENGTH) .alpha(.6f); } @@ -692,11 +690,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta continue; } - final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child - .getLayoutParams(); - final int top = child.getTop() + params.topMargin + - Math.round(ViewCompat.getTranslationY(child)); - // Draw full width, in case there aren't tiles all the way across. + final int top = child.getTop() + Math.round(ViewCompat.getTranslationY(child)); mDrawable.setBounds(0, top, width, bottom); mDrawable.draw(c); break; @@ -765,7 +759,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta int position = mCurrentDrag.getAdapterPosition(); if (position == RecyclerView.NO_POSITION) return; TileInfo info = mTiles.get(position); - ((CustomizeView) mCurrentDrag.mTileView).setShowAppLabel( + ((CustomizeTileView) mCurrentDrag.mTileView).setShowAppLabel( position > mEditIndex && !info.isSystem); mCurrentDrag.stopDrag(); mCurrentDrag = null; @@ -825,9 +819,4 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta public void onSwiped(ViewHolder viewHolder, int direction) { } }; - - interface CustomizeView { - void setShowAppLabel(boolean showAppLabel); - void changeState(@NonNull QSTile.State state); - } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/ButtonRelativeLayout.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/ButtonRelativeLayout.java deleted file mode 100644 index 962537a01fe2..000000000000 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/ButtonRelativeLayout.java +++ /dev/null @@ -1,61 +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.systemui.qs.tileimpl; - -import android.content.Context; -import android.util.AttributeSet; -import android.view.View; -import android.widget.Button; -import android.widget.RelativeLayout; - -/** - * Used for QS tile labels - */ -public class ButtonRelativeLayout extends RelativeLayout { - - private View mIgnoredView; - - public ButtonRelativeLayout(Context context, AttributeSet attrs) { - super(context, attrs); - } - - @Override - public CharSequence getAccessibilityClassName() { - return Button.class.getName(); - } - - /** - * Set a view to be ignored for measure. - * - * The view will be measured and laid out, but its size will be subtracted from the total size - * of this view. It assumes that this view only contributes vertical height. - */ - public void setIgnoredView(View view) { - if (mIgnoredView == null || mIgnoredView.getParent() == this) { - mIgnoredView = view; - } - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - if (mIgnoredView != null && mIgnoredView.getVisibility() != GONE) { - int height = mIgnoredView.getMeasuredHeight(); - MarginLayoutParams lp = (MarginLayoutParams) mIgnoredView.getLayoutParams(); - height = height - lp.bottomMargin - lp.topMargin; - setMeasuredDimension(getMeasuredWidth(), getMeasuredHeight() - height); - } - } -} diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/IgnorableChildLinearLayout.kt b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/IgnorableChildLinearLayout.kt new file mode 100644 index 000000000000..705576059b58 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/IgnorableChildLinearLayout.kt @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.qs.tileimpl + +import android.content.Context +import android.util.AttributeSet +import android.widget.LinearLayout + +/** + * [LinearLayout] that can ignore the last child for measuring. + * + * The view is measured as regularlt, then if [ignoreLastView] is true: + * * In [LinearLayout.VERTICAL] orientation, the height of the last view is subtracted from the + * final measured height. + * * In [LinearLayout.HORIZONTAL] orientation, the width of the last view is subtracted from the + * final measured width. + * + * This allows to measure the view and position it where it should, without it amounting to the + * total size (only in the direction of layout). + */ +class IgnorableChildLinearLayout @JvmOverloads constructor( + context: Context, + attributeSet: AttributeSet? = null, + defStyleAttr: Int = 0, + defStyleRes: Int = 0 +) : LinearLayout(context, attributeSet, defStyleAttr, defStyleRes) { + + var ignoreLastView = false + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + if (ignoreLastView && childCount > 0) { + val lastView = getChildAt(childCount - 1) + val lp = lastView.layoutParams as MarginLayoutParams + if (orientation == VERTICAL) { + val height = lastView.measuredHeight + lp.bottomMargin + lp.topMargin + setMeasuredDimension(measuredWidth, measuredHeight - height) + } else { + val width = lastView.measuredWidth + lp.leftMargin + lp.rightMargin + setMeasuredDimension(measuredWidth - width, measuredHeight) + } + } + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java index 3437dd595152..8f7c493417ec 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java @@ -243,6 +243,6 @@ public class QSFactoryImpl implements QSFactory { @Override public QSTileView createTileView(Context context, QSTile tile, boolean collapsedView) { QSIconView icon = tile.createTileView(context); - return new QSTileViewHorizontal(context, icon, collapsedView); + return new QSTileViewImpl(context, icon, collapsedView); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java index 31526bf8f5e1..8280f98114e2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java @@ -14,22 +14,24 @@ package com.android.systemui.qs.tileimpl; -import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState; - import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.content.Context; import android.content.res.ColorStateList; +import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Color; import android.graphics.drawable.Animatable2; import android.graphics.drawable.Animatable2.AnimationCallback; import android.graphics.drawable.Drawable; +import android.service.quicksettings.Tile; +import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.ImageView.ScaleType; +import com.android.settingslib.Utils; import com.android.systemui.R; import com.android.systemui.plugins.qs.QSIconView; import com.android.systemui.plugins.qs.QSTile; @@ -43,7 +45,7 @@ public class QSIconViewImpl extends QSIconView { public static final long QS_ANIM_LENGTH = 350; protected final View mIcon; - protected final int mIconSizePx; + protected int mIconSizePx; private boolean mAnimationEnabled = true; private int mState = -1; private int mTint; @@ -53,12 +55,18 @@ public class QSIconViewImpl extends QSIconView { super(context); final Resources res = context.getResources(); - mIconSizePx = res.getDimensionPixelSize(R.dimen.qs_tile_icon_size); + mIconSizePx = res.getDimensionPixelSize(R.dimen.qs_icon_size); mIcon = createIcon(); addView(mIcon); } + @Override + protected void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + mIconSizePx = getContext().getResources().getDimensionPixelSize(R.dimen.qs_icon_size); + } + public void disableAnimation() { mAnimationEnabled = false; } @@ -169,7 +177,7 @@ public class QSIconViewImpl extends QSIconView { } protected int getColor(int state) { - return getColorForState(getContext(), state); + return getIconColorForState(getContext(), state); } private void animateGrayScale(int fromColor, int toColor, ImageView iv, @@ -229,4 +237,21 @@ public class QSIconViewImpl extends QSIconView { protected final void layout(View child, int left, int top) { child.layout(left, top, left + child.getMeasuredWidth(), top + child.getMeasuredHeight()); } + + /** + * Color to tint the tile icon based on state + */ + public static int getIconColorForState(Context context, int state) { + switch (state) { + case Tile.STATE_UNAVAILABLE: + return Utils.getColorAttrDefaultColor(context, android.R.attr.textColorTertiary); + case Tile.STATE_INACTIVE: + return Utils.getColorAttrDefaultColor(context, android.R.attr.textColorPrimary); + case Tile.STATE_ACTIVE: + return Utils.getColorAttrDefaultColor(context, android.R.attr.colorPrimary); + default: + Log.e("QSIconView", "Invalid state " + state); + return 0; + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java deleted file mode 100644 index c973e8c6fc2c..000000000000 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java +++ /dev/null @@ -1,416 +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.systemui.qs.tileimpl; - -import static android.view.accessibility.AccessibilityEvent.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION; - -import static com.android.systemui.qs.tileimpl.QSIconViewImpl.QS_ANIM_LENGTH; - -import android.animation.ValueAnimator; -import android.content.Context; -import android.content.res.ColorStateList; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.drawable.AdaptiveIconDrawable; -import android.graphics.drawable.Drawable; -import android.graphics.drawable.RippleDrawable; -import android.graphics.drawable.ShapeDrawable; -import android.graphics.drawable.shapes.PathShape; -import android.os.Handler; -import android.os.Looper; -import android.os.Message; -import android.service.quicksettings.Tile; -import android.text.TextUtils; -import android.util.Log; -import android.util.PathParser; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.view.accessibility.AccessibilityEvent; -import android.view.accessibility.AccessibilityNodeInfo; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.Switch; - -import com.android.settingslib.Utils; -import com.android.systemui.R; -import com.android.systemui.plugins.qs.QSIconView; -import com.android.systemui.plugins.qs.QSTile; -import com.android.systemui.plugins.qs.QSTile.BooleanState; - -public class QSTileBaseView extends com.android.systemui.plugins.qs.QSTileView { - - private static final String TAG = "QSTileBaseView"; - private static final int ICON_MASK_ID = com.android.internal.R.string.config_icon_mask; - protected final Handler mHandler = new H(); - private final int[] mLocInScreen = new int[2]; - protected final FrameLayout mIconFrame; - protected QSIconView mIcon; - protected RippleDrawable mRipple; - protected Drawable mTileBackground; - private String mAccessibilityClass; - private boolean mTileState; - protected boolean mCollapsedView; - protected boolean mShowRippleEffect = true; - private float mStrokeWidthActive; - private float mStrokeWidthInactive; - - protected final ImageView mBg; - private final int mColorActive; - private final int mColorInactive; - private int mCircleColor; - private int mBgSize; - - private static final int INVALID = -1; - private CharSequence mStateDescriptionDeltas = null; - private CharSequence mLastStateDescription; - private int mLastState = INVALID; - - public QSTileBaseView(Context context, QSIconView icon) { - this(context, icon, false); - } - - public QSTileBaseView(Context context, QSIconView icon, boolean collapsedView) { - super(context); - // Default to Quick Tile padding, and QSTileView will specify its own padding. - int padding = context.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_padding); - mIconFrame = new FrameLayout(context); - mStrokeWidthActive = context.getResources() - .getDimension(com.android.internal.R.dimen.config_qsTileStrokeWidthActive); - mStrokeWidthInactive = context.getResources() - .getDimension(com.android.internal.R.dimen.config_qsTileStrokeWidthInactive); - int size = context.getResources().getDimensionPixelSize(R.dimen.qs_quick_tile_size); - addView(mIconFrame, new LayoutParams(size, size)); - mBg = new ImageView(getContext()); - Path path = new Path(PathParser.createPathFromPathData( - context.getResources().getString(ICON_MASK_ID))); - float pathSize = AdaptiveIconDrawable.MASK_SIZE; - PathShape p = new PathShape(path, pathSize, pathSize); - ShapeDrawable d = new ShapeDrawable(p); - d.setTintList(ColorStateList.valueOf(Color.TRANSPARENT)); - float backgroundStrokeWidth = context.getResources() - .getDimension(R.dimen.qs_tile_icon_background_stroke_width); - if (backgroundStrokeWidth > 0) { - d.getPaint().setStyle(Paint.Style.STROKE); - d.getPaint().setStrokeWidth(backgroundStrokeWidth); - } - int bgSize = context.getResources().getDimensionPixelSize(R.dimen.qs_tile_background_size); - d.setIntrinsicHeight(bgSize); - d.setIntrinsicWidth(bgSize); - mBg.setImageDrawable(d); - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(bgSize, bgSize, Gravity.CENTER); - mIconFrame.addView(mBg, lp); - mBg.setLayoutParams(lp); - mIcon = icon; - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, - Gravity.CENTER); - mIconFrame.addView(mIcon, params); - mIconFrame.setClipChildren(false); - mIconFrame.setClipToPadding(false); - - mTileBackground = newTileBackground(); - if (mTileBackground instanceof RippleDrawable) { - setRipple((RippleDrawable) mTileBackground); - } - setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); - setBackground(mTileBackground); - - mColorActive = Utils.getColorAttrDefaultColor(context, - com.android.internal.R.attr.colorAccentPrimary); - mColorInactive = Utils.getColorAttrDefaultColor(context, R.attr.offStateColor); - - setPadding(0, 0, 0, 0); - setClipChildren(false); - setClipToPadding(false); - mCollapsedView = collapsedView; - setFocusable(true); - } - - public View getBgCircle() { - return mBg; - } - - protected Drawable newTileBackground() { - final int[] attrs = new int[]{android.R.attr.selectableItemBackgroundBorderless}; - final TypedArray ta = getContext().obtainStyledAttributes(attrs); - final Drawable d = ta.getDrawable(0); - ta.recycle(); - return d; - } - - private void setRipple(RippleDrawable tileBackground) { - mRipple = tileBackground; - if (getWidth() != 0) { - updateRippleSize(); - } - } - - protected void updateRippleSize() { - // center the touch feedback on the center of the icon, and dial it down a bit - final int cx = mIconFrame.getMeasuredWidth() / 2 + mIconFrame.getLeft(); - final int cy = mIconFrame.getMeasuredHeight() / 2 + mIconFrame.getTop(); - final int rad = (int) (mIcon.getHeight() * .85f); - mRipple.setHotspotBounds(cx - rad, cy - rad, cx + rad, cy + rad); - } - - @Override - public void init(QSTile tile) { - init(v -> tile.click(this), v -> tile.secondaryClick(this), view -> { - tile.longClick(this); - return true; - }); - } - - public void init(OnClickListener click, OnClickListener secondaryClick, - OnLongClickListener longClick) { - setOnClickListener(click); - setOnLongClickListener(longClick); - } - - @Override - protected void onLayout(boolean changed, int l, int t, int r, int b) { - super.onLayout(changed, l, t, r, b); - if (mRipple != null) { - updateRippleSize(); - } - } - - @Override - public boolean hasOverlappingRendering() { - // Avoid layers for this layout - we don't need them. - return false; - } - - /** - * Update the accessibility order for this view. - * - * @param previousView the view which should be before this one - * @return the last view in this view which is accessible - */ - public View updateAccessibilityOrder(View previousView) { - setAccessibilityTraversalAfter(previousView.getId()); - return this; - } - - public void onStateChanged(QSTile.State state) { - mHandler.obtainMessage(H.STATE_CHANGED, state).sendToTarget(); - } - - private void updateStrokeShapeWidth(QSTile.State state) { - Resources resources = getContext().getResources(); - if (!(mBg.getDrawable() instanceof ShapeDrawable)) { - return; - } - ShapeDrawable d = (ShapeDrawable) mBg.getDrawable(); - d.getPaint().setStyle(Paint.Style.FILL); - switch (state.state) { - case Tile.STATE_INACTIVE: - if (mStrokeWidthInactive >= 0) { - d.getPaint().setStyle(Paint.Style.STROKE); - d.getPaint().setStrokeWidth(mStrokeWidthInactive); - } - break; - case Tile.STATE_ACTIVE: - if (mStrokeWidthActive >= 0) { - d.getPaint().setStyle(Paint.Style.STROKE); - d.getPaint().setStrokeWidth(mStrokeWidthActive); - } - break; - } - } - - protected void handleStateChanged(QSTile.State state) { - updateStrokeShapeWidth(state); - int circleColor = getCircleColor(state.state); - boolean allowAnimations = animationsEnabled(); - if (circleColor != mCircleColor) { - if (allowAnimations) { - ValueAnimator animator = ValueAnimator.ofArgb(mCircleColor, circleColor) - .setDuration(QS_ANIM_LENGTH); - animator.addUpdateListener(animation -> mBg.setImageTintList(ColorStateList.valueOf( - (Integer) animation.getAnimatedValue()))); - animator.start(); - } else { - QSIconViewImpl.setTint(mBg, circleColor); - } - mCircleColor = circleColor; - } - - mShowRippleEffect = state.showRippleEffect; - setClickable(state.state != Tile.STATE_UNAVAILABLE); - setLongClickable(state.handlesLongClick); - mIcon.setIcon(state, allowAnimations); - setContentDescription(state.contentDescription); - final StringBuilder stateDescription = new StringBuilder(); - String text = ""; - switch (state.state) { - case Tile.STATE_UNAVAILABLE: - text = mContext.getString(R.string.tile_unavailable); - break; - case Tile.STATE_INACTIVE: - if (state instanceof QSTile.BooleanState) { - text = mContext.getString(R.string.switch_bar_off); - } - break; - case Tile.STATE_ACTIVE: - if (state instanceof QSTile.BooleanState) { - text = mContext.getString(R.string.switch_bar_on); - } - break; - default: - break; - } - if (!TextUtils.isEmpty(text)) { - stateDescription.append(text); - if (TextUtils.isEmpty(state.secondaryLabel)) { - state.secondaryLabel = text; - } - } - if (!TextUtils.isEmpty(state.stateDescription)) { - stateDescription.append(", "); - stateDescription.append(state.stateDescription); - if (mLastState != INVALID && state.state == mLastState - && !state.stateDescription.equals(mLastStateDescription)) { - mStateDescriptionDeltas = state.stateDescription; - } - } - setStateDescription(stateDescription.toString()); - mLastState = state.state; - mLastStateDescription = state.stateDescription; - - mAccessibilityClass = - state.state == Tile.STATE_UNAVAILABLE ? null : state.expandedAccessibilityClassName; - if (state instanceof QSTile.BooleanState) { - boolean newState = ((BooleanState) state).value; - if (mTileState != newState) { - mTileState = newState; - } - } - } - - /* The view should not be animated if it's not on screen and no part of it is visible. - */ - protected boolean animationsEnabled() { - if (!isShown()) { - return false; - } - if (getAlpha() != 1f) { - return false; - } - getLocationOnScreen(mLocInScreen); - return mLocInScreen[1] >= -getHeight(); - } - - protected int getCircleColor(int state) { - switch (state) { - case Tile.STATE_ACTIVE: - return mColorActive; - case Tile.STATE_INACTIVE: - case Tile.STATE_UNAVAILABLE: - return mColorInactive; - default: - Log.e(TAG, "Invalid state " + state); - return 0; - } - } - - @Override - public void setClickable(boolean clickable) { - super.setClickable(clickable); - setBackground(clickable && mShowRippleEffect ? mRipple : null); - } - - @Override - public int getDetailY() { - return getTop() + getHeight() / 2; - } - - public QSIconView getIcon() { - return mIcon; - } - - public View getIconWithBackground() { - return mIconFrame; - } - - @Override - public void onInitializeAccessibilityEvent(AccessibilityEvent event) { - super.onInitializeAccessibilityEvent(event); - if (!TextUtils.isEmpty(mAccessibilityClass)) { - event.setClassName(mAccessibilityClass); - } - if (event.getContentChangeTypes() == CONTENT_CHANGE_TYPE_STATE_DESCRIPTION - && mStateDescriptionDeltas != null) { - event.getText().add(mStateDescriptionDeltas); - mStateDescriptionDeltas = null; - } - } - - @Override - public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { - super.onInitializeAccessibilityNodeInfo(info); - // Clear selected state so it is not announce by talkback. - info.setSelected(false); - if (!TextUtils.isEmpty(mAccessibilityClass)) { - info.setClassName(mAccessibilityClass); - if (Switch.class.getName().equals(mAccessibilityClass)) { - String label = getResources().getString( - mTileState ? R.string.switch_bar_on : R.string.switch_bar_off); - // Set the text here for tests in - // android.platform.test.scenario.sysui.quicksettings. Can be removed when - // UiObject2 has a new getStateDescription() API and tests are updated. - info.setText(label); - info.setChecked(mTileState); - info.setCheckable(true); - if (isLongClickable()) { - info.addAction( - new AccessibilityNodeInfo.AccessibilityAction( - AccessibilityNodeInfo.AccessibilityAction - .ACTION_LONG_CLICK.getId(), - getResources().getString( - R.string.accessibility_long_click_tile))); - } - } - } - } - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('['); - sb.append("locInScreen=(" + mLocInScreen[0] + ", " + mLocInScreen[1] + ")"); - sb.append(", iconView=" + mIcon.toString()); - sb.append(", tileState=" + mTileState); - sb.append("]"); - return sb.toString(); - } - - private class H extends Handler { - private static final int STATE_CHANGED = 1; - - public H() { - super(Looper.getMainLooper()); - } - - @Override - public void handleMessage(Message msg) { - if (msg.what == STATE_CHANGED) { - handleStateChanged((QSTile.State) msg.obj); - } - } - } -}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java index 5ff785dc32d9..47d80bb0d16f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java @@ -38,7 +38,6 @@ import android.metrics.LogMaker; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.service.quicksettings.Tile; import android.text.format.DateUtils; import android.util.ArraySet; import android.util.Log; @@ -56,7 +55,6 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.settingslib.RestrictedLockUtils; import com.android.settingslib.RestrictedLockUtilsInternal; -import com.android.settingslib.Utils; import com.android.systemui.Dumpable; import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.plugins.ActivityStarter; @@ -563,21 +561,6 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy return mReadyState == READY_STATE_READY; } - public static int getColorForState(Context context, int state) { - switch (state) { - case Tile.STATE_UNAVAILABLE: - return Utils.getDisabled(context, - Utils.getColorAttrDefaultColor(context, android.R.attr.textColorSecondary)); - case Tile.STATE_INACTIVE: - return Utils.getColorAttrDefaultColor(context, android.R.attr.textColorSecondary); - case Tile.STATE_ACTIVE: - return Utils.getColorAttrDefaultColor(context, android.R.attr.colorPrimary); - default: - Log.e("QSTile", "Invalid state " + state); - return 0; - } - } - protected final class H extends Handler { private static final int ADD_CALLBACK = 1; private static final int CLICK = 2; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java deleted file mode 100644 index 50417e9ab259..000000000000 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java +++ /dev/null @@ -1,200 +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.systemui.qs.tileimpl; - -import android.content.Context; -import android.content.res.ColorStateList; -import android.content.res.Configuration; -import android.service.quicksettings.Tile; -import android.text.TextUtils; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.Nullable; - -import com.android.settingslib.Utils; -import com.android.systemui.FontSizeUtils; -import com.android.systemui.R; -import com.android.systemui.plugins.qs.QSIconView; -import com.android.systemui.plugins.qs.QSTile; - -import java.util.Objects; - -/** View that represents a standard quick settings tile. **/ -public class QSTileView extends QSTileBaseView { - protected int mMaxLabelLines = 2; - private View mDivider; - protected TextView mLabel; - protected TextView mSecondLine; - private ImageView mPadLock; - protected int mState; - protected ButtonRelativeLayout mLabelContainer; - private View mExpandIndicator; - private View mExpandSpace; - protected ColorStateList mColorLabelActive; - protected ColorStateList mColorLabelInactive; - private ColorStateList mColorLabelUnavailable; - protected boolean mDualTargetAllowed = false; - - public QSTileView(Context context, QSIconView icon) { - this(context, icon, false); - } - - public QSTileView(Context context, QSIconView icon, boolean collapsedView) { - super(context, icon, collapsedView); - - setClipChildren(false); - setClipToPadding(false); - - setClickable(true); - setId(View.generateViewId()); - createLabel(); - setOrientation(VERTICAL); - setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP); - mColorLabelActive = Utils.getColorAttr(getContext(), android.R.attr.textColorPrimary); - mColorLabelInactive = mColorLabelActive; - // The text color for unavailable tiles is textColorSecondary, same as secondaryLabel for - // contrast purposes - mColorLabelUnavailable = Utils.getColorAttr(getContext(), - android.R.attr.textColorSecondary); - } - - TextView getLabel() { - return mLabel; - } - - @Override - protected void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - FontSizeUtils.updateFontSize(mLabel, R.dimen.qs_tile_text_size); - FontSizeUtils.updateFontSize(mSecondLine, R.dimen.qs_tile_text_size); - } - - @Override - public int getDetailY() { - return getTop() + mLabelContainer.getTop() + mLabelContainer.getHeight() / 2; - } - - protected void createLabel() { - mLabelContainer = (ButtonRelativeLayout) LayoutInflater.from(getContext()) - .inflate(R.layout.qs_tile_label, this, false); - mLabelContainer.setClipChildren(false); - mLabelContainer.setClipToPadding(false); - mLabel = mLabelContainer.findViewById(R.id.tile_label); - mPadLock = mLabelContainer.findViewById(R.id.restricted_padlock); - mDivider = mLabelContainer.findViewById(R.id.underline); - mExpandIndicator = mLabelContainer.findViewById(R.id.expand_indicator); - mExpandSpace = mLabelContainer.findViewById(R.id.expand_space); - mSecondLine = mLabelContainer.findViewById(R.id.app_label); - addView(mLabelContainer); - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - mLabel.setSingleLine(false); - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - - // Remeasure view if the primary label requires more than mMaxLabelLines lines or the - // secondary label text will be cut off. - if (shouldLabelBeSingleLine()) { - mLabel.setSingleLine(); - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - } - } - - protected boolean shouldLabelBeSingleLine() { - if (mCollapsedView) return true; - if (mLabel.getLineCount() > mMaxLabelLines) { - return true; - } else if (!TextUtils.isEmpty(mSecondLine.getText()) - && mLabel.getLineCount() > mMaxLabelLines - 1) { - return true; - } - return false; - } - - @Override - protected void handleStateChanged(QSTile.State state) { - super.handleStateChanged(state); - if (!Objects.equals(mLabel.getText(), state.label) || mState != state.state) { - ColorStateList labelColor = getLabelColor(state.state); - changeLabelColor(labelColor); - mState = state.state; - mLabel.setText(state.label); - } - if (!Objects.equals(mSecondLine.getText(), state.secondaryLabel)) { - mSecondLine.setText(state.secondaryLabel); - mSecondLine.setVisibility(TextUtils.isEmpty(state.secondaryLabel) - ? View.GONE : View.VISIBLE); - } - boolean dualTarget = mDualTargetAllowed && state.dualTarget; - handleExpand(dualTarget); - mLabelContainer.setContentDescription(dualTarget ? state.dualLabelContentDescription - : null); - if (dualTarget != mLabelContainer.isClickable()) { - mLabelContainer.setClickable(dualTarget); - mLabelContainer.setLongClickable(dualTarget); - mLabelContainer.setBackground(dualTarget ? newTileBackground() : null); - } - mLabel.setEnabled(!state.disabledByPolicy); - mPadLock.setVisibility(state.disabledByPolicy ? View.VISIBLE : View.GONE); - } - - protected final ColorStateList getLabelColor(int state) { - if (state == Tile.STATE_ACTIVE) { - return mColorLabelActive; - } else if (state == Tile.STATE_INACTIVE) { - return mColorLabelInactive; - } - return mColorLabelUnavailable; - } - - protected void changeLabelColor(ColorStateList color) { - mLabel.setTextColor(color); - } - - protected void handleExpand(boolean dualTarget) { - mExpandIndicator.setVisibility(dualTarget ? View.VISIBLE : View.GONE); - mExpandSpace.setVisibility(dualTarget ? View.VISIBLE : View.GONE); - } - - @Override - public void init(OnClickListener click, OnClickListener secondaryClick, - OnLongClickListener longClick) { - super.init(click, secondaryClick, longClick); - mLabelContainer.setOnClickListener(secondaryClick); - mLabelContainer.setOnLongClickListener(longClick); - mLabelContainer.setClickable(false); - mLabelContainer.setLongClickable(false); - } - - public TextView getAppLabel() { - return mSecondLine; - } - - @Nullable - @Override - public View getLabelContainer() { - return mLabelContainer; - } - - @Override - public View getSecondaryLabel() { - return mSecondLine; - } -} diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewHorizontal.kt b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewHorizontal.kt deleted file mode 100644 index 70d51ee1c516..000000000000 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewHorizontal.kt +++ /dev/null @@ -1,215 +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.systemui.qs.tileimpl - -import android.animation.ValueAnimator -import android.content.Context -import android.content.res.ColorStateList -import android.graphics.Color -import android.graphics.drawable.Drawable -import android.graphics.drawable.RippleDrawable -import android.service.quicksettings.Tile.STATE_ACTIVE -import android.view.Gravity -import android.view.View -import android.view.ViewGroup.LayoutParams.WRAP_CONTENT -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.RelativeLayout -import com.android.systemui.R -import com.android.systemui.plugins.qs.QSIconView -import com.android.systemui.plugins.qs.QSTile -import com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState - -open class QSTileViewHorizontal( - context: Context, - icon: QSIconView, - collapsed: Boolean -) : QSTileView(context, icon, collapsed), HeightOverrideable { - - protected var colorBackgroundDrawable: Drawable? = null - private var paintColor = Color.WHITE - private var paintAnimator: ValueAnimator? = null - private var labelAnimator: ValueAnimator? = null - private var sideView: ImageView = ImageView(mContext) - override var heightOverride: Int = HeightOverrideable.NO_OVERRIDE - - init { - orientation = HORIZONTAL - gravity = Gravity.CENTER_VERTICAL or Gravity.START - mDualTargetAllowed = false - val padding = context.resources.getDimensionPixelSize(R.dimen.qs_tile_side_label_padding) - setPadding(padding, paddingTop, padding, paddingBottom) - - mBg.setImageDrawable(null) - mIconFrame.removeAllViews() - removeView(mIconFrame) - val iconSize = context.resources.getDimensionPixelSize(R.dimen.qs_icon_size) - addView(mIcon, 0, LayoutParams(iconSize, iconSize)) - - sideView.visibility = View.GONE - val sideViewLayoutParams = LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply { - gravity = Gravity.CENTER_VERTICAL - marginStart = context.resources.getDimensionPixelSize(R.dimen.qs_label_container_margin) - } - addView(sideView, -1, sideViewLayoutParams) - sideView.adjustViewBounds = true - sideView.scaleType = ImageView.ScaleType.FIT_CENTER - - mColorLabelActive = ColorStateList.valueOf(getColorForState(getContext(), STATE_ACTIVE)) - changeLabelColor(getLabelColor(mState)) // Matches the default state of the tile - } - - override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { - super.onLayout(changed, l, t, r, b) - if (heightOverride != HeightOverrideable.NO_OVERRIDE) { - bottom = top + heightOverride - } - } - - override fun createLabel() { - super.createLabel() - findViewById<LinearLayout>(R.id.label_group)?.apply { - gravity = Gravity.START - (layoutParams as? RelativeLayout.LayoutParams)?.apply { - removeRule(RelativeLayout.ALIGN_PARENT_TOP) - } - } - mLabelContainer.setPadding(0, 0, 0, 0) - (mLabelContainer.layoutParams as MarginLayoutParams).apply { - marginStart = context.resources.getDimensionPixelSize(R.dimen.qs_label_container_margin) - marginEnd = 0 - gravity = Gravity.CENTER_VERTICAL or Gravity.START - } - mLabel.gravity = Gravity.START - mLabel.textDirection = TEXT_DIRECTION_LOCALE - mSecondLine.gravity = Gravity.START - mSecondLine.textDirection = TEXT_DIRECTION_LOCALE - - if (mCollapsedView) { - mSecondLine.alpha = 0f - mLabelContainer.setIgnoredView(mSecondLine) - } - } - - override fun shouldLabelBeSingleLine(): Boolean { - return true - } - - override fun updateRippleSize() { - } - - override fun newTileBackground(): Drawable? { - val ripple = mContext.getDrawable(R.drawable.qs_tile_background) as RippleDrawable - colorBackgroundDrawable = ripple.findDrawableByLayerId(R.id.background) - return ripple - } - - override fun setClickable(clickable: Boolean) { - super.setClickable(clickable) - background = if (clickable && mShowRippleEffect) { - mRipple?.also { - // In case that the colorBackgroundDrawable was used as the background, make sure - // it has the correct callback instead of null - colorBackgroundDrawable?.callback = it - } - } else { - colorBackgroundDrawable - } - } - - override fun handleStateChanged(state: QSTile.State) { - super.handleStateChanged(state) - mLabelContainer.background = null - - val allowAnimations = animationsEnabled() && paintColor != Color.WHITE - val newColor = getCircleColor(state.state) - if (allowAnimations) { - animateBackground(newColor) - } else { - clearBackgroundAnimator() - colorBackgroundDrawable?.setTintList(ColorStateList.valueOf(newColor))?.also { - paintColor = newColor - } - paintColor = newColor - } - loadSideViewDrawableIfNecessary(state) - } - - private fun animateBackground(newBackgroundColor: Int) { - if (newBackgroundColor != paintColor) { - clearBackgroundAnimator() - paintAnimator = ValueAnimator.ofArgb(paintColor, newBackgroundColor) - .setDuration(QSIconViewImpl.QS_ANIM_LENGTH).apply { - addUpdateListener { animation: ValueAnimator -> - val c = animation.animatedValue as Int - colorBackgroundDrawable?.setTintList(ColorStateList.valueOf(c))?.also { - paintColor = c - } - } - start() - } - } - } - - override fun changeLabelColor(color: ColorStateList) { - val allowAnimations = animationsEnabled() - val currentColor = mLabel.textColors.defaultColor - if (currentColor != color.defaultColor) { - clearLabelAnimator() - if (allowAnimations) { - labelAnimator = ValueAnimator.ofArgb(currentColor, color.defaultColor) - .setDuration(QSIconViewImpl.QS_ANIM_LENGTH).apply { - addUpdateListener { - setLabelsColor(ColorStateList.valueOf(it.animatedValue as Int)) - } - start() - } - } else { - setLabelsColor(color) - } - } - } - - private fun setLabelsColor(color: ColorStateList) { - mLabel.setTextColor(color) - mSecondLine.setTextColor(color) - } - - private fun clearBackgroundAnimator() { - paintAnimator?.cancel()?.also { paintAnimator = null } - } - - private fun clearLabelAnimator() { - labelAnimator?.cancel()?.also { labelAnimator = null } - } - - private fun loadSideViewDrawableIfNecessary(state: QSTile.State) { - if (state.sideViewDrawable != null) { - sideView.setImageDrawable(state.sideViewDrawable) - sideView.visibility = View.VISIBLE - } else { - sideView.setImageDrawable(null) - sideView.visibility = GONE - } - } - - override fun handleExpand(dualTarget: Boolean) {} - - override fun getSecondaryIcon(): View { - return sideView - } -}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt new file mode 100644 index 000000000000..2d777a53de51 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt @@ -0,0 +1,539 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.qs.tileimpl + +import android.animation.ValueAnimator +import android.content.Context +import android.content.res.ColorStateList +import android.content.res.Configuration +import android.content.res.Resources.ID_NULL +import android.graphics.drawable.Drawable +import android.graphics.drawable.RippleDrawable +import android.service.quicksettings.Tile +import android.text.TextUtils +import android.util.Log +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.accessibility.AccessibilityEvent +import android.view.accessibility.AccessibilityNodeInfo +import android.widget.ImageView +import android.widget.LinearLayout +import android.widget.Switch +import android.widget.TextView +import com.android.settingslib.Utils +import com.android.systemui.FontSizeUtils +import com.android.systemui.R +import com.android.systemui.plugins.qs.QSIconView +import com.android.systemui.plugins.qs.QSTile +import com.android.systemui.plugins.qs.QSTile.BooleanState +import com.android.systemui.plugins.qs.QSTileView +import java.util.Objects + +private const val TAG = "QSTileViewImpl" +open class QSTileViewImpl @JvmOverloads constructor( + context: Context, + private val _icon: QSIconView, + private val collapsed: Boolean = false +) : QSTileView(context), HeightOverrideable { + + companion object { + private const val INVALID = -1 + } + + override var heightOverride: Int = HeightOverrideable.NO_OVERRIDE + + private val colorActive = Utils.getColorAttrDefaultColor(context, + com.android.internal.R.attr.colorAccentPrimary) + private val colorInactive = Utils.getColorAttrDefaultColor(context, R.attr.offStateColor) + private val colorUnavailable = + Utils.getColorAttrDefaultColor(context, android.R.attr.colorBackground) + + private val colorLabelActive = + Utils.getColorAttrDefaultColor(context, android.R.attr.textColorPrimaryInverse) + private val colorLabelInactive = + Utils.getColorAttrDefaultColor(context, android.R.attr.textColorPrimary) + private val colorLabelUnavailable = + Utils.getColorAttrDefaultColor(context, android.R.attr.textColorTertiary) + + private lateinit var label: TextView + protected lateinit var secondaryLabel: TextView + private lateinit var labelContainer: IgnorableChildLinearLayout + protected lateinit var sideView: ViewGroup + private lateinit var customDrawableView: ImageView + private lateinit var chevronView: ImageView + + protected var showRippleEffect = true + + private lateinit var ripple: RippleDrawable + private lateinit var colorBackgroundDrawable: Drawable + private var paintColor: Int = 0 + private var paintAnimator: ValueAnimator? = null + private var labelAnimator: ValueAnimator? = null + private var secondaryLabelAnimator: ValueAnimator? = null + + private var accessibilityClass: String? = null + private var stateDescriptionDeltas: CharSequence? = null + private var lastStateDescription: CharSequence? = null + private var tileState = false + private var lastState = INVALID + + private val locInScreen = IntArray(2) + + init { + setId(generateViewId()) + orientation = LinearLayout.HORIZONTAL + gravity = Gravity.CENTER_VERTICAL or Gravity.START + importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_YES + clipChildren = false + clipToPadding = false + isFocusable = true + background = createTileBackground() + paintColor = getCircleColor(QSTile.State.DEFAULT_STATE) + colorBackgroundDrawable.setTint(paintColor) + + val padding = resources.getDimensionPixelSize(R.dimen.qs_tile_padding) + val startPadding = resources.getDimensionPixelSize(R.dimen.qs_tile_start_padding) + setPaddingRelative(startPadding, padding, padding, padding) + + val iconSize = resources.getDimensionPixelSize(R.dimen.qs_icon_size) + addView(_icon, LayoutParams(iconSize, iconSize)) + + createAndAddLabels() + createAndAddSideView() + } + + override fun onConfigurationChanged(newConfig: Configuration?) { + super.onConfigurationChanged(newConfig) + updateResources() + } + + fun updateResources() { + FontSizeUtils.updateFontSize(label, R.dimen.qs_tile_text_size) + FontSizeUtils.updateFontSize(secondaryLabel, R.dimen.qs_tile_text_size) + + val iconSize = context.resources.getDimensionPixelSize(R.dimen.qs_icon_size) + _icon.layoutParams.apply { + height = iconSize + width = iconSize + } + + val padding = resources.getDimensionPixelSize(R.dimen.qs_tile_padding) + val startPadding = resources.getDimensionPixelSize(R.dimen.qs_tile_start_padding) + setPaddingRelative(startPadding, padding, padding, padding) + + val labelMargin = resources.getDimensionPixelSize(R.dimen.qs_label_container_margin) + (labelContainer.layoutParams as MarginLayoutParams).apply { + marginStart = labelMargin + } + + (sideView.layoutParams as MarginLayoutParams).apply { + marginStart = labelMargin + } + (chevronView.layoutParams as MarginLayoutParams).apply { + height = iconSize + width = iconSize + } + + val endMargin = resources.getDimensionPixelSize(R.dimen.qs_drawable_end_margin) + (customDrawableView.layoutParams as MarginLayoutParams).apply { + height = iconSize + marginEnd = endMargin + } + } + + private fun createAndAddLabels() { + labelContainer = LayoutInflater.from(context) + .inflate(R.layout.qs_tile_label, this, false) as IgnorableChildLinearLayout + label = labelContainer.requireViewById(R.id.tile_label) + secondaryLabel = labelContainer.requireViewById(R.id.app_label) + if (collapsed) { + labelContainer.ignoreLastView = true + secondaryLabel.alpha = 0f + } + label.setTextColor(getLabelColor(QSTile.State.DEFAULT_STATE)) + secondaryLabel.setTextColor(getSecondaryLabelColor(QSTile.State.DEFAULT_STATE)) + addView(labelContainer) + } + + private fun createAndAddSideView() { + sideView = LayoutInflater.from(context) + .inflate(R.layout.qs_tile_side_icon, this, false) as ViewGroup + customDrawableView = sideView.requireViewById(R.id.customDrawable) + chevronView = sideView.requireViewById(R.id.chevron) + addView(sideView) + } + + fun createTileBackground(): Drawable { + ripple = mContext.getDrawable(R.drawable.qs_tile_background) as RippleDrawable + colorBackgroundDrawable = ripple.findDrawableByLayerId(R.id.background) + return ripple + } + + override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { + super.onLayout(changed, l, t, r, b) + if (heightOverride != HeightOverrideable.NO_OVERRIDE) { + bottom = top + heightOverride + } + } + + override fun updateAccessibilityOrder(previousView: View?): View { + accessibilityTraversalAfter = previousView?.id ?: ID_NULL + return this + } + + override fun getIcon(): QSIconView { + return _icon + } + + override fun getIconWithBackground(): View { + return icon + } + + override fun init(tile: QSTile) { + init( + { v: View? -> tile.click(this) }, + { view: View? -> + tile.longClick(this) + true + } + ) + } + + private fun init( + click: OnClickListener?, + longClick: OnLongClickListener? + ) { + setOnClickListener(click) + onLongClickListener = longClick + } + + override fun onStateChanged(state: QSTile.State) { + post { + handleStateChanged(state) + } + } + + override fun getDetailY(): Int { + return top + height / 2 + } + + override fun hasOverlappingRendering(): Boolean { + // Avoid layers for this layout - we don't need them. + return false + } + + override fun setClickable(clickable: Boolean) { + super.setClickable(clickable) + background = if (clickable && showRippleEffect) { + ripple.also { + // In case that the colorBackgroundDrawable was used as the background, make sure + // it has the correct callback instead of null + colorBackgroundDrawable.callback = it + } + } else { + colorBackgroundDrawable + } + } + + override fun getLabelContainer(): View { + return labelContainer + } + + override fun getSecondaryLabel(): View { + return secondaryLabel + } + + override fun getSecondaryIcon(): View { + return sideView + } + + // Accessibility + + override fun onInitializeAccessibilityEvent(event: AccessibilityEvent) { + super.onInitializeAccessibilityEvent(event) + if (!TextUtils.isEmpty(accessibilityClass)) { + event.className = accessibilityClass + } + if (event.contentChangeTypes == AccessibilityEvent.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION && + stateDescriptionDeltas != null) { + event.text.add(stateDescriptionDeltas) + stateDescriptionDeltas = null + } + } + + override fun onInitializeAccessibilityNodeInfo(info: AccessibilityNodeInfo) { + super.onInitializeAccessibilityNodeInfo(info) + // Clear selected state so it is not announce by talkback. + info.isSelected = false + if (!TextUtils.isEmpty(accessibilityClass)) { + info.className = accessibilityClass + if (Switch::class.java.name == accessibilityClass) { + val label = resources.getString( + if (tileState) R.string.switch_bar_on else R.string.switch_bar_off) + // Set the text here for tests in + // android.platform.test.scenario.sysui.quicksettings. Can be removed when + // UiObject2 has a new getStateDescription() API and tests are updated. + info.text = label + info.isChecked = tileState + info.isCheckable = true + if (isLongClickable) { + info.addAction( + AccessibilityNodeInfo.AccessibilityAction( + AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK.id, + resources.getString( + R.string.accessibility_long_click_tile))) + } + } + } + } + + override fun toString(): String { + val sb = StringBuilder(javaClass.simpleName).append('[') + sb.append("locInScreen=(${locInScreen[0]}, ${locInScreen[1]})") + sb.append(", iconView=$_icon") + sb.append(", tileState=$tileState") + sb.append("]") + return sb.toString() + } + + // HANDLE STATE CHANGES RELATED METHODS + + protected open fun handleStateChanged(state: QSTile.State) { + val allowAnimations = animationsEnabled() + showRippleEffect = state.showRippleEffect + isClickable = state.state != Tile.STATE_UNAVAILABLE + isLongClickable = state.handlesLongClick + icon.setIcon(state, allowAnimations) + contentDescription = state.contentDescription + + // Background color animation + val newColor = getCircleColor(state.state) + if (allowAnimations) { + animateBackground(newColor) + } else { + clearBackgroundAnimator() + colorBackgroundDrawable.setTintList(ColorStateList.valueOf(newColor)).also { + paintColor = newColor + } + paintColor = newColor + } + // + + // State handling and description + val stateDescription = StringBuilder() + val stateText = getStateText(state) + if (!TextUtils.isEmpty(stateText)) { + stateDescription.append(stateText) + if (TextUtils.isEmpty(state.secondaryLabel)) { + state.secondaryLabel = stateText + } + } + if (!TextUtils.isEmpty(state.stateDescription)) { + stateDescription.append(", ") + stateDescription.append(state.stateDescription) + if (lastState != INVALID && state.state == lastState && + state.stateDescription != lastStateDescription) { + stateDescriptionDeltas = state.stateDescription + } + } + + setStateDescription(stateDescription.toString()) + lastStateDescription = state.stateDescription + + accessibilityClass = if (state.state == Tile.STATE_UNAVAILABLE) { + null + } else { + state.expandedAccessibilityClassName + } + + if (state is BooleanState) { + val newState = state.value + if (tileState != newState) { + tileState = newState + } + } + // + + // Labels + if (!Objects.equals(label.text, state.label)) { + label.text = state.label + } + if (!Objects.equals(secondaryLabel.text, state.secondaryLabel)) { + secondaryLabel.text = state.secondaryLabel + secondaryLabel.visibility = if (TextUtils.isEmpty(state.secondaryLabel)) { + GONE + } else { + VISIBLE + } + } + + if (allowAnimations) { + animateLabelColor(getLabelColor(state.state)) + animateSecondaryLabelColor(getSecondaryLabelColor(state.state)) + } else { + label.setTextColor(getLabelColor(state.state)) + secondaryLabel.setTextColor(getSecondaryLabelColor(state.state)) + } + + // Right side icon + loadSideViewDrawableIfNecessary(state) + chevronView.imageTintList = ColorStateList.valueOf(getSecondaryLabelColor(state.state)) + + label.isEnabled = !state.disabledByPolicy + + lastState = state.state + } + + private fun loadSideViewDrawableIfNecessary(state: QSTile.State) { + if (state.sideViewCustomDrawable != null) { + customDrawableView.setImageDrawable(state.sideViewCustomDrawable) + customDrawableView.visibility = VISIBLE + chevronView.visibility = GONE + } else if (state !is BooleanState || state.forceExpandIcon) { + customDrawableView.setImageDrawable(null) + customDrawableView.visibility = GONE + chevronView.visibility = VISIBLE + } else { + customDrawableView.setImageDrawable(null) + customDrawableView.visibility = GONE + chevronView.visibility = GONE + } + } + + private fun getStateText(state: QSTile.State): String { + return if (state.disabledByPolicy) { + context.getString(R.string.tile_disabled) + } else if (state.state == Tile.STATE_UNAVAILABLE) { + context.getString(R.string.tile_unavailable) + } else if (state is BooleanState) { + if (state.state == Tile.STATE_INACTIVE) { + context.getString(R.string.switch_bar_off) + } else { + context.getString(R.string.switch_bar_on) + } + } else { + "" + } + } + + /* + * The view should not be animated if it's not on screen and no part of it is visible. + */ + protected open fun animationsEnabled(): Boolean { + if (!isShown) { + return false + } + if (alpha != 1f) { + return false + } + getLocationOnScreen(locInScreen) + return locInScreen.get(1) >= -height + } + + private fun animateBackground(newBackgroundColor: Int) { + if (newBackgroundColor != paintColor) { + clearBackgroundAnimator() + paintAnimator = ValueAnimator.ofArgb(paintColor, newBackgroundColor) + .setDuration(QSIconViewImpl.QS_ANIM_LENGTH).apply { + addUpdateListener { animation: ValueAnimator -> + val c = animation.animatedValue as Int + colorBackgroundDrawable.setTintList(ColorStateList.valueOf(c)).also { + paintColor = c + } + } + start() + } + } + } + + private fun animateLabelColor(color: Int) { + val currentColor = label.textColors.defaultColor + if (currentColor != color) { + clearLabelAnimator() + labelAnimator = ValueAnimator.ofArgb(currentColor, color) + .setDuration(QSIconViewImpl.QS_ANIM_LENGTH).apply { + addUpdateListener { + label.setTextColor(it.animatedValue as Int) + } + start() + } + } + } + + private fun animateSecondaryLabelColor(color: Int) { + val currentColor = secondaryLabel.textColors.defaultColor + if (currentColor != color) { + clearSecondaryLabelAnimator() + secondaryLabelAnimator = ValueAnimator.ofArgb(currentColor, color) + .setDuration(QSIconViewImpl.QS_ANIM_LENGTH).apply { + addUpdateListener { + secondaryLabel.setTextColor(it.animatedValue as Int) + } + start() + } + } + } + + private fun clearBackgroundAnimator() { + paintAnimator?.cancel()?.also { paintAnimator = null } + } + + private fun clearLabelAnimator() { + labelAnimator?.cancel()?.also { labelAnimator = null } + } + + private fun clearSecondaryLabelAnimator() { + secondaryLabelAnimator?.cancel()?.also { secondaryLabelAnimator = null } + } + + private fun getCircleColor(state: Int): Int { + return when (state) { + Tile.STATE_ACTIVE -> colorActive + Tile.STATE_INACTIVE -> colorInactive + Tile.STATE_UNAVAILABLE -> colorUnavailable + else -> { + Log.e(TAG, "Invalid state $state") + 0 + } + } + } + + private fun getLabelColor(state: Int): Int { + return when (state) { + Tile.STATE_ACTIVE -> colorLabelActive + Tile.STATE_INACTIVE -> colorLabelInactive + Tile.STATE_UNAVAILABLE -> colorLabelUnavailable + else -> { + Log.e(TAG, "Invalid state $state") + 0 + } + } + } + + private fun getSecondaryLabelColor(state: Int): Int { + return when (state) { + Tile.STATE_ACTIVE -> colorLabelActive + Tile.STATE_INACTIVE, Tile.STATE_UNAVAILABLE -> colorLabelUnavailable + else -> { + Log.e(TAG, "Invalid state $state") + 0 + } + } + } +}
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java index 5dcbf49a9b72..b7f2cd0da642 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java @@ -99,7 +99,9 @@ public class InternetTile extends QSTileImpl<SignalState> { @Override public SignalState newTileState() { - return new SignalState(); + SignalState s = new SignalState(); + s.forceExpandIcon = true; + return s; } @Override @@ -317,10 +319,18 @@ public class InternetTile extends QSTileImpl<SignalState> { Log.d(TAG, "setIsAirplaneMode: " + "icon = " + (icon == null ? "" : icon.toString())); } + if (mCellularInfo.mAirplaneModeEnabled == icon.visible) { + return; + } mCellularInfo.mAirplaneModeEnabled = icon.visible; mWifiInfo.mAirplaneModeEnabled = icon.visible; if (!mSignalCallback.mEthernetInfo.mConnected) { - refreshState(mCellularInfo); + if (mWifiInfo.mEnabled && (mWifiInfo.mWifiSignalIconId > 0) + && (mWifiInfo.mSsid != null)) { + refreshState(mWifiInfo); + } else { + refreshState(mCellularInfo); + } } } @@ -454,6 +464,9 @@ public class InternetTile extends QSTileImpl<SignalState> { state.dualLabelContentDescription = r.getString( R.string.accessibility_quick_settings_open_settings, getTileLabel()); state.expandedAccessibilityClassName = Switch.class.getName(); + if (DEBUG) { + Log.d(TAG, "handleUpdateWifiState: " + "SignalState = " + state.toString()); + } } private void handleUpdateCellularState(SignalState state, Object arg) { @@ -494,6 +507,9 @@ public class InternetTile extends QSTileImpl<SignalState> { } else { state.stateDescription = state.secondaryLabel; } + if (DEBUG) { + Log.d(TAG, "handleUpdateCellularState: " + "SignalState = " + state.toString()); + } } private void handleUpdateEthernetState(SignalState state, Object arg) { @@ -506,6 +522,9 @@ public class InternetTile extends QSTileImpl<SignalState> { state.state = Tile.STATE_ACTIVE; state.icon = ResourceIcon.get(cb.mEthernetSignalIconId); state.secondaryLabel = cb.mEthernetContentDescription; + if (DEBUG) { + Log.d(TAG, "handleUpdateEthernetState: " + "SignalState = " + state.toString()); + } } private CharSequence appendMobileDataType(CharSequence current, CharSequence dataType) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java index be40423df3fa..85b835ae7ac9 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/QuickAccessWalletTile.java @@ -75,7 +75,7 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { private final FeatureFlags mFeatureFlags; @VisibleForTesting Drawable mCardViewDrawable; - private boolean mHasCard; + private WalletCard mSelectedCard; @Inject public QuickAccessWalletTile( @@ -125,7 +125,7 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { view == null ? null : ActivityLaunchAnimator.Controller.fromView(view); mUiHandler.post(() -> { - if (mHasCard) { + if (mSelectedCard != null) { Intent intent = new Intent(mContext, WalletActivity.class) .setAction(Intent.ACTION_VIEW) .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); @@ -157,15 +157,14 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { state.icon = ResourceIcon.get(R.drawable.ic_wallet_lockscreen); boolean isDeviceLocked = !mKeyguardStateController.isUnlocked(); if (mQuickAccessWalletClient.isWalletServiceAvailable()) { - if (mHasCard) { + if (mSelectedCard != null) { if (isDeviceLocked) { state.state = Tile.STATE_INACTIVE; state.secondaryLabel = mContext.getString(R.string.wallet_secondary_label_device_locked); } else { state.state = Tile.STATE_ACTIVE; - state.secondaryLabel = - mContext.getString(R.string.wallet_secondary_label_active); + state.secondaryLabel = mSelectedCard.getContentDescription(); } } else { state.state = Tile.STATE_INACTIVE; @@ -175,7 +174,7 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { } else { state.state = Tile.STATE_UNAVAILABLE; } - state.sideViewDrawable = isDeviceLocked ? null : mCardViewDrawable; + state.sideViewCustomDrawable = isDeviceLocked ? null : mCardViewDrawable; } @Override @@ -208,7 +207,7 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_height); int iconSizePx = mContext.getResources().getDimensionPixelSize(R.dimen.wallet_icon_size); GetWalletCardsRequest request = - new GetWalletCardsRequest(cardWidth, cardHeight, iconSizePx, /* maxCards= */ 2); + new GetWalletCardsRequest(cardWidth, cardHeight, iconSizePx, /* maxCards= */ 1); mQuickAccessWalletClient.getWalletCards(mExecutor, request, mCardRetriever); } @@ -222,7 +221,7 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { if (cards.isEmpty()) { Log.d(TAG, "No wallet cards exist."); mCardViewDrawable = null; - mHasCard = false; + mSelectedCard = null; refreshState(); return; } @@ -231,8 +230,8 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { Log.d(TAG, "Selected card index out of bounds."); return; } - mCardViewDrawable = cards.get(selectedIndex).getCardImage().loadDrawable(mContext); - mHasCard = true; + mSelectedCard = cards.get(selectedIndex); + mCardViewDrawable = mSelectedCard.getCardImage().loadDrawable(mContext); refreshState(); } @@ -240,7 +239,7 @@ public class QuickAccessWalletTile extends QSTileImpl<QSTile.State> { public void onWalletCardRetrievalError(@NonNull GetWalletCardsError error) { Log.w(TAG, "Error retrieve wallet cards"); mCardViewDrawable = null; - mHasCard = false; + mSelectedCard = null; refreshState(); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java index ef2c1c903a85..7bde64b3e761 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java @@ -129,6 +129,8 @@ public class WorkModeTile extends QSTileImpl<BooleanState> implements state.contentDescription = state.label; state.expandedAccessibilityClassName = Switch.class.getName(); state.state = state.value ? Tile.STATE_ACTIVE : Tile.STATE_INACTIVE; + state.secondaryLabel = state.value ? "" : + mContext.getString(R.string.quick_settings_work_mode_paused); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index 1ec785d4712e..63adbd0b59f1 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -933,6 +933,21 @@ public class OverviewProxyService extends CurrentUserTracker implements } } + public void notifyImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition, + boolean showImeSwitcher) { + try { + if (mOverviewProxy != null) { + mOverviewProxy.onImeWindowStatusChanged(displayId, token, vis, backDisposition, + showImeSwitcher); + } else { + Log.e(TAG_OPS, "Failed to get overview proxy for setting IME status."); + } + } catch (RemoteException e) { + Log.e(TAG_OPS, "Failed to call notifyImeWindowStatus()", e); + } + + } + private void updateEnabledState() { final int currentUser = ActivityManagerWrapper.getInstance().getCurrentUserId(); mIsEnabled = mContext.getPackageManager().resolveServiceAsUser(mQuickStepIntent, @@ -983,5 +998,7 @@ public class OverviewProxyService extends CurrentUserTracker implements default void onAssistantProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {} default void onAssistantGestureCompletion(float velocity) {} default void startAssistant(Bundle bundle) {} + default void onImeWindowStatusChanged(int displayId, IBinder token, int vis, + int backDisposition, boolean showImeSwitcher) {} } } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ActionProxyReceiver.java b/packages/SystemUI/src/com/android/systemui/screenshot/ActionProxyReceiver.java index df9fc63a33f0..17e94c4b3f69 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ActionProxyReceiver.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ActionProxyReceiver.java @@ -88,7 +88,7 @@ public class ActionProxyReceiver extends BroadcastReceiver { ? ACTION_TYPE_EDIT : ACTION_TYPE_SHARE; mScreenshotSmartActions.notifyScreenshotAction( - context, intent.getStringExtra(EXTRA_ID), actionType, false); + context, intent.getStringExtra(EXTRA_ID), actionType, false, null); } } } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/DeleteScreenshotReceiver.java b/packages/SystemUI/src/com/android/systemui/screenshot/DeleteScreenshotReceiver.java index 35839f39b491..8d44205bef30 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/DeleteScreenshotReceiver.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/DeleteScreenshotReceiver.java @@ -62,7 +62,7 @@ public class DeleteScreenshotReceiver extends BroadcastReceiver { }); if (intent.getBooleanExtra(EXTRA_SMART_ACTIONS_ENABLED, false)) { mScreenshotSmartActions.notifyScreenshotAction( - context, intent.getStringExtra(EXTRA_ID), ACTION_TYPE_DELETE, false); + context, intent.getStringExtra(EXTRA_ID), ACTION_TYPE_DELETE, false, null); } } } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java index 6ebab8a60887..3eafbfbf37d7 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java @@ -21,6 +21,7 @@ import static com.android.systemui.screenshot.LogConfig.logTag; import android.app.Notification; import android.content.ComponentName; +import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.UserHandle; @@ -107,7 +108,8 @@ public class ScreenshotNotificationSmartActionsProvider { * @param action type of notification action invoked. * @param isSmartAction whether action invoked was a smart action. */ - public void notifyAction(String screenshotId, String action, boolean isSmartAction) { + public void notifyAction(String screenshotId, String action, boolean isSmartAction, + Intent intent) { if (DEBUG_ACTIONS) { Log.d(TAG, "SmartActions: notifyAction: return without notify"); } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java index 99238cd2c267..0527818135dd 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java @@ -26,6 +26,7 @@ import android.app.ActivityManager; import android.app.Notification; import android.content.ComponentName; import android.content.Context; +import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Handler; @@ -165,7 +166,7 @@ public class ScreenshotSmartActions { } void notifyScreenshotAction(Context context, String screenshotId, String action, - boolean isSmartAction) { + boolean isSmartAction, Intent intent) { try { ScreenshotNotificationSmartActionsProvider provider = SystemUIFactory.getInstance().createScreenshotNotificationSmartActionsProvider( @@ -174,7 +175,7 @@ public class ScreenshotSmartActions { Log.d(TAG, String.format("%s notifyAction: %s id=%s, isSmartAction=%b", provider.getClass(), action, screenshotId, isSmartAction)); } - provider.notifyAction(screenshotId, action, isSmartAction); + provider.notifyAction(screenshotId, action, isSmartAction, intent); } catch (Throwable e) { Log.e(TAG, "Error in notifyScreenshotAction: ", e); } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/SmartActionsReceiver.java b/packages/SystemUI/src/com/android/systemui/screenshot/SmartActionsReceiver.java index 3ad922b57c7c..f703058f4a0f 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/SmartActionsReceiver.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/SmartActionsReceiver.java @@ -60,6 +60,7 @@ public class SmartActionsReceiver extends BroadcastReceiver { } mScreenshotSmartActions.notifyScreenshotAction( - context, intent.getStringExtra(EXTRA_ID), actionType, true); + context, intent.getStringExtra(EXTRA_ID), actionType, true, + pendingIntent.getIntent()); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java index a072de874938..5daee6c2b924 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java @@ -492,8 +492,12 @@ public class KeyguardIndicationController implements KeyguardStateController.Cal return UserHandle.USER_NULL; } - @VisibleForTesting - protected void setVisible(boolean visible) { + /** + * Sets the visibility of keyguard bottom area, and if the indications are updatable. + * + * @param visible true to make the area visible and update the indication, false otherwise. + */ + public void setVisible(boolean visible) { mVisible = visible; mIndicationArea.setVisibility(visible ? VISIBLE : GONE); if (visible) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LightRevealScrim.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LightRevealScrim.kt index d6921d448a69..6a5f001ac2ee 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LightRevealScrim.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/LightRevealScrim.kt @@ -112,7 +112,12 @@ class PowerButtonReveal( val powerButtonY: Float ) : LightRevealEffect { - private val OVAL_INITIAL_HEIGHT = 50f + /** + * How far off the side of the screen to start the power button reveal, in terms of percent of + * the screen width. This ensures that the initial part of the animation (where the reveal is + * just a sliver) starts just off screen. + */ + private val OFF_SCREEN_START_AMOUNT = 0.05f private val WIDTH_INCREASE_MULTIPLIER = 1.25f @@ -124,13 +129,13 @@ class PowerButtonReveal( with(scrim) { revealGradientEndColorAlpha = 1f - fadeAmount setRevealGradientBounds( - width - + width * (1f + OFF_SCREEN_START_AMOUNT) - width * WIDTH_INCREASE_MULTIPLIER * interpolatedAmount, - powerButtonY - (OVAL_INITIAL_HEIGHT / 2f) - + powerButtonY - height * interpolatedAmount, - width * WIDTH_INCREASE_MULTIPLIER + + width * (1f + OFF_SCREEN_START_AMOUNT) + width * WIDTH_INCREASE_MULTIPLIER * interpolatedAmount, - powerButtonY + (OVAL_INITIAL_HEIGHT / 2f) + + powerButtonY + height * interpolatedAmount) } } @@ -147,7 +152,7 @@ class LightRevealScrim(context: Context?, attrs: AttributeSet?) : View(context, * How much of the underlying views are revealed, in percent. 0 means they will be completely * obscured and 1 means they'll be fully visible. */ - var revealAmount: Float = 0f + var revealAmount: Float = 1f set(value) { if (field != value) { field = value @@ -213,6 +218,12 @@ class LightRevealScrim(context: Context?, attrs: AttributeSet?) : View(context, */ private val shaderGradientMatrix = Matrix() + init { + revealEffect.setRevealAmountOnScrim(revealAmount, this) + setPaintColorFilter() + invalidate() + } + /** * Sets bounds for the transparent oval gradient that reveals the views below the scrim. This is * simply a helper method that sets [revealGradientCenter], [revealGradientWidth], and @@ -231,6 +242,9 @@ class LightRevealScrim(context: Context?, attrs: AttributeSet?) : View(context, override fun onDraw(canvas: Canvas?) { if (canvas == null || revealGradientWidth <= 0 || revealGradientHeight <= 0) { + if (revealAmount < 1f) { + canvas?.drawColor(revealGradientEndColor) + } return } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java index 0e56ab73397b..70b3a7be02fb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java @@ -15,8 +15,6 @@ */ package com.android.systemui.statusbar; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY; - import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; @@ -170,7 +168,9 @@ public class NotificationRemoteInputManager implements Dumpable { action == null ? false : action.isAuthenticationRequired(), () -> { Pair<Intent, ActivityOptions> options = response.getLaunchOptions(view); mLogger.logStartingIntentWithDefaultHandler(entry, pendingIntent); - return RemoteViews.startPendingIntent(view, pendingIntent, options); + boolean started = RemoteViews.startPendingIntent(view, pendingIntent, options); + if (started) releaseNotificationIfKeptForRemoteInputHistory(entry.getKey()); + return started; }); } @@ -602,6 +602,22 @@ public class NotificationRemoteInputManager implements Dumpable { || entry.hasJustSentRemoteInput()); } + /** + * Checks if the notification is being kept due to the user sending an inline reply, and if + * so, releases that hold. This is called anytime an action on the notification is dispatched + * (after unlock, if applicable), and will then wait a short time to allow the app to update the + * notification in response to the action. + */ + private void releaseNotificationIfKeptForRemoteInputHistory(String key) { + if (isNotificationKeptForRemoteInputHistory(key)) { + mMainHandler.postDelayed(() -> { + if (isNotificationKeptForRemoteInputHistory(key)) { + mNotificationLifetimeFinishedCallback.onSafeToRemove(key); + } + }, REMOTE_INPUT_KEPT_ENTRY_AUTO_CANCEL_DELAY); + } + } + public boolean shouldKeepForSmartReplyHistory(NotificationEntry entry) { if (!FORCE_REMOTE_INPUT_HISTORY) { return false; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index 8f462fea0468..e49ca13fa25c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -31,6 +31,7 @@ import android.view.WindowInsets; import android.view.accessibility.AccessibilityNodeInfo; import com.android.internal.annotations.VisibleForTesting; +import com.android.systemui.animation.Interpolators; import com.android.systemui.R; import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener; import com.android.systemui.statusbar.notification.NotificationUtils; @@ -176,7 +177,13 @@ public class NotificationShelf extends ActivatableNotificationView implements viewState.height = getIntrinsicHeight(); viewState.zTranslation = ambientState.getBaseZHeight(); viewState.clipTopAmount = 0; - viewState.alpha = 1f - ambientState.getHideAmount(); + + if (ambientState.isExpansionChanging() && !ambientState.isOnKeyguard()) { + viewState.alpha = Interpolators.getNotificationScrimAlpha( + ambientState.getExpansionFraction()); + } else { + viewState.alpha = 1f - ambientState.getHideAmount(); + } viewState.belowSpeedBump = mHostLayoutController.getSpeedBumpIndex() == 0; viewState.hideSensitive = false; viewState.xTranslation = getTranslationX(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java index fad748021559..eb7854e63a85 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java @@ -16,6 +16,7 @@ package com.android.systemui.statusbar.dagger; +import android.app.IActivityManager; import android.app.NotificationManager; import android.content.Context; import android.os.Handler; @@ -68,6 +69,7 @@ import com.android.systemui.util.time.SystemClock; import com.android.wm.shell.bubbles.Bubbles; import java.util.Optional; +import java.util.concurrent.Executor; import dagger.Binds; import dagger.Lazy; @@ -239,10 +241,13 @@ public interface StatusBarDependenciesModule { CommonNotifCollection notifCollection, FeatureFlags featureFlags, SystemClock systemClock, - ActivityStarter activityStarter) { + ActivityStarter activityStarter, + @Main Executor mainExecutor, + IActivityManager iActivityManager) { OngoingCallController ongoingCallController = new OngoingCallController( - notifCollection, featureFlags, systemClock, activityStarter); + notifCollection, featureFlags, systemClock, activityStarter, mainExecutor, + iActivityManager); ongoingCallController.init(); return ongoingCallController; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt index b3f7ca6f2630..2481ed482872 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/PrivacyDotViewController.kt @@ -17,20 +17,25 @@ package com.android.systemui.statusbar.events import android.animation.Animator -import android.animation.AnimatorListenerAdapter -import android.animation.ObjectAnimator import android.annotation.UiThread import android.util.Log import android.view.Gravity import android.view.View import android.widget.FrameLayout +import com.android.internal.annotations.GuardedBy import com.android.systemui.animation.Interpolators import com.android.systemui.R import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.statusbar.phone.StatusBarLocationPublisher import com.android.systemui.statusbar.phone.StatusBarMarginUpdatedListener +import com.android.systemui.util.concurrency.DelayableExecutor +import com.android.systemui.util.leak.RotationUtils.ROTATION_LANDSCAPE +import com.android.systemui.util.leak.RotationUtils.ROTATION_NONE +import com.android.systemui.util.leak.RotationUtils.ROTATION_SEASCAPE +import com.android.systemui.util.leak.RotationUtils.ROTATION_UPSIDE_DOWN import java.lang.IllegalStateException import java.util.concurrent.Executor @@ -54,31 +59,33 @@ import javax.inject.Inject @SysUISingleton class PrivacyDotViewController @Inject constructor( @Main private val mainExecutor: Executor, + private val stateController: StatusBarStateController, private val locationPublisher: StatusBarLocationPublisher, private val animationScheduler: SystemStatusAnimationScheduler ) { - private var rotation = 0 - private var leftSize = 0 - private var rightSize = 0 - private var sbHeightPortrait = 0 private var sbHeightLandscape = 0 - private var hasMultipleHeights = false - private var needsHeightUpdate = false - private var needsRotationUpdate = false - private var needsMarginUpdate = false - private lateinit var tl: View private lateinit var tr: View private lateinit var bl: View private lateinit var br: View - // Track which corner is active (based on orientation + RTL) - private var designatedCorner: View? = null + // Only can be modified on @UiThread + private var currentViewState: ViewState = ViewState() + + @GuardedBy("lock") + private var nextViewState: ViewState = currentViewState.copy() + set(value) { + field = value + scheduleUpdate() + } + private val lock = Object() + private var cancelRunnable: Runnable? = null // Privacy dots are created in ScreenDecoration's UiThread, which is not the main thread - private var uiExecutor: Executor? = null + private var uiExecutor: DelayableExecutor? = null + private var e: DelayableExecutor? = null private val views: Sequence<View> get() = if (!this::tl.isInitialized) sequenceOf() else sequenceOf(tl, tr, br, bl) @@ -89,29 +96,78 @@ class PrivacyDotViewController @Inject constructor( setStatusBarMargins(marginLeft, marginRight) } }) + + stateController.addCallback(object : StatusBarStateController.StateListener { + override fun onExpandedChanged(isExpanded: Boolean) { + setStatusBarExpanded(isExpanded) + } + }) } - fun setUiExecutor(e: Executor) { + fun setUiExecutor(e: DelayableExecutor) { uiExecutor = e } @UiThread - fun updateRotation(rot: Int) { - dlog("updateRotation: ") - if (rot == rotation) { - return + fun setNewRotation(rot: Int) { + dlog("updateRotation: $rot") + + synchronized(lock) { + if (rot == nextViewState.rotation) { + return + } } - // A rotation has started, hide the views to avoid flicker + // If we rotated, hide all dotes until the next state resolves setCornerVisibilities(View.INVISIBLE) - if (hasMultipleHeights && (rotation % 2) != (rot % 2)) { - // we've changed from vertical to horizontal; update status bar height - needsHeightUpdate = true + val newCorner = selectDesignatedCorner(rot) + val index = newCorner.cornerIndex() + + val h = when (rot) { + ROTATION_NONE, ROTATION_UPSIDE_DOWN -> sbHeightPortrait + ROTATION_LANDSCAPE, ROTATION_SEASCAPE -> sbHeightLandscape + else -> 0 + } + synchronized(lock) { + nextViewState = nextViewState.copy( + rotation = rot, + height = h, + designatedCorner = newCorner, + cornerIndex = index) + } + } + + @UiThread + private fun hideDotView(dot: View, animate: Boolean) { + dot.clearAnimation() + if (animate) { + dot.animate() + .setDuration(DURATION) + .setInterpolator(Interpolators.ALPHA_OUT) + .alpha(0f) + .withEndAction { dot.visibility = View.INVISIBLE } + .start() + } else { + dot.visibility = View.INVISIBLE } + } - rotation = rot - needsRotationUpdate = true + @UiThread + private fun showDotView(dot: View, animate: Boolean) { + dot.clearAnimation() + if (animate) { + dot.visibility = View.VISIBLE + dot.alpha = 0f + dot.animate() + .alpha(1f) + .setDuration(DURATION) + .setInterpolator(Interpolators.ALPHA_IN) + .start() + } else { + dot.visibility = View.VISIBLE + dot.alpha = 1f + } } @UiThread @@ -127,14 +183,14 @@ class PrivacyDotViewController @Inject constructor( // Update the gravity and margins of the privacy views @UiThread - private fun updateRotations() { + private fun updateRotations(rotation: Int) { // To keep a view in the corner, its gravity is always the description of its current corner // Therefore, just figure out which view is in which corner. This turns out to be something // like (myCorner - rot) mod 4, where topLeft = 0, topRight = 1, etc. and portrait = 0, and // rotating the device counter-clockwise increments rotation by 1 views.forEach { corner -> - val rotatedCorner = rotatedCorner(cornerForView(corner)) + val rotatedCorner = rotatedCorner(cornerForView(corner), rotation) (corner.layoutParams as FrameLayout.LayoutParams).apply { gravity = rotatedCorner.toGravity() } @@ -147,26 +203,24 @@ class PrivacyDotViewController @Inject constructor( } @UiThread - private fun updateCornerSizes() { + private fun updateCornerSizes(l: Int, r: Int, rotation: Int) { views.forEach { corner -> - val rotatedCorner = rotatedCorner(cornerForView(corner)) - val w = widthForCorner(rotatedCorner) - Log.d(TAG, "updateCornerSizes: setting (${cornerForView(corner)}) to $w") + val rotatedCorner = rotatedCorner(cornerForView(corner), rotation) + val w = widthForCorner(rotatedCorner, l, r) (corner.layoutParams as FrameLayout.LayoutParams).width = w - corner.requestLayout() } } // Designated view will be the one at statusbar's view.END @UiThread - private fun selectDesignatedCorner(): View? { + private fun selectDesignatedCorner(r: Int): View? { if (!this::tl.isInitialized) { return null } val isRtl = tl.isLayoutRtl - return when (rotation) { + return when (r) { 0 -> if (isRtl) tl else tr 1 -> if (isRtl) tr else br 2 -> if (isRtl) br else bl @@ -177,16 +231,17 @@ class PrivacyDotViewController @Inject constructor( // Track the current designated corner and maybe animate to a new rotation @UiThread - private fun updateDesignatedCorner(newCorner: View) { - designatedCorner = newCorner - - if (animationScheduler.hasPersistentDot) { - designatedCorner!!.visibility = View.VISIBLE - designatedCorner!!.alpha = 0f - designatedCorner!!.animate() + private fun updateDesignatedCorner(newCorner: View?, shouldShowDot: Boolean) { + if (shouldShowDot) { + newCorner?.apply { + clearAnimation() + visibility = View.VISIBLE + alpha = 0f + animate() .alpha(1.0f) .setDuration(300) .start() + } } } @@ -207,7 +262,7 @@ class PrivacyDotViewController @Inject constructor( } } - private fun rotatedCorner(corner: Int): Int { + private fun rotatedCorner(corner: Int, rotation: Int): Int { var modded = corner - rotation if (modded < 0) { modded += 4 @@ -216,10 +271,10 @@ class PrivacyDotViewController @Inject constructor( return modded } - private fun widthForCorner(corner: Int): Int { + private fun widthForCorner(corner: Int, left: Int, right: Int): Int { return when (corner) { - TOP_LEFT, BOTTOM_LEFT -> leftSize - TOP_RIGHT, BOTTOM_RIGHT -> rightSize + TOP_LEFT, BOTTOM_LEFT -> left + TOP_RIGHT, BOTTOM_RIGHT -> right else -> throw IllegalArgumentException("Unknown corner") } } @@ -237,10 +292,16 @@ class PrivacyDotViewController @Inject constructor( bl = bottomLeft br = bottomRight - designatedCorner = selectDesignatedCorner() + val dc = selectDesignatedCorner(0) + val index = dc.cornerIndex() + mainExecutor.execute { animationScheduler.addCallback(systemStatusAnimationCallback) } + + synchronized(lock) { + nextViewState = nextViewState.copy(designatedCorner = dc, cornerIndex = index) + } } /** @@ -250,8 +311,6 @@ class PrivacyDotViewController @Inject constructor( fun setStatusBarHeights(portrait: Int, landscape: Int) { sbHeightPortrait = portrait sbHeightLandscape = landscape - - hasMultipleHeights = portrait != landscape } /** @@ -261,80 +320,109 @@ class PrivacyDotViewController @Inject constructor( * @param right space between the status bar contents and the right side of the screen */ private fun setStatusBarMargins(left: Int, right: Int) { - leftSize = left - rightSize = right + dlog("setStatusBarMargins l=$left r=$right") + synchronized(lock) { + nextViewState = nextViewState.copy(marginLeft = left, marginRight = right) + } + } + + /** + * We won't show the dot when quick settings is showing + */ + private fun setStatusBarExpanded(expanded: Boolean) { + synchronized(lock) { + nextViewState = nextViewState.copy(hideDotForQuickSettings = expanded) + } + } - needsMarginUpdate = true + private fun scheduleUpdate() { + dlog("scheduleUpdate: ") + + cancelRunnable?.run() + cancelRunnable = uiExecutor?.executeDelayed({ + processNextViewState() + }, 100) + } - // Margins come after PhoneStatusBarView does a layout pass, and so will always happen - // after rotation changes. It is safe to execute the updates from here - uiExecutor?.execute { - doUpdates(needsRotationUpdate, needsHeightUpdate, needsMarginUpdate) + @UiThread + private fun processNextViewState() { + dlog("processNextViewState: ") + + val newState: ViewState + synchronized(lock) { + newState = nextViewState.copy() } + + resolveState(newState) } - private fun doUpdates(rot: Boolean, height: Boolean, width: Boolean) { - dlog("doUpdates: ") - var newDesignatedCorner: View? = null + @UiThread + private fun resolveState(state: ViewState) { + dlog("resolveState $state") + if (state == currentViewState) { + dlog("resolveState: skipping") + return + } + + if (state.rotation != currentViewState.rotation) { + // A rotation has started, hide the views to avoid flicker + updateRotations(state.rotation) + } + + if (state.height != currentViewState.height) { + updateHeights(state.rotation) + } - if (rot) { - needsRotationUpdate = false - updateRotations() - newDesignatedCorner = selectDesignatedCorner() + if (state.marginLeft != currentViewState.marginLeft || + state.marginRight != currentViewState.marginRight) { + updateCornerSizes(state.marginLeft, state.marginRight, state.rotation) } - if (height) { - needsHeightUpdate = false - updateHeights(rotation) + if (state.designatedCorner != currentViewState.designatedCorner) { + updateDesignatedCorner(state.designatedCorner, state.shouldShowDot()) } - if (width) { - needsMarginUpdate = false - updateCornerSizes() + if (state.needsLayout(currentViewState)) { + views.forEach { it.requestLayout() } } - if (newDesignatedCorner != null && newDesignatedCorner != designatedCorner) { - updateDesignatedCorner(newDesignatedCorner) + val shouldShow = state.shouldShowDot() + if (shouldShow != currentViewState.shouldShowDot()) { + if (shouldShow && state.designatedCorner != null) { + showDotView(state.designatedCorner, true) + } else if (!shouldShow && state.designatedCorner != null) { + hideDotView(state.designatedCorner, true) + } } + + currentViewState = state } private val systemStatusAnimationCallback: SystemStatusAnimationCallback = object : SystemStatusAnimationCallback { override fun onSystemStatusAnimationTransitionToPersistentDot(): Animator? { - if (designatedCorner == null) { - return null + synchronized(lock) { + nextViewState = nextViewState.copy(systemPrivacyEventIsActive = true) } - val alpha = ObjectAnimator.ofFloat( - designatedCorner, "alpha", 0f, 1f) - alpha.duration = DURATION - alpha.interpolator = Interpolators.ALPHA_OUT - alpha.addListener(object : AnimatorListenerAdapter() { - override fun onAnimationStart(animator: Animator) { - uiExecutor?.execute { designatedCorner?.visibility = View.VISIBLE } - } - }) - return alpha + return null } override fun onHidePersistentDot(): Animator? { - if (designatedCorner == null) { - return null + synchronized(lock) { + nextViewState = nextViewState.copy(systemPrivacyEventIsActive = false) } - val alpha = ObjectAnimator.ofFloat( - designatedCorner, "alpha", 1f, 0f) - alpha.duration = DURATION - alpha.interpolator = Interpolators.ALPHA_OUT - alpha.addListener(object : AnimatorListenerAdapter() { - override fun onAnimationEnd(animator: Animator) { - uiExecutor?.execute { designatedCorner?.visibility = View.INVISIBLE } - } - }) - alpha.start() return null } } + + private fun View?.cornerIndex(): Int { + if (this != null) { + return cornerForView(this) + } + return -1 + } } private fun dlog(s: String) { @@ -370,3 +458,26 @@ private fun Int.innerGravity(): Int { else -> throw IllegalArgumentException("Not a corner") } } + +private data class ViewState( + // don't @ me with names + val systemPrivacyEventIsActive: Boolean = false, + val hideDotForQuickSettings: Boolean = false, + val statusBarExpanded: Boolean = false, + val rotation: Int = 0, + val height: Int = 0, + val marginLeft: Int = 0, + val marginRight: Int = 0, + val cornerIndex: Int = -1, + val designatedCorner: View? = null +) { + fun shouldShowDot(): Boolean { + return systemPrivacyEventIsActive && !hideDotForQuickSettings + } + + fun needsLayout(other: ViewState): Boolean { + return rotation != other.rotation || + marginRight != other.marginRight || + height != other.height + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/StatusEvent.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/StatusEvent.kt index 6380dc0b9b46..539020d52db5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/events/StatusEvent.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/StatusEvent.kt @@ -31,12 +31,25 @@ interface StatusEvent { val priority: Int // Whether or not to force the status bar open and show a dot val forceVisible: Boolean + // Whether or not to show an animation for this event + val showAnimation: Boolean val viewCreator: (context: Context) -> View + + // Update this event with values from another event. + fun updateFromEvent(other: StatusEvent?) { + // no op by default + } + + // Whether or not this event should update its value from the provided. False by default + fun shouldUpdateFromEvent(other: StatusEvent?): Boolean { + return false + } } class BatteryEvent : StatusEvent { override val priority = 50 override val forceVisible = false + override val showAnimation = true override val viewCreator: (context: Context) -> View = { context -> val iv = ImageView(context) @@ -49,19 +62,34 @@ class BatteryEvent : StatusEvent { return javaClass.simpleName } } -class PrivacyEvent : StatusEvent { +class PrivacyEvent(override val showAnimation: Boolean = true) : StatusEvent { override val priority = 100 override val forceVisible = true var privacyItems: List<PrivacyItem> = listOf() + private var privacyChip: OngoingPrivacyChip? = null override val viewCreator: (context: Context) -> View = { context -> val v = LayoutInflater.from(context) .inflate(R.layout.ongoing_privacy_chip, null) as OngoingPrivacyChip v.privacyList = privacyItems + privacyChip = v v } override fun toString(): String { return javaClass.simpleName } + + override fun shouldUpdateFromEvent(other: StatusEvent?): Boolean { + return other is PrivacyEvent && other.privacyItems != privacyItems + } + + override fun updateFromEvent(other: StatusEvent?) { + if (other !is PrivacyEvent) { + return + } + + privacyItems = other.privacyItems + privacyChip?.privacyList = other.privacyItems + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventCoordinator.kt index b4818233aea3..ba50659f5567 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemEventCoordinator.kt @@ -16,10 +16,13 @@ package com.android.systemui.statusbar.events +import android.provider.DeviceConfig +import android.provider.DeviceConfig.NAMESPACE_PRIVACY import com.android.systemui.dagger.SysUISingleton import com.android.systemui.privacy.PrivacyItem import com.android.systemui.privacy.PrivacyItemController import com.android.systemui.statusbar.policy.BatteryController +import com.android.systemui.util.time.SystemClock import javax.inject.Inject /** @@ -28,6 +31,7 @@ import javax.inject.Inject */ @SysUISingleton class SystemEventCoordinator @Inject constructor( + private val systemClock: SystemClock, private val batteryController: BatteryController, private val privacyController: PrivacyItemController ) { @@ -59,8 +63,8 @@ class SystemEventCoordinator @Inject constructor( scheduler.setShouldShowPersistentPrivacyIndicator(false) } - fun notifyPrivacyItemsChanged() { - val event = PrivacyEvent() + fun notifyPrivacyItemsChanged(showAnimation: Boolean = true) { + val event = PrivacyEvent(showAnimation) event.privacyItems = privacyStateListener.currentPrivacyItems scheduler.onStatusEvent(event) } @@ -90,11 +94,17 @@ class SystemEventCoordinator @Inject constructor( private val privacyStateListener = object : PrivacyItemController.Callback { var currentPrivacyItems = listOf<PrivacyItem>() + var previousPrivacyItems = listOf<PrivacyItem>() + var timeLastEmpty = systemClock.elapsedRealtime() override fun onPrivacyItemsChanged(privacyItems: List<PrivacyItem>) { - if (privacyItems.isNotEmpty() && currentPrivacyItems.containsAll(privacyItems)) { + if (uniqueItemsMatch(privacyItems, currentPrivacyItems)) { return + } else if (privacyItems.isEmpty()) { + previousPrivacyItems = currentPrivacyItems + timeLastEmpty = systemClock.elapsedRealtime() } + currentPrivacyItems = privacyItems notifyListeners() } @@ -103,10 +113,25 @@ class SystemEventCoordinator @Inject constructor( if (currentPrivacyItems.isEmpty()) { notifyPrivacyItemsEmpty() } else { - notifyPrivacyItemsChanged() + val showAnimation = isChipAnimationEnabled() && + (!uniqueItemsMatch(currentPrivacyItems, previousPrivacyItems) || + systemClock.elapsedRealtime() - timeLastEmpty >= DEBOUNCE_TIME) + notifyPrivacyItemsChanged(showAnimation) } } + + // Return true if the lists contain the same permission groups, used by the same UIDs + private fun uniqueItemsMatch(one: List<PrivacyItem>, two: List<PrivacyItem>): Boolean { + return one.map { it.application.uid to it.privacyType.permGroupName }.toSet() == + two.map { it.application.uid to it.privacyType.permGroupName }.toSet() + } + + private fun isChipAnimationEnabled(): Boolean { + return DeviceConfig.getBoolean(NAMESPACE_PRIVACY, CHIP_ANIMATION_ENABLED, true) + } } } +private const val DEBOUNCE_TIME = 3000L +private const val CHIP_ANIMATION_ENABLED = "privacy_chip_animation_enabled" private const val TAG = "SystemEventCoordinator"
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt index 40049373610c..655ed4132726 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt @@ -98,11 +98,17 @@ class SystemStatusAnimationScheduler @Inject constructor( // Don't deal with threading for now (no need let's be honest) Assert.isMainThread() - if (event.priority > scheduledEvent?.priority ?: -1) { + if (event.priority > scheduledEvent?.priority ?: -1 || + scheduledEvent?.shouldUpdateFromEvent(event) == true) { if (DEBUG) { Log.d(TAG, "scheduling event $event") } - scheduleEvent(event) + if (event.showAnimation) { + scheduleEvent(event) + } else if (event.forceVisible) { + hasPersistentDot = true + notifyTransitionToPersistentDot() + } } else { if (DEBUG) { Log.d(TAG, "ignoring event $event") @@ -134,7 +140,20 @@ class SystemStatusAnimationScheduler @Inject constructor( * Clear the scheduled event (if any) and schedule a new one */ private fun scheduleEvent(event: StatusEvent) { - scheduledEvent = event + if (animationState == ANIMATING_OUT || + (animationState == SHOWING_PERSISTENT_DOT && event.forceVisible)) { + // do not schedule an event or change the current one + return + } + + // If we are showing the chip, possibly update the current event, rather than replacing + if (scheduledEvent?.shouldUpdateFromEvent(event) == true) { + scheduledEvent?.updateFromEvent(event) + return + } else { + scheduledEvent = event + } + if (scheduledEvent!!.forceVisible) { hasPersistentDot = true } @@ -170,7 +189,13 @@ class SystemStatusAnimationScheduler @Inject constructor( val chipAnimator = ValueAnimator.ofFloat(1f, 0f) chipAnimator.duration = CHIP_ANIM_LENGTH - chipAnimator.addListener(ChipAnimatorAdapter(IDLE, scheduledEvent!!.viewCreator)) + val endState = if (hasPersistentDot) { + SHOWING_PERSISTENT_DOT + } else { + IDLE + } + chipAnimator.addListener( + ChipAnimatorAdapter(endState, scheduledEvent!!.viewCreator)) chipAnimator.addUpdateListener(chipUpdateListener) val aSet2 = AnimatorSet() @@ -207,6 +232,10 @@ class SystemStatusAnimationScheduler @Inject constructor( it.onHidePersistentDot() } + if (animationState == SHOWING_PERSISTENT_DOT) { + animationState = IDLE + } + if (anims.isNotEmpty()) { val aSet = AnimatorSet() aSet.playTogether(anims) @@ -330,6 +359,8 @@ const val ANIMATING_IN = 1 const val RUNNING_CHIP_ANIM = 2 /** Chip is animating away and system is animating back */ const val ANIMATING_OUT = 3 +/** Chip has animated away, and the persistent dot is showing */ +const val SHOWING_PERSISTENT_DOT = 4 private const val TAG = "SystemStatusAnimationScheduler" private const val DELAY: Long = 100 diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java index c8c0755344a4..13a8661f94dc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java @@ -140,7 +140,7 @@ public class NotificationEntryManager implements private final KeyguardEnvironment mKeyguardEnvironment; private final NotificationGroupManagerLegacy mGroupManager; - private final NotificationRankingManager mRankingManager; + private final Lazy<NotificationRankingManager> mRankingManager; private final FeatureFlags mFeatureFlags; private final ForegroundServiceDismissalFeatureController mFgsFeatureController; @@ -200,7 +200,7 @@ public class NotificationEntryManager implements public NotificationEntryManager( NotificationEntryManagerLogger logger, NotificationGroupManagerLegacy groupManager, - NotificationRankingManager rankingManager, + Lazy<NotificationRankingManager> rankingManager, KeyguardEnvironment keyguardEnvironment, FeatureFlags featureFlags, Lazy<NotificationRowBinder> notificationRowBinderLazy, @@ -419,7 +419,7 @@ public class NotificationEntryManager implements mActiveNotifications.put(entry.getKey(), entry); mGroupManager.onEntryAdded(entry); - updateRankingAndSort(mRankingManager.getRankingMap(), "addEntryInternalInternal"); + updateRankingAndSort(mRankingManager.get().getRankingMap(), "addEntryInternalInternal"); } /** @@ -886,13 +886,13 @@ public class NotificationEntryManager implements /** Resorts / filters the current notification set with the current RankingMap */ public void reapplyFilterAndSort(String reason) { - updateRankingAndSort(mRankingManager.getRankingMap(), reason); + updateRankingAndSort(mRankingManager.get().getRankingMap(), reason); } /** Calls to NotificationRankingManager and updates mSortedAndFiltered */ private void updateRankingAndSort(@NonNull RankingMap rankingMap, String reason) { mSortedAndFiltered.clear(); - mSortedAndFiltered.addAll(mRankingManager.updateRanking( + mSortedAndFiltered.addAll(mRankingManager.get().updateRanking( rankingMap, mActiveNotifications.values(), reason)); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java index e2a37f647bf5..89bb65278dce 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java @@ -80,8 +80,6 @@ import com.android.systemui.wmshell.BubblesManager; import java.util.Optional; import java.util.concurrent.Executor; -import javax.inject.Provider; - import dagger.Binds; import dagger.Lazy; import dagger.Module; @@ -102,7 +100,7 @@ public interface NotificationsModule { static NotificationEntryManager provideNotificationEntryManager( NotificationEntryManagerLogger logger, NotificationGroupManagerLegacy groupManager, - NotificationRankingManager rankingManager, + Lazy<NotificationRankingManager> rankingManager, NotificationEntryManager.KeyguardEnvironment keyguardEnvironment, FeatureFlags featureFlags, Lazy<NotificationRowBinder> notificationRowBinderLazy, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java index 48f34b3b7716..0548611ca2d2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationTemplateViewWrapper.java @@ -51,6 +51,7 @@ import com.android.systemui.statusbar.notification.row.HybridNotificationView; public class NotificationTemplateViewWrapper extends NotificationHeaderViewWrapper { private final int mFullHeaderTranslation; + private final boolean mAllowHideHeader; protected ImageView mRightIcon; protected ImageView mLeftIcon; private ProgressBar mProgressBar; @@ -71,6 +72,7 @@ public class NotificationTemplateViewWrapper extends NotificationHeaderViewWrapp protected NotificationTemplateViewWrapper(Context ctx, View view, ExpandableNotificationRow row) { super(ctx, view, row); + mAllowHideHeader = ctx.getResources().getBoolean(R.bool.heads_up_notification_hides_header); mTransformationHelper.setCustomTransformation( new ViewTransformationHelper.CustomTransformation() { @Override @@ -249,7 +251,7 @@ public class NotificationTemplateViewWrapper extends NotificationHeaderViewWrapp super.onContentUpdated(row); // With the modern templates, a large icon visually overlaps the header, so we can't // hide the header, we must show it. - mCanHideHeader = mNotificationHeader != null + mCanHideHeader = mAllowHideHeader && mNotificationHeader != null && (mRightIcon == null || mRightIcon.getVisibility() != VISIBLE); if (row.getHeaderVisibleAmount() != DEFAULT_HEADER_VISIBLE_AMOUNT) { setHeaderVisibleAmount(row.getHeaderVisibleAmount()); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 506d8a185adc..120f9732f555 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -2068,6 +2068,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable int height = 0; float previousPaddingRequest = mPaddingBetweenElements; int numShownItems = 0; + int numShownNotifs = 0; boolean finish = false; int maxDisplayedNotifications = mMaxDisplayedNotifications; ExpandableView previousView = null; @@ -2077,7 +2078,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable if (expandableView.getVisibility() != View.GONE && !expandableView.hasNoContentHeight() && !footerViewOnLockScreen) { boolean limitReached = maxDisplayedNotifications != -1 - && numShownItems >= maxDisplayedNotifications; + && numShownNotifs >= maxDisplayedNotifications; final float viewHeight; if (limitReached) { viewHeight = mShelf.getIntrinsicHeight(); @@ -2090,7 +2091,11 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable } height += calculateGapHeight(previousView, expandableView, numShownItems); height += viewHeight; + numShownItems++; + if (!(expandableView instanceof MediaHeaderView)) { + numShownNotifs++; + } previousView = expandableView; if (finish) { break; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java index 413048d6ce54..d94d030f326e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java @@ -24,6 +24,7 @@ import android.util.MathUtils; import android.view.View; import android.view.ViewGroup; +import com.android.systemui.animation.Interpolators; import com.android.systemui.R; import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.notification.dagger.SilentHeader; @@ -374,7 +375,13 @@ public class StackScrollAlgorithm { ExpandableView view = algorithmState.visibleChildren.get(i); ExpandableViewState viewState = view.getViewState(); viewState.location = ExpandableViewState.LOCATION_UNKNOWN; - viewState.alpha = 1f - ambientState.getHideAmount(); + + if (ambientState.isExpansionChanging() && !ambientState.isOnKeyguard()) { + viewState.alpha = Interpolators.getNotificationScrimAlpha( + ambientState.getExpansionFraction()); + } else { + viewState.alpha = 1f - ambientState.getHideAmount(); + } if (view.mustStayOnScreen() && viewState.yTranslation >= 0) { // Even if we're not scrolled away we're in view and we're also not in the diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java index 16bed6f3f38d..2b51b56062bb 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java @@ -105,12 +105,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private final OngoingCallListener mOngoingCallListener = new OngoingCallListener() { @Override - public void onOngoingCallStarted(boolean animate) { - disable(getContext().getDisplayId(), mDisabled1, mDisabled2, animate); - } - - @Override - public void onOngoingCallEnded(boolean animate) { + public void onOngoingCallStateChanged(boolean animate) { disable(getContext().getDisplayId(), mDisabled1, mDisabled2, animate); } }; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java index ae68462417a7..c911e3d111cf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBouncer.java @@ -220,17 +220,22 @@ public class KeyguardBouncer { */ private void onFullyHidden() { cancelShowRunnable(); - if (mRoot != null) { - mRoot.setVisibility(View.INVISIBLE); - } + setVisibility(View.INVISIBLE); mFalsingCollector.onBouncerHidden(); DejankUtils.postAfterTraversal(mResetRunnable); } + private void setVisibility(@View.Visibility int visibility) { + if (mRoot != null) { + mRoot.setVisibility(visibility); + dispatchVisibilityChanged(); + } + } + private final Runnable mShowRunnable = new Runnable() { @Override public void run() { - mRoot.setVisibility(View.VISIBLE); + setVisibility(View.VISIBLE); showPromptReason(mBouncerPromptReason); final CharSequence customMessage = mCallback.consumeCustomMessage(); if (customMessage != null) { @@ -299,7 +304,7 @@ public class KeyguardBouncer { } mIsAnimatingAway = false; if (mRoot != null) { - mRoot.setVisibility(View.INVISIBLE); + setVisibility(View.INVISIBLE); if (destroyView) { // We have a ViewFlipper that unregisters a broadcast when being detached, which may @@ -436,7 +441,7 @@ public class KeyguardBouncer { mContainer.addView(mRoot, mContainer.getChildCount()); mStatusBarHeight = mRoot.getResources().getDimensionPixelOffset( com.android.systemui.R.dimen.status_bar_height); - mRoot.setVisibility(View.INVISIBLE); + setVisibility(View.INVISIBLE); final WindowInsets rootInsets = mRoot.getRootWindowInsets(); if (rootInsets != null) { @@ -533,6 +538,12 @@ public class KeyguardBouncer { } } + private void dispatchVisibilityChanged() { + for (BouncerExpansionCallback callback : mExpansionCallbacks) { + callback.onVisibilityChanged(mRoot.getVisibility() == View.VISIBLE); + } + } + /** * Apply keyguard configuration from the currently active resources. This can be called when the * device configuration changes, to re-apply some resources that are qualified on the device @@ -573,6 +584,13 @@ public class KeyguardBouncer { * to 1f {@link KeyguardBouncer#EXPANSION_HIDDEN} when fully hidden */ default void onExpansionChanged(float bouncerHideAmount) {} + + /** + * Invoked when visibility of KeyguardBouncer has changed. + * Note the bouncer expansion can be {@link KeyguardBouncer#EXPANSION_VISIBLE}, but the + * view's visibility can be {@link View.INVISIBLE}. + */ + default void onVisibilityChanged(boolean isVisible) {} } /** Create a {@link KeyguardBouncer} once a container and bouncer callback are available. */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java index 5085e1cf9990..d84bb908fe69 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardIndicationTextView.java @@ -125,6 +125,7 @@ public class KeyguardIndicationTextView extends TextView { if (info != null) { setTextColor(info.getTextColor()); setOnClickListener(info.getClickListener()); + setClickable(info.getClickListener() != null); final Drawable icon = info.getIcon(); if (icon != null) { icon.setTint(getCurrentTextColor()); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 20b37e26dcee..c0d713b85287 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -2574,16 +2574,19 @@ public class NotificationPanelViewController extends PanelViewController { // Small parallax as we pull down and clip QS startHeight = -mQsExpansionHeight * 0.2f; } - if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard() - && mNotificationStackScrollLayoutController.isPulseExpanding()) { - if (!mPulseExpansionHandler.isExpanding() - && !mPulseExpansionHandler.getLeavingLockscreen()) { - // If we aborted the expansion we need to make sure the header doesn't reappear - // again after the header has animated away - appearAmount = 0; + if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard()) { + if (mNotificationStackScrollLayoutController.isPulseExpanding()) { + if (!mPulseExpansionHandler.isExpanding() + && !mPulseExpansionHandler.getLeavingLockscreen()) { + // If we aborted the expansion we need to make sure the header doesn't reappear + // again after the header has animated away + appearAmount = 0; + } else { + appearAmount = mNotificationStackScrollLayoutController + .calculateAppearFractionBypass(); + } } else { - appearAmount = mNotificationStackScrollLayoutController - .calculateAppearFractionBypass(); + appearAmount = 0.0f; } startHeight = -mQs.getQsMinExpansionHeight(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java index f9a644fe2def..a3efcd226346 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelViewController.java @@ -697,16 +697,6 @@ public abstract class PanelViewController { if (isNaN(h)) { Log.wtf(TAG, "ExpandedHeight set to NaN"); } - if (mAmbientState.isExpansionChanging() - && !mIsFlinging // Fling already uses interpolated height from end of swipe - && !mAmbientState.isOnKeyguard() - && !mAmbientState.isDozing() - && !mAmbientState.isPulsing()) { - final float fraction = h / mView.getHeight(); - final float interpolatedFraction = new PathInterpolator(0.2f, 0.8f, 0.8f, 1f) - .getInterpolation(fraction); - h = interpolatedFraction * mView.getHeight(); - } maybeOverScrollForShadeFlingOpen(h); if (mExpandLatencyTracking && h != 0f) { DejankUtils.postAfterTraversal( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java index f1405dea1294..ed7ab6cf9f37 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java @@ -673,11 +673,14 @@ public class PhoneStatusBarPolicy } } + // Disabling for now, but keeping the log + /* mIconController.setIconVisibility(mSlotCamera, showCamera); mIconController.setIconVisibility(mSlotMicrophone, showMicrophone); if (mPrivacyItemController.getLocationAvailable()) { mIconController.setIconVisibility(mSlotLocation, showLocation); } + */ mPrivacyLogger.logStatusBarIconsVisible(showCamera, showMicrophone, showLocation); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index a952db2a6073..c34fa2f049e1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -42,6 +42,7 @@ import com.android.internal.util.function.TriConsumer; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.settingslib.Utils; +import com.android.systemui.animation.Interpolators; import com.android.systemui.DejankUtils; import com.android.systemui.Dumpable; import com.android.systemui.R; @@ -810,15 +811,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump } private float getInterpolatedFraction() { - float frac = mPanelExpansion; - // let's start this 20% of the way down the screen - frac = frac * 1.2f - 0.2f; - if (frac <= 0) { - return 0; - } else { - // woo, special effects - return (float) (1f - 0.5f * (1f - Math.cos(3.14159f * Math.pow(1f - frac, 2f)))); - } + return Interpolators.getNotificationScrimAlpha(mPanelExpansion); } private void setScrimAlpha(ScrimView scrim, float alpha) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index bd17d00063d7..cae7e354465b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -393,7 +393,6 @@ public class StatusBar extends SystemUI implements DemoMode, private final Object mQueueLock = new Object(); - private final StatusBarIconController mIconController; private final PulseExpansionHandler mPulseExpansionHandler; private final NotificationWakeUpCoordinator mWakeUpCoordinator; private final KeyguardBypassController mKeyguardBypassController; @@ -720,7 +719,7 @@ public class StatusBar extends SystemUI implements DemoMode, LightBarController lightBarController, AutoHideController autoHideController, KeyguardUpdateMonitor keyguardUpdateMonitor, - StatusBarIconController statusBarIconController, + StatusBarSignalPolicy signalPolicy, PulseExpansionHandler pulseExpansionHandler, NotificationWakeUpCoordinator notificationWakeUpCoordinator, KeyguardBypassController keyguardBypassController, @@ -806,7 +805,7 @@ public class StatusBar extends SystemUI implements DemoMode, mLightBarController = lightBarController; mAutoHideController = autoHideController; mKeyguardUpdateMonitor = keyguardUpdateMonitor; - mIconController = statusBarIconController; + mSignalPolicy = signalPolicy; mPulseExpansionHandler = pulseExpansionHandler; mWakeUpCoordinator = notificationWakeUpCoordinator; mKeyguardBypassController = keyguardBypassController; @@ -1015,7 +1014,6 @@ public class StatusBar extends SystemUI implements DemoMode, // Lastly, call to the icon policy to install/update all the icons. mIconPolicy.init(); - mSignalPolicy = new StatusBarSignalPolicy(mContext, mIconController); mKeyguardStateController.addCallback(this); startKeyguard(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 1ef8470180f3..6ed375e708e7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -129,6 +129,13 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } updateStates(); } + + @Override + public void onVisibilityChanged(boolean isVisible) { + if (mAlternateAuthInterceptor != null) { + mAlternateAuthInterceptor.onBouncerVisibilityChanged(); + } + } }; private final DockManager.DockEventListener mDockEventListener = new DockManager.DockEventListener() { @@ -1126,6 +1133,18 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb } /** + * Request to show the udfps affordance in a particular color. This can be used if an + * occluding app on the keyguard would like to request udfps. This method does nothing if + * {@link KeyguardUpdateMonitor#shouldListenForFingerprint} is false. + */ + public void requestUdfps(boolean request, int color) { + if (mAlternateAuthInterceptor == null) { + return; + } + mAlternateAuthInterceptor.requestUdfps(request, color); + } + + /** * Delegate used to send show/reset events to an alternate authentication method instead of the * regular pin/pattern/password bouncer. */ @@ -1174,5 +1193,19 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb */ void setBouncerExpansionChanged(float expansion); + /** + * called when the bouncer view visibility has changed. + */ + void onBouncerVisibilityChanged(); + + /** + * Use when an app occluding the keyguard would like to give the user ability to + * unlock the device using udfps. + * + * @param color of the udfps icon. should have proper contrast with its background. only + * used if requestUdfps = true + */ + void requestUdfps(boolean requestUdfps, int color); + } }
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java index 3445826eefbe..142cf21c4f29 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java @@ -25,6 +25,7 @@ import android.util.Log; import com.android.settingslib.mobile.TelephonyIcons; import com.android.systemui.Dependency; import com.android.systemui.R; +import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; @@ -33,12 +34,16 @@ import com.android.systemui.statusbar.policy.NetworkControllerImpl; import com.android.systemui.statusbar.policy.SecurityController; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService.Tunable; +import com.android.systemui.util.CarrierConfigTracker; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import javax.inject.Inject; +/** Controls the signal policies for icons shown in the StatusBar. **/ +@SysUISingleton public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallback, SecurityController.SecurityControllerCallback, Tunable { private static final String TAG = "StatusBarSignalPolicy"; @@ -57,6 +62,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba private final NetworkController mNetworkController; private final SecurityController mSecurityController; private final Handler mHandler = Handler.getMain(); + private final CarrierConfigTracker mCarrierConfigTracker; private boolean mHideAirplane; private boolean mHideMobile; @@ -75,7 +81,9 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba new ArrayList<CallIndicatorIconState>(); private WifiIconState mWifiIconState = new WifiIconState(); - public StatusBarSignalPolicy(Context context, StatusBarIconController iconController) { + @Inject + public StatusBarSignalPolicy(Context context, StatusBarIconController iconController, + CarrierConfigTracker carrierConfigTracker) { mContext = context; mSlotAirplane = mContext.getString(com.android.internal.R.string.status_bar_airplane); @@ -95,6 +103,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba Dependency.get(TunerService.class).addTunable(this, StatusBarIconController.ICON_HIDE_LIST); mNetworkController.addCallback(this); mSecurityController.addCallback(this); + mCarrierConfigTracker = carrierConfigTracker; } public void destroy() { @@ -215,8 +224,12 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba state.callStrengthResId = statusIcon.icon; state.callStrengthDescription = statusIcon.contentDescription; } - mIconController.setCallStrengthIcons(mSlotCallStrength, - CallIndicatorIconState.copyStates(mCallIndicatorStates)); + if (mCarrierConfigTracker.getCallStrengthConfig(subId)) { + mIconController.setCallStrengthIcons(mSlotCallStrength, + CallIndicatorIconState.copyStates(mCallIndicatorStates)); + } else { + mIconController.removeIcon(mSlotCallStrength, subId); + } mIconController.setNoCallingIcons(mSlotNoCalling, CallIndicatorIconState.copyStates(mCallIndicatorStates)); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java index ae11a74748cd..d0d2cb288aa5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/StatusBarPhoneModule.java @@ -88,10 +88,10 @@ import com.android.systemui.statusbar.phone.PhoneStatusBarPolicy; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.ShadeController; import com.android.systemui.statusbar.phone.StatusBar; -import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarLocationPublisher; import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter; +import com.android.systemui.statusbar.phone.StatusBarSignalPolicy; import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController; import com.android.systemui.statusbar.policy.BatteryController; @@ -134,7 +134,7 @@ public interface StatusBarPhoneModule { LightBarController lightBarController, AutoHideController autoHideController, KeyguardUpdateMonitor keyguardUpdateMonitor, - StatusBarIconController statusBarIconController, + StatusBarSignalPolicy signalPolicy, PulseExpansionHandler pulseExpansionHandler, NotificationWakeUpCoordinator notificationWakeUpCoordinator, KeyguardBypassController keyguardBypassController, @@ -221,7 +221,7 @@ public interface StatusBarPhoneModule { lightBarController, autoHideController, keyguardUpdateMonitor, - statusBarIconController, + signalPolicy, pulseExpansionHandler, notificationWakeUpCoordinator, keyguardBypassController, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallChronometer.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallChronometer.kt new file mode 100644 index 000000000000..1fe77fd441bc --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallChronometer.kt @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.phone.ongoingcall + +import android.content.Context +import android.util.AttributeSet + +import android.widget.Chronometer + +/** + * A [Chronometer] specifically for the ongoing call chip in the status bar. + * + * This class handles: + * 1) Setting the text width. If we used a basic WRAP_CONTENT for width, the chip width would + * change slightly each second because the width of each number is slightly different. + * + * Instead, we save the largest number width seen so far and ensure that the chip is at least + * that wide. This means the chip may get larger over time (e.g. in the transition from 59:59 + * to 1:00:00), but never smaller. + * + * 2) Hiding the text if the time gets too long for the space available. Once the text has been + * hidden, it remains hidden for the duration of the call. + * + * Note that if the text was too big in portrait mode, resulting in the text being hidden, then the + * text will also be hidden in landscape (even if there is enough space for it in landscape). + */ +class OngoingCallChronometer @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyle: Int = 0 +) : Chronometer(context, attrs, defStyle) { + + // Minimum width that the text view can be. Corresponds with the largest number width seen so + // far. + var minimumTextWidth: Int = 0 + + // True if the text is too long for the space available, so the text should be hidden. + var shouldHideText: Boolean = false + + override fun setBase(base: Long) { + // These variables may have changed during the previous call, so re-set them before the new + // call starts. + minimumTextWidth = 0 + shouldHideText = false + super.setBase(base) + } + + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + if (shouldHideText) { + setMeasuredDimension(0, 0) + return + } + + // Evaluate how wide the text *wants* to be if it had unlimited space. + super.onMeasure( + MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED), + heightMeasureSpec) + val desiredTextWidth = measuredWidth + + // Evaluate how wide the text *can* be based on the enforced constraints + val enforcedTextWidth = resolveSize(desiredTextWidth, widthMeasureSpec) + + if (desiredTextWidth > enforcedTextWidth) { + shouldHideText = true + setMeasuredDimension(0, 0) + } else { + // It's possible that the current text could fit in a smaller width, but we don't want + // the chip to change size every second. Instead, keep it at the minimum required width. + minimumTextWidth = desiredTextWidth.coerceAtLeast(minimumTextWidth) + setMeasuredDimension(minimumTextWidth, MeasureSpec.getSize(heightMeasureSpec)) + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt index 51bb6434e61c..6d1df5b5fa19 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt @@ -16,6 +16,9 @@ package com.android.systemui.statusbar.phone.ongoingcall +import android.app.ActivityManager +import android.app.IActivityManager +import android.app.IUidObserver import android.app.Notification import android.app.Notification.CallStyle.CALL_TYPE_ONGOING import android.content.Intent @@ -25,6 +28,7 @@ import android.widget.Chronometer import com.android.systemui.R import com.android.systemui.animation.ActivityLaunchAnimator import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.FeatureFlags import com.android.systemui.statusbar.notification.collection.NotificationEntry @@ -32,6 +36,7 @@ import com.android.systemui.statusbar.notification.collection.notifcollection.Co import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener import com.android.systemui.statusbar.policy.CallbackController import com.android.systemui.util.time.SystemClock +import java.util.concurrent.Executor import javax.inject.Inject /** @@ -42,12 +47,17 @@ class OngoingCallController @Inject constructor( private val notifCollection: CommonNotifCollection, private val featureFlags: FeatureFlags, private val systemClock: SystemClock, - private val activityStarter: ActivityStarter + private val activityStarter: ActivityStarter, + @Main private val mainExecutor: Executor, + private val iActivityManager: IActivityManager ) : CallbackController<OngoingCallListener> { /** Null if there's no ongoing call. */ private var ongoingCallInfo: OngoingCallInfo? = null + /** True if the application managing the call is visible to the user. */ + private var isCallAppVisible: Boolean = true private var chipView: ViewGroup? = null + private var uidObserver: IUidObserver.Stub? = null private val mListeners: MutableList<OngoingCallListener> = mutableListOf() @@ -67,8 +77,9 @@ class OngoingCallController @Inject constructor( override fun onEntryUpdated(entry: NotificationEntry) { if (isOngoingCallNotification(entry)) { ongoingCallInfo = OngoingCallInfo( - entry.sbn.notification.`when`, - entry.sbn.notification.contentIntent.intent) + entry.sbn.notification.`when`, + entry.sbn.notification.contentIntent.intent, + entry.sbn.uid) updateChip() } } @@ -76,7 +87,10 @@ class OngoingCallController @Inject constructor( override fun onEntryRemoved(entry: NotificationEntry, reason: Int) { if (isOngoingCallNotification(entry)) { ongoingCallInfo = null - mListeners.forEach { l -> l.onOngoingCallEnded(animate = true) } + mListeners.forEach { l -> l.onOngoingCallStateChanged(animate = true) } + if (uidObserver != null) { + iActivityManager.unregisterUidObserver(uidObserver) + } } } } @@ -100,9 +114,13 @@ class OngoingCallController @Inject constructor( } /** - * Returns true if there's an active ongoing call that can be displayed in a status bar chip. + * Returns true if there's an active ongoing call that should be displayed in a status bar chip. */ - fun hasOngoingCall(): Boolean = ongoingCallInfo != null + fun hasOngoingCall(): Boolean { + return ongoingCallInfo != null && + // When the user is in the phone app, don't show the chip. + !isCallAppVisible + } override fun addCallback(listener: OngoingCallListener) { synchronized(mListeners) { @@ -137,7 +155,9 @@ class OngoingCallController @Inject constructor( ActivityLaunchAnimator.Controller.fromView(it)) } - mListeners.forEach { l -> l.onOngoingCallStarted(animate = true) } + setUpUidObserver(currentOngoingCallInfo) + + mListeners.forEach { l -> l.onOngoingCallStateChanged(animate = true) } } else { // If we failed to update the chip, don't store the ongoing call info. Then // [hasOngoingCall] will return false and we fall back to typical notification handling. @@ -150,9 +170,52 @@ class OngoingCallController @Inject constructor( } } + /** + * Sets up an [IUidObserver] to monitor the status of the application managing the ongoing call. + */ + private fun setUpUidObserver(currentOngoingCallInfo: OngoingCallInfo) { + isCallAppVisible = isProcessVisibleToUser( + iActivityManager.getUidProcessState(currentOngoingCallInfo.uid, null)) + + uidObserver = object : IUidObserver.Stub() { + override fun onUidStateChanged( + uid: Int, procState: Int, procStateSeq: Long, capability: Int) { + if (uid == currentOngoingCallInfo.uid) { + val oldIsCallAppVisible = isCallAppVisible + isCallAppVisible = isProcessVisibleToUser(procState) + if (oldIsCallAppVisible != isCallAppVisible) { + // Animations may be run as a result of the call's state change, so ensure + // the listener is notified on the main thread. + mainExecutor.execute { + mListeners.forEach { l -> l.onOngoingCallStateChanged(animate = true) } + } + } + } + } + + override fun onUidGone(uid: Int, disabled: Boolean) {} + override fun onUidActive(uid: Int) {} + override fun onUidIdle(uid: Int, disabled: Boolean) {} + override fun onUidCachedChanged(uid: Int, cached: Boolean) {} + } + + iActivityManager.registerUidObserver( + uidObserver, + ActivityManager.UID_OBSERVER_PROCSTATE, + ActivityManager.PROCESS_STATE_UNKNOWN, + null + ) + } + + /** Returns true if the given [procState] represents a process that's visible to the user. */ + private fun isProcessVisibleToUser(procState: Int): Boolean { + return procState <= ActivityManager.PROCESS_STATE_TOP + } + private class OngoingCallInfo( val callStartTime: Long, - val intent: Intent + val intent: Intent, + val uid: Int ) } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallListener.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallListener.kt index 7c583a1491e0..7a124308d597 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallListener.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallListener.kt @@ -16,11 +16,13 @@ package com.android.systemui.statusbar.phone.ongoingcall -/** A listener that's notified when an ongoing call is started or ended. */ +/** A listener that's notified when the state of an ongoing call has changed. */ interface OngoingCallListener { - /** Called when an ongoing call is started. */ - fun onOngoingCallStarted(animate: Boolean) - /** Called when an ongoing call is ended. */ - fun onOngoingCallEnded(animate: Boolean) + /** + * Called when the state of an ongoing call has changed in any way that may affect view + * visibility (including call starting, call stopping, application managing the call becoming + * visible or invisible). + */ + fun onOngoingCallStateChanged(animate: Boolean) } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java index 99feb18b33e9..987812b0581c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java @@ -195,7 +195,8 @@ public class HotspotControllerImpl implements HotspotController, WifiManager.Sof if (enabled) { mWaitingForTerminalState = true; if (DEBUG) Log.d(TAG, "Starting tethering"); - mTetheringManager.startTethering(new TetheringRequest.Builder(TETHERING_WIFI).build(), + mTetheringManager.startTethering(new TetheringRequest.Builder( + TETHERING_WIFI).setShouldShowEntitlementUi(false).build(), ConcurrentUtils.DIRECT_EXECUTOR, new TetheringManager.StartTetheringCallback() { @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java index 044f52fd689e..ce080752b5cc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java @@ -61,6 +61,7 @@ import com.android.systemui.R; import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; +import com.android.systemui.util.CarrierConfigTracker; import java.io.PrintWriter; import java.text.SimpleDateFormat; @@ -78,6 +79,7 @@ public class MobileSignalController extends SignalController<MobileState, Mobile private static final int IMS_TYPE_WLAN = 2; private static final int IMS_TYPE_WLAN_CROSS_SIM = 3; private final TelephonyManager mPhone; + private final CarrierConfigTracker mCarrierConfigTracker; private final ImsMmTelManager mImsMmTelManager; private final SubscriptionDefaults mDefaults; private final String mNetworkNameDefault; @@ -123,10 +125,12 @@ public class MobileSignalController extends SignalController<MobileState, Mobile public MobileSignalController(Context context, Config config, boolean hasMobileData, TelephonyManager phone, CallbackHandler callbackHandler, NetworkControllerImpl networkController, SubscriptionInfo info, - SubscriptionDefaults defaults, Looper receiverLooper) { + SubscriptionDefaults defaults, Looper receiverLooper, + CarrierConfigTracker carrierConfigTracker) { super("MobileSignalController(" + info.getSubscriptionId() + ")", context, NetworkCapabilities.TRANSPORT_CELLULAR, callbackHandler, networkController); + mCarrierConfigTracker = carrierConfigTracker; mConfig = config; mPhone = phone; mDefaults = defaults; @@ -583,7 +587,7 @@ public class MobileSignalController extends SignalController<MobileState, Mobile mTelephonyDisplayInfo = mobileStatus.telephonyDisplayInfo; int lastVoiceState = mServiceState != null ? mServiceState.getState() : -1; mServiceState = mobileStatus.serviceState; - int currentVoiceState = mServiceState != null ? mServiceState.getState() : -1; + int currentVoiceState = mServiceState != null ? mServiceState.getState() : -1; // Only update the no calling Status in the below scenarios // 1. The first valid voice state has been received // 2. The voice state has been changed and either the last or current state is @@ -594,12 +598,29 @@ public class MobileSignalController extends SignalController<MobileState, Mobile || (lastVoiceState == ServiceState.STATE_IN_SERVICE || currentVoiceState == ServiceState.STATE_IN_SERVICE))) { boolean isNoCalling = currentVoiceState != ServiceState.STATE_IN_SERVICE; - IconState statusIcon = new IconState(isNoCalling, R.drawable.ic_qs_no_calling_sms, + isNoCalling &= !hideNoCalling(); + IconState statusIcon = new IconState(isNoCalling, + R.drawable.ic_qs_no_calling_sms, getTextIfExists(AccessibilityContentDescriptions.NO_CALLING).toString()); notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId()); } } + void updateNoCallingState() { + int currentVoiceState = mServiceState != null ? mServiceState.getState() : -1; + boolean isNoCalling = currentVoiceState != ServiceState.STATE_IN_SERVICE; + isNoCalling &= !hideNoCalling(); + IconState statusIcon = new IconState(isNoCalling, + R.drawable.ic_qs_no_calling_sms, + getTextIfExists(AccessibilityContentDescriptions.NO_CALLING).toString()); + notifyCallStateChange(statusIcon, mSubscriptionInfo.getSubscriptionId()); + } + + private boolean hideNoCalling() { + return mNetworkController.hasDefaultNetwork() + && mCarrierConfigTracker.getNoCallingConfig(mSubscriptionInfo.getSubscriptionId()); + } + private int getCallStrengthIcon(int level, boolean isWifi) { return isWifi ? TelephonyIcons.WIFI_CALL_STRENGTH_ICONS[level] : TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[level]; @@ -616,7 +637,9 @@ public class MobileSignalController extends SignalController<MobileState, Mobile void refreshCallIndicator(SignalCallback callback) { boolean isNoCalling = mServiceState != null && mServiceState.getState() != ServiceState.STATE_IN_SERVICE; - IconState statusIcon = new IconState(isNoCalling, R.drawable.ic_qs_no_calling_sms, + isNoCalling &= !hideNoCalling(); + IconState statusIcon = new IconState(isNoCalling, + R.drawable.ic_qs_no_calling_sms, getTextIfExists(AccessibilityContentDescriptions.NO_CALLING).toString()); callback.setCallIndicator(statusIcon, mSubscriptionInfo.getSubscriptionId()); @@ -646,7 +669,6 @@ public class MobileSignalController extends SignalController<MobileState, Mobile if (!mProviderModel) { return; } - Log.d("mTag", "notifyWifiLevelChange " + mImsType); mLastWlanLevel = level; if (mImsType != IMS_TYPE_WLAN) { return; @@ -662,7 +684,6 @@ public class MobileSignalController extends SignalController<MobileState, Mobile if (!mProviderModel) { return; } - Log.d("mTag", "notifyDefaultMobileLevelChange " + mImsType); mLastWlanCrossSimLevel = level; if (mImsType != IMS_TYPE_WLAN_CROSS_SIM) { return; @@ -681,7 +702,6 @@ public class MobileSignalController extends SignalController<MobileState, Mobile int newLevel = getSignalLevel(signalStrength); if (newLevel != mLastLevel) { mLastLevel = newLevel; - Log.d("mTag", "notifyMobileLevelChangeIfNecessary " + mImsType); mLastWwanLevel = newLevel; if (mImsType == IMS_TYPE_WWAN) { IconState statusIcon = new IconState( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index f683603c9cd5..f45218df0b58 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -74,6 +74,7 @@ import com.android.systemui.demomode.DemoModeController; import com.android.systemui.settings.CurrentUserTracker; import com.android.systemui.statusbar.policy.DeviceProvisionedController.DeviceProvisionedListener; import com.android.systemui.telephony.TelephonyListenerManager; +import com.android.systemui.util.CarrierConfigTracker; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -122,6 +123,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private final Object mLock = new Object(); private final boolean mProviderModel; private Config mConfig; + private final CarrierConfigTracker mCarrierConfigTracker; private TelephonyCallback.ActiveDataSubscriptionIdListener mPhoneStateListener; private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID; @@ -212,7 +214,8 @@ public class NetworkControllerImpl extends BroadcastReceiver @Nullable WifiManager wifiManager, NetworkScoreManager networkScoreManager, AccessPointControllerImpl accessPointController, - DemoModeController demoModeController) { + DemoModeController demoModeController, + CarrierConfigTracker carrierConfigTracker) { this(context, connectivityManager, telephonyManager, telephonyListenerManager, @@ -228,7 +231,8 @@ public class NetworkControllerImpl extends BroadcastReceiver new SubscriptionDefaults(), deviceProvisionedController, broadcastDispatcher, - demoModeController); + demoModeController, + carrierConfigTracker); mReceiverHandler.post(mRegisterListeners); } @@ -246,7 +250,8 @@ public class NetworkControllerImpl extends BroadcastReceiver SubscriptionDefaults defaultsHandler, DeviceProvisionedController deviceProvisionedController, BroadcastDispatcher broadcastDispatcher, - DemoModeController demoModeController) { + DemoModeController demoModeController, + CarrierConfigTracker carrierConfigTracker) { mContext = context; mTelephonyListenerManager = telephonyListenerManager; mConfig = config; @@ -262,6 +267,7 @@ public class NetworkControllerImpl extends BroadcastReceiver mConnectivityManager = connectivityManager; mHasMobileDataFeature = telephonyManager.isDataCapable(); mDemoModeController = demoModeController; + mCarrierConfigTracker = carrierConfigTracker; // telephony mPhone = telephonyManager; @@ -574,6 +580,10 @@ public class NetworkControllerImpl extends BroadcastReceiver return mWifiSignalController.isCarrierMergedWifi(subId); } + boolean hasDefaultNetwork() { + return !mNoDefaultNetwork; + } + boolean isNonCarrierWifiNetworkAvailable() { return !mNoNetworksAvailable; } @@ -884,7 +894,7 @@ public class NetworkControllerImpl extends BroadcastReceiver MobileSignalController controller = new MobileSignalController(mContext, mConfig, mHasMobileDataFeature, mPhone.createForSubscriptionId(subId), mCallbackHandler, this, subscriptions.get(i), - mSubDefaults, mReceiverHandler.getLooper()); + mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker); controller.setUserSetupComplete(mUserSetup); mMobileSignalControllers.put(subId, controller); if (subscriptions.get(i).getSimSlotIndex() == 0) { @@ -1027,6 +1037,10 @@ public class NetworkControllerImpl extends BroadcastReceiver mNoDefaultNetwork = mConnectedTransports.isEmpty(); mCallbackHandler.setConnectivityStatus(mNoDefaultNetwork, !mInetCondition, mNoNetworksAvailable); + for (int i = 0; i < mMobileSignalControllers.size(); i++) { + MobileSignalController mobileSignalController = mMobileSignalControllers.valueAt(i); + mobileSignalController.updateNoCallingState(); + } notifyAllListeners(); } } @@ -1334,8 +1348,8 @@ public class NetworkControllerImpl extends BroadcastReceiver null, null, null, "", false, null, null); MobileSignalController controller = new MobileSignalController(mContext, mConfig, mHasMobileDataFeature, - mPhone.createForSubscriptionId(info.getSubscriptionId()), mCallbackHandler, this, info, - mSubDefaults, mReceiverHandler.getLooper()); + mPhone.createForSubscriptionId(info.getSubscriptionId()), mCallbackHandler, this, + info, mSubDefaults, mReceiverHandler.getLooper(), mCarrierConfigTracker); mMobileSignalControllers.put(id, controller); controller.getState().userSetup = true; return info; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java index d86ef3208f7e..c3b9c7bf89f2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java @@ -76,6 +76,8 @@ import androidx.annotation.NonNull; import com.android.internal.graphics.ColorUtils; import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.UiEvent; +import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.ContrastColorUtil; @@ -111,6 +113,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene private final SendButtonTextWatcher mTextWatcher; private final TextView.OnEditorActionListener mEditorActionHandler; private final NotificationRemoteInputManager mRemoteInputManager; + private final UiEventLogger mUiEventLogger; private final List<OnFocusChangeListener> mEditTextFocusChangeListeners = new ArrayList<>(); private final List<OnSendRemoteInputListener> mOnSendListeners = new ArrayList<>(); private RemoteEditText mEditText; @@ -145,12 +148,35 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene private ImageView mDelete; private ImageView mDeleteBg; + /** + * Enum for logged notification remote input UiEvents. + */ + enum NotificationRemoteInputEvent implements UiEventLogger.UiEventEnum { + @UiEvent(doc = "Notification remote input view was displayed") + NOTIFICATION_REMOTE_INPUT_OPEN(795), + @UiEvent(doc = "Notification remote input view was closed") + NOTIFICATION_REMOTE_INPUT_CLOSE(796), + @UiEvent(doc = "User sent data through the notification remote input view") + NOTIFICATION_REMOTE_INPUT_SEND(797), + @UiEvent(doc = "Failed attempt to send data through the notification remote input view") + NOTIFICATION_REMOTE_INPUT_FAILURE(798); + + private final int mId; + NotificationRemoteInputEvent(int id) { + mId = id; + } + @Override public int getId() { + return mId; + } + } + public RemoteInputView(Context context, AttributeSet attrs) { super(context, attrs); mTextWatcher = new SendButtonTextWatcher(); mEditorActionHandler = new EditorActionHandler(); mRemoteInputQuickSettingsDisabler = Dependency.get(RemoteInputQuickSettingsDisabler.class); mRemoteInputManager = Dependency.get(NotificationRemoteInputManager.class); + mUiEventLogger = Dependency.get(UiEventLogger.class); mStatusBarManagerService = IStatusBarService.Stub.asInterface( ServiceManager.getService(Context.STATUS_BAR_SERVICE)); TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{ @@ -389,12 +415,20 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_SEND, mEntry.getSbn().getPackageName()); + mUiEventLogger.logWithInstanceId( + NotificationRemoteInputEvent.NOTIFICATION_REMOTE_INPUT_SEND, + mEntry.getSbn().getUid(), mEntry.getSbn().getPackageName(), + mEntry.getSbn().getInstanceId()); try { mPendingIntent.send(mContext, 0, intent); } catch (PendingIntent.CanceledException e) { Log.i(TAG, "Unable to send remote input result", e); MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_FAIL, mEntry.getSbn().getPackageName()); + mUiEventLogger.logWithInstanceId( + NotificationRemoteInputEvent.NOTIFICATION_REMOTE_INPUT_FAILURE, + mEntry.getSbn().getUid(), mEntry.getSbn().getPackageName(), + mEntry.getSbn().getInstanceId()); } setAttachment(null); } @@ -433,7 +467,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene return true; } - private void onDefocus(boolean animate) { + private void onDefocus(boolean animate, boolean logClose) { mController.removeRemoteInput(mEntry, mToken); mEntry.remoteInputText = mEditText.getText(); @@ -465,8 +499,14 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene mRemoteInputQuickSettingsDisabler.setRemoteInputActive(false); - MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_CLOSE, - mEntry.getSbn().getPackageName()); + if (logClose) { + MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_CLOSE, + mEntry.getSbn().getPackageName()); + mUiEventLogger.logWithInstanceId( + NotificationRemoteInputEvent.NOTIFICATION_REMOTE_INPUT_CLOSE, + mEntry.getSbn().getUid(), mEntry.getSbn().getPackageName(), + mEntry.getSbn().getInstanceId()); + } } @Override @@ -544,6 +584,10 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene public void focus() { MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_OPEN, mEntry.getSbn().getPackageName()); + mUiEventLogger.logWithInstanceId( + NotificationRemoteInputEvent.NOTIFICATION_REMOTE_INPUT_OPEN, + mEntry.getSbn().getUid(), mEntry.getSbn().getPackageName(), + mEntry.getSbn().getInstanceId()); setVisibility(VISIBLE); if (mWrapper != null) { @@ -584,7 +628,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene mProgressBar.setVisibility(INVISIBLE); mController.removeSpinning(mEntry.getKey(), mToken); updateSendButton(); - onDefocus(false /* animate */); + onDefocus(false /* animate */, false /* logClose */); mResetting = false; } @@ -878,7 +922,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene if (isFocusable() && isEnabled()) { setInnerFocusable(false); if (mRemoteInputView != null) { - mRemoteInputView.onDefocus(animate); + mRemoteInputView.onDefocus(animate, true /* logClose */); } mShowImeOnInputConnection = false; } diff --git a/packages/SystemUI/src/com/android/systemui/util/CarrierConfigTracker.java b/packages/SystemUI/src/com/android/systemui/util/CarrierConfigTracker.java new file mode 100644 index 000000000000..02a07e48e814 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/util/CarrierConfigTracker.java @@ -0,0 +1,96 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.PersistableBundle; +import android.telephony.CarrierConfigManager; +import android.telephony.SubscriptionManager; +import android.util.SparseArray; + +import com.android.systemui.dagger.SysUISingleton; + +import javax.inject.Inject; + +/** + * Tracks the Carrier Config values. + */ +@SysUISingleton +public class CarrierConfigTracker extends BroadcastReceiver { + private final SparseArray<Boolean> mCallStrengthConfigs = new SparseArray<>(); + private final SparseArray<Boolean> mNoCallingConfigs = new SparseArray<>(); + private final CarrierConfigManager mCarrierConfigManager; + private final boolean mDefaultCallStrengthConfig; + private final boolean mDefaultNoCallingConfig; + + @Inject + public CarrierConfigTracker(Context context) { + mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class); + context.registerReceiver( + this, new IntentFilter(CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED)); + mDefaultCallStrengthConfig = + CarrierConfigManager.getDefaultConfig().getBoolean( + CarrierConfigManager.KEY_DISPLAY_CALL_STRENGTH_INDICATOR_BOOL); + mDefaultNoCallingConfig = + CarrierConfigManager.getDefaultConfig().getBoolean( + CarrierConfigManager.KEY_USE_IP_FOR_CALLING_INDICATOR_BOOL); + } + + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction() == CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED) { + int subId = intent.getIntExtra( + CarrierConfigManager.EXTRA_SUBSCRIPTION_INDEX, + SubscriptionManager.INVALID_SUBSCRIPTION_ID); + if (!SubscriptionManager.isValidSubscriptionId(subId)) { + return; + } + PersistableBundle b = mCarrierConfigManager.getConfigForSubId(subId); + if (b != null) { + boolean hideNoCallingConfig = b.getBoolean( + CarrierConfigManager.KEY_USE_IP_FOR_CALLING_INDICATOR_BOOL); + boolean displayCallStrengthIcon = b.getBoolean( + CarrierConfigManager.KEY_DISPLAY_CALL_STRENGTH_INDICATOR_BOOL); + mCallStrengthConfigs.put(subId, displayCallStrengthIcon); + mNoCallingConfigs.put(subId, hideNoCallingConfig); + } + } + } + + /** + * Returns the KEY_DISPLAY_CALL_STRENGTH_INDICATOR_BOOL value for the given subId. + */ + public boolean getCallStrengthConfig(int subId) { + if (mCallStrengthConfigs.indexOfKey(subId) >= 0) { + return mCallStrengthConfigs.get(subId); + } + return mDefaultCallStrengthConfig; + } + + /** + * Returns the KEY_USE_IP_FOR_CALLING_INDICATOR_BOOL value for the given subId. + */ + public boolean getNoCallingConfig(int subId) { + if (mNoCallingConfigs.indexOfKey(subId) >= 0) { + return mNoCallingConfigs.get(subId); + } + return mDefaultNoCallingConfig; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt b/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt new file mode 100644 index 000000000000..647faeba1e77 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/Execution.kt @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.util.concurrency + +import android.os.Looper +import javax.inject.Inject + +/** + * Methods to check or assert that we're on the main thread + */ +interface Execution { + fun assertIsMainThread() + fun isMainThread(): Boolean +} + +class ExecutionImpl @Inject constructor() : Execution { + private val mainLooper = Looper.getMainLooper() + + override fun assertIsMainThread() { + if (!mainLooper.isCurrentThread) { + throw IllegalStateException("should be called from the main thread." + + " Main thread name=" + mainLooper.thread.name + + " Thread.currentThread()=" + Thread.currentThread().name) + } + } + + override fun isMainThread(): Boolean { + return mainLooper.isCurrentThread + } +} + +class FakeExecution : Execution { + var simulateMainThread = true + + override fun assertIsMainThread() { + if (!simulateMainThread) { + throw IllegalStateException("should be called from the main thread") + } + } + + override fun isMainThread(): Boolean { + return simulateMainThread + } +} diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java b/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java index 5946af383b0f..1c504961e715 100644 --- a/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java +++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/GlobalConcurrencyModule.java @@ -24,6 +24,8 @@ import com.android.systemui.dagger.qualifiers.Main; import java.util.concurrent.Executor; +import javax.inject.Singleton; + import dagger.Binds; import dagger.Module; import dagger.Provides; @@ -40,7 +42,7 @@ public abstract class GlobalConcurrencyModule { @Binds public abstract ThreadFactory bindExecutorFactory(ThreadFactoryImpl impl); - /** Main Looper */ + /** Main Looper */ @Provides @Main public static Looper provideMainLooper() { @@ -67,4 +69,8 @@ public abstract class GlobalConcurrencyModule { return context.getMainExecutor(); } + /** */ + @Binds + @Singleton + public abstract Execution provideExecution(ExecutionImpl execution); } diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/ThreadFactory.java b/packages/SystemUI/src/com/android/systemui/util/concurrency/ThreadFactory.java index 0352fb51bc21..2270f9631094 100644 --- a/packages/SystemUI/src/com/android/systemui/util/concurrency/ThreadFactory.java +++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/ThreadFactory.java @@ -16,13 +16,15 @@ package com.android.systemui.util.concurrency; +import android.os.Looper; + import java.util.concurrent.Executor; /** * Factory for building Executors running on a unique named thread. * * Use this when our generally available @Main, @Background, @UiBackground, @LongRunning, or - * similar global qualifiers don't quite cut it. Note that the methods here create entirely new + * similar global qualifiers don't quite cut it. Note that the methods here can create entirely new * threads; there are no singletons here. Use responsibly. */ public interface ThreadFactory { @@ -41,4 +43,9 @@ public interface ThreadFactory { * implementation. Assume this is the case and use responsibly. **/ DelayableExecutor buildDelayableExecutorOnNewThread(String threadName); + + /** + * Return an {@link DelayableExecutor} running the given Looper + **/ + DelayableExecutor buildDelayableExecutorOnLooper(Looper looper); } diff --git a/packages/SystemUI/src/com/android/systemui/util/concurrency/ThreadFactoryImpl.java b/packages/SystemUI/src/com/android/systemui/util/concurrency/ThreadFactoryImpl.java index ca8d83607634..2d9f2b424aae 100644 --- a/packages/SystemUI/src/com/android/systemui/util/concurrency/ThreadFactoryImpl.java +++ b/packages/SystemUI/src/com/android/systemui/util/concurrency/ThreadFactoryImpl.java @@ -17,6 +17,7 @@ package com.android.systemui.util.concurrency; import android.os.HandlerThread; +import android.os.Looper; import java.util.concurrent.Executor; @@ -35,4 +36,8 @@ class ThreadFactoryImpl implements ThreadFactory { handlerThread.start(); return new ExecutorImpl(handlerThread.getLooper()); } + + public DelayableExecutor buildDelayableExecutorOnLooper(Looper looper) { + return new ExecutorImpl(looper); + } } diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java index d2bbcd50d0e2..edea3055a783 100644 --- a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java @@ -34,7 +34,6 @@ import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.Build; -import android.os.Debug; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -59,8 +58,8 @@ import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.qs.QSHost; import com.android.systemui.qs.logging.QSLogger; +import com.android.systemui.qs.tileimpl.QSIconViewImpl; import com.android.systemui.qs.tileimpl.QSTileImpl; -import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -298,7 +297,7 @@ public class GarbageMonitor implements Dumpable { MemoryIconDrawable(Context context) { baseIcon = context.getDrawable(R.drawable.ic_memory).mutate(); dp = context.getResources().getDisplayMetrics().density; - paint.setColor(QSTileImpl.getColorForState(context, STATE_ACTIVE)); + paint.setColor(QSIconViewImpl.getIconColorForState(context, STATE_ACTIVE)); } public void setRss(long rss) { @@ -491,16 +490,12 @@ public class GarbageMonitor implements Dumpable { ? "Dumping..." : mContext.getString(R.string.heap_dump_tile_name); if (pmi != null) { - final long views = Debug.countInstancesOfClass(View.class); - final long enrs = Debug.countInstancesOfClass(ExpandableNotificationRow.class); - Log.v(TAG, String.format("updating tile state; rss=%d", pmi.currentRss)); - Log.v(TAG, String.format("views: %d; ExpandableNotificationRows: %d", views, enrs)); icon.setRss(pmi.currentRss); state.secondaryLabel = String.format( - "rss=%s views=%d\nenr=%d", + "rss: %s / %s", formatBytes(pmi.currentRss * 1024), - views, enrs); + formatBytes(gm.mHeapLimit * 1024)); } else { icon.setRss(0); state.secondaryLabel = null; diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java index f884687daad4..ac8b16a2206d 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletActivity.java @@ -17,12 +17,14 @@ package com.android.systemui.wallet.ui; import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; import android.os.Bundle; import android.os.Handler; import android.service.quickaccesswallet.QuickAccessWalletClient; +import android.view.Menu; import android.view.MenuItem; import android.view.Window; +import android.view.WindowManager; +import android.widget.Toolbar; import androidx.annotation.NonNull; @@ -30,8 +32,10 @@ import com.android.systemui.R; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.plugins.ActivityStarter; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.phone.KeyguardDismissUtil; +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.LifecycleActivity; @@ -50,7 +54,9 @@ public class WalletActivity extends LifecycleActivity { private final ActivityStarter mActivityStarter; private final Executor mExecutor; private final Handler mHandler; + private final FalsingManager mFalsingManager; private final UserTracker mUserTracker; + private final StatusBarKeyguardViewManager mKeyguardViewManager; private WalletScreenController mWalletScreenController; @Inject @@ -61,26 +67,33 @@ public class WalletActivity extends LifecycleActivity { ActivityStarter activityStarter, @Background Executor executor, @Main Handler handler, - UserTracker userTracker) { + FalsingManager falsingManager, + UserTracker userTracker, + StatusBarKeyguardViewManager keyguardViewManager) { mQuickAccessWalletClient = quickAccessWalletClient; mKeyguardStateController = keyguardStateController; mKeyguardDismissUtil = keyguardDismissUtil; mActivityStarter = activityStarter; mExecutor = executor; mHandler = handler; + mFalsingManager = falsingManager; mUserTracker = userTracker; + mKeyguardViewManager = keyguardViewManager; } @Override protected void onCreate(Bundle savedInstanceState) { - getWindow().requestFeature(Window.FEATURE_ACTION_BAR_OVERLAY); super.onCreate(savedInstanceState); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.quick_access_wallet); - getWindow().getDecorView().setBackgroundColor(getColor(R.color.wallet_white)); + Toolbar toolbar = findViewById(R.id.action_bar); + if (toolbar != null) { + setActionBar(toolbar); + } setTitle(""); - getActionBar().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeAsUpIndicator(R.drawable.ic_close); getActionBar().setHomeActionContentDescription(R.string.accessibility_desc_close); @@ -93,15 +106,28 @@ public class WalletActivity extends LifecycleActivity { mExecutor, mHandler, mUserTracker, + mFalsingManager, mKeyguardStateController); walletView.getAppButton().setOnClickListener( - v -> mActivityStarter.startActivity( - mQuickAccessWalletClient.createWalletIntent(), true)); + v -> { + if (!mKeyguardStateController.isUnlocked() + && mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + return; + } + mActivityStarter.startActivity( + mQuickAccessWalletClient.createWalletIntent(), true); + finish(); + }); // Click the action button to re-render the screen when the device is unlocked. if (!mKeyguardStateController.isUnlocked()) { walletView.getActionButton().setOnClickListener( - v -> mKeyguardDismissUtil.executeWhenUnlocked(() -> false, false)); + v -> { + if (mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + return; + } + mKeyguardDismissUtil.executeWhenUnlocked(() -> false, false); + }); } } @@ -115,6 +141,19 @@ public class WalletActivity extends LifecycleActivity { protected void onResume() { super.onResume(); mWalletScreenController.queryWalletCards(); + mKeyguardViewManager.requestUdfps(true, Color.BLACK); + } + + @Override + protected void onPause() { + super.onPause(); + mKeyguardViewManager.requestUdfps(false, -1); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.wallet_activity_options_menu, menu); + return super.onCreateOptionsMenu(menu); } @Override @@ -123,6 +162,9 @@ public class WalletActivity extends LifecycleActivity { if (itemId == android.R.id.home) { finish(); return true; + } else if (itemId == R.id.wallet_lockscreen_settings) { + // TODO(b/186496392): Navigate to Lock Screen Settings page when the item is clicked. + return true; } return super.onOptionsItemSelected(item); } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java index 21e55496d3e6..1e1b459382d7 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardCarousel.java @@ -61,7 +61,7 @@ public class WalletCardCarousel extends RecyclerView { static final int CARD_ANIM_ALPHA_DELAY = 50; private final Rect mSystemGestureExclusionZone = new Rect(); - private WalletCardCarouselAdapter mWalletCardCarouselAdapter; + private final WalletCardCarouselAdapter mWalletCardCarouselAdapter; private int mExpectedViewWidth; private int mCardMarginPx; private int mCardWidthPx; @@ -79,12 +79,6 @@ public class WalletCardCarousel extends RecyclerView { // also be used in DotIndicatorDecoration. float mEdgeToCenterDistance = Float.MAX_VALUE; private float mCardCenterToScreenCenterDistancePx = Float.MAX_VALUE; - // When card data is loaded, this many cards should be animated as data is bound to them. - private int mNumCardsToAnimate; - // When card data is loaded, this is the position of the leftmost card to be animated. - private int mCardAnimationStartPosition; - // When card data is loaded, the animations may be delayed so that other animations can complete - private int mExtraAnimationDelay; interface OnSelectionListener { /** @@ -179,10 +173,6 @@ public class WalletCardCarousel extends RecyclerView { } } - void setExtraAnimationDelay(int extraAnimationDelay) { - mExtraAnimationDelay = extraAnimationDelay; - } - void setSelectionListener(OnSelectionListener selectionListener) { mSelectionListener = selectionListener; } @@ -200,19 +190,14 @@ public class WalletCardCarousel extends RecyclerView { } /** - * Set card data. Returns true if carousel was empty, indicating that views will be animated + * Returns true if the data set is changed. */ - boolean setData(List<WalletCardViewInfo> data, int selectedIndex) { - boolean wasEmpty = mWalletCardCarouselAdapter.getItemCount() == 0; - mWalletCardCarouselAdapter.setData(data); - if (wasEmpty) { - scrollToPosition(selectedIndex); - mNumCardsToAnimate = numCardsOnScreen(data.size(), selectedIndex); - mCardAnimationStartPosition = Math.max(selectedIndex - 1, 0); - } + boolean setData(List<WalletCardViewInfo> data, int selectedIndex, boolean hasLockStateChanged) { + boolean hasDataChanged = mWalletCardCarouselAdapter.setData(data, hasLockStateChanged); + scrollToPosition(selectedIndex); WalletCardViewInfo selectedCard = data.get(selectedIndex); mCardScrollListener.onCardScroll(selectedCard, selectedCard, 0); - return wasEmpty; + return hasDataChanged; } @Override @@ -222,19 +207,6 @@ public class WalletCardCarousel extends RecyclerView { } /** - * The number of cards shown on screen when one of the cards is position in the center. This is - * also the num - */ - private static int numCardsOnScreen(int numCards, int selectedIndex) { - if (numCards <= 2) { - return numCards; - } - // When there are 3 or more cards, 3 cards will be shown unless the first or last card is - // centered on screen. - return selectedIndex > 0 && selectedIndex < (numCards - 1) ? 3 : 2; - } - - /** * The padding pushes the first and last cards in the list to the center when they are * selected. */ @@ -427,15 +399,6 @@ public class WalletCardCarousel extends RecyclerView { mSelectionListener.onCardClicked(cardViewInfo); } }); - if (mNumCardsToAnimate > 0 && (position - mCardAnimationStartPosition < 2)) { - mNumCardsToAnimate--; - int startDelay = (position - mCardAnimationStartPosition) * CARD_ANIM_ALPHA_DELAY - + mExtraAnimationDelay; - viewHolder.itemView.setAlpha(0f); - viewHolder.itemView.animate().alpha(1f) - .setStartDelay(Math.max(0, startDelay)) - .setDuration(CARD_ANIM_ALPHA_DURATION).start(); - } } @Override @@ -448,9 +411,29 @@ public class WalletCardCarousel extends RecyclerView { return mData.get(position).getCardId().hashCode(); } - void setData(List<WalletCardViewInfo> data) { + private boolean setData(List<WalletCardViewInfo> data, boolean hasLockedStateChanged) { + List<WalletCardViewInfo> oldData = mData; mData = data; - notifyDataSetChanged(); + if (hasLockedStateChanged || !isUiEquivalent(oldData, data)) { + notifyDataSetChanged(); + return true; + } + return false; + } + + private boolean isUiEquivalent( + List<WalletCardViewInfo> oldData, List<WalletCardViewInfo> newData) { + if (oldData.size() != newData.size()) { + return false; + } + for (int i = 0; i < newData.size(); i++) { + WalletCardViewInfo oldItem = oldData.get(i); + WalletCardViewInfo newItem = newData.get(i); + if (!oldItem.isUiEquivalent(newItem)) { + return false; + } + } + return true; } } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardViewInfo.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardViewInfo.java index 669d6664b305..08fbe4aa3ce5 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardViewInfo.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletCardViewInfo.java @@ -16,6 +16,7 @@ package com.android.systemui.wallet.ui; +import android.app.PendingIntent; import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; @@ -47,4 +48,17 @@ interface WalletCardViewInfo { */ @NonNull CharSequence getLabel(); + + /** + * Pending intent upon the card is clicked. + */ + @NonNull + PendingIntent getPendingIntent(); + + default boolean isUiEquivalent(WalletCardViewInfo other) { + if (other == null) { + return false; + } + return getCardId().equals(other.getCardId()); + } } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java index d1a2c8a49a95..ec62981cae73 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletScreenController.java @@ -16,6 +16,7 @@ package com.android.systemui.wallet.ui; +import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -41,6 +42,7 @@ import androidx.annotation.NonNull; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.R; import com.android.systemui.plugins.ActivityStarter; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -57,7 +59,6 @@ public class WalletScreenController implements KeyguardStateController.Callback { private static final String TAG = "WalletScreenCtrl"; - private static final String PREFS_HAS_CARDS = "has_cards"; private static final String PREFS_WALLET_VIEW_HEIGHT = "wallet_view_height"; private static final int MAX_CARDS = 10; private static final long SELECTION_DELAY_MILLIS = TimeUnit.SECONDS.toMillis(30); @@ -72,6 +73,7 @@ public class WalletScreenController implements private final SharedPreferences mPrefs; private final WalletView mWalletView; private final WalletCardCarousel mCardCarousel; + private final FalsingManager mFalsingManager; @VisibleForTesting String mSelectedCardId; @VisibleForTesting boolean mIsDismissed; @@ -85,12 +87,14 @@ public class WalletScreenController implements Executor executor, Handler handler, UserTracker userTracker, + FalsingManager falsingManager, KeyguardStateController keyguardStateController) { mContext = context; mWalletClient = walletClient; mActivityStarter = activityStarter; mExecutor = executor; mHandler = handler; + mFalsingManager = falsingManager; mKeyguardStateController = keyguardStateController; mPrefs = userTracker.getUserContext().getSharedPreferences(TAG, Context.MODE_PRIVATE); mWalletView = walletView; @@ -102,12 +106,6 @@ public class WalletScreenController implements if (mCardCarousel != null) { mCardCarousel.setSelectionListener(this); } - - if (!mPrefs.getBoolean(PREFS_HAS_CARDS, false)) { - // The empty state view is shown preemptively when cards were not returned last time - // to decrease perceived latency. - showEmptyStateView(); - } } /** @@ -136,8 +134,6 @@ public class WalletScreenController implements mWalletView.showCardCarousel( data, response.getSelectedIndex(), !mKeyguardStateController.isUnlocked()); } - // The empty state view will not be shown preemptively next time if cards were returned - mPrefs.edit().putBoolean(PREFS_HAS_CARDS, !data.isEmpty()).apply(); removeMinHeightAndRecordHeightOnLayout(); }); } @@ -167,7 +163,6 @@ public class WalletScreenController implements } switch (event.getEventType()) { case WalletServiceEvent.TYPE_NFC_PAYMENT_STARTED: - onDismissed(); break; case WalletServiceEvent.TYPE_WALLET_CARDS_UPDATED: queryWalletCards(); @@ -207,14 +202,17 @@ public class WalletScreenController implements @Override public void onCardClicked(@NonNull WalletCardViewInfo cardInfo) { + if (!mKeyguardStateController.isUnlocked() + && mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY)) { + return; + } if (!(cardInfo instanceof QAWalletCardViewInfo) || ((QAWalletCardViewInfo) cardInfo).mWalletCard == null || ((QAWalletCardViewInfo) cardInfo).mWalletCard.getPendingIntent() == null) { return; } mActivityStarter.startActivity( - ((QAWalletCardViewInfo) cardInfo).mWalletCard.getPendingIntent().getIntent(), - true); + ((QAWalletCardViewInfo) cardInfo).mWalletCard.getPendingIntent().getIntent(), true); } @Override @@ -235,7 +233,8 @@ public class WalletScreenController implements mWalletView.show(); mWalletView.hideErrorMessage(); - int iconSizePx = mContext.getResources().getDimensionPixelSize(R.dimen.wallet_icon_size); + int iconSizePx = + mContext.getResources().getDimensionPixelSize(R.dimen.wallet_view_header_icon_size); GetWalletCardsRequest request = new GetWalletCardsRequest(cardWidthPx, cardHeightPx, iconSizePx, MAX_CARDS); mWalletClient.getWalletCards(mExecutor, request, this); @@ -248,6 +247,7 @@ public class WalletScreenController implements mIsDismissed = true; mSelectedCardId = null; mHandler.removeCallbacks(mSelectionRunnable); + mFalsingManager.cleanup(); mWalletClient.notifyWalletDismissed(); mWalletClient.removeWalletServiceEventListener(this); mWalletView.animateDismissal(); @@ -342,5 +342,10 @@ public class WalletScreenController implements public CharSequence getLabel() { return mWalletCard.getCardLabel(); } + + @Override + public PendingIntent getPendingIntent() { + return mWalletCard.getPendingIntent(); + } } } diff --git a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletView.java b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletView.java index a3c26998e2c0..c547bb346617 100644 --- a/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletView.java +++ b/packages/SystemUI/src/com/android/systemui/wallet/ui/WalletView.java @@ -19,17 +19,15 @@ package com.android.systemui.wallet.ui; import static com.android.systemui.wallet.ui.WalletCardCarousel.CARD_ANIM_ALPHA_DELAY; import static com.android.systemui.wallet.ui.WalletCardCarousel.CARD_ANIM_ALPHA_DURATION; -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; import android.annotation.Nullable; +import android.app.PendingIntent; import android.content.Context; -import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.AttributeSet; +import android.util.Log; import android.view.MotionEvent; +import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; @@ -46,10 +44,9 @@ import java.util.List; /** Layout for the wallet screen. */ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCardScrollListener { - private static final int CAROUSEL_IN_ANIMATION_DURATION = 300; + private static final String TAG = "WalletView"; + private static final int CAROUSEL_IN_ANIMATION_DURATION = 100; private static final int CAROUSEL_OUT_ANIMATION_DURATION = 200; - private static final int CARD_LABEL_ANIM_DELAY = 133; - private static final int CONTACTLESS_ICON_SIZE = 90; private final WalletCardCarousel mCardCarousel; private final ImageView mIcon; @@ -58,13 +55,13 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard private final Button mAppButton; // Displays underneath the carousel, allow user to unlock device, verify card, etc. private final Button mActionButton; - private final Interpolator mInInterpolator; private final Interpolator mOutInterpolator; private final float mAnimationTranslationX; private final ViewGroup mCardCarouselContainer; private final TextView mErrorView; private final ViewGroup mEmptyStateView; private CharSequence mCenterCardText; + private boolean mIsDeviceLocked = false; public WalletView(Context context) { this(context, null); @@ -82,8 +79,6 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard mActionButton = requireViewById(R.id.wallet_action_button); mErrorView = requireViewById(R.id.error_view); mEmptyStateView = requireViewById(R.id.wallet_empty_state); - mInInterpolator = - AnimationUtils.loadInterpolator(context, android.R.interpolator.fast_out_slow_in); mOutInterpolator = AnimationUtils.loadInterpolator(context, android.R.interpolator.accelerate_cubic); mAnimationTranslationX = mCardCarousel.getCardWidthPx() / 4f; @@ -104,16 +99,20 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard @Override public void onCardScroll(WalletCardViewInfo centerCard, WalletCardViewInfo nextCard, float percentDistanceFromCenter) { - CharSequence centerCardText = centerCard.getLabel(); + CharSequence centerCardText = getLabelText(centerCard); + Drawable centerCardIcon = centerCard.getIcon(); if (!TextUtils.equals(mCenterCardText, centerCardText)) { mCenterCardText = centerCardText; mCardLabel.setText(centerCardText); + mIcon.setImageDrawable(centerCardIcon); } - if (TextUtils.equals(centerCardText, nextCard.getLabel())) { + renderActionButton(centerCard, mIsDeviceLocked); + if (TextUtils.equals(centerCardText, getLabelText(nextCard))) { mCardLabel.setAlpha(1f); } else { mCardLabel.setAlpha(percentDistanceFromCenter); mIcon.setAlpha(percentDistanceFromCenter); + mActionButton.setAlpha(percentDistanceFromCenter); } } @@ -128,38 +127,15 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard */ void showCardCarousel( List<WalletCardViewInfo> data, int selectedIndex, boolean isDeviceLocked) { - boolean shouldAnimate = mCardCarousel.setData(data, selectedIndex); + boolean shouldAnimate = + mCardCarousel.setData(data, selectedIndex, mIsDeviceLocked != isDeviceLocked); + mIsDeviceLocked = isDeviceLocked; mCardCarouselContainer.setVisibility(VISIBLE); mErrorView.setVisibility(GONE); - renderHeaderIconAndActionButton(data.get(0), isDeviceLocked); + mEmptyStateView.setVisibility(GONE); + renderHeaderIconAndActionButton(data.get(selectedIndex), isDeviceLocked); if (shouldAnimate) { - // If the empty state is visible, animate it away and delay the card carousel animation - int emptyStateAnimDelay = 0; - if (mEmptyStateView.getVisibility() == VISIBLE) { - emptyStateAnimDelay = CARD_ANIM_ALPHA_DURATION; - mEmptyStateView.animate() - .alpha(0) - .setDuration(emptyStateAnimDelay) - .setListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mEmptyStateView.setVisibility(GONE); - } - }) - .start(); - } - mCardLabel.setAlpha(0f); - mCardLabel.animate().alpha(1f) - .setStartDelay(CARD_LABEL_ANIM_DELAY + emptyStateAnimDelay) - .setDuration(CARD_ANIM_ALPHA_DURATION) - .start(); - mCardCarousel.setExtraAnimationDelay(emptyStateAnimDelay); - mCardCarousel.setTranslationX(mAnimationTranslationX); - mCardCarousel.animate().translationX(0) - .setInterpolator(mInInterpolator) - .setDuration(CAROUSEL_IN_ANIMATION_DURATION) - .setStartDelay(emptyStateAnimDelay) - .start(); + animateViewsShown(mIcon, mCardLabel, mActionButton); } } @@ -239,39 +215,54 @@ public class WalletView extends FrameLayout implements WalletCardCarousel.OnCard return mCardCarouselContainer; } + @VisibleForTesting + TextView getCardLabel() { + return mCardLabel; + } + private void renderHeaderIconAndActionButton(WalletCardViewInfo walletCard, boolean isLocked) { - Drawable icon = resizeDrawable(getResources(), walletCard.getIcon()); - renderHeaderIcon(icon, isLocked); - if (isLocked) { + mIcon.setImageDrawable(walletCard.getIcon()); + mIcon.setVisibility(VISIBLE); + renderActionButton(walletCard, isLocked); + } + + private void renderActionButton(WalletCardViewInfo walletCard, boolean isDeviceLocked) { + CharSequence actionButtonText = getActionButtonText(walletCard); + if (isDeviceLocked) { mActionButton.setVisibility(VISIBLE); mActionButton.setText(R.string.wallet_action_button_label_unlock); + } else if (actionButtonText != null) { + mActionButton.setText(actionButtonText); + mActionButton.setVisibility(VISIBLE); + mActionButton.setOnClickListener(v -> { + try { + walletCard.getPendingIntent().send(); + } catch (PendingIntent.CanceledException e) { + Log.w(TAG, "Error sending pending intent for wallet card"); + } + }); } else { mActionButton.setVisibility(GONE); } } - private void renderHeaderIcon(@Nullable Drawable icon, boolean isLocked) { - if (icon == null) { - mIcon.setVisibility(INVISIBLE); - return; + private static void animateViewsShown(View... uiElements) { + for (View view : uiElements) { + if (view.getVisibility() == VISIBLE) { + view.setAlpha(0f); + view.animate().alpha(1f).setDuration(CAROUSEL_IN_ANIMATION_DURATION).start(); + } } - icon.setTint(mContext.getColor(isLocked ? R.color.GM2_grey_800 : R.color.GM2_blue_600)); - mIcon.setImageDrawable(icon); - mIcon.setVisibility(VISIBLE); - mIcon.setBackground( - mContext.getDrawable( - isLocked - ? R.drawable.circle_wallet_secondary_56dp - : R.drawable.circle_wallet_primary_56dp)); + } + + private static CharSequence getLabelText(WalletCardViewInfo card) { + String[] rawLabel = card.getLabel().toString().split("\\n"); + return rawLabel.length == 2 ? rawLabel[0] : card.getLabel(); } @Nullable - private static Drawable resizeDrawable(Resources resources, @Nullable Drawable drawable) { - if (drawable == null) { - return null; - } - Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap(); - return new BitmapDrawable(resources, Bitmap.createScaledBitmap( - bitmap, CONTACTLESS_ICON_SIZE, CONTACTLESS_ICON_SIZE, true)); + private static CharSequence getActionButtonText(WalletCardViewInfo card) { + String[] rawLabel = card.getLabel().toString().split("\\n"); + return rawLabel.length == 2 ? rawLabel[1] : null; } } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java index d07a8da47cf0..8c5f74dc7c93 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java @@ -32,6 +32,7 @@ import android.app.smartspace.SmartspaceTarget; import android.content.Context; import android.content.pm.UserInfo; import android.content.res.Resources; +import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.UserHandle; import android.test.suitebuilder.annotation.SmallTest; @@ -41,10 +42,11 @@ import android.view.View; import android.widget.FrameLayout; import android.widget.RelativeLayout; +import androidx.annotation.Nullable; + import com.android.internal.colorextraction.ColorExtractor; import com.android.keyguard.clock.ClockManager; import com.android.systemui.R; -import com.android.systemui.SystemUIFactory; import com.android.systemui.SysuiTestCase; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.colorextraction.SysuiColorExtractor; @@ -74,6 +76,7 @@ import org.mockito.verification.VerificationMode; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.Executor; @SmallTest @@ -117,12 +120,12 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { @Mock ConfigurationController mConfigurationController; @Mock + Optional<BcSmartspaceDataPlugin> mOptionalSmartspaceDataProvider; + @Mock BcSmartspaceDataPlugin mSmartspaceDataProvider; @Mock SmartspaceView mSmartspaceView; @Mock - SystemUIFactory mSystemUIFactory; - @Mock ActivityStarter mActivityStarter; @Mock FalsingManager mFalsingManager; @@ -162,7 +165,6 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { when(mFeatureFlags.isSmartspaceEnabled()).thenReturn(true); when(mView.isAttachedToWindow()).thenReturn(true); when(mResources.getString(anyInt())).thenReturn("h:mm"); - when(mSystemUIFactory.getSmartspaceDataProvider()).thenReturn(mSmartspaceDataProvider); mController = new KeyguardClockSwitchController( mView, mStatusBarStateController, @@ -175,14 +177,14 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { mExecutor, mBatteryController, mConfigurationController, - mSystemUIFactory, mActivityStarter, mFalsingManager, mKeyguardUpdateMonitor, mBypassController, mHandler, mUserTracker, - mSecureSettings + mSecureSettings, + mOptionalSmartspaceDataProvider ); when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE); @@ -190,6 +192,8 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { mStatusArea = new View(getContext()); when(mView.findViewById(R.id.keyguard_status_area)).thenReturn(mStatusArea); + when(mOptionalSmartspaceDataProvider.isPresent()).thenReturn(true); + when(mOptionalSmartspaceDataProvider.get()).thenReturn(mSmartspaceDataProvider); when(mSmartspaceDataProvider.getView(any())).thenReturn(mSmartspaceView); } @@ -260,7 +264,7 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { @Test public void testSmartspaceEnabledNoDataProviderShowsKeyguardStatusArea() { when(mFeatureFlags.isSmartspaceEnabled()).thenReturn(true); - when(mSystemUIFactory.getSmartspaceDataProvider()).thenReturn(null); + when(mOptionalSmartspaceDataProvider.isPresent()).thenReturn(false); mController.init(); assertEquals(View.VISIBLE, mStatusArea.getVisibility()); @@ -389,5 +393,9 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { public void setIntentStarter(IntentStarter intentStarter) { } public void setFalsingManager(FalsingManager falsingManager) { } + + public void setDnd(@Nullable Drawable dndIcon, @Nullable String description) { } + + public void setNextAlarm(@Nullable Drawable dndIcon, @Nullable String description) { } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java index 325275047ebb..b9ce20373755 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/ScreenDecorationsTest.java @@ -65,8 +65,12 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.events.PrivacyDotViewController; import com.android.systemui.tuner.TunerService; +import com.android.systemui.util.concurrency.FakeExecutor; +import com.android.systemui.util.concurrency.FakeThreadFactory; +import com.android.systemui.util.concurrency.ThreadFactory; import com.android.systemui.util.settings.FakeSettings; import com.android.systemui.util.settings.SecureSettings; +import com.android.systemui.util.time.FakeSystemClock; import org.junit.Before; import org.junit.Test; @@ -89,6 +93,7 @@ public class ScreenDecorationsTest extends SysuiTestCase { private DisplayManager mDisplayManager; private SecureSettings mSecureSettings; private Handler mMainHandler; + private ThreadFactory mThreadFactory; @Mock private TunerService mTunerService; @Mock @@ -105,6 +110,7 @@ public class ScreenDecorationsTest extends SysuiTestCase { mTestableLooper = TestableLooper.get(this); mMainHandler = new Handler(mTestableLooper.getLooper()); mSecureSettings = new FakeSettings(); + mThreadFactory = new FakeThreadFactory(new FakeExecutor(new FakeSystemClock())); mWindowManager = mock(WindowManager.class); WindowMetrics metrics = mContext.getSystemService(WindowManager.class) @@ -119,7 +125,8 @@ public class ScreenDecorationsTest extends SysuiTestCase { mContext.addMockSystemService(DisplayManager.class, mDisplayManager); mScreenDecorations = spy(new ScreenDecorations(mContext, mMainHandler, mSecureSettings, - mBroadcastDispatcher, mTunerService, mUserTracker, mDotViewController) { + mBroadcastDispatcher, mTunerService, mUserTracker, mDotViewController, + mThreadFactory) { @Override public void start() { super.start(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java index 40c48514f159..875696a08cf1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java @@ -21,6 +21,7 @@ import static junit.framework.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -48,6 +49,7 @@ import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.KeyguardViewMediator; +import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.StatusBar; @@ -110,6 +112,8 @@ public class UdfpsControllerTest extends SysuiTestCase { private PowerManager mPowerManager; @Mock private AccessibilityManager mAccessibilityManager; + @Mock + private ScreenLifecycle mScreenLifecycle; private FakeExecutor mFgExecutor; @@ -126,6 +130,8 @@ public class UdfpsControllerTest extends SysuiTestCase { private IUdfpsOverlayController mOverlayController; @Captor private ArgumentCaptor<UdfpsView.OnTouchListener> mTouchListenerCaptor; @Captor private ArgumentCaptor<Runnable> mOnIlluminatedRunnableCaptor; + @Captor private ArgumentCaptor<ScreenLifecycle.Observer> mScreenObserverCaptor; + private ScreenLifecycle.Observer mScreenObserver; @Before public void setUp() { @@ -163,9 +169,12 @@ public class UdfpsControllerTest extends SysuiTestCase { mKeyguardViewMediator, mFalsingManager, mPowerManager, - mAccessibilityManager); + mAccessibilityManager, + mScreenLifecycle); verify(mFingerprintManager).setUdfpsOverlayController(mOverlayCaptor.capture()); mOverlayController = mOverlayCaptor.getValue(); + verify(mScreenLifecycle).addObserver(mScreenObserverCaptor.capture()); + mScreenObserver = mScreenObserverCaptor.getValue(); assertEquals(TEST_UDFPS_SENSOR_ID, mUdfpsController.mSensorProps.sensorId); } @@ -223,19 +232,22 @@ public class UdfpsControllerTest extends SysuiTestCase { MotionEvent moveEvent = MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE, 0, 0, 0); mTouchListenerCaptor.getValue().onTouch(mUdfpsView, moveEvent); moveEvent.recycle(); - // THEN illumination begins - // AND onIlluminatedRunnable that notifies FingerprintManager is set - verify(mUdfpsView).startIllumination(mOnIlluminatedRunnableCaptor.capture()); - mOnIlluminatedRunnableCaptor.getValue().run(); + // THEN FingerprintManager is notified about onPointerDown verify(mFingerprintManager).onPointerDown(eq(mUdfpsController.mSensorProps.sensorId), eq(0), eq(0), eq(0f), eq(0f)); + // AND illumination begins + verify(mUdfpsView).startIllumination(mOnIlluminatedRunnableCaptor.capture()); + // AND onIlluminatedRunnable notifies FingerprintManager about onUiReady + mOnIlluminatedRunnableCaptor.getValue().run(); + verify(mFingerprintManager).onUiReady(eq(mUdfpsController.mSensorProps.sensorId)); } @Test public void aodInterrupt() throws RemoteException { - // GIVEN that the overlay is showing + // GIVEN that the overlay is showing and screen is on mOverlayController.showUdfpsOverlay(TEST_UDFPS_SENSOR_ID, IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD, mUdfpsOverlayControllerCallback); + mScreenObserver.onScreenTurnedOn(); mFgExecutor.runAllReady(); // WHEN fingerprint is requested because of AOD interrupt mUdfpsController.onAodInterrupt(0, 0, 2f, 3f); @@ -252,6 +264,7 @@ public class UdfpsControllerTest extends SysuiTestCase { // GIVEN AOD interrupt mOverlayController.showUdfpsOverlay(TEST_UDFPS_SENSOR_ID, IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD, mUdfpsOverlayControllerCallback); + mScreenObserver.onScreenTurnedOn(); mFgExecutor.runAllReady(); mUdfpsController.onAodInterrupt(0, 0, 0f, 0f); // WHEN it is cancelled @@ -265,6 +278,7 @@ public class UdfpsControllerTest extends SysuiTestCase { // GIVEN AOD interrupt mOverlayController.showUdfpsOverlay(TEST_UDFPS_SENSOR_ID, IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD, mUdfpsOverlayControllerCallback); + mScreenObserver.onScreenTurnedOn(); mFgExecutor.runAllReady(); mUdfpsController.onAodInterrupt(0, 0, 0f, 0f); // WHEN it times out @@ -273,4 +287,19 @@ public class UdfpsControllerTest extends SysuiTestCase { // THEN the illumination is hidden verify(mUdfpsView).stopIllumination(); } + + @Test + public void aodInterruptScreenOff() throws RemoteException { + // GIVEN screen off + mOverlayController.showUdfpsOverlay(TEST_UDFPS_SENSOR_ID, + IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD, mUdfpsOverlayControllerCallback); + mScreenObserver.onScreenTurnedOff(); + mFgExecutor.runAllReady(); + + // WHEN aod interrupt is received + mUdfpsController.onAodInterrupt(0, 0, 0f, 0f); + + // THEN no illumination because screen is off + verify(mUdfpsView, never()).startIllumination(any()); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java index 42387bcf9adc..1fe694e97bcf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingDataProviderTest.java @@ -290,4 +290,11 @@ public class FalsingDataProviderTest extends ClassifierTest { mDataProvider.onMotionEvent(appendDownEvent(0, 200)); verify(listener).onGestureFinalized(100); } + + @Test + public void test_GetPriorEventsEarly() { + // Ensure that if we ask for prior events before any events were added, we at least get + // an empty array. + assertThat(mDataProvider.getPriorMotionEvents()).isNotNull(); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java index bfc793516c8d..d418836b5753 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsImeTest.java @@ -37,6 +37,7 @@ import android.widget.EditText; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.test.filters.FlakyTest; import androidx.test.filters.LargeTest; import androidx.test.platform.app.InstrumentationRegistry; import androidx.test.rule.ActivityTestRule; @@ -52,6 +53,7 @@ import java.util.concurrent.TimeUnit; import java.util.function.BooleanSupplier; @LargeTest +@FlakyTest(bugId = 176891566) public class GlobalActionsImeTest extends SysuiTestCase { @Rule @@ -75,6 +77,8 @@ public class GlobalActionsImeTest extends SysuiTestCase { // To restore USER_SYSTEM settings, we have to use settings shell command. executeShellCommand("settings put secure " + SHOW_IME_WITH_HARD_KEYBOARD + " " + mOriginalShowImeWithHardKeyboard); + // Hide power menu and return to home screen + executeShellCommand("input keyevent --longpress POWER"); executeShellCommand("input keyevent HOME"); } @@ -178,6 +182,7 @@ public class GlobalActionsImeTest extends SysuiTestCase { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setShowWhenLocked(true); // Allow this test to work even if device got stuck on keyguard mEditText = new EditText(this); mEditText.setCursorVisible(false); // Otherwise, main thread doesn't go idle. setContentView(mEditText); diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java index 5c87741b8883..6f03f5d975d0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java @@ -46,7 +46,7 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.dump.DumpManager; import com.android.systemui.navigationbar.NavigationModeController; -import com.android.systemui.plugins.statusbar.StatusBarStateController; +import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -79,7 +79,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { private @Mock NavigationModeController mNavigationModeController; private @Mock KeyguardDisplayManager mKeyguardDisplayManager; private @Mock DozeParameters mDozeParameters; - private @Mock StatusBarStateController mStatusBarStateController; + private @Mock SysuiStatusBarStateController mStatusBarStateController; private @Mock KeyguardStateController mKeyguardStateController; private @Mock KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; private DeviceConfigProxy mDeviceConfig = new DeviceConfigProxyFake(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt index 800daa1e96aa..dd3a19228b4e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaControlPanelTest.kt @@ -93,6 +93,7 @@ public class MediaControlPanelTest : SysuiTestCase() { @Mock private lateinit var expandedSet: ConstraintSet @Mock private lateinit var collapsedSet: ConstraintSet @Mock private lateinit var mediaOutputDialogFactory: MediaOutputDialogFactory + @Mock private lateinit var mediaCarouselController: MediaCarouselController private lateinit var appIcon: ImageView private lateinit var albumView: ImageView private lateinit var titleText: TextView @@ -129,7 +130,7 @@ public class MediaControlPanelTest : SysuiTestCase() { player = MediaControlPanel(context, bgExecutor, activityStarter, mediaViewController, seekBarViewModel, Lazy { mediaDataManager }, keyguardDismissUtil, - mediaOutputDialogFactory) + mediaOutputDialogFactory, mediaCarouselController) whenever(seekBarViewModel.progress).thenReturn(seekBarData) // Mock out a view holder for the player to attach to. diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java index 47f41836f1a6..eac68f6e76f4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarRotationContextTest.java @@ -62,8 +62,10 @@ public class NavigationBarRotationContextTest extends SysuiTestCase { final View view = new View(mContext); mRotationButton = mock(RotationButton.class); - mRotationButtonController = spy(new RotationButtonController(mContext, 0, 0, - mRotationButton, (visibility) -> {})); + mRotationButtonController = new RotationButtonController(mContext, 0, 0); + mRotationButtonController.setRotationButton(mRotationButton, (visibility) -> {}); + // Due to a mockito issue, only spy the object after setting the initial state + mRotationButtonController = spy(mRotationButtonController); final KeyButtonDrawable kbd = mock(KeyButtonDrawable.class); doReturn(view).when(mRotationButton).getCurrentView(); doReturn(true).when(mRotationButton).acceptRotationProposal(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java index 0dd1f6816787..8983ff8dd30f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java @@ -17,7 +17,6 @@ package com.android.systemui.people; import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME; -import static com.android.systemui.people.widget.AppWidgetOptionsHelper.OPTIONS_PEOPLE_TILE; import static com.google.common.truth.Truth.assertThat; @@ -200,7 +199,6 @@ public class PeopleSpaceUtilsTest extends SysuiTestCase { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT}; mOptions = new Bundle(); - mOptions.putParcelable(OPTIONS_PEOPLE_TILE, PERSON_TILE); when(mIAppWidgetService.getAppWidgetIds(any())).thenReturn(widgetIdsArray); when(mAppWidgetManager.getAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT))) diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java index 228e5e8d481d..5c70a4ef2076 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleTileViewHelperTest.java @@ -29,7 +29,6 @@ import static android.appwidget.AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH; import static com.android.systemui.people.PeopleSpaceUtils.STARRED_CONTACT; import static com.android.systemui.people.PeopleSpaceUtils.VALID_CONTACT; -import static com.android.systemui.people.widget.AppWidgetOptionsHelper.OPTIONS_PEOPLE_TILE; import static com.google.common.truth.Truth.assertThat; @@ -140,7 +139,6 @@ public class PeopleTileViewHelperTest extends SysuiTestCase { MockitoAnnotations.initMocks(this); mOptions = new Bundle(); - mOptions.putParcelable(OPTIONS_PEOPLE_TILE, PERSON_TILE); when(mMockContext.getString(R.string.birthday_status)).thenReturn( mContext.getString(R.string.birthday_status)); diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java index f31f326c0c45..107ce289723d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java @@ -51,7 +51,6 @@ import static com.android.systemui.people.PeopleSpaceUtils.EMPTY_STRING; import static com.android.systemui.people.PeopleSpaceUtils.INVALID_USER_ID; import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME; import static com.android.systemui.people.PeopleSpaceUtils.USER_ID; -import static com.android.systemui.people.widget.AppWidgetOptionsHelper.OPTIONS_PEOPLE_TILE; import static com.google.common.truth.Truth.assertThat; @@ -192,6 +191,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { | SUPPRESSED_EFFECT_LIGHTS | SUPPRESSED_EFFECT_PEEK | SUPPRESSED_EFFECT_NOTIFICATION_LIST; + private static final long SBN_POST_TIME = 567L; private ShortcutInfo mShortcutInfo; private NotificationEntry mNotificationEntry; @@ -474,8 +474,6 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setId(1)); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, never()) - .updateAppWidgetOptions(anyInt(), any()); verify(mAppWidgetManager, never()).updateAppWidget(anyInt(), any()); } @@ -495,8 +493,6 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setId(1)); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, never()) - .updateAppWidgetOptions(anyInt(), any()); verify(mAppWidgetManager, never()).updateAppWidget(anyInt(), any()); } @@ -515,8 +511,6 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn, 0); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, never()) - .updateAppWidgetOptions(anyInt(), any()); verify(mAppWidgetManager, never()).updateAppWidget(anyInt(), any()); } @@ -538,8 +532,6 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn, 0); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, never()) - .updateAppWidgetOptions(anyInt(), any()); verify(mAppWidgetManager, never()).updateAppWidget(anyInt(), any()); } @@ -559,8 +551,6 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsWithConversationChanged(conversationChannel); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, never()) - .updateAppWidgetOptions(anyInt(), any()); verify(mAppWidgetManager, never()).updateAppWidget(anyInt(), any()); } @@ -578,11 +568,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsWithConversationChanged(conversationChannel); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = mBundleArgumentCaptor.getValue(); - PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getStatuses()).containsExactly(status); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); @@ -599,14 +585,8 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsWithConversationChanged(conversationChannel); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - any()); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(SECOND_WIDGET_ID_WITH_SHORTCUT), - any()); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(SECOND_WIDGET_ID_WITH_SHORTCUT), any()); } @@ -626,12 +606,9 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = mBundleArgumentCaptor.getValue(); - PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); + assertThat(tile.getLastInteractionTimestamp()).isEqualTo(SBN_POST_TIME); assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); @@ -647,14 +624,8 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setId(1)); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - any()); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(SECOND_WIDGET_ID_WITH_SHORTCUT), - any()); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(SECOND_WIDGET_ID_WITH_SHORTCUT), any()); } @@ -672,14 +643,8 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setId(1)); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - any()); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); - verify(mAppWidgetManager, never()) - .updateAppWidgetOptions(eq(SECOND_WIDGET_ID_WITH_SHORTCUT), - any()); verify(mAppWidgetManager, never()).updateAppWidget(eq(SECOND_WIDGET_ID_WITH_SHORTCUT), any()); } @@ -700,12 +665,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = requireNonNull(mBundleArgumentCaptor.getValue()); - - PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tile.getNotificationContent()) .isEqualTo(mContext.getString(R.string.missed_call)); @@ -729,12 +689,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = requireNonNull(mBundleArgumentCaptor.getValue()); - - PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), @@ -758,21 +713,13 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithMissedCallOrigin = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), - mBundleArgumentCaptor.capture()); - Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithSameUri = mManager.mTiles.get(WIDGET_ID_WITH_SAME_URI); assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), @@ -801,19 +748,12 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn.cloneLight(), 0); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(2)).updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = mBundleArgumentCaptor.getValue(); - PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithMissedCallOrigin = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(null); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(null); verify(mAppWidgetManager, times(2)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); - verify(mAppWidgetManager, times(2)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), - mBundleArgumentCaptor.capture()); - Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithSameUri = mManager.mTiles.get(WIDGET_ID_WITH_SAME_URI); assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(null); assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(null); verify(mAppWidgetManager, times(2)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), @@ -847,21 +787,13 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithMissedCallOrigin = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), - mBundleArgumentCaptor.capture()); - Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithSameUri = mManager.mTiles.get(WIDGET_ID_WITH_SAME_URI); assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), @@ -900,20 +832,13 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithMissedCallOrigin = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); // Do not update since notification doesn't include a Person reference. - verify(mAppWidgetManager, times(0)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), - any()); verify(mAppWidgetManager, times(0)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), any()); } @@ -939,20 +864,13 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithMissedCallOrigin = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); // Do not update since missing permission to read contacts. - verify(mAppWidgetManager, times(0)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_DIFFERENT_URI), - any()); verify(mAppWidgetManager, times(0)).updateAppWidget(eq(WIDGET_ID_WITH_DIFFERENT_URI), any()); } @@ -977,23 +895,14 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileWithMissedCallOrigin = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); // Do not update since missing permission to read contacts. - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), - mBundleArgumentCaptor.capture()); - Bundle noNotificationBundle = requireNonNull(mBundleArgumentCaptor.getValue()); - PeopleSpaceTile tileNoNotification = - noNotificationBundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tileNoNotification = mManager.mTiles.get(WIDGET_ID_WITH_SAME_URI); assertThat(tileNoNotification.getNotificationKey()).isNull(); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), any()); @@ -1010,21 +919,20 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setSbn(sbn) .setId(1)); mClock.advanceTime(MIN_LINGER_DURATION); + long timestampBeforeNotificationClear = System.currentTimeMillis(); NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn, 0); mClock.advanceTime(MIN_LINGER_DURATION); - verify(mAppWidgetManager, times(2)).updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = mBundleArgumentCaptor.getValue(); - PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationKey()).isEqualTo(null); + assertThat(tile.getLastInteractionTimestamp()).isLessThan( + timestampBeforeNotificationClear); assertThat(tile.getNotificationContent()).isEqualTo(null); assertThat(tile.getNotificationDataUri()).isEqualTo(null); verify(mAppWidgetManager, times(2)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); } - @Test public void testAddThenReconfigureWidgetsUpdatesStorageCacheAndListeners() throws Exception { @@ -1131,7 +1039,6 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { @Test public void testOnAppWidgetOptionsChangedNoWidgetAdded() { Bundle newOptions = new Bundle(); - newOptions.putParcelable(OPTIONS_PEOPLE_TILE, PERSON_TILE); mManager.onAppWidgetOptionsChanged(SECOND_WIDGET_ID_WITH_SHORTCUT, newOptions); @@ -1166,10 +1073,9 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.onAppWidgetOptionsChanged(SECOND_WIDGET_ID_WITH_SHORTCUT, newOptions); - verify(mAppWidgetManager, times(2)).updateAppWidgetOptions( + verify(mAppWidgetManager, times(1)).updateAppWidgetOptions( eq(SECOND_WIDGET_ID_WITH_SHORTCUT), mBundleArgumentCaptor.capture()); - List<Bundle> bundles = mBundleArgumentCaptor.getAllValues(); - Bundle first = bundles.get(0); + Bundle first = mBundleArgumentCaptor.getValue(); assertThat(first.getString(PeopleSpaceUtils.SHORTCUT_ID, EMPTY_STRING)) .isEqualTo(EMPTY_STRING); assertThat(first.getInt(USER_ID, INVALID_USER_ID)).isEqualTo(INVALID_USER_ID); @@ -1177,21 +1083,6 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { verify(mLauncherApps, times(1)).cacheShortcuts(eq(TEST_PACKAGE_A), eq(Arrays.asList(SHORTCUT_ID)), eq(UserHandle.of(0)), eq(LauncherApps.FLAG_CACHE_PEOPLE_TILE_SHORTCUTS)); - - Bundle second = bundles.get(1); - PeopleSpaceTile tile = second.getParcelable(OPTIONS_PEOPLE_TILE); - assertThat(tile.getId()).isEqualTo(SHORTCUT_ID); - - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(mContext); - assertThat(sp.getStringSet(KEY.toString(), new HashSet<>())).contains( - String.valueOf(SECOND_WIDGET_ID_WITH_SHORTCUT)); - SharedPreferences widgetSp = mContext.getSharedPreferences( - String.valueOf(SECOND_WIDGET_ID_WITH_SHORTCUT), - Context.MODE_PRIVATE); - assertThat(widgetSp.getString(PACKAGE_NAME, EMPTY_STRING)).isEqualTo(TEST_PACKAGE_A); - assertThat(widgetSp.getString(PeopleSpaceUtils.SHORTCUT_ID, EMPTY_STRING)) - .isEqualTo(SHORTCUT_ID); - assertThat(widgetSp.getInt(USER_ID, INVALID_USER_ID)).isEqualTo(0); } @Test @@ -1306,11 +1197,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { public void testUpdateWidgetsOnStateChange() { mManager.updateWidgetsOnStateChange(ACTION_BOOT_COMPLETED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = mBundleArgumentCaptor.getValue(); - PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.isPackageSuspended()).isFalse(); assertThat(tile.isUserQuieted()).isFalse(); assertThat(tile.canBypassDnd()).isFalse(); @@ -1325,11 +1212,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(ACTION_BOOT_COMPLETED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = mBundleArgumentCaptor.getValue(); - PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.isPackageSuspended()).isFalse(); assertThat(tile.isUserQuieted()).isTrue(); assertThat(tile.getNotificationPolicyState()).isEqualTo(SHOW_CONVERSATIONS); @@ -1341,11 +1224,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(ACTION_PACKAGES_SUSPENDED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = mBundleArgumentCaptor.getValue(); - PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.isPackageSuspended()).isTrue(); assertThat(tile.isUserQuieted()).isFalse(); assertThat(tile.getNotificationPolicyState()).isEqualTo(SHOW_CONVERSATIONS); @@ -1357,10 +1236,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(NotificationManager .ACTION_INTERRUPTION_FILTER_CHANGED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - PeopleSpaceTile tile = mBundleArgumentCaptor.getValue().getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationPolicyState()).isEqualTo(expected | SHOW_CONVERSATIONS); } @@ -1375,10 +1251,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(NotificationManager .ACTION_INTERRUPTION_FILTER_CHANGED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - PeopleSpaceTile tile = mBundleArgumentCaptor.getValue().getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationPolicyState()).isEqualTo(expected | SHOW_CONVERSATIONS); } @@ -1394,10 +1267,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(NotificationManager .ACTION_INTERRUPTION_FILTER_CHANGED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - PeopleSpaceTile tile = mBundleArgumentCaptor.getValue().getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationPolicyState()).isEqualTo( expected | SHOW_IMPORTANT_CONVERSATIONS); } @@ -1412,10 +1282,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(NotificationManager .ACTION_INTERRUPTION_FILTER_CHANGED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - PeopleSpaceTile tile = mBundleArgumentCaptor.getValue().getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationPolicyState()).isEqualTo(expected | BLOCK_CONVERSATIONS); } @@ -1430,10 +1297,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(ACTION_BOOT_COMPLETED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - PeopleSpaceTile tile = mBundleArgumentCaptor.getValue().getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationPolicyState()).isEqualTo(expected | SHOW_CONTACTS); } @@ -1448,10 +1312,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(ACTION_BOOT_COMPLETED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - PeopleSpaceTile tile = mBundleArgumentCaptor.getValue().getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationPolicyState()).isEqualTo(expected | SHOW_STARRED_CONTACTS); } @@ -1464,10 +1325,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(NotificationManager .ACTION_INTERRUPTION_FILTER_CHANGED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - PeopleSpaceTile tile = mBundleArgumentCaptor.getValue().getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationPolicyState()).isEqualTo(expected | BLOCK_CONVERSATIONS); } @@ -1482,10 +1340,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { mManager.updateWidgetsOnStateChange(ACTION_BOOT_COMPLETED); - verify(mAppWidgetManager, times(1)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - PeopleSpaceTile tile = mBundleArgumentCaptor.getValue().getParcelable(OPTIONS_PEOPLE_TILE); + PeopleSpaceTile tile = mManager.mTiles.get(WIDGET_ID_WITH_SHORTCUT); assertThat(tile.getNotificationPolicyState()).isEqualTo(expected | SHOW_CONVERSATIONS); } @@ -1513,7 +1368,6 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { private void addTileForWidget(PeopleSpaceTile tile, int widgetId) throws Exception { setStorageForTile(tile.getId(), tile.getPackageName(), widgetId, tile.getContactUri()); Bundle options = new Bundle(); - options.putParcelable(OPTIONS_PEOPLE_TILE, tile); ConversationChannel channel = getConversationWithShortcutId(new PeopleTileKey(tile)); when(mAppWidgetManager.getAppWidgetOptions(eq(widgetId))) .thenReturn(options); @@ -1596,6 +1450,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setNotification(notification) .setPkg(TEST_PACKAGE_A) .setUid(0) + .setPostTime(SBN_POST_TIME) .setUser(new UserHandle(0)) .build(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/TileLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/TileLayoutTest.java index 54cee847b757..24e47c5159a0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/TileLayoutTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/TileLayoutTest.java @@ -35,7 +35,7 @@ import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.tileimpl.QSIconViewImpl; -import com.android.systemui.qs.tileimpl.QSTileView; +import com.android.systemui.qs.tileimpl.QSTileViewImpl; import org.junit.Before; import org.junit.Test; @@ -60,7 +60,7 @@ public class TileLayoutTest extends SysuiTestCase { private QSPanelControllerBase.TileRecord createTileRecord() { QSPanelControllerBase.TileRecord tileRecord = new QSPanelControllerBase.TileRecord(); tileRecord.tile = mock(QSTile.class); - tileRecord.tileView = spy(new QSTileView(mContext, new QSIconViewImpl(mContext))); + tileRecord.tileView = spy(new QSTileViewImpl(mContext, new QSIconViewImpl(mContext))); return tileRecord; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java index 59a5f03da530..876acc12f7db 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/carrier/QSCarrierGroupControllerTest.java @@ -37,6 +37,7 @@ import com.android.keyguard.CarrierTextManager; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.statusbar.policy.NetworkController; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; +import com.android.systemui.util.CarrierConfigTracker; import com.android.systemui.utils.leaks.LeakCheckedTest; import com.android.systemui.utils.os.FakeHandler; @@ -66,6 +67,8 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { private CarrierTextManager.Builder mCarrierTextControllerBuilder; @Mock private CarrierTextManager mCarrierTextManager; + @Mock + private CarrierConfigTracker mCarrierConfigTracker; private TestableLooper mTestableLooper; @Before @@ -99,7 +102,7 @@ public class QSCarrierGroupControllerTest extends LeakCheckedTest { mQSCarrierGroupController = new QSCarrierGroupController.Builder( mActivityStarter, handler, TestableLooper.get(this).getLooper(), - mNetworkController, mCarrierTextControllerBuilder, mContext) + mNetworkController, mCarrierTextControllerBuilder, mContext, mCarrierConfigTracker) .setQSCarrierGroup(mQSCarrierGroup) .build(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileBaseViewTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt index 998e070009cc..e5e2e53b0a09 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileBaseViewTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt @@ -16,9 +16,12 @@ package com.android.systemui.qs.tileimpl +import android.content.Context +import android.graphics.drawable.Drawable import android.service.quicksettings.Tile import android.testing.AndroidTestingRunner import android.text.TextUtils +import android.view.View import androidx.test.filters.SmallTest import com.android.systemui.R import com.android.systemui.SysuiTestCase @@ -33,18 +36,24 @@ import org.mockito.MockitoAnnotations @RunWith(AndroidTestingRunner::class) @SmallTest -class QSTileBaseViewTest : SysuiTestCase() { +class QSTileViewImplTest : SysuiTestCase() { @Mock private lateinit var iconView: QSIconView + @Mock + private lateinit var customDrawable: Drawable - private lateinit var tileView: QSTileBaseView + private lateinit var tileView: FakeTileView + private lateinit var customDrawableView: View + private lateinit var chevronView: View @Before fun setUp() { MockitoAnnotations.initMocks(this) - tileView = QSTileBaseView(context, iconView, false) + tileView = FakeTileView(context, iconView, false) + customDrawableView = tileView.requireViewById(R.id.customDrawable) + chevronView = tileView.requireViewById(R.id.chevron) } @Test @@ -54,7 +63,7 @@ class QSTileBaseViewTest : SysuiTestCase() { state.state = Tile.STATE_UNAVAILABLE state.secondaryLabel = testString - tileView.handleStateChanged(state) + tileView.changeState(state) assertThat(state.secondaryLabel as CharSequence).isEqualTo(testString) } @@ -66,7 +75,7 @@ class QSTileBaseViewTest : SysuiTestCase() { state.state = Tile.STATE_INACTIVE state.secondaryLabel = testString - tileView.handleStateChanged(state) + tileView.changeState(state) assertThat(state.secondaryLabel as CharSequence).isEqualTo(testString) } @@ -78,7 +87,7 @@ class QSTileBaseViewTest : SysuiTestCase() { state.state = Tile.STATE_ACTIVE state.secondaryLabel = testString - tileView.handleStateChanged(state) + tileView.changeState(state) assertThat(state.secondaryLabel as CharSequence).isEqualTo(testString) } @@ -89,7 +98,7 @@ class QSTileBaseViewTest : SysuiTestCase() { state.state = Tile.STATE_INACTIVE state.secondaryLabel = "" - tileView.handleStateChanged(state) + tileView.changeState(state) assertThat(TextUtils.isEmpty(state.secondaryLabel)).isTrue() } @@ -100,7 +109,7 @@ class QSTileBaseViewTest : SysuiTestCase() { state.state = Tile.STATE_ACTIVE state.secondaryLabel = "" - tileView.handleStateChanged(state) + tileView.changeState(state) assertThat(TextUtils.isEmpty(state.secondaryLabel)).isTrue() } @@ -111,7 +120,7 @@ class QSTileBaseViewTest : SysuiTestCase() { state.state = Tile.STATE_UNAVAILABLE state.secondaryLabel = "" - tileView.handleStateChanged(state) + tileView.changeState(state) assertThat(state.secondaryLabel as CharSequence).isEqualTo( context.getString(R.string.tile_unavailable) @@ -124,7 +133,7 @@ class QSTileBaseViewTest : SysuiTestCase() { state.state = Tile.STATE_INACTIVE state.secondaryLabel = "" - tileView.handleStateChanged(state) + tileView.changeState(state) assertThat(state.secondaryLabel as CharSequence).isEqualTo( context.getString(R.string.switch_bar_off) @@ -137,10 +146,85 @@ class QSTileBaseViewTest : SysuiTestCase() { state.state = Tile.STATE_ACTIVE state.secondaryLabel = "" - tileView.handleStateChanged(state) + tileView.changeState(state) assertThat(state.secondaryLabel as CharSequence).isEqualTo( context.getString(R.string.switch_bar_on) ) } + + @Test + fun testShowCustomDrawableViewBooleanState() { + val state = QSTile.BooleanState() + state.sideViewCustomDrawable = customDrawable + + tileView.changeState(state) + + assertThat(customDrawableView.visibility).isEqualTo(View.VISIBLE) + assertThat(chevronView.visibility).isEqualTo(View.GONE) + } + + @Test + fun testShowCustomDrawableViewNonBooleanState() { + val state = QSTile.State() + state.sideViewCustomDrawable = customDrawable + + tileView.changeState(state) + + assertThat(customDrawableView.visibility).isEqualTo(View.VISIBLE) + assertThat(chevronView.visibility).isEqualTo(View.GONE) + } + + @Test + fun testShowCustomDrawableViewBooleanStateForceChevron() { + val state = QSTile.BooleanState() + state.sideViewCustomDrawable = customDrawable + state.forceExpandIcon = true + + tileView.changeState(state) + + assertThat(customDrawableView.visibility).isEqualTo(View.VISIBLE) + assertThat(chevronView.visibility).isEqualTo(View.GONE) + } + + @Test + fun testShowChevronNonBooleanState() { + val state = QSTile.State() + + tileView.changeState(state) + + assertThat(customDrawableView.visibility).isEqualTo(View.GONE) + assertThat(chevronView.visibility).isEqualTo(View.VISIBLE) + } + + @Test + fun testShowChevronBooleanStateForcheShow() { + val state = QSTile.BooleanState() + state.forceExpandIcon = true + + tileView.changeState(state) + + assertThat(customDrawableView.visibility).isEqualTo(View.GONE) + assertThat(chevronView.visibility).isEqualTo(View.VISIBLE) + } + + @Test + fun testNoImageShown() { + val state = QSTile.BooleanState() + + tileView.changeState(state) + + assertThat(customDrawableView.visibility).isEqualTo(View.GONE) + assertThat(chevronView.visibility).isEqualTo(View.GONE) + } + + class FakeTileView( + context: Context, + icon: QSIconView, + collapsed: Boolean + ) : QSTileViewImpl(context, icon, collapsed) { + fun changeState(state: QSTile.State) { + handleStateChanged(state) + } + } }
\ No newline at end of file diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java index 5cdad05e43f5..e894b7bb4c77 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/QuickAccessWalletTileTest.java @@ -271,7 +271,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mContext.getString(R.string.wallet_secondary_label_device_locked), state.secondaryLabel); assertNotNull(state.stateDescription); - assertNull(state.sideViewDrawable); + assertNull(state.sideViewCustomDrawable); } @Test @@ -284,10 +284,10 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { assertEquals(Tile.STATE_ACTIVE, state.state); assertEquals( - mContext.getString(R.string.wallet_secondary_label_active), + "•••• 1234", state.secondaryLabel); assertNotNull(state.stateDescription); - assertNotNull(state.sideViewDrawable); + assertNotNull(state.sideViewCustomDrawable); } @@ -303,7 +303,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mContext.getString(R.string.wallet_secondary_label_no_card), state.secondaryLabel); assertNotNull(state.stateDescription); - assertNull(state.sideViewDrawable); + assertNull(state.sideViewCustomDrawable); } @Test @@ -315,7 +315,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { assertEquals(Tile.STATE_UNAVAILABLE, state.state); assertNull(state.stateDescription); - assertNull(state.sideViewDrawable); + assertNull(state.sideViewCustomDrawable); } @Test @@ -332,7 +332,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { assertEquals( mContext.getResources().getDimensionPixelSize(R.dimen.wallet_tile_card_view_height), request.getCardHeightPx()); - assertEquals(2, request.getMaxCards()); + assertEquals(1, request.getMaxCards()); assertThat(mCallbackCaptor.getValue()).isInstanceOf( QuickAccessWalletClient.OnWalletCardsRetrievedCallback.class); } @@ -342,7 +342,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { when(mKeyguardStateController.isUnlocked()).thenReturn(true); setUpWalletCard(/* hasCard= */ true); - assertNotNull(mTile.getState().sideViewDrawable); + assertNotNull(mTile.getState().sideViewCustomDrawable); } @Test @@ -362,7 +362,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mCallbackCaptor.getValue().onWalletCardsRetrieved(responseWithCards); mTestableLooper.processAllMessages(); - assertNotNull(mTile.getState().sideViewDrawable); + assertNotNull(mTile.getState().sideViewCustomDrawable); mTile.handleSetListening(true); @@ -373,14 +373,14 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mCallbackCaptor.getValue().onWalletCardsRetrieved(responseWithoutCards); mTestableLooper.processAllMessages(); - assertNull(mTile.getState().sideViewDrawable); + assertNull(mTile.getState().sideViewCustomDrawable); } @Test public void testQueryCards_noCards_notUpdateSideViewDrawable() { setUpWalletCard(/* hasCard= */ false); - assertNull(mTile.getState().sideViewDrawable); + assertNull(mTile.getState().sideViewCustomDrawable); } @Test @@ -395,7 +395,7 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { mCallbackCaptor.getValue().onWalletCardRetrievalError(error); mTestableLooper.processAllMessages(); - assertNull(mTile.getState().sideViewDrawable); + assertNull(mTile.getState().sideViewCustomDrawable); } @Test @@ -423,6 +423,6 @@ public class QuickAccessWalletTileTest extends SysuiTestCase { private WalletCard createWalletCard(Context context) { PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, mWalletIntent, PendingIntent.FLAG_IMMUTABLE); - return new WalletCard.Builder(CARD_ID, CARD_IMAGE, "description", pendingIntent).build(); + return new WalletCard.Builder(CARD_ID, CARD_IMAGE, "•••• 1234", pendingIntent).build(); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ActionProxyReceiverTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ActionProxyReceiverTest.java index 9a1126f2aa3d..bfe875ccd60d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ActionProxyReceiverTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ActionProxyReceiverTest.java @@ -115,7 +115,8 @@ public class ActionProxyReceiverTest extends SysuiTestCase { actionProxyReceiver.onReceive(mContext, mIntent); verify(mMockScreenshotSmartActions, never()) - .notifyScreenshotAction(any(Context.class), anyString(), anyString(), anyBoolean()); + .notifyScreenshotAction(any(Context.class), anyString(), anyString(), anyBoolean(), + any(Intent.class)); } @Test @@ -128,7 +129,7 @@ public class ActionProxyReceiverTest extends SysuiTestCase { actionProxyReceiver.onReceive(mContext, mIntent); verify(mMockScreenshotSmartActions).notifyScreenshotAction( - mContext, testId, ACTION_TYPE_SHARE, false); + mContext, testId, ACTION_TYPE_SHARE, false, null); } private ActionProxyReceiver constructActionProxyReceiver(boolean withStatusBar) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/DeleteScreenshotReceiverTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/DeleteScreenshotReceiverTest.java index 14c76798e0ef..664c125533d1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/DeleteScreenshotReceiverTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/DeleteScreenshotReceiverTest.java @@ -81,7 +81,8 @@ public class DeleteScreenshotReceiverTest extends SysuiTestCase { verify(mMockExecutor, never()).execute(any(Runnable.class)); verify(mMockScreenshotSmartActions, never()).notifyScreenshotAction( - any(Context.class), any(String.class), any(String.class), anyBoolean()); + any(Context.class), any(String.class), any(String.class), anyBoolean(), + any(Intent.class)); } @Test @@ -112,8 +113,8 @@ public class DeleteScreenshotReceiverTest extends SysuiTestCase { } // ensure smart actions not called by default - verify(mMockScreenshotSmartActions, never()).notifyScreenshotAction( - any(Context.class), any(String.class), any(String.class), anyBoolean()); + verify(mMockScreenshotSmartActions, never()).notifyScreenshotAction(any(Context.class), + any(String.class), any(String.class), anyBoolean(), any(Intent.class)); } @Test @@ -128,8 +129,8 @@ public class DeleteScreenshotReceiverTest extends SysuiTestCase { mDeleteScreenshotReceiver.onReceive(mContext, intent); verify(mMockExecutor).execute(any(Runnable.class)); - verify(mMockScreenshotSmartActions).notifyScreenshotAction( - mContext, testId, ACTION_TYPE_DELETE, false); + verify(mMockScreenshotSmartActions).notifyScreenshotAction(mContext, testId, + ACTION_TYPE_DELETE, false, null); } private static ContentValues getFakeContentValues() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/SmartActionsReceiverTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/SmartActionsReceiverTest.java index 6f3a4a17a4a5..011e6b7b1071 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/SmartActionsReceiverTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/SmartActionsReceiverTest.java @@ -23,6 +23,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.app.PendingIntent; import android.content.Intent; @@ -65,12 +66,14 @@ public class SmartActionsReceiverTest extends SysuiTestCase { String testActionType = "testActionType"; mIntent.putExtra(EXTRA_ID, testId); mIntent.putExtra(EXTRA_ACTION_TYPE, testActionType); + Intent intent = new Intent(); + when(mMockPendingIntent.getIntent()).thenReturn(intent); mSmartActionsReceiver.onReceive(mContext, mIntent); verify(mMockPendingIntent).send( eq(mContext), eq(0), isNull(), isNull(), isNull(), isNull(), any(Bundle.class)); verify(mMockScreenshotSmartActions).notifyScreenshotAction( - mContext, testId, testActionType, true); + mContext, testId, testActionType, true, intent); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java index 5fc01ccd96b4..6459c0c9f441 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java @@ -190,7 +190,7 @@ public class NotificationEntryManagerTest extends SysuiTestCase { mEntryManager = new NotificationEntryManager( mLogger, mGroupManager, - new NotificationRankingManager( + () -> new NotificationRankingManager( () -> mNotificationMediaManager, mGroupManager, mHeadsUpManager, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java index 950b95f41542..7b0c06736979 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java @@ -181,7 +181,7 @@ public class NotificationEntryManagerInflationTest extends SysuiTestCase { mEntryManager = new NotificationEntryManager( mock(NotificationEntryManagerLogger.class), mGroupMembershipManager, - new NotificationRankingManager( + () -> new NotificationRankingManager( () -> mock(NotificationMediaManager.class), mGroupMembershipManager, mHeadsUpManager, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index b2487e8e2444..b3d52b80c815 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -178,7 +178,7 @@ public class StatusBarTest extends SysuiTestCase { @Mock private NotificationsController mNotificationsController; @Mock private LightBarController mLightBarController; - @Mock private StatusBarIconController mStatusBarIconController; + @Mock private StatusBarSignalPolicy mStatusBarSignalPolicy; @Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Mock private KeyguardStateController mKeyguardStateController; @Mock private KeyguardIndicationController mKeyguardIndicationController; @@ -356,7 +356,7 @@ public class StatusBarTest extends SysuiTestCase { mLightBarController, mAutoHideController, mKeyguardUpdateMonitor, - mStatusBarIconController, + mStatusBarSignalPolicy, mPulseExpansionHandler, mNotificationWakeUpCoordinator, mKeyguardBypassController, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallChronometerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallChronometerTest.kt new file mode 100644 index 000000000000..0e77bb36d68f --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallChronometerTest.kt @@ -0,0 +1,161 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.phone.ongoingcall + +import android.testing.AndroidTestingRunner +import android.testing.TestableLooper +import android.view.LayoutInflater +import android.view.View +import android.widget.LinearLayout +import androidx.test.filters.SmallTest +import com.android.systemui.R +import com.android.systemui.SysuiTestCase +import com.google.common.truth.Truth.assertThat +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith + +private const val TEXT_VIEW_MAX_WIDTH = 400 + +// When a [Chronometer] is created, it starts off with "00:00" as its text. +private const val INITIAL_TEXT = "00:00" +private const val LARGE_TEXT = "00:000" +private const val XL_TEXT = "00:0000" + +@SmallTest +@RunWith(AndroidTestingRunner::class) +@TestableLooper.RunWithLooper +class OngoingCallChronometerTest : SysuiTestCase() { + + private lateinit var textView: OngoingCallChronometer + private lateinit var doesNotFitText: String + + @Before + fun setUp() { + allowTestableLooperAsMainThread() + TestableLooper.get(this).runWithLooper { + val chipView = LayoutInflater.from(mContext) + .inflate(R.layout.ongoing_call_chip, null) as LinearLayout + textView = chipView.findViewById(R.id.ongoing_call_chip_time)!! + measureTextView() + calculateDoesNotFixText() + } + } + + @Test + fun verifyTextSizes() { + val initialTextLength = textView.paint.measureText(INITIAL_TEXT) + val largeTextLength = textView.paint.measureText(LARGE_TEXT) + val xlTextLength = textView.paint.measureText(XL_TEXT) + + // Assert that our test text sizes do what we expect them to do in the rest of the tests. + assertThat(initialTextLength).isLessThan(TEXT_VIEW_MAX_WIDTH) + assertThat(largeTextLength).isLessThan(TEXT_VIEW_MAX_WIDTH) + assertThat(xlTextLength).isLessThan(TEXT_VIEW_MAX_WIDTH) + assertThat(textView.paint.measureText(doesNotFitText)).isGreaterThan(TEXT_VIEW_MAX_WIDTH) + + assertThat(largeTextLength).isGreaterThan(initialTextLength) + assertThat(xlTextLength).isGreaterThan(largeTextLength) + } + + @Test + fun onMeasure_initialTextFitsInSpace_textDisplayed() { + assertThat(textView.measuredWidth).isGreaterThan(0) + } + + @Test + fun onMeasure_newTextLargerThanPreviousText_widthGetsLarger() { + val initialTextLength = textView.measuredWidth + + setTextAndMeasure(LARGE_TEXT) + + assertThat(textView.measuredWidth).isGreaterThan(initialTextLength) + } + + @Test + fun onMeasure_newTextSmallerThanPreviousText_widthDoesNotGetSmaller() { + setTextAndMeasure(XL_TEXT) + val xlWidth = textView.measuredWidth + + setTextAndMeasure(LARGE_TEXT) + + assertThat(textView.measuredWidth).isEqualTo(xlWidth) + } + + @Test + fun onMeasure_textDoesNotFit_textHidden() { + setTextAndMeasure(doesNotFitText) + + assertThat(textView.measuredWidth).isEqualTo(0) + } + + @Test + fun onMeasure_newTextFitsButPreviousTextDidNot_textHidden() { + setTextAndMeasure(doesNotFitText) + + setTextAndMeasure(LARGE_TEXT) + + assertThat(textView.measuredWidth).isEqualTo(0) + } + + @Test + fun resetBase_hadLongerTextThenSetBaseThenShorterText_widthIsShort() { + setTextAndMeasure(XL_TEXT) + val xlWidth = textView.measuredWidth + + textView.base = 0L + setTextAndMeasure(INITIAL_TEXT) + + assertThat(textView.measuredWidth).isLessThan(xlWidth) + assertThat(textView.measuredWidth).isGreaterThan(0) + } + + @Test + fun setBase_wasHidingTextThenSetBaseThenShorterText_textShown() { + setTextAndMeasure(doesNotFitText) + + textView.base = 0L + setTextAndMeasure(INITIAL_TEXT) + + assertThat(textView.measuredWidth).isGreaterThan(0) + } + + private fun setTextAndMeasure(text: String) { + textView.text = text + measureTextView() + } + + private fun measureTextView() { + textView.measure( + View.MeasureSpec.makeMeasureSpec(TEXT_VIEW_MAX_WIDTH, View.MeasureSpec.AT_MOST), + View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED) + ) + } + + /** + * Calculates what [doesNotFitText] should be. Needs to be done dynamically because different + * devices have different densities, which means the textView can fit different amounts of + * characters. + */ + private fun calculateDoesNotFixText() { + var currentText = XL_TEXT + "0" + while (textView.paint.measureText(currentText) <= TEXT_VIEW_MAX_WIDTH) { + currentText += "0" + } + doesNotFitText = currentText + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt index c244290fdacd..896e33073cc3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt @@ -16,6 +16,9 @@ package com.android.systemui.statusbar.phone.ongoingcall +import android.app.ActivityManager +import android.app.IActivityManager +import android.app.IUidObserver import android.app.Notification import android.app.PendingIntent import android.app.Person @@ -34,31 +37,46 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener +import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.time.FakeSystemClock +import com.android.systemui.util.mockito.any import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor -import org.mockito.ArgumentMatchers.anyBoolean +import org.mockito.ArgumentMatchers.* import org.mockito.Mock +import org.mockito.Mockito.`when` +import org.mockito.Mockito.eq import org.mockito.Mockito.mock -import org.mockito.Mockito.verify import org.mockito.Mockito.never import org.mockito.Mockito.times -import org.mockito.Mockito.`when` +import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations +private const val CALL_UID = 900 + +// A process state that represents the process being visible to the user. +private const val PROC_STATE_VISIBLE = ActivityManager.PROCESS_STATE_TOP + +// A process state that represents the process being invisible to the user. +private const val PROC_STATE_INVISIBLE = ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE + @SmallTest @RunWith(AndroidTestingRunner::class) @TestableLooper.RunWithLooper class OngoingCallControllerTest : SysuiTestCase() { + private val clock = FakeSystemClock() + private val mainExecutor = FakeExecutor(clock) + private lateinit var controller: OngoingCallController private lateinit var notifCollectionListener: NotifCollectionListener @Mock private lateinit var mockOngoingCallListener: OngoingCallListener @Mock private lateinit var mockActivityStarter: ActivityStarter + @Mock private lateinit var mockIActivityManager: IActivityManager private lateinit var chipView: LinearLayout @@ -76,7 +94,12 @@ class OngoingCallControllerTest : SysuiTestCase() { val notificationCollection = mock(CommonNotifCollection::class.java) controller = OngoingCallController( - notificationCollection, featureFlags, FakeSystemClock(), mockActivityStarter) + notificationCollection, + featureFlags, + clock, + mockActivityStarter, + mainExecutor, + mockIActivityManager) controller.init() controller.addCallback(mockOngoingCallListener) controller.setChipView(chipView) @@ -84,34 +107,37 @@ class OngoingCallControllerTest : SysuiTestCase() { val collectionListenerCaptor = ArgumentCaptor.forClass(NotifCollectionListener::class.java) verify(notificationCollection).addCollectionListener(collectionListenerCaptor.capture()) notifCollectionListener = collectionListenerCaptor.value!! + + `when`(mockIActivityManager.getUidProcessState(eq(CALL_UID), nullable(String::class.java))) + .thenReturn(PROC_STATE_INVISIBLE) } @Test fun onEntryUpdated_isOngoingCallNotif_listenerNotifiedWithRightCallTime() { notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry()) - verify(mockOngoingCallListener).onOngoingCallStarted(anyBoolean()) + verify(mockOngoingCallListener).onOngoingCallStateChanged(anyBoolean()) } @Test fun onEntryUpdated_notOngoingCallNotif_listenerNotNotified() { notifCollectionListener.onEntryUpdated(createNotCallNotifEntry()) - verify(mockOngoingCallListener, never()).onOngoingCallStarted(anyBoolean()) + verify(mockOngoingCallListener, never()).onOngoingCallStateChanged(anyBoolean()) } @Test fun onEntryRemoved_ongoingCallNotif_listenerNotified() { notifCollectionListener.onEntryRemoved(createOngoingCallNotifEntry(), REASON_USER_STOPPED) - verify(mockOngoingCallListener).onOngoingCallEnded(anyBoolean()) + verify(mockOngoingCallListener).onOngoingCallStateChanged(anyBoolean()) } @Test fun onEntryRemoved_notOngoingCallNotif_listenerNotNotified() { notifCollectionListener.onEntryRemoved(createNotCallNotifEntry(), REASON_USER_STOPPED) - verify(mockOngoingCallListener, never()).onOngoingCallEnded(anyBoolean()) + verify(mockOngoingCallListener, never()).onOngoingCallStateChanged(anyBoolean()) } @Test @@ -120,13 +146,26 @@ class OngoingCallControllerTest : SysuiTestCase() { } @Test - fun hasOngoingCall_ongoingCallNotifSentAndChipViewSet_returnsTrue() { + fun hasOngoingCall_ongoingCallNotifSentAndCallAppNotVisible_returnsTrue() { + `when`(mockIActivityManager.getUidProcessState(eq(CALL_UID), nullable(String::class.java))) + .thenReturn(PROC_STATE_INVISIBLE) + notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry()) assertThat(controller.hasOngoingCall()).isTrue() } @Test + fun hasOngoingCall_ongoingCallNotifSentButCallAppVisible_returnsFalse() { + `when`(mockIActivityManager.getUidProcessState(eq(CALL_UID), nullable(String::class.java))) + .thenReturn(PROC_STATE_VISIBLE) + + notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry()) + + assertThat(controller.hasOngoingCall()).isFalse() + } + + @Test fun hasOngoingCall_ongoingCallNotifSentButInvalidChipView_returnsFalse() { val invalidChipView = LinearLayout(context) controller.setChipView(invalidChipView) @@ -169,7 +208,52 @@ class OngoingCallControllerTest : SysuiTestCase() { // Verify the listener was notified once for the initial call and again when the new view // was set. - verify(mockOngoingCallListener, times(2)).onOngoingCallStarted(anyBoolean()) + verify(mockOngoingCallListener, times(2)) + .onOngoingCallStateChanged(anyBoolean()) + } + + @Test + fun callProcessChangesToVisible_listenerNotified() { + // Start the call while the process is invisible. + `when`(mockIActivityManager.getUidProcessState(eq(CALL_UID), nullable(String::class.java))) + .thenReturn(PROC_STATE_INVISIBLE) + notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry()) + + val captor = ArgumentCaptor.forClass(IUidObserver.Stub::class.java) + verify(mockIActivityManager).registerUidObserver( + captor.capture(), any(), any(), nullable(String::class.java)) + val uidObserver = captor.value + + // Update the process to visible. + uidObserver.onUidStateChanged(CALL_UID, PROC_STATE_VISIBLE, 0, 0) + mainExecutor.advanceClockToLast() + mainExecutor.runAllReady(); + + // Once for when the call was started, and another time when the process visibility changes. + verify(mockOngoingCallListener, times(2)) + .onOngoingCallStateChanged(anyBoolean()) + } + + @Test + fun callProcessChangesToInvisible_listenerNotified() { + // Start the call while the process is visible. + `when`(mockIActivityManager.getUidProcessState(eq(CALL_UID), nullable(String::class.java))) + .thenReturn(PROC_STATE_VISIBLE) + notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry()) + + val captor = ArgumentCaptor.forClass(IUidObserver.Stub::class.java) + verify(mockIActivityManager).registerUidObserver( + captor.capture(), any(), any(), nullable(String::class.java)) + val uidObserver = captor.value + + // Update the process to invisible. + uidObserver.onUidStateChanged(CALL_UID, PROC_STATE_INVISIBLE, 0, 0) + mainExecutor.advanceClockToLast() + mainExecutor.runAllReady(); + + // Once for when the call was started, and another time when the process visibility changes. + verify(mockOngoingCallListener, times(2)) + .onOngoingCallStateChanged(anyBoolean()) } private fun createOngoingCallNotifEntry(): NotificationEntry { @@ -179,6 +263,7 @@ class OngoingCallControllerTest : SysuiTestCase() { val contentIntent = mock(PendingIntent::class.java) `when`(contentIntent.intent).thenReturn(mock(Intent::class.java)) notificationEntryBuilder.modifyNotification(context).setContentIntent(contentIntent) + notificationEntryBuilder.setUid(CALL_UID) return notificationEntryBuilder.build() } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index f33c9e88c347..abc66dbca2a2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -76,6 +76,7 @@ import com.android.systemui.statusbar.policy.NetworkController.IconState; import com.android.systemui.statusbar.policy.NetworkController.MobileDataIndicators; import com.android.systemui.statusbar.policy.NetworkController.SignalCallback; import com.android.systemui.telephony.TelephonyListenerManager; +import com.android.systemui.util.CarrierConfigTracker; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; @@ -124,6 +125,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { protected DeviceProvisionedListener mUserCallback; protected Instrumentation mInstrumentation; protected DemoModeController mDemoModeController; + protected CarrierConfigTracker mCarrierConfigTracker; protected FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); protected int mSubId; @@ -174,6 +176,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { mMockBd = mock(BroadcastDispatcher.class); mMockNsm = mock(NetworkScoreManager.class); mMockSubDefaults = mock(SubscriptionDefaults.class); + mCarrierConfigTracker = mock(CarrierConfigTracker.class); mNetCapabilities = new NetworkCapabilities(); when(mMockTm.isDataCapable()).thenReturn(true); when(mMockTm.createForSubscriptionId(anyInt())).thenReturn(mMockTm); @@ -231,7 +234,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase { mMockSubDefaults, mMockProvisionController, mMockBd, - mDemoModeController); + mDemoModeController, + mCarrierConfigTracker); setupNetworkController(); // Trigger blank callbacks to always get the current state (some tests don't trigger @@ -298,7 +302,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase { mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, - mock(DeviceProvisionedController.class), mMockBd, mDemoModeController); + mock(DeviceProvisionedController.class), mMockBd, mDemoModeController, + mCarrierConfigTracker); setupNetworkController(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java index 6219fafc98db..09554e717d3d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java @@ -21,6 +21,7 @@ import android.testing.TestableLooper.RunWithLooper; import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.net.DataUsageController; +import com.android.systemui.util.CarrierConfigTracker; import org.junit.Test; import org.junit.runner.RunWith; @@ -111,7 +112,8 @@ public class NetworkControllerDataTest extends NetworkControllerBaseTest { mMockNsm, mMockSm, mConfig, Looper.getMainLooper(), mFakeExecutor, mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, - mock(DeviceProvisionedController.class), mMockBd, mDemoModeController); + mock(DeviceProvisionedController.class), mMockBd, mDemoModeController, + mock(CarrierConfigTracker.class)); setupNetworkController(); setupDefaultSignal(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java index 8d3e403f1189..1e7801d63f75 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java @@ -41,6 +41,7 @@ import com.android.settingslib.graph.SignalDrawable; import com.android.settingslib.mobile.TelephonyIcons; import com.android.settingslib.net.DataUsageController; import com.android.systemui.R; +import com.android.systemui.util.CarrierConfigTracker; import org.junit.Test; import org.junit.runner.RunWith; @@ -66,7 +67,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { Looper.getMainLooper(), mFakeExecutor, mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd, - mDemoModeController); + mDemoModeController, mock(CarrierConfigTracker.class)); setupNetworkController(); verifyLastMobileDataIndicators(false, -1, 0); @@ -86,7 +87,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { Looper.getMainLooper(), mFakeExecutor, mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd, - mDemoModeController); + mDemoModeController, mock(CarrierConfigTracker.class)); mNetworkController.registerListeners(); // Wait for the main looper to execute the previous command @@ -154,7 +155,7 @@ public class NetworkControllerSignalTest extends NetworkControllerBaseTest { Looper.getMainLooper(), mFakeExecutor, mCallbackHandler, mock(AccessPointControllerImpl.class), mock(DataUsageController.class), mMockSubDefaults, mock(DeviceProvisionedController.class), mMockBd, - mDemoModeController); + mDemoModeController, mock(CarrierConfigTracker.class)); setupNetworkController(); // No Subscriptions. diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java index bfb98deda452..687ca601bd6e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerWifiTest.java @@ -269,9 +269,9 @@ public class NetworkControllerWifiTest extends NetworkControllerBaseTest { } // Set the ImsType to be IMS_TYPE_WWAN setImsType(1); + setupDefaultSignal(); for (int testStrength = 0; testStrength < CellSignalStrength.getNumSignalStrengthLevels(); testStrength++) { - setupDefaultSignal(); setLevel(testStrength); verifyLastCallStrength(TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[testStrength]); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java index a60baa54541e..dd8354dedafd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java @@ -42,6 +42,8 @@ import android.widget.ImageButton; import androidx.test.filters.SmallTest; +import com.android.internal.logging.UiEventLogger; +import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; @@ -76,6 +78,7 @@ public class RemoteInputViewTest extends SysuiTestCase { @Mock private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler; @Mock private LightBarController mLightBarController; private BlockingQueueIntentReceiver mReceiver; + private final UiEventLoggerFake mUiEventLoggerFake = new UiEventLoggerFake(); private RemoteInputView mView; @Before @@ -87,6 +90,7 @@ public class RemoteInputViewTest extends SysuiTestCase { mRemoteInputQuickSettingsDisabler); mDependency.injectTestDependency(LightBarController.class, mLightBarController); + mDependency.injectTestDependency(UiEventLogger.class, mUiEventLoggerFake); mDependency.injectMockDependency(NotificationRemoteInputManager.class); mReceiver = new BlockingQueueIntentReceiver(); @@ -205,4 +209,33 @@ public class RemoteInputViewTest extends SysuiTestCase { view.setVisibility(View.INVISIBLE); view.setVisibility(View.VISIBLE); } + + @Test + public void testUiEventLogging_openAndSend() throws Exception { + NotificationTestHelper helper = new NotificationTestHelper( + mContext, + mDependency, + TestableLooper.get(this)); + ExpandableNotificationRow row = helper.createRow(); + RemoteInputView view = RemoteInputView.inflate(mContext, null, row.getEntry(), mController); + + setTestPendingIntent(view); + + // Open view, send a reply + view.focus(); + EditText editText = view.findViewById(R.id.remote_input_text); + editText.setText(TEST_REPLY); + ImageButton sendButton = view.findViewById(R.id.remote_input_send); + sendButton.performClick(); + + mReceiver.waitForIntent(); + + assertEquals(2, mUiEventLoggerFake.numLogs()); + assertEquals( + RemoteInputView.NotificationRemoteInputEvent.NOTIFICATION_REMOTE_INPUT_OPEN.getId(), + mUiEventLoggerFake.eventId(0)); + assertEquals( + RemoteInputView.NotificationRemoteInputEvent.NOTIFICATION_REMOTE_INPUT_SEND.getId(), + mUiEventLoggerFake.eventId(1)); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/concurrency/FakeThreadFactory.java b/packages/SystemUI/tests/src/com/android/systemui/util/concurrency/FakeThreadFactory.java index 8c9248222014..ce71ac880b07 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/concurrency/FakeThreadFactory.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/concurrency/FakeThreadFactory.java @@ -16,6 +16,8 @@ package com.android.systemui.util.concurrency; +import android.os.Looper; + import java.util.concurrent.Executor; /** @@ -37,4 +39,9 @@ public class FakeThreadFactory implements ThreadFactory { public DelayableExecutor buildDelayableExecutorOnNewThread(String threadName) { return mFakeExecutor; } + + @Override + public DelayableExecutor buildDelayableExecutorOnLooper(Looper looper) { + return mFakeExecutor; + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java index 6f6ef7261020..ac5da17c6358 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wallet/ui/WalletScreenControllerTest.java @@ -20,12 +20,13 @@ import static android.view.View.GONE; import static android.view.View.VISIBLE; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import android.app.PendingIntent; @@ -50,6 +51,7 @@ import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.plugins.ActivityStarter; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -72,7 +74,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { private static final int MAX_CARDS = 10; private static final int CARD_CAROUSEL_WIDTH = 10; - private static final String CARD_ID = "card_id"; + private static final String CARD_ID_1 = "card_id_1"; + private static final String CARD_ID_2 = "card_id_2"; private static final CharSequence SHORTCUT_SHORT_LABEL = "View all"; private static final CharSequence SHORTCUT_LONG_LABEL = "Add a payment method"; private static final CharSequence SERVICE_LABEL = "Wallet app"; @@ -89,6 +92,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { @Mock UserTracker mUserTracker; @Mock + FalsingManager mFalsingManager; + @Mock KeyguardStateController mKeyguardStateController; @Captor ArgumentCaptor<Intent> mIntentCaptor; @@ -122,11 +127,12 @@ public class WalletScreenControllerTest extends SysuiTestCase { MoreExecutors.directExecutor(), new Handler(mTestableLooper.getLooper()), mUserTracker, + mFalsingManager, mKeyguardStateController); } @Test - public void queryCards_hasCards_showCarousel() { + public void queryCards_hasCards_showCarousel_activeCard() { GetWalletCardsResponse response = new GetWalletCardsResponse( Collections.singletonList(createWalletCard(mContext)), 0); @@ -145,6 +151,33 @@ public class WalletScreenControllerTest extends SysuiTestCase { mTestableLooper.processAllMessages(); assertEquals(VISIBLE, mWalletView.getCardCarouselContainer().getVisibility()); + assertEquals("Hold to reader", mWalletView.getCardLabel().getText().toString()); + assertEquals(GONE, mWalletView.getErrorView().getVisibility()); + } + + @Test + public void queryCards_hasCards_showCarousel_pendingActivationCard_parseLabel() { + GetWalletCardsResponse response = + new GetWalletCardsResponse( + Collections.singletonList(createNonActiveWalletCard(mContext)), 0); + + mController.queryWalletCards(); + mTestableLooper.processAllMessages(); + + verify(mWalletClient).getWalletCards(any(), any(), mCallbackCaptor.capture()); + + QuickAccessWalletClient.OnWalletCardsRetrievedCallback callback = + mCallbackCaptor.getValue(); + + assertEquals(mController, callback); + + callback.onWalletCardsRetrieved(response); + mTestableLooper.processAllMessages(); + + assertEquals(VISIBLE, mWalletView.getCardCarouselContainer().getVisibility()); + assertEquals("Not set up", mWalletView.getCardLabel().getText().toString()); + assertEquals("Verify now", mWalletView.getActionButton().getText().toString()); + assertEquals(VISIBLE, mWalletView.getActionButton().getVisibility()); assertEquals(GONE, mWalletView.getErrorView().getVisibility()); } @@ -185,7 +218,7 @@ public class WalletScreenControllerTest extends SysuiTestCase { } @Test - public void onWalletServiceEvent_nfcPaymentStart_dismiss() { + public void onWalletServiceEvent_nfcPaymentStart_doNothing() { WalletServiceEvent event = new WalletServiceEvent(WalletServiceEvent.TYPE_NFC_PAYMENT_STARTED); @@ -193,8 +226,8 @@ public class WalletScreenControllerTest extends SysuiTestCase { mTestableLooper.processAllMessages(); assertNull(mController.mSelectedCardId); - assertTrue(mController.mIsDismissed); - verify(mWalletClient).notifyWalletDismissed(); + assertFalse(mController.mIsDismissed); + verifyZeroInteractions(mWalletClient); } @Test @@ -228,14 +261,14 @@ public class WalletScreenControllerTest extends SysuiTestCase { @Test public void onCardSelected() { - mController.onCardSelected(createCardViewInfo()); + mController.onCardSelected(createCardViewInfo(createWalletCard(mContext))); - assertEquals(CARD_ID, mController.mSelectedCardId); + assertEquals(CARD_ID_1, mController.mSelectedCardId); } @Test public void onCardClicked_startIntent() { - WalletCardViewInfo walletCardViewInfo = createCardViewInfo(); + WalletCardViewInfo walletCardViewInfo = createCardViewInfo(createWalletCard(mContext)); mController.onCardClicked(walletCardViewInfo); @@ -278,18 +311,30 @@ public class WalletScreenControllerTest extends SysuiTestCase { assertEquals(GONE, mWalletView.getVisibility()); } + private WalletCard createNonActiveWalletCard(Context context) { + PendingIntent pendingIntent = + PendingIntent.getActivity(context, 0, mWalletIntent, PendingIntent.FLAG_IMMUTABLE); + return new WalletCard.Builder(CARD_ID_2, createIcon(), "•••• 5678", pendingIntent) + .setCardIcon(createIcon()) + .setCardLabel("Not set up\nVerify now") + .build(); + } + private WalletCard createWalletCard(Context context) { PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, mWalletIntent, PendingIntent.FLAG_IMMUTABLE); - return new WalletCard.Builder(CARD_ID, createIcon(), "description", pendingIntent).build(); + return new WalletCard.Builder(CARD_ID_1, createIcon(), "•••• 1234", pendingIntent) + .setCardIcon(createIcon()) + .setCardLabel("Hold to reader") + .build(); } private static Icon createIcon() { return Icon.createWithBitmap(Bitmap.createBitmap(70, 44, Bitmap.Config.ARGB_8888)); } - private WalletCardViewInfo createCardViewInfo() { + private WalletCardViewInfo createCardViewInfo(WalletCard walletCard) { return new WalletScreenController.QAWalletCardViewInfo( - mContext, createWalletCard(mContext)); + mContext, walletCard); } } diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index d922d2b06c89..3bb6e0888640 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -1839,6 +1839,8 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku // For a full update we replace the RemoteViews completely. widget.views = views; } + widget.views.setProviderInstanceId(UPDATE_COUNTER.get()); + int memoryUsage; if ((UserHandle.getAppId(Binder.getCallingUid()) != Process.SYSTEM_UID) && (widget.views != null) && @@ -1939,6 +1941,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku || widget.host.callbacks == null || widget.host.zombie) { return; } + if (updateViews != null) { + updateViews.setProviderInstanceId(requestId); + } SomeArgs args = SomeArgs.obtain(); args.arg1 = widget.host; diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 8e12cb207232..ae14e37c8329 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -4789,6 +4789,7 @@ public class ConnectivityService extends IConnectivityManager.Stub (Pair<ProfileNetworkPreferences.Preference, IOnCompleteListener>) msg.obj; handleSetProfileNetworkPreference(arg.first, arg.second); + break; } case EVENT_REPORT_NETWORK_ACTIVITY: mNetworkActivityTracker.handleReportNetworkActivity(); diff --git a/services/core/java/com/android/server/IntentResolver.java b/services/core/java/com/android/server/IntentResolver.java index 906702866889..047aae772f44 100644 --- a/services/core/java/com/android/server/IntentResolver.java +++ b/services/core/java/com/android/server/IntentResolver.java @@ -839,33 +839,45 @@ public abstract class IntentResolver<F, R extends Object> { } }; + // Method to take the snapshot of an F. + protected F snapshot(F f) { + return f; + } + // Helper method to copy some of the maps. - private static <E> void copyInto(ArrayMap<String, E[]> l, ArrayMap<String, E[]> r) { + protected void copyInto(ArrayMap<String, F[]> l, ArrayMap<String, F[]> r) { final int end = r.size(); + l.clear(); l.ensureCapacity(end); for (int i = 0; i < end; i++) { - final E[] val = r.valueAt(i); + final F[] val = r.valueAt(i); final String key = r.keyAt(i); - l.put(key, Arrays.copyOf(val, val.length)); + final F[] newval = Arrays.copyOf(val, val.length); + for (int j = 0; j < newval.length; j++) { + newval[j] = snapshot(newval[j]); + } + l.put(key, newval); + } + } + + protected void copyInto(ArraySet<F> l, ArraySet<F> r) { + l.clear(); + final int end = r.size(); + l.ensureCapacity(end); + for (int i = 0; i < end; i++) { + l.append(snapshot(r.valueAt(i))); } } // Make <this> a copy of <orig>. The presumption is that <this> is empty but all // arrays are cleared out explicitly, just to be sure. protected void copyFrom(IntentResolver orig) { - mFilters.clear(); - mFilters.addAll(orig.mFilters); - mTypeToFilter.clear(); + copyInto(mFilters, orig.mFilters); copyInto(mTypeToFilter, orig.mTypeToFilter); - mBaseTypeToFilter.clear(); copyInto(mBaseTypeToFilter, orig.mBaseTypeToFilter); - mWildTypeToFilter.clear(); copyInto(mWildTypeToFilter, orig.mWildTypeToFilter); - mSchemeToFilter.clear(); copyInto(mSchemeToFilter, orig.mSchemeToFilter); - mActionToFilter.clear(); copyInto(mActionToFilter, orig.mActionToFilter); - mTypedActionToFilter.clear(); copyInto(mTypedActionToFilter, orig.mTypedActionToFilter); } diff --git a/services/core/java/com/android/server/OWNERS b/services/core/java/com/android/server/OWNERS index f27e7ff2cc2f..95dc66727730 100644 --- a/services/core/java/com/android/server/OWNERS +++ b/services/core/java/com/android/server/OWNERS @@ -31,8 +31,9 @@ per-file GestureLauncherService.java = file:platform/packages/apps/EmergencyInfo per-file IpSecService.java = file:/services/core/java/com/android/server/net/OWNERS per-file MmsServiceBroker.java = file:/telephony/OWNERS per-file NetIdManager.java = file:/services/core/java/com/android/server/net/OWNERS -per-file PackageWatchdog.java = file:/services/core/java/com/android/server/rollback/OWNERS +per-file PackageWatchdog.java, RescueParty.java = file:/services/core/java/com/android/server/rollback/OWNERS per-file PinnerService.java = file:/apct-tests/perftests/OWNERS +per-file RescueParty.java = fdunlap@google.com, shuc@google.com per-file TelephonyRegistry.java = file:/telephony/OWNERS per-file UiModeManagerService.java = file:/packages/SystemUI/OWNERS per-file VcnManagementService.java = file:/services/core/java/com/android/server/vcn/OWNERS diff --git a/services/core/java/com/android/server/SystemServerInitThreadPool.java b/services/core/java/com/android/server/SystemServerInitThreadPool.java index c23f1cab0614..ed25452cf402 100644 --- a/services/core/java/com/android/server/SystemServerInitThreadPool.java +++ b/services/core/java/com/android/server/SystemServerInitThreadPool.java @@ -38,7 +38,7 @@ import java.util.concurrent.TimeUnit; /** * Thread pool used during initialization of system server. * - * <p>System services can {@link #submit(Runnable)} tasks for execution during boot. + * <p>System services can {@link #submit(Runnable, String)} tasks for execution during boot. * The pool will be shut down after {@link SystemService#PHASE_BOOT_COMPLETED}. * * <p>New tasks <em>should not</em> be submitted afterwards. diff --git a/services/core/java/com/android/server/SystemService.java b/services/core/java/com/android/server/SystemService.java index 6c81de6af402..39321bfe6435 100644 --- a/services/core/java/com/android/server/SystemService.java +++ b/services/core/java/com/android/server/SystemService.java @@ -70,12 +70,20 @@ public abstract class SystemService { /** @hide */ protected static final boolean DEBUG_USER = false; - /* + /** * The earliest boot phase the system send to system services on boot. */ public static final int PHASE_WAIT_FOR_DEFAULT_DISPLAY = 100; /** + * Boot phase that blocks on SensorService availability. The service gets started + * asynchronously since it may take awhile to actually finish initializing. + * + * @hide + */ + public static final int PHASE_WAIT_FOR_SENSOR_SERVICE = 200; + + /** * After receiving this boot phase, services can obtain lock settings data. */ public static final int PHASE_LOCK_SETTINGS_READY = 480; diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java index ab3060ae4bce..dc8f84a2f243 100644 --- a/services/core/java/com/android/server/UiModeManagerService.java +++ b/services/core/java/com/android/server/UiModeManagerService.java @@ -33,7 +33,7 @@ import android.app.Activity; import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.app.AlarmManager; -import android.app.IOnProjectionStateChangeListener; +import android.app.IOnProjectionStateChangedListener; import android.app.IUiModeManager; import android.app.Notification; import android.app.NotificationManager; @@ -181,7 +181,7 @@ final class UiModeManagerService extends SystemService { private SparseArray<List<ProjectionHolder>> mProjectionHolders; @GuardedBy("mLock") @Nullable - private SparseArray<RemoteCallbackList<IOnProjectionStateChangeListener>> mProjectionListeners; + private SparseArray<RemoteCallbackList<IOnProjectionStateChangedListener>> mProjectionListeners; public UiModeManagerService(Context context) { this(context, /* setupWizardComplete= */ false, /* tm= */ null, new Injector()); @@ -993,11 +993,11 @@ final class UiModeManagerService extends SystemService { } } - public void addOnProjectionStateChangeListener(IOnProjectionStateChangeListener listener, + public void addOnProjectionStateChangedListener(IOnProjectionStateChangedListener listener, @UiModeManager.ProjectionType int projectionType) { getContext().enforceCallingOrSelfPermission( android.Manifest.permission.READ_PROJECTION_STATE, - "registerProjectionStateListener"); + "addOnProjectionStateChangedListener"); if (projectionType == PROJECTION_TYPE_NONE) { return; } @@ -1027,11 +1027,11 @@ final class UiModeManagerService extends SystemService { } - public void removeOnProjectionStateChangeListener( - IOnProjectionStateChangeListener listener) { + public void removeOnProjectionStateChangedListener( + IOnProjectionStateChangedListener listener) { getContext().enforceCallingOrSelfPermission( android.Manifest.permission.READ_PROJECTION_STATE, - "unregisterProjectionStateListener"); + "removeOnProjectionStateChangedListener"); synchronized (mLock) { if (mProjectionListeners != null) { for (int i = 0; i < mProjectionListeners.size(); ++i) { @@ -1191,7 +1191,7 @@ final class UiModeManagerService extends SystemService { // Every listener that is affected must be called back with all the state they are // listening for. if ((changedProjectionType & listenerProjectionType) != 0) { - RemoteCallbackList<IOnProjectionStateChangeListener> listeners = + RemoteCallbackList<IOnProjectionStateChangedListener> listeners = mProjectionListeners.valueAt(i); List<String> packageNames = new ArrayList<>(); @UiModeManager.ProjectionType int activeProjectionTypes = diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java index 57254c1b9225..2bb90846d292 100644 --- a/services/core/java/com/android/server/VcnManagementService.java +++ b/services/core/java/com/android/server/VcnManagementService.java @@ -87,6 +87,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Objects; +import java.util.Set; import java.util.concurrent.TimeUnit; /** @@ -429,7 +430,9 @@ public class VcnManagementService extends IVcnManagementService.Stub { public void onNewSnapshot(@NonNull TelephonySubscriptionSnapshot snapshot) { // Startup VCN instances synchronized (mLock) { + final TelephonySubscriptionSnapshot oldSnapshot = mLastSnapshot; mLastSnapshot = snapshot; + Slog.d(TAG, "new snapshot: " + mLastSnapshot); // Start any VCN instances as necessary for (Entry<ParcelUuid, VcnConfig> entry : mConfigs.entrySet()) { @@ -476,11 +479,29 @@ public class VcnManagementService extends IVcnManagementService.Stub { entry.getValue().updateSubscriptionSnapshot(mLastSnapshot); } } + + final Map<ParcelUuid, Set<Integer>> oldSubGrpMappings = + getSubGroupToSubIdMappings(oldSnapshot); + final Map<ParcelUuid, Set<Integer>> currSubGrpMappings = + getSubGroupToSubIdMappings(mLastSnapshot); + if (!currSubGrpMappings.equals(oldSubGrpMappings)) { + notifyAllPolicyListenersLocked(); + } } } } @GuardedBy("mLock") + private Map<ParcelUuid, Set<Integer>> getSubGroupToSubIdMappings( + @NonNull TelephonySubscriptionSnapshot snapshot) { + final Map<ParcelUuid, Set<Integer>> subGrpMappings = new ArrayMap<>(); + for (ParcelUuid subGrp : mVcns.keySet()) { + subGrpMappings.put(subGrp, snapshot.getAllSubIdsInGroup(subGrp)); + } + return subGrpMappings; + } + + @GuardedBy("mLock") private void stopVcnLocked(@NonNull ParcelUuid uuidToTeardown) { final Vcn vcnToTeardown = mVcns.remove(uuidToTeardown); if (vcnToTeardown == null) { @@ -514,7 +535,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { @GuardedBy("mLock") private void startVcnLocked(@NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) { - Slog.v(TAG, "Starting VCN config for subGrp: " + subscriptionGroup); + Slog.d(TAG, "Starting VCN config for subGrp: " + subscriptionGroup); // TODO(b/176939047): Support multiple VCNs active at the same time, or limit to one active // VCN. @@ -536,7 +557,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { @GuardedBy("mLock") private void startOrUpdateVcnLocked( @NonNull ParcelUuid subscriptionGroup, @NonNull VcnConfig config) { - Slog.v(TAG, "Starting or updating VCN config for subGrp: " + subscriptionGroup); + Slog.d(TAG, "Starting or updating VCN config for subGrp: " + subscriptionGroup); if (mVcns.containsKey(subscriptionGroup)) { final Vcn vcn = mVcns.get(subscriptionGroup); @@ -562,7 +583,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { if (!config.getProvisioningPackageName().equals(opPkgName)) { throw new IllegalArgumentException("Mismatched caller and VcnConfig creator"); } - Slog.v(TAG, "VCN config updated for subGrp: " + subscriptionGroup); + Slog.d(TAG, "VCN config updated for subGrp: " + subscriptionGroup); mContext.getSystemService(AppOpsManager.class) .checkPackage(mDeps.getBinderCallingUid(), config.getProvisioningPackageName()); @@ -587,7 +608,7 @@ public class VcnManagementService extends IVcnManagementService.Stub { public void clearVcnConfig(@NonNull ParcelUuid subscriptionGroup, @NonNull String opPkgName) { requireNonNull(subscriptionGroup, "subscriptionGroup was null"); requireNonNull(opPkgName, "opPkgName was null"); - Slog.v(TAG, "VCN config cleared for subGrp: " + subscriptionGroup); + Slog.d(TAG, "VCN config cleared for subGrp: " + subscriptionGroup); mContext.getSystemService(AppOpsManager.class) .checkPackage(mDeps.getBinderCallingUid(), opPkgName); @@ -813,6 +834,8 @@ public class VcnManagementService extends IVcnManagementService.Stub { if (isVcnManagedNetwork) { ncBuilder.removeCapability( NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED); + } else { + ncBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED); } if (isRestrictedCarrierWifi) { @@ -821,8 +844,14 @@ public class VcnManagementService extends IVcnManagementService.Stub { } final NetworkCapabilities result = ncBuilder.build(); - return new VcnUnderlyingNetworkPolicy( + final VcnUnderlyingNetworkPolicy policy = new VcnUnderlyingNetworkPolicy( mTrackingNetworkCallback.requiresRestartForCarrierWifi(result), result); + + if (VDBG) { + Slog.d(TAG, "getUnderlyingNetworkPolicy() called for caps: " + networkCapabilities + + "; and lp: " + linkProperties + "; result = " + policy); + } + return policy; }); } diff --git a/services/core/java/com/android/server/WatchedIntentResolver.java b/services/core/java/com/android/server/WatchedIntentResolver.java index e514f3c6fd59..0831c36d2bf6 100644 --- a/services/core/java/com/android/server/WatchedIntentResolver.java +++ b/services/core/java/com/android/server/WatchedIntentResolver.java @@ -19,10 +19,13 @@ package com.android.server; import android.annotation.NonNull; import android.annotation.Nullable; +import com.android.server.pm.WatchedIntentFilter; +import com.android.server.utils.Snappable; import com.android.server.utils.Watchable; import com.android.server.utils.WatchableImpl; import com.android.server.utils.Watcher; +import java.util.ArrayList; import java.util.List; /** @@ -31,9 +34,9 @@ import java.util.List; * @param <R> The resolver type. * {@hide} */ -public abstract class WatchedIntentResolver<F, R extends Object> +public abstract class WatchedIntentResolver<F extends Watchable, R extends Object> extends IntentResolver<F, R> - implements Watchable { + implements Watchable, Snappable { /** * Watchable machinery @@ -78,6 +81,13 @@ public abstract class WatchedIntentResolver<F, R extends Object> mWatchable.dispatchChange(what); } + private final Watcher mWatcher = new Watcher() { + @Override + public void onChange(@Nullable Watchable what) { + dispatchChange(what); + } + }; + /** * Notify listeners that this object has changed. */ @@ -88,17 +98,20 @@ public abstract class WatchedIntentResolver<F, R extends Object> @Override public void addFilter(F f) { super.addFilter(f); + f.registerObserver(mWatcher); onChanged(); } @Override public void removeFilter(F f) { + f.unregisterObserver(mWatcher); super.removeFilter(f); onChanged(); } @Override protected void removeFilterInternal(F f) { + f.unregisterObserver(mWatcher); super.removeFilterInternal(f); onChanged(); } @@ -109,4 +122,17 @@ public abstract class WatchedIntentResolver<F, R extends Object> super.sortResults(results); onChanged(); } + + /** + * @see IntentResolver#findFilters(IntentFilter) + */ + public ArrayList<F> findFilters(WatchedIntentFilter matching) { + return super.findFilters(matching.getIntentFilter()); + } + + // Make <this> a copy of <orig>. The presumption is that <this> is empty but all + // arrays are cleared out explicitly, just to be sure. + protected void copyFrom(WatchedIntentResolver orig) { + super.copyFrom(orig); + } } diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index c360190d58a3..a231de3178f9 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -42,6 +42,7 @@ import android.app.INotificationManager; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; +import android.app.admin.DevicePolicyEventLogger; import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManagerInternal; import android.content.BroadcastReceiver; @@ -85,6 +86,7 @@ import android.os.StrictMode; import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; +import android.stats.devicepolicy.DevicePolicyEnums; import android.text.TextUtils; import android.util.Log; import android.util.Pair; @@ -105,7 +107,6 @@ import com.android.internal.util.Preconditions; import com.android.server.LocalServices; import com.android.server.ServiceThread; import com.android.server.SystemService; -import com.android.server.SystemService.TargetUser; import com.google.android.collect.Lists; import com.google.android.collect.Sets; @@ -456,7 +457,7 @@ public class AccountManagerService @Override public boolean addAccountExplicitlyWithVisibility(Account account, String password, - Bundle extras, Map packageToVisibility) { + Bundle extras, Map packageToVisibility, String opPackageName) { Bundle.setDefusable(extras, true); int callingUid = Binder.getCallingUid(); int userId = UserHandle.getCallingUserId(); @@ -481,7 +482,7 @@ public class AccountManagerService try { UserAccounts accounts = getUserAccounts(userId); return addAccountInternal(accounts, account, password, extras, callingUid, - (Map<String, Integer>) packageToVisibility); + (Map<String, Integer>) packageToVisibility, opPackageName); } finally { restoreCallingIdentity(identityToken); } @@ -1650,8 +1651,10 @@ public class AccountManagerService } @Override - public boolean addAccountExplicitly(Account account, String password, Bundle extras) { - return addAccountExplicitlyWithVisibility(account, password, extras, null); + public boolean addAccountExplicitly( + Account account, String password, Bundle extras, String opPackageName) { + return addAccountExplicitlyWithVisibility( + account, password, extras, /* packageToVisibility= */ null, opPackageName); } @Override @@ -1807,7 +1810,8 @@ public class AccountManagerService } private boolean addAccountInternal(UserAccounts accounts, Account account, String password, - Bundle extras, int callingUid, Map<String, Integer> packageToVisibility) { + Bundle extras, int callingUid, Map<String, Integer> packageToVisibility, + String opPackageName) { Bundle.setDefusable(extras, true); if (account == null) { return false; @@ -1879,9 +1883,59 @@ public class AccountManagerService // Only send LOGIN_ACCOUNTS_CHANGED when the database changed. sendAccountsChangedBroadcast(accounts.userId); + logAddAccountExplicitlyMetrics(opPackageName, account.type, packageToVisibility); return true; } + private void logAddAccountExplicitlyMetrics( + String callerPackage, String accountType, + @Nullable Map<String, Integer> accountVisibility) { + // Although this is not a 'device policy' API, enterprise is the current use case. + DevicePolicyEventLogger + .createEvent(DevicePolicyEnums.ADD_ACCOUNT_EXPLICITLY) + .setStrings( + TextUtils.emptyIfNull(accountType), + TextUtils.emptyIfNull(callerPackage), + findPackagesPerVisibility(accountVisibility)) + .write(); + } + + private String[] findPackagesPerVisibility(@Nullable Map<String, Integer> accountVisibility) { + Map<Integer, Set<String>> packagesPerVisibility = new HashMap<>(); + if (accountVisibility != null) { + for (Entry<String, Integer> entry : accountVisibility.entrySet()) { + if (!packagesPerVisibility.containsKey(entry.getValue())) { + packagesPerVisibility.put(entry.getValue(), new HashSet<>()); + } + packagesPerVisibility.get(entry.getValue()).add(entry.getKey()); + } + } + + String[] packagesPerVisibilityStr = new String[5]; + packagesPerVisibilityStr[AccountManager.VISIBILITY_UNDEFINED] = getPackagesForVisibilityStr( + AccountManager.VISIBILITY_UNDEFINED, packagesPerVisibility); + packagesPerVisibilityStr[AccountManager.VISIBILITY_VISIBLE] = getPackagesForVisibilityStr( + AccountManager.VISIBILITY_VISIBLE, packagesPerVisibility); + packagesPerVisibilityStr[AccountManager.VISIBILITY_USER_MANAGED_VISIBLE] = + getPackagesForVisibilityStr( + AccountManager.VISIBILITY_USER_MANAGED_VISIBLE, packagesPerVisibility); + packagesPerVisibilityStr[AccountManager.VISIBILITY_NOT_VISIBLE] = + getPackagesForVisibilityStr( + AccountManager.VISIBILITY_NOT_VISIBLE, packagesPerVisibility); + packagesPerVisibilityStr[AccountManager.VISIBILITY_USER_MANAGED_NOT_VISIBLE] = + getPackagesForVisibilityStr( + AccountManager.VISIBILITY_USER_MANAGED_NOT_VISIBLE, packagesPerVisibility); + return packagesPerVisibilityStr; + } + + private String getPackagesForVisibilityStr( + int visibility, Map<Integer, Set<String>> packagesPerVisibility) { + return visibility + ":" + + (packagesPerVisibility.containsKey(visibility) + ? TextUtils.join(",", packagesPerVisibility.get(visibility)) + : ""); + } + private boolean isLocalUnlockedUser(int userId) { synchronized (mUsers) { return mLocalUnlockedUsers.get(userId); @@ -2898,6 +2952,7 @@ public class AccountManagerService if (!customTokens && permissionGranted) { String authToken = readAuthTokenInternal(accounts, account, authTokenType); if (authToken != null) { + logGetAuthTokenMetrics(callerPkg, account.type); Bundle result = new Bundle(); result.putString(AccountManager.KEY_AUTHTOKEN, authToken); result.putString(AccountManager.KEY_ACCOUNT_NAME, account.name); @@ -2920,6 +2975,7 @@ public class AccountManagerService callerPkg, callerPkgSigDigest); if (token != null) { + logGetAuthTokenMetrics(callerPkg, account.type); if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "getAuthToken: cache hit ofr custom token authenticator."); } @@ -2958,6 +3014,7 @@ public class AccountManagerService mAuthenticator.getAuthTokenLabel(this, authTokenType); } else { mAuthenticator.getAuthToken(this, account, authTokenType, loginOptions); + logGetAuthTokenMetrics(callerPkg, account.type); } } @@ -3040,6 +3097,16 @@ public class AccountManagerService } } + private void logGetAuthTokenMetrics(final String callerPackage, String accountType) { + // Although this is not a 'device policy' API, enterprise is the current use case. + DevicePolicyEventLogger + .createEvent(DevicePolicyEnums.GET_ACCOUNT_AUTH_TOKEN) + .setStrings( + TextUtils.emptyIfNull(callerPackage), + TextUtils.emptyIfNull(accountType)) + .write(); + } + private byte[] calculatePackageSignatureDigest(String callerPkg) { MessageDigest digester; try { @@ -3189,38 +3256,8 @@ public class AccountManagerService userId); return; } - - final int pid = Binder.getCallingPid(); - final Bundle options = (optionsIn == null) ? new Bundle() : optionsIn; - options.putInt(AccountManager.KEY_CALLER_UID, uid); - options.putInt(AccountManager.KEY_CALLER_PID, pid); - - int usrId = UserHandle.getCallingUserId(); - final long identityToken = clearCallingIdentity(); - try { - UserAccounts accounts = getUserAccounts(usrId); - logRecordWithUid( - accounts, AccountsDb.DEBUG_ACTION_CALLED_ACCOUNT_ADD, AccountsDb.TABLE_ACCOUNTS, - uid); - new Session(accounts, response, accountType, expectActivityLaunch, - true /* stripAuthTokenFromResult */, null /* accountName */, - false /* authDetailsRequired */, true /* updateLastAuthenticationTime */) { - @Override - public void run() throws RemoteException { - mAuthenticator.addAccount(this, mAccountType, authTokenType, requiredFeatures, - options); - } - - @Override - protected String toDebugString(long now) { - return super.toDebugString(now) + ", addAccount" - + ", accountType " + accountType - + ", requiredFeatures " + Arrays.toString(requiredFeatures); - } - }.bind(); - } finally { - restoreCallingIdentity(identityToken); - } + addAccountAndLogMetrics(response, accountType, authTokenType, requiredFeatures, + expectActivityLaunch, optionsIn, userId); } @Override @@ -3270,7 +3307,14 @@ public class AccountManagerService userId); return; } + addAccountAndLogMetrics(response, accountType, authTokenType, requiredFeatures, + expectActivityLaunch, optionsIn, userId); + } + private void addAccountAndLogMetrics( + IAccountManagerResponse response, String accountType, + String authTokenType, String[] requiredFeatures, + boolean expectActivityLaunch, Bundle optionsIn, int userId) { final int pid = Binder.getCallingPid(); final int uid = Binder.getCallingUid(); final Bundle options = (optionsIn == null) ? new Bundle() : optionsIn; @@ -3288,8 +3332,12 @@ public class AccountManagerService false /* authDetailsRequired */, true /* updateLastAuthenticationTime */) { @Override public void run() throws RemoteException { - mAuthenticator.addAccount(this, mAccountType, authTokenType, requiredFeatures, - options); + mAuthenticator.addAccount( + this, mAccountType, authTokenType, requiredFeatures, options); + String callerPackage = options.getString( + AccountManager.KEY_ANDROID_PACKAGE_NAME); + logAddAccountMetrics( + callerPackage, accountType, requiredFeatures, authTokenType); } @Override @@ -3298,8 +3346,8 @@ public class AccountManagerService + ", accountType " + accountType + ", requiredFeatures " + (requiredFeatures != null - ? TextUtils.join(",", requiredFeatures) - : null); + ? TextUtils.join(",", requiredFeatures) + : null); } }.bind(); } finally { @@ -3307,6 +3355,22 @@ public class AccountManagerService } } + private void logAddAccountMetrics( + String callerPackage, String accountType, String[] requiredFeatures, + String authTokenType) { + // Although this is not a 'device policy' API, enterprise is the current use case. + DevicePolicyEventLogger + .createEvent(DevicePolicyEnums.ADD_ACCOUNT) + .setStrings( + TextUtils.emptyIfNull(accountType), + TextUtils.emptyIfNull(callerPackage), + TextUtils.emptyIfNull(authTokenType), + requiredFeatures == null + ? "" + : TextUtils.join(";", requiredFeatures)) + .write(); + } + @Override public void startAddAccountSession( final IAccountManagerResponse response, @@ -3378,6 +3442,7 @@ public class AccountManagerService public void run() throws RemoteException { mAuthenticator.startAddAccountSession(this, mAccountType, authTokenType, requiredFeatures, options); + logAddAccountMetrics(callerPkg, accountType, requiredFeatures, authTokenType); } @Override diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 5700bb367b04..1bd53ae24730 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -309,11 +309,23 @@ public final class ActiveServices { * Watch for apps being put into forced app standby, so we can step their fg * services down. */ - class ForcedStandbyListener implements AppStateTracker.ServiceStateListener { + class ForcedStandbyListener implements AppStateTracker.ForcedAppStandbyListener { @Override - public void stopForegroundServicesForUidPackage(final int uid, final String packageName) { + public void updateForceAppStandbyForUidPackage(int uid, String packageName, + boolean standby) { synchronized (mAm) { - stopAllForegroundServicesLocked(uid, packageName); + if (standby) { + stopAllForegroundServicesLocked(uid, packageName); + } + mAm.mProcessList.updateForceAppStandbyForUidPackageLocked( + uid, packageName, standby); + } + } + + @Override + public void updateForcedAppStandbyForAllApps() { + synchronized (mAm) { + mAm.mProcessList.updateForcedAppStandbyForAllAppsLocked(); } } } @@ -499,7 +511,7 @@ public final class ActiveServices { void systemServicesReady() { AppStateTracker ast = LocalServices.getService(AppStateTracker.class); - ast.addServiceStateListener(new ForcedStandbyListener()); + ast.addForcedAppStandbyListener(new ForcedStandbyListener()); mAppWidgetManagerInternal = LocalServices.getService(AppWidgetManagerInternal.class); setAllowListWhileInUsePermissionInFgs(); } diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java index f7ce6dd0144d..09795855ac27 100644 --- a/services/core/java/com/android/server/am/ActivityManagerConstants.java +++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java @@ -52,7 +52,8 @@ final class ActivityManagerConstants extends ContentObserver { private static final String TAG = "ActivityManagerConstants"; // Key names stored in the settings value. - private static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time"; + static final String KEY_BACKGROUND_SETTLE_TIME = "background_settle_time"; + private static final String KEY_FGSERVICE_MIN_SHOWN_TIME = "fgservice_min_shown_time"; private static final String KEY_FGSERVICE_MIN_REPORT_TIME @@ -108,9 +109,9 @@ final class ActivityManagerConstants extends ContentObserver { static final String KEY_FG_TO_BG_FGS_GRACE_DURATION = "fg_to_bg_fgs_grace_duration"; static final String KEY_FGS_START_FOREGROUND_TIMEOUT = "fgs_start_foreground_timeout"; static final String KEY_FGS_ATOM_SAMPLE_RATE = "fgs_atom_sample_rate"; + static final String KEY_KILL_FAS_CACHED_IDLE = "kill_fas_cached_idle"; private static final int DEFAULT_MAX_CACHED_PROCESSES = 32; - private static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60*1000; private static final long DEFAULT_FGSERVICE_MIN_SHOWN_TIME = 2*1000; private static final long DEFAULT_FGSERVICE_MIN_REPORT_TIME = 3*1000; private static final long DEFAULT_FGSERVICE_SCREEN_ON_BEFORE_TIME = 1*1000; @@ -147,10 +148,14 @@ final class ActivityManagerConstants extends ContentObserver { private static final int DEFAULT_MAX_PHANTOM_PROCESSES = 32; private static final int DEFAULT_PROCESS_CRASH_COUNT_RESET_INTERVAL = 12 * 60 * 60 * 1000; private static final int DEFAULT_PROCESS_CRASH_COUNT_LIMIT = 12; - private static final int DEFAULT_BOOT_TIME_TEMP_ALLOWLIST_DURATION = 10 * 1000; + private static final int DEFAULT_BOOT_TIME_TEMP_ALLOWLIST_DURATION = 20 * 1000; private static final long DEFAULT_FG_TO_BG_FGS_GRACE_DURATION = 5 * 1000; private static final int DEFAULT_FGS_START_FOREGROUND_TIMEOUT_MS = 10 * 1000; private static final float DEFAULT_FGS_ATOM_SAMPLE_RATE = 1; // 100 % + + static final long DEFAULT_BACKGROUND_SETTLE_TIME = 60 * 1000; + static final boolean DEFAULT_KILL_FAS_CACHED_IDLE = true; + /** * Same as {@link TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_NOT_ALLOWED} */ @@ -482,6 +487,12 @@ final class ActivityManagerConstants extends ContentObserver { */ volatile float mFgsAtomSampleRate = DEFAULT_FGS_ATOM_SAMPLE_RATE; + /** + * Whether or not to kill apps in force-app-standby state and it's cached, its UID state is + * idle. + */ + volatile boolean mKillForceAppStandByAndCachedIdle = DEFAULT_KILL_FAS_CACHED_IDLE; + private final ActivityManagerService mService; private ContentResolver mResolver; private final KeyValueListParser mParser = new KeyValueListParser(','); @@ -687,6 +698,9 @@ final class ActivityManagerConstants extends ContentObserver { case KEY_FGS_ATOM_SAMPLE_RATE: updateFgsAtomSamplePercent(); break; + case KEY_KILL_FAS_CACHED_IDLE: + updateKillFasCachedIdle(); + break; default: break; } @@ -1019,6 +1033,13 @@ final class ActivityManagerConstants extends ContentObserver { DEFAULT_FGS_ATOM_SAMPLE_RATE); } + private void updateKillFasCachedIdle() { + mKillForceAppStandByAndCachedIdle = DeviceConfig.getBoolean( + DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + KEY_KILL_FAS_CACHED_IDLE, + DEFAULT_KILL_FAS_CACHED_IDLE); + } + private void updateImperceptibleKillExemptions() { IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.clear(); IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.addAll(mDefaultImperceptibleKillExemptPackages); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index d526ebc8e581..3a8b547fad36 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -7777,16 +7777,25 @@ public class ActivityManagerService extends IActivityManager.Stub incrementalMetrics != null /* isIncremental */, loadingProgress, incrementalMetrics != null ? incrementalMetrics.getMillisSinceOldestPendingRead() : -1, - 0 /* storage_health_code */, - 0 /* data_loader_status_code */, - false /* read_logs_enabled */, - 0 /* millis_since_last_data_loader_bind */, - 0 /* data_loader_bind_delay_millis */, - 0 /* total_delayed_reads */, - 0 /* total_failed_reads */, - 0 /* last_read_error_uid */, - 0 /* last_read_error_millis_since */, - 0 /* last_read_error_code */ + incrementalMetrics != null ? incrementalMetrics.getStorageHealthStatusCode() + : -1, + incrementalMetrics != null ? incrementalMetrics.getDataLoaderStatusCode() + : -1, + incrementalMetrics != null && incrementalMetrics.getReadLogsEnabled(), + incrementalMetrics != null ? incrementalMetrics.getMillisSinceLastDataLoaderBind() + : -1, + incrementalMetrics != null ? incrementalMetrics.getDataLoaderBindDelayMillis() + : -1, + incrementalMetrics != null ? incrementalMetrics.getTotalDelayedReads() + : -1, + incrementalMetrics != null ? incrementalMetrics.getTotalFailedReads() + : -1, + incrementalMetrics != null ? incrementalMetrics.getLastReadErrorUid() + : -1, + incrementalMetrics != null ? incrementalMetrics.getMillisSinceLastReadError() + : -1, + incrementalMetrics != null ? incrementalMetrics.getLastReadErrorNumber() + : 0 ); final int relaunchReason = r == null ? RELAUNCH_REASON_NONE @@ -14258,6 +14267,10 @@ public class ActivityManagerService extends IActivityManager.Stub final int capability = uidRec != null ? uidRec.getSetCapability() : 0; final boolean ephemeral = uidRec != null ? uidRec.isEphemeral() : isEphemeralLocked(uid); + if (uidRec != null && uidRec.isIdle() && (change & UidRecord.CHANGE_IDLE) != 0) { + mProcessList.killAppIfForceStandbyAndCachedIdleLocked(uidRec); + } + if (uidRec != null && !uidRec.isIdle() && (change & UidRecord.CHANGE_GONE) != 0) { // If this uid is going away, and we haven't yet reported it is gone, // then do so now. @@ -15831,8 +15844,12 @@ public class ActivityManagerService extends IActivityManager.Stub if (initLocale || !mProcessesReady) { intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); } + final BroadcastOptions bOptions = BroadcastOptions.makeBasic(); + bOptions.setTemporaryAppAllowlist(mInternal.getBootTimeTempAllowListDuration(), + TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + PowerExemptionManager.REASON_LOCALE_CHANGED, ""); broadcastIntentLocked(null, null, null, intent, null, null, 0, null, null, null, - null, OP_NONE, null, false, false, MY_PID, SYSTEM_UID, + null, OP_NONE, bOptions.toBundle(), false, false, MY_PID, SYSTEM_UID, Binder.getCallingUid(), Binder.getCallingPid(), UserHandle.USER_ALL); } diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java index 5a59eabde6f0..bcb42bb38495 100644 --- a/services/core/java/com/android/server/am/AppErrors.java +++ b/services/core/java/com/android/server/am/AppErrors.java @@ -32,6 +32,7 @@ import android.app.ActivityOptions; import android.app.AnrController; import android.app.ApplicationErrorReport; import android.app.ApplicationExitInfo; +import android.app.usage.UsageStatsManager; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; @@ -57,7 +58,9 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.app.ProcessMap; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; +import com.android.server.LocalServices; import com.android.server.PackageWatchdog; +import com.android.server.usage.AppStandbyInternal; import com.android.server.wm.WindowProcessController; import java.io.FileDescriptor; @@ -885,6 +888,16 @@ class AppErrors { } errState.setBad(true); app.setRemoved(true); + final AppStandbyInternal appStandbyInternal = + LocalServices.getService(AppStandbyInternal.class); + if (appStandbyInternal != null) { + appStandbyInternal.restrictApp( + // Sometimes the processName is the same as the package name, so use + // that if we don't have the ApplicationInfo object. + // AppStandbyController will just return if it can't find the app. + app.info != null ? app.info.packageName : processName, + userId, UsageStatsManager.REASON_SUB_FORCED_SYSTEM_FLAG_BUGGY); + } // Don't let services in this process be restarted and potentially // annoy the user repeatedly. Unless it is persistent, since those // processes run critical code. diff --git a/services/core/java/com/android/server/am/AppExitInfoTracker.java b/services/core/java/com/android/server/am/AppExitInfoTracker.java index b85d7292e738..da06753ef0f4 100644 --- a/services/core/java/com/android/server/am/AppExitInfoTracker.java +++ b/services/core/java/com/android/server/am/AppExitInfoTracker.java @@ -61,6 +61,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.ProcessMap; import com.android.internal.util.ArrayUtils; +import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.function.pooled.PooledLambda; import com.android.server.IoThread; import com.android.server.LocalServices; @@ -108,6 +109,13 @@ public final class AppExitInfoTracker { private static final int APP_EXIT_RAW_INFO_POOL_SIZE = 8; + /** + * How long we're going to hold before logging an app exit info into statsd; + * we do this is because there could be multiple sources signaling an app exit, we'd like to + * gather the most accurate information before logging into statsd. + */ + private static final long APP_EXIT_INFO_STATSD_LOG_DEBOUNCE = TimeUnit.SECONDS.toMillis(15); + @VisibleForTesting static final String APP_EXIT_STORE_DIR = "procexitstore"; @@ -384,6 +392,8 @@ public final class AppExitInfoTracker { ApplicationExitInfo.REASON_LOW_MEMORY); } else if (zygote != null) { updateExistingExitInfoRecordLocked(info, (Integer) zygote.second, null); + } else { + scheduleLogToStatsdLocked(info, false); } } } @@ -398,7 +408,7 @@ public final class AppExitInfoTracker { raw.getPackageName(), raw.getPackageUid(), raw.getPid()); if (info == null) { - addExitInfoLocked(raw); + info = addExitInfoLocked(raw); } else { // always override the existing info since we are now more informational. info.setReason(raw.getReason()); @@ -407,6 +417,7 @@ public final class AppExitInfoTracker { info.setTimestamp(System.currentTimeMillis()); info.setDescription(raw.getDescription()); } + scheduleLogToStatsdLocked(info, true); } @GuardedBy("mLock") @@ -438,22 +449,29 @@ public final class AppExitInfoTracker { // if the record is way outdated, don't update it then (because of potential pid reuse) return; } + boolean immediateLog = false; if (status != null) { if (OsConstants.WIFEXITED(status)) { info.setReason(ApplicationExitInfo.REASON_EXIT_SELF); info.setStatus(OsConstants.WEXITSTATUS(status)); + immediateLog = true; } else if (OsConstants.WIFSIGNALED(status)) { if (info.getReason() == ApplicationExitInfo.REASON_UNKNOWN) { info.setReason(ApplicationExitInfo.REASON_SIGNALED); info.setStatus(OsConstants.WTERMSIG(status)); } else if (info.getReason() == ApplicationExitInfo.REASON_CRASH_NATIVE) { info.setStatus(OsConstants.WTERMSIG(status)); + immediateLog = true; } } } if (reason != null) { info.setReason(reason); + if (reason == ApplicationExitInfo.REASON_LOW_MEMORY) { + immediateLog = true; + } } + scheduleLogToStatsdLocked(info, immediateLog); } /** @@ -837,6 +855,40 @@ public final class AppExitInfoTracker { } @GuardedBy("mLock") + private void scheduleLogToStatsdLocked(ApplicationExitInfo info, boolean immediate) { + if (info.isLoggedInStatsd()) { + return; + } + if (immediate) { + mKillHandler.removeMessages(KillHandler.MSG_STATSD_LOG, info); + performLogToStatsdLocked(info); + } else if (!mKillHandler.hasMessages(KillHandler.MSG_STATSD_LOG, info)) { + mKillHandler.sendMessageDelayed(mKillHandler.obtainMessage( + KillHandler.MSG_STATSD_LOG, info), APP_EXIT_INFO_STATSD_LOG_DEBOUNCE); + } + } + + @GuardedBy("mLock") + private void performLogToStatsdLocked(ApplicationExitInfo info) { + if (info.isLoggedInStatsd()) { + return; + } + info.setLoggedInStatsd(true); + final String pkgName = info.getPackageName(); + String processName = info.getProcessName(); + if (TextUtils.equals(pkgName, processName)) { + // Omit the process name here to save space + processName = null; + } else if (processName != null && processName.startsWith(pkgName)) { + // Strip the prefix to save space + processName = processName.substring(pkgName.length()); + } + FrameworkStatsLog.write(FrameworkStatsLog.APP_PROCESS_DIED, + info.getPackageUid(), processName, info.getReason(), info.getSubReason(), + info.getImportance(), (int) info.getPss(), (int) info.getRss()); + } + + @GuardedBy("mLock") private void forEachPackageLocked( BiFunction<String, SparseArray<AppExitInfoContainer>, Integer> callback) { if (callback != null) { @@ -1532,6 +1584,7 @@ public final class AppExitInfoTracker { static final int MSG_CHILD_PROC_DIED = 4102; static final int MSG_PROC_DIED = 4103; static final int MSG_APP_KILL = 4104; + static final int MSG_STATSD_LOG = 4105; KillHandler(Looper looper) { super(looper, null, true); @@ -1564,6 +1617,12 @@ public final class AppExitInfoTracker { recycleRawRecord(raw); } break; + case MSG_STATSD_LOG: { + synchronized (mLock) { + performLogToStatsdLocked((ApplicationExitInfo) msg.obj); + } + } + break; default: super.handleMessage(msg); } diff --git a/services/core/java/com/android/server/am/ContentProviderConnection.java b/services/core/java/com/android/server/am/ContentProviderConnection.java index efee4321fd9f..3bc4fcf08921 100644 --- a/services/core/java/com/android/server/am/ContentProviderConnection.java +++ b/services/core/java/com/android/server/am/ContentProviderConnection.java @@ -19,6 +19,7 @@ package com.android.server.am; import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_PROVIDER; import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; +import android.annotation.UserIdInt; import android.os.Binder; import android.os.SystemClock; import android.util.Slog; @@ -52,15 +53,21 @@ public final class ContentProviderConnection extends Binder { // The provider of this connection is now dead. public boolean dead; + // The original user id when this connection was requested, it could be different from + // the client's user id because the client could request to access a content provider + // living in a different user if it has the permission. + @UserIdInt final int mExpectedUserId; + // For debugging. private int mNumStableIncs; private int mNumUnstableIncs; public ContentProviderConnection(ContentProviderRecord _provider, ProcessRecord _client, - String _clientPackage) { + String _clientPackage, @UserIdInt int _expectedUserId) { provider = _provider; client = _client; clientPackage = _clientPackage; + mExpectedUserId = _expectedUserId; createTime = SystemClock.elapsedRealtime(); } diff --git a/services/core/java/com/android/server/am/ContentProviderHelper.java b/services/core/java/com/android/server/am/ContentProviderHelper.java index fb9f2dd58c58..795cd0a8bda7 100644 --- a/services/core/java/com/android/server/am/ContentProviderHelper.java +++ b/services/core/java/com/android/server/am/ContentProviderHelper.java @@ -150,6 +150,7 @@ public class ContentProviderHelper { ContentProviderConnection conn = null; ProviderInfo cpi = null; boolean providerRunning = false; + final int expectedUserId = userId; synchronized (mService) { long startTime = SystemClock.uptimeMillis(); @@ -239,7 +240,8 @@ public class ContentProviderHelper { // Return the provider instance right away since it already exists. conn = incProviderCountLocked(r, cpr, token, callingUid, callingPackage, - callingTag, stable, true, startTime, mService.mProcessList); + callingTag, stable, true, startTime, mService.mProcessList, + expectedUserId); checkTime(startTime, "getContentProviderImpl: before updateOomAdj"); final int verifiedAdj = cpr.proc.mState.getVerifiedAdj(); @@ -490,7 +492,7 @@ public class ContentProviderHelper { mProviderMap.putProviderByName(name, cpr); conn = incProviderCountLocked(r, cpr, token, callingUid, callingPackage, callingTag, - stable, false, startTime, mService.mProcessList); + stable, false, startTime, mService.mProcessList, expectedUserId); if (conn != null) { conn.waiting = true; } @@ -1286,7 +1288,7 @@ public class ContentProviderHelper { private ContentProviderConnection incProviderCountLocked(ProcessRecord r, final ContentProviderRecord cpr, IBinder externalProcessToken, int callingUid, String callingPackage, String callingTag, boolean stable, boolean updateLru, - long startTime, ProcessList processList) { + long startTime, ProcessList processList, @UserIdInt int expectedUserId) { if (r == null) { cpr.addExternalProcessHandleLocked(externalProcessToken, callingUid, callingTag); return null; @@ -1303,7 +1305,8 @@ public class ContentProviderHelper { } // Create a new ContentProviderConnection. The reference count is known to be 1. - ContentProviderConnection conn = new ContentProviderConnection(cpr, r, callingPackage); + ContentProviderConnection conn = new ContentProviderConnection(cpr, r, callingPackage, + expectedUserId); conn.startAssociationIfNeeded(); conn.initializeCount(stable); cpr.connections.add(conn); diff --git a/services/core/java/com/android/server/am/ContentProviderRecord.java b/services/core/java/com/android/server/am/ContentProviderRecord.java index b217cae61d4c..5fd15db79d66 100644 --- a/services/core/java/com/android/server/am/ContentProviderRecord.java +++ b/services/core/java/com/android/server/am/ContentProviderRecord.java @@ -189,7 +189,6 @@ final class ContentProviderRecord implements ComponentName.WithComponentName { */ void onProviderPublishStatusLocked(boolean status) { final int numOfConns = connections.size(); - final int userId = UserHandle.getUserId(appInfo.uid); for (int i = 0; i < numOfConns; i++) { final ContentProviderConnection conn = connections.get(i); if (conn.waiting && conn.client != null) { @@ -201,7 +200,7 @@ final class ContentProviderRecord implements ComponentName.WithComponentName { + appInfo.uid + " for provider " + info.authority + ": launching app became null"); EventLogTags.writeAmProviderLostProcess( - userId, + UserHandle.getUserId(appInfo.uid), appInfo.packageName, appInfo.uid, info.authority); } else { @@ -217,7 +216,7 @@ final class ContentProviderRecord implements ComponentName.WithComponentName { try { thread.notifyContentProviderPublishStatus( newHolder(status ? conn : null, false), - info.authority, userId, status); + info.authority, conn.mExpectedUserId, status); } catch (RemoteException e) { } } diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java index b413010772a4..40db086f377b 100644 --- a/services/core/java/com/android/server/am/OomAdjuster.java +++ b/services/core/java/com/android/server/am/OomAdjuster.java @@ -2863,6 +2863,8 @@ public class OomAdjuster { + " target=" + state.getAdjTarget() + " capability=" + item.capability); } + mProcessList.killAppIfForceStandbyAndCachedIdleLocked(app); + return success; } diff --git a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java index c1b2a9c1987a..5a7e14a6907a 100644 --- a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java @@ -433,16 +433,25 @@ class ProcessErrorStateRecord { incrementalMetrics != null /* isIncremental */, loadingProgress, incrementalMetrics != null ? incrementalMetrics.getMillisSinceOldestPendingRead() : -1, - 0 /* storage_health_code */, - 0 /* data_loader_status_code */, - false /* read_logs_enabled */, - 0 /* millis_since_last_data_loader_bind */, - 0 /* data_loader_bind_delay_millis */, - 0 /* total_delayed_reads */, - 0 /* total_failed_reads */, - 0 /* last_read_error_uid */, - 0 /* last_read_error_millis_since */, - 0 /* last_read_error_code */); + incrementalMetrics != null ? incrementalMetrics.getStorageHealthStatusCode() + : -1, + incrementalMetrics != null ? incrementalMetrics.getDataLoaderStatusCode() + : -1, + incrementalMetrics != null && incrementalMetrics.getReadLogsEnabled(), + incrementalMetrics != null ? incrementalMetrics.getMillisSinceLastDataLoaderBind() + : -1, + incrementalMetrics != null ? incrementalMetrics.getDataLoaderBindDelayMillis() + : -1, + incrementalMetrics != null ? incrementalMetrics.getTotalDelayedReads() + : -1, + incrementalMetrics != null ? incrementalMetrics.getTotalFailedReads() + : -1, + incrementalMetrics != null ? incrementalMetrics.getLastReadErrorUid() + : -1, + incrementalMetrics != null ? incrementalMetrics.getMillisSinceLastReadError() + : -1, + incrementalMetrics != null ? incrementalMetrics.getLastReadErrorNumber() + : 0); final ProcessRecord parentPr = parentProcess != null ? (ProcessRecord) parentProcess.mOwner : null; mService.addErrorToDropBox("anr", mApp, mApp.processName, activityShortComponentName, diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index cc98abfc17f2..8ea5004599df 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -125,6 +125,7 @@ import com.android.internal.os.Zygote; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.MemInfoReader; +import com.android.server.AppStateTracker; import com.android.server.LocalServices; import com.android.server.ServiceThread; import com.android.server.SystemConfig; @@ -2333,6 +2334,12 @@ public final class ProcessList { allowlistedAppDataInfoMap = null; } + AppStateTracker ast = LocalServices.getService(AppStateTracker.class); + if (ast != null) { + app.mState.setForcedAppStandby(ast.isAppInForcedAppStandby( + app.info.uid, app.info.packageName)); + } + final Process.ProcessStartResult startResult; if (hostingRecord.usesWebviewZygote()) { startResult = startWebView(entryPoint, @@ -3418,6 +3425,11 @@ public final class ProcessList { return; } + if (app.getPid() == 0 && !app.isPendingStart()) { + // This process has been killed and its cleanup is done, don't proceed the LRU update. + return; + } + synchronized (mProcLock) { updateLruProcessLSP(app, client, hasActivity, hasService); } @@ -4954,6 +4966,54 @@ public final class ProcessList { return true; } + @GuardedBy("mService") + void updateForceAppStandbyForUidPackageLocked(int uid, String packageName, boolean standby) { + final UidRecord uidRec = getUidRecordLOSP(uid); + if (uidRec != null) { + uidRec.forEachProcess(app -> { + if (TextUtils.equals(app.info.packageName, packageName)) { + app.mState.setForcedAppStandby(standby); + killAppIfForceStandbyAndCachedIdleLocked(app); + } + }); + } + } + + @GuardedBy("mService") + void updateForcedAppStandbyForAllAppsLocked() { + if (!mService.mConstants.mKillForceAppStandByAndCachedIdle) { + return; + } + final AppStateTracker ast = LocalServices.getService(AppStateTracker.class); + for (int i = mLruProcesses.size() - 1; i >= 0; i--) { + final ProcessRecord app = mLruProcesses.get(i); + final boolean standby = ast.isAppInForcedAppStandby( + app.info.uid, app.info.packageName); + app.mState.setForcedAppStandby(standby); + if (standby) { + killAppIfForceStandbyAndCachedIdleLocked(app); + } + } + } + + @GuardedBy("mService") + void killAppIfForceStandbyAndCachedIdleLocked(ProcessRecord app) { + final UidRecord uidRec = app.getUidRecord(); + if (mService.mConstants.mKillForceAppStandByAndCachedIdle + && uidRec != null && uidRec.isIdle() + && app.isCached() && app.mState.isForcedAppStandby()) { + app.killLocked("cached idle & forced-app-standby", + ApplicationExitInfo.REASON_OTHER, + ApplicationExitInfo.SUBREASON_CACHED_IDLE_FORCED_APP_STANDBY, + true); + } + } + + @GuardedBy("mService") + void killAppIfForceStandbyAndCachedIdleLocked(UidRecord uidRec) { + uidRec.forEachProcess(app -> killAppIfForceStandbyAndCachedIdleLocked(app)); + } + /** * Called by ActivityManagerService when a process died. */ diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java index 94e7f34a194a..6429b79f6111 100644 --- a/services/core/java/com/android/server/am/ProcessStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessStateRecord.java @@ -342,6 +342,12 @@ final class ProcessStateRecord { private @ReasonCode int mAllowStartFgs = REASON_DENIED; /** + * Whether or not this process has been in forced-app-standby state. + */ + @GuardedBy("mService") + private boolean mForcedAppStandby; + + /** * Debugging: primary thing impacting oom_adj. */ @GuardedBy("mService") @@ -1276,6 +1282,16 @@ final class ProcessStateRecord { } @GuardedBy("mService") + void setForcedAppStandby(boolean standby) { + mForcedAppStandby = standby; + } + + @GuardedBy("mService") + boolean isForcedAppStandby() { + return mForcedAppStandby; + } + + @GuardedBy("mService") void updateLastInvisibleTime(boolean hasVisibleActivities) { if (hasVisibleActivities) { mLastInvisibleTime = Long.MAX_VALUE; @@ -1337,7 +1353,8 @@ final class ProcessStateRecord { pw.print(" pendingUiClean="); pw.println(mApp.mProfile.hasPendingUiClean()); } pw.print(prefix); pw.print("cached="); pw.print(mCached); - pw.print(" empty="); pw.println(mEmpty); + pw.print(" empty="); pw.print(mEmpty); + pw.print(" forcedAppStandby="); pw.println(mForcedAppStandby); if (mServiceB) { pw.print(prefix); pw.print("serviceb="); pw.print(mServiceB); pw.print(" serviceHighRam="); pw.println(mServiceHighRam); diff --git a/services/core/java/com/android/server/apphibernation/AppHibernationService.java b/services/core/java/com/android/server/apphibernation/AppHibernationService.java index 9396241c3f98..78ff67a63dcb 100644 --- a/services/core/java/com/android/server/apphibernation/AppHibernationService.java +++ b/services/core/java/com/android/server/apphibernation/AppHibernationService.java @@ -182,12 +182,18 @@ public final class AppHibernationService extends SystemService { NAMESPACE_APP_HIBERNATION, ActivityThread.currentApplication().getMainExecutor(), this::onDeviceConfigChanged); - getContext().getSystemService(StatsManager.class) - .setPullAtomCallback( - FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS, - /* metadata */ null, // use default PullAtomMetadata values - mBackgroundExecutor, - new StatsPullAtomCallbackImpl()); + final StatsManager statsManager = getContext().getSystemService(StatsManager.class); + final StatsPullAtomCallbackImpl pullAtomCallback = new StatsPullAtomCallbackImpl(); + statsManager.setPullAtomCallback( + FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS, + /* metadata */ null, // use default PullAtomMetadata values + mBackgroundExecutor, + pullAtomCallback); + statsManager.setPullAtomCallback( + FrameworkStatsLog.GLOBAL_HIBERNATED_APPS, + /* metadata */ null, // use default PullAtomMetadata values + mBackgroundExecutor, + pullAtomCallback); } } @@ -291,6 +297,7 @@ public final class AppHibernationService extends SystemService { stateSnapshot.packageName, userIdSnapshot, stateSnapshot.hibernated, + // TODO(b/187224817): This isn't the expected value right now. stateSnapshot.lastUnhibernatedMs); }); List<UserLevelState> states = new ArrayList<>(mUserStates.get(userId).values()); @@ -938,23 +945,39 @@ public final class AppHibernationService extends SystemService { private final class StatsPullAtomCallbackImpl implements StatsPullAtomCallback { @Override public int onPullAtom(int atomTag, @NonNull List<StatsEvent> data) { - if (atomTag != FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS) { - return StatsManager.PULL_SKIP; + if (!isAppHibernationEnabled() + && (atomTag == FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS + || atomTag == FrameworkStatsLog.GLOBAL_HIBERNATED_APPS)) { + return StatsManager.PULL_SUCCESS; } - if (isAppHibernationEnabled()) { - List<UserInfo> userInfos = mUserManager.getAliveUsers(); - final int numUsers = userInfos.size(); - for (int i = 0; i < numUsers; ++i) { - final int userId = userInfos.get(i).id; - if (mUserManager.isUserUnlockingOrUnlocked(userId)) { - data.add( - FrameworkStatsLog.buildStatsEvent( - atomTag, - getHibernatingPackagesForUser(userId).size(), - userId) - ); + + switch (atomTag) { + case FrameworkStatsLog.USER_LEVEL_HIBERNATED_APPS: + List<UserInfo> userInfos = mUserManager.getAliveUsers(); + final int numUsers = userInfos.size(); + for (int i = 0; i < numUsers; ++i) { + final int userId = userInfos.get(i).id; + if (mUserManager.isUserUnlockingOrUnlocked(userId)) { + data.add( + FrameworkStatsLog.buildStatsEvent( + atomTag, + getHibernatingPackagesForUser(userId).size(), + userId) + ); + } } - } + break; + case FrameworkStatsLog.GLOBAL_HIBERNATED_APPS: + int hibernatedAppCount = 0; + synchronized (mLock) { + for (GlobalLevelState state : mGlobalHibernationStates.values()) { + if (state.hibernated) hibernatedAppCount++; + } + } + data.add(FrameworkStatsLog.buildStatsEvent(atomTag, hibernatedAppCount)); + break; + default: + return StatsManager.PULL_SKIP; } return StatsManager.PULL_SUCCESS; } diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 7eaf18fc971b..99b0d81285f0 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -3065,6 +3065,13 @@ public class AppOpsService extends IAppOpsService.Stub { shouldCollectAsyncNotedOp, message, shouldCollectMessage, skipProxyOperation); } + // TODO b/184963112: remove once full blaming is implemented + private boolean isRecognitionServiceTemp(int code, String packageName) { + return code == OP_RECORD_AUDIO + && (packageName.equals("com.google.android.googlequicksearchbox") + || packageName.equals("com.google.android.tts")); + } + private SyncNotedAppOp noteProxyOperationImpl(int code, AttributionSource attributionSource, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage, boolean skipProxyOperation) { @@ -3085,13 +3092,15 @@ public class AppOpsService extends IAppOpsService.Stub { String resolveProxyPackageName = AppOpsManager.resolvePackageName(proxyUid, proxyPackageName); if (resolveProxyPackageName == null) { - return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, proxiedAttributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, + proxiedAttributionTag, proxiedPackageName); } final boolean isSelfBlame = Binder.getCallingUid() == proxiedUid; final boolean isProxyTrusted = mContext.checkPermission( Manifest.permission.UPDATE_APP_OPS_STATS, -1, proxyUid) - == PackageManager.PERMISSION_GRANTED || isSelfBlame; + == PackageManager.PERMISSION_GRANTED || isSelfBlame + || isRecognitionServiceTemp(code, proxyPackageName); if (!skipProxyOperation) { final int proxyFlags = isProxyTrusted ? AppOpsManager.OP_FLAG_TRUSTED_PROXY @@ -3101,14 +3110,16 @@ public class AppOpsService extends IAppOpsService.Stub { resolveProxyPackageName, proxyAttributionTag, Process.INVALID_UID, null, null, proxyFlags, !isProxyTrusted, "proxy " + message, shouldCollectMessage); if (proxyReturn.getOpMode() != AppOpsManager.MODE_ALLOWED) { - return new SyncNotedAppOp(proxyReturn.getOpMode(), code, proxiedAttributionTag); + return new SyncNotedAppOp(proxyReturn.getOpMode(), code, proxiedAttributionTag, + proxiedPackageName); } } String resolveProxiedPackageName = AppOpsManager.resolvePackageName(proxiedUid, proxiedPackageName); if (resolveProxiedPackageName == null) { - return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, proxiedAttributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, proxiedAttributionTag, + proxiedPackageName); } final int proxiedFlags = isProxyTrusted ? AppOpsManager.OP_FLAG_TRUSTED_PROXIED @@ -3135,7 +3146,8 @@ public class AppOpsService extends IAppOpsService.Stub { String resolvedPackageName = AppOpsManager.resolvePackageName(uid, packageName); if (resolvedPackageName == null) { - return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, attributionTag, + packageName); } return noteOperationUnchecked(code, uid, resolvedPackageName, attributionTag, Process.INVALID_UID, null, null, AppOpsManager.OP_FLAG_SELF, @@ -3152,7 +3164,8 @@ public class AppOpsService extends IAppOpsService.Stub { bypass = verifyAndGetBypass(uid, packageName, attributionTag); } catch (SecurityException e) { Slog.e(TAG, "noteOperation", e); - return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag, + packageName); } synchronized (this) { @@ -3163,7 +3176,8 @@ public class AppOpsService extends IAppOpsService.Stub { AppOpsManager.MODE_IGNORED); if (DEBUG) Slog.d(TAG, "noteOperation: no op for code " + code + " uid " + uid + " package " + packageName); - return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag, + packageName); } final Op op = getOpLocked(ops, code, uid, true); final AttributedOp attributedOp = op.getOrCreateAttribution(op, attributionTag); @@ -3179,7 +3193,8 @@ public class AppOpsService extends IAppOpsService.Stub { attributedOp.rejected(uidState.state, flags); scheduleOpNotedIfNeededLocked(code, uid, packageName, attributionTag, flags, AppOpsManager.MODE_IGNORED); - return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, attributionTag, + packageName); } // If there is a non-default per UID policy (we set UID op mode only if // non-default) it takes over, otherwise use the per package policy. @@ -3192,7 +3207,7 @@ public class AppOpsService extends IAppOpsService.Stub { attributedOp.rejected(uidState.state, flags); scheduleOpNotedIfNeededLocked(code, uid, packageName, attributionTag, flags, uidMode); - return new SyncNotedAppOp(uidMode, code, attributionTag); + return new SyncNotedAppOp(uidMode, code, attributionTag, packageName); } } else { final Op switchOp = switchCode != code ? getOpLocked(ops, switchCode, uid, true) @@ -3205,7 +3220,7 @@ public class AppOpsService extends IAppOpsService.Stub { attributedOp.rejected(uidState.state, flags); scheduleOpNotedIfNeededLocked(code, uid, packageName, attributionTag, flags, mode); - return new SyncNotedAppOp(mode, code, attributionTag); + return new SyncNotedAppOp(mode, code, attributionTag, packageName); } } if (DEBUG) { @@ -3224,7 +3239,8 @@ public class AppOpsService extends IAppOpsService.Stub { shouldCollectMessage); } - return new SyncNotedAppOp(AppOpsManager.MODE_ALLOWED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_ALLOWED, code, attributionTag, + packageName); } } @@ -3528,7 +3544,8 @@ public class AppOpsService extends IAppOpsService.Stub { String resolvedPackageName = AppOpsManager.resolvePackageName(uid, packageName); if (resolvedPackageName == null) { - return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, attributionTag, + packageName); } // As a special case for OP_RECORD_AUDIO_HOTWORD, which we use only for attribution @@ -3539,7 +3556,7 @@ public class AppOpsService extends IAppOpsService.Stub { if (code == OP_RECORD_AUDIO_HOTWORD) { int result = checkOperation(OP_RECORD_AUDIO, uid, packageName); if (result != AppOpsManager.MODE_ALLOWED) { - return new SyncNotedAppOp(result, code, attributionTag); + return new SyncNotedAppOp(result, code, attributionTag, packageName); } } return startOperationUnchecked(clientId, code, uid, packageName, attributionTag, @@ -3578,7 +3595,8 @@ public class AppOpsService extends IAppOpsService.Stub { String resolvedProxyPackageName = AppOpsManager.resolvePackageName(proxyUid, proxyPackageName); if (resolvedProxyPackageName == null) { - return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, proxiedAttributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, proxiedAttributionTag, + proxiedPackageName); } final boolean isSelfBlame = Binder.getCallingUid() == proxiedUid; @@ -3589,7 +3607,8 @@ public class AppOpsService extends IAppOpsService.Stub { String resolvedProxiedPackageName = AppOpsManager.resolvePackageName(proxiedUid, proxiedPackageName); if (resolvedProxiedPackageName == null) { - return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, proxiedAttributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, proxiedAttributionTag, + proxiedPackageName); } final int proxiedFlags = isProxyTrusted ? AppOpsManager.OP_FLAG_TRUSTED_PROXIED @@ -3637,7 +3656,8 @@ public class AppOpsService extends IAppOpsService.Stub { bypass = verifyAndGetBypass(uid, packageName, attributionTag); } catch (SecurityException e) { Slog.e(TAG, "startOperation", e); - return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag, + packageName); } synchronized (this) { @@ -3649,7 +3669,8 @@ public class AppOpsService extends IAppOpsService.Stub { } if (DEBUG) Slog.d(TAG, "startOperation: no op for code " + code + " uid " + uid + " package " + packageName); - return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_ERRORED, code, attributionTag, + packageName); } final Op op = getOpLocked(ops, code, uid, true); if (isOpRestrictedLocked(uid, code, packageName, bypass)) { @@ -3657,7 +3678,8 @@ public class AppOpsService extends IAppOpsService.Stub { scheduleOpStartedIfNeededLocked(code, uid, packageName, attributionTag, flags, AppOpsManager.MODE_IGNORED); } - return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_IGNORED, code, attributionTag, + packageName); } final AttributedOp attributedOp = op.getOrCreateAttribution(op, attributionTag); @@ -3678,7 +3700,7 @@ public class AppOpsService extends IAppOpsService.Stub { scheduleOpStartedIfNeededLocked(code, uid, packageName, attributionTag, flags, uidMode); } - return new SyncNotedAppOp(uidMode, code, attributionTag); + return new SyncNotedAppOp(uidMode, code, attributionTag, packageName); } } else { final Op switchOp = switchCode != code ? getOpLocked(ops, switchCode, uid, true) @@ -3694,7 +3716,7 @@ public class AppOpsService extends IAppOpsService.Stub { scheduleOpStartedIfNeededLocked(code, uid, packageName, attributionTag, flags, mode); } - return new SyncNotedAppOp(mode, code, attributionTag); + return new SyncNotedAppOp(mode, code, attributionTag, packageName); } } if (DEBUG) Slog.d(TAG, "startOperation: allowing code " + code + " uid " + uid @@ -3716,7 +3738,8 @@ public class AppOpsService extends IAppOpsService.Stub { message, shouldCollectMessage); } - return new SyncNotedAppOp(AppOpsManager.MODE_ALLOWED, code, attributionTag); + return new SyncNotedAppOp(AppOpsManager.MODE_ALLOWED, code, attributionTag, + packageName); } @Override diff --git a/services/core/java/com/android/server/appop/DiscreteRegistry.java b/services/core/java/com/android/server/appop/DiscreteRegistry.java index e9b61b3ab7fb..fc48b3f45431 100644 --- a/services/core/java/com/android/server/appop/DiscreteRegistry.java +++ b/services/core/java/com/android/server/appop/DiscreteRegistry.java @@ -179,17 +179,20 @@ final class DiscreteRegistry { } void systemReady() { - synchronized (mOnDiskLock) { - mDiscreteAccessDir = new File(new File(Environment.getDataSystemDirectory(), "appops"), - "discrete"); - createDiscreteAccessDirLocked(); - mDiscreteOps = new DiscreteOps(); - } DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_PRIVACY, AsyncTask.THREAD_POOL_EXECUTOR, (DeviceConfig.Properties p) -> { setDiscreteHistoryParameters(p); }); setDiscreteHistoryParameters(DeviceConfig.getProperties(DeviceConfig.NAMESPACE_PRIVACY)); + synchronized (mOnDiskLock) { + synchronized (mInMemoryLock) { + mDiscreteAccessDir = new File( + new File(Environment.getDataSystemDirectory(), "appops"), + "discrete"); + createDiscreteAccessDirLocked(); + mDiscreteOps = new DiscreteOps(); + } + } } private void setDiscreteHistoryParameters(DeviceConfig.Properties p) { diff --git a/services/core/java/com/android/server/appop/HistoricalRegistry.java b/services/core/java/com/android/server/appop/HistoricalRegistry.java index 72e582e594b4..55560150d53a 100644 --- a/services/core/java/com/android/server/appop/HistoricalRegistry.java +++ b/services/core/java/com/android/server/appop/HistoricalRegistry.java @@ -246,10 +246,10 @@ final class HistoricalRegistry { + " by which to push history on next write"); } } - mDiscreteRegistry.systemReady(); } } } + mDiscreteRegistry.systemReady(); } private boolean isPersistenceInitializedMLocked() { diff --git a/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java b/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java index d82847c95dce..62a9769aee1a 100644 --- a/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java +++ b/services/core/java/com/android/server/biometrics/sensors/ClientMonitorCallbackConverter.java @@ -167,13 +167,13 @@ public class ClientMonitorCallbackConverter { // Fingerprint-specific callbacks for FingerprintManager only - public void onUdfpsPointerDown(int sensorId, int cookie) throws RemoteException { + public void onUdfpsPointerDown(int sensorId) throws RemoteException { if (mFingerprintServiceReceiver != null) { mFingerprintServiceReceiver.onUdfpsPointerDown(sensorId); } } - public void onUdfpsPointerUp(int sensorId, int cookie) throws RemoteException { + public void onUdfpsPointerUp(int sensorId) throws RemoteException { if (mFingerprintServiceReceiver != null) { mFingerprintServiceReceiver.onUdfpsPointerUp(sensorId); } diff --git a/services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java index 741946e147cd..1fcad62e3a07 100644 --- a/services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/GenerateChallengeClient.java @@ -31,8 +31,8 @@ public abstract class GenerateChallengeClient<T> extends HalClientMonitor<T> { public GenerateChallengeClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon, @NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, - @NonNull String owner, int sensorId) { - super(context, lazyDaemon, token, listener, 0 /* userId */, owner, 0 /* cookie */, sensorId, + int userId, @NonNull String owner, int sensorId) { + super(context, lazyDaemon, token, listener, userId, owner, 0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN); } diff --git a/services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java index 7f86c628028a..1edf5afef3b2 100644 --- a/services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/RevokeChallengeClient.java @@ -26,8 +26,8 @@ import com.android.server.biometrics.BiometricsProto; public abstract class RevokeChallengeClient<T> extends HalClientMonitor<T> { public RevokeChallengeClient(@NonNull Context context, @NonNull LazyDaemon<T> lazyDaemon, - @NonNull IBinder token, @NonNull String owner, int sensorId) { - super(context, lazyDaemon, token, null /* listener */, 0 /* userId */, owner, + @NonNull IBinder token, int userId, @NonNull String owner, int sensorId) { + super(context, lazyDaemon, token, null /* listener */, userId, owner, 0 /* cookie */, sensorId, BiometricsProtoEnums.MODALITY_UNKNOWN, BiometricsProtoEnums.ACTION_UNKNOWN, BiometricsProtoEnums.CLIENT_UNKNOWN); } diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java index 5804622a545f..904c39922a06 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceGenerateChallengeClient.java @@ -35,8 +35,9 @@ public class FaceGenerateChallengeClient extends GenerateChallengeClient<ISessio FaceGenerateChallengeClient(@NonNull Context context, @NonNull LazyDaemon<ISession> lazyDaemon, @NonNull IBinder token, - @NonNull ClientMonitorCallbackConverter listener, @NonNull String owner, int sensorId) { - super(context, lazyDaemon, token, listener, owner, sensorId); + @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull String owner, + int sensorId) { + super(context, lazyDaemon, token, listener, userId, owner, sensorId); } @Override diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java index 84d239ef2b50..dd3057e721be 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceProvider.java @@ -300,7 +300,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider { mHandler.post(() -> { final FaceGenerateChallengeClient client = new FaceGenerateChallengeClient(mContext, mSensors.get(sensorId).getLazySession(), token, - new ClientMonitorCallbackConverter(receiver), opPackageName, sensorId); + new ClientMonitorCallbackConverter(receiver), userId, opPackageName, sensorId); scheduleForSensor(sensorId, client); }); } @@ -310,7 +310,7 @@ public class FaceProvider implements IBinder.DeathRecipient, ServiceProvider { @NonNull String opPackageName, long challenge) { mHandler.post(() -> { final FaceRevokeChallengeClient client = new FaceRevokeChallengeClient(mContext, - mSensors.get(sensorId).getLazySession(), token, opPackageName, sensorId, + mSensors.get(sensorId).getLazySession(), token, userId, opPackageName, sensorId, challenge); scheduleForSensor(sensorId, client); }); diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceRevokeChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceRevokeChallengeClient.java index 99bf893d5ce8..7a69c443411f 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceRevokeChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/FaceRevokeChallengeClient.java @@ -37,8 +37,8 @@ public class FaceRevokeChallengeClient extends RevokeChallengeClient<ISession> { FaceRevokeChallengeClient(@NonNull Context context, @NonNull LazyDaemon<ISession> lazyDaemon, @NonNull IBinder token, - @NonNull String owner, int sensorId, long challenge) { - super(context, lazyDaemon, token, owner, sensorId); + int userId, @NonNull String owner, int sensorId, long challenge) { + super(context, lazyDaemon, token, userId, owner, sensorId); mChallenge = challenge; } diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java index 5dfc5907060f..f908fba8693c 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java @@ -518,8 +518,8 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider { scheduleUpdateActiveUserWithoutHandler(userId); final FaceGenerateChallengeClient client = new FaceGenerateChallengeClient(mContext, - mLazyDaemon, token, new ClientMonitorCallbackConverter(receiver), opPackageName, - mSensorId, mCurrentChallengeOwner); + mLazyDaemon, token, new ClientMonitorCallbackConverter(receiver), userId, + opPackageName, mSensorId, mCurrentChallengeOwner); mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() { @Override public void onClientStarted(@NonNull BaseClientMonitor clientMonitor) { @@ -548,7 +548,7 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider { } final FaceRevokeChallengeClient client = new FaceRevokeChallengeClient(mContext, - mLazyDaemon, token, opPackageName, mSensorId); + mLazyDaemon, token, userId, opPackageName, mSensorId); mScheduler.scheduleClientMonitor(client, new BaseClientMonitor.Callback() { @Override public void onClientFinished(@NonNull BaseClientMonitor clientMonitor, diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGenerateChallengeClient.java index 24af817a262f..3e0064e496c7 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGenerateChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceGenerateChallengeClient.java @@ -43,9 +43,9 @@ public class FaceGenerateChallengeClient extends GenerateChallengeClient<IBiomet FaceGenerateChallengeClient(@NonNull Context context, @NonNull LazyDaemon<IBiometricsFace> lazyDaemon, @NonNull IBinder token, - @NonNull ClientMonitorCallbackConverter listener, @NonNull String owner, int sensorId, - @Nullable FaceGenerateChallengeClient interruptedClient) { - super(context, lazyDaemon, token, listener, owner, sensorId); + @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull String owner, + int sensorId, @Nullable FaceGenerateChallengeClient interruptedClient) { + super(context, lazyDaemon, token, listener, userId, owner, sensorId); mInterruptedClient = interruptedClient; } diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceRevokeChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceRevokeChallengeClient.java index ff3e770cdcb2..5ec7a9819b27 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceRevokeChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/FaceRevokeChallengeClient.java @@ -35,8 +35,8 @@ public class FaceRevokeChallengeClient extends RevokeChallengeClient<IBiometrics FaceRevokeChallengeClient(@NonNull Context context, @NonNull LazyDaemon<IBiometricsFace> lazyDaemon, @NonNull IBinder token, - @NonNull String owner, int sensorId) { - super(context, lazyDaemon, token, owner, sensorId); + int userId, @NonNull String owner, int sensorId) { + super(context, lazyDaemon, token, userId, owner, sensorId); } @Override diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java index ce06d06afe4e..6382950711ce 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/FingerprintService.java @@ -925,6 +925,18 @@ public class FingerprintService extends SystemService { } @Override + public void onUiReady(int sensorId) { + Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); + + final ServiceProvider provider = getProviderForSensor(sensorId); + if (provider == null) { + Slog.w(TAG, "No matching provider for onUiReady, sensorId: " + sensorId); + return; + } + provider.onUiReady(sensorId); + } + + @Override public void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller) { Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL); diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java index 701b9a739e33..4cbe031d0141 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/ServiceProvider.java @@ -140,6 +140,8 @@ public interface ServiceProvider { void onPointerUp(int sensorId); + void onUiReady(int sensorId); + void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller); void dumpProtoState(int sensorId, @NonNull ProtoOutputStream proto, diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java index 0aa112f106c4..150e69c60974 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/Udfps.java @@ -26,4 +26,5 @@ import com.android.server.biometrics.sensors.BaseClientMonitor; public interface Udfps { void onPointerDown(int x, int y, float minor, float major); void onPointerUp(); + void onUiReady(); } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java index 4e5d12d2021c..45842677609c 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintAuthenticationClient.java @@ -120,7 +120,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<ISession> imp try { getFreshDaemon().onPointerDown(0 /* pointerId */, x, y, minor, major); if (getListener() != null) { - getListener().onUdfpsPointerDown(getSensorId(), getCookie()); + getListener().onUdfpsPointerDown(getSensorId()); } } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); @@ -132,7 +132,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<ISession> imp try { getFreshDaemon().onPointerUp(0 /* pointerId */); if (getListener() != null) { - getListener().onUdfpsPointerUp(getSensorId(), getCookie()); + getListener().onUdfpsPointerUp(getSensorId()); } } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); @@ -140,6 +140,15 @@ class FingerprintAuthenticationClient extends AuthenticationClient<ISession> imp } @Override + public void onUiReady() { + try { + getFreshDaemon().onUiReady(); + } catch (RemoteException e) { + Slog.e(TAG, "Remote exception", e); + } + } + + @Override public void onLockoutTimed(long durationMillis) { mLockoutCache.setLockoutModeForUser(getTargetUserId(), LockoutTracker.LOCKOUT_TIMED); // Lockout metrics are logged as an error code. diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java index fd4aece339f3..790b38c07bf5 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintEnrollClient.java @@ -150,4 +150,13 @@ class FingerprintEnrollClient extends EnrollClient<ISession> implements Udfps { Slog.e(TAG, "Unable to send pointer up", e); } } + + @Override + public void onUiReady() { + try { + getFreshDaemon().onUiReady(); + } catch (RemoteException e) { + Slog.e(TAG, "Unable to send UI ready", e); + } + } } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java index 15a85e6dc309..293b57d0e890 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintGenerateChallengeClient.java @@ -37,8 +37,8 @@ class FingerprintGenerateChallengeClient extends GenerateChallengeClient<ISessio @NonNull LazyDaemon<ISession> lazyDaemon, @NonNull IBinder token, @NonNull ClientMonitorCallbackConverter listener, - @NonNull String owner, int sensorId) { - super(context, lazyDaemon, token, listener, owner, sensorId); + int userId, @NonNull String owner, int sensorId) { + super(context, lazyDaemon, token, listener, userId, owner, sensorId); } @Override diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java index 083df1929326..20d6ee24d327 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintProvider.java @@ -300,7 +300,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi final FingerprintGenerateChallengeClient client = new FingerprintGenerateChallengeClient(mContext, mSensors.get(sensorId).getLazySession(), token, - new ClientMonitorCallbackConverter(receiver), opPackageName, + new ClientMonitorCallbackConverter(receiver), userId, opPackageName, sensorId); scheduleForSensor(sensorId, client); }); @@ -313,7 +313,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi final FingerprintRevokeChallengeClient client = new FingerprintRevokeChallengeClient(mContext, mSensors.get(sensorId).getLazySession(), token, - opPackageName, sensorId, challenge); + userId, opPackageName, sensorId, challenge); scheduleForSensor(sensorId, client); }); } @@ -514,6 +514,18 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi } @Override + public void onUiReady(int sensorId) { + final BaseClientMonitor client = + mSensors.get(sensorId).getScheduler().getCurrentClient(); + if (!(client instanceof Udfps)) { + Slog.e(getTag(), "onUiReady received during client: " + client); + return; + } + final Udfps udfps = (Udfps) client; + udfps.onUiReady(); + } + + @Override public void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller) { mUdfpsOverlayController = controller; } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintRevokeChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintRevokeChallengeClient.java index 90c69789b541..9e6f1bc2ff67 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintRevokeChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/FingerprintRevokeChallengeClient.java @@ -37,8 +37,8 @@ class FingerprintRevokeChallengeClient extends RevokeChallengeClient<ISession> { FingerprintRevokeChallengeClient(@NonNull Context context, @NonNull LazyDaemon<ISession> lazyDaemon, @NonNull IBinder token, - @NonNull String owner, int sensorId, long challenge) { - super(context, lazyDaemon, token, owner, sensorId); + int userId, @NonNull String owner, int sensorId, long challenge) { + super(context, lazyDaemon, token, userId, owner, sensorId); mChallenge = challenge; } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java index 3528690e6459..274652096624 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java @@ -528,7 +528,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider mHandler.post(() -> { final FingerprintGenerateChallengeClient client = new FingerprintGenerateChallengeClient(mContext, mLazyDaemon, token, - new ClientMonitorCallbackConverter(receiver), opPackageName, + new ClientMonitorCallbackConverter(receiver), userId, opPackageName, mSensorProperties.sensorId); mScheduler.scheduleClientMonitor(client); }); @@ -539,7 +539,8 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider @NonNull String opPackageName, long challenge) { mHandler.post(() -> { final FingerprintRevokeChallengeClient client = new FingerprintRevokeChallengeClient( - mContext, mLazyDaemon, token, opPackageName, mSensorProperties.sensorId); + mContext, mLazyDaemon, token, userId, opPackageName, + mSensorProperties.sensorId); mScheduler.scheduleClientMonitor(client); }); } @@ -737,6 +738,17 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider } @Override + public void onUiReady(int sensorId) { + final BaseClientMonitor client = mScheduler.getCurrentClient(); + if (!(client instanceof Udfps)) { + Slog.w(TAG, "onUiReady received during client: " + client); + return; + } + final Udfps udfps = (Udfps) client; + udfps.onUiReady(); + } + + @Override public void setUdfpsOverlayController(@NonNull IUdfpsOverlayController controller) { mUdfpsOverlayController = controller; } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java index 97f128748bcc..24ed85c42e4e 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintAuthenticationClient.java @@ -152,7 +152,7 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi UdfpsHelper.onFingerDown(getFreshDaemon(), x, y, minor, major); if (getListener() != null) { try { - getListener().onUdfpsPointerDown(getSensorId(), getCookie()); + getListener().onUdfpsPointerDown(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } @@ -164,10 +164,15 @@ class FingerprintAuthenticationClient extends AuthenticationClient<IBiometricsFi UdfpsHelper.onFingerUp(getFreshDaemon()); if (getListener() != null) { try { - getListener().onUdfpsPointerUp(getSensorId(), getCookie()); + getListener().onUdfpsPointerUp(getSensorId()); } catch (RemoteException e) { Slog.e(TAG, "Remote exception", e); } } } + + @Override + public void onUiReady() { + // Unsupported in HIDL. + } } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java index db44aee1c0ed..160736433112 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintDetectClient.java @@ -108,6 +108,11 @@ class FingerprintDetectClient extends AcquisitionClient<IBiometricsFingerprint> } @Override + public void onUiReady() { + // Unsupported in HIDL. + } + + @Override public void onAuthenticated(BiometricAuthenticator.Identifier identifier, boolean authenticated, ArrayList<Byte> hardwareAuthToken) { logOnAuthenticated(getContext(), authenticated, false /* requireConfirmation */, diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java index 41d23089a530..4265f4082ff4 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintEnrollClient.java @@ -146,4 +146,9 @@ public class FingerprintEnrollClient extends EnrollClient<IBiometricsFingerprint public void onPointerUp() { UdfpsHelper.onFingerUp(getFreshDaemon()); } + + @Override + public void onUiReady() { + // Unsupported in HIDL. + } } diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintGenerateChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintGenerateChallengeClient.java index 302ec2bd4c81..3584397eea81 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintGenerateChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintGenerateChallengeClient.java @@ -38,8 +38,9 @@ public class FingerprintGenerateChallengeClient FingerprintGenerateChallengeClient(@NonNull Context context, @NonNull LazyDaemon<IBiometricsFingerprint> lazyDaemon, @NonNull IBinder token, - @NonNull ClientMonitorCallbackConverter listener, @NonNull String owner, int sensorId) { - super(context, lazyDaemon, token, listener, owner, sensorId); + @NonNull ClientMonitorCallbackConverter listener, int userId, @NonNull String owner, + int sensorId) { + super(context, lazyDaemon, token, listener, userId, owner, sensorId); } @Override diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintRevokeChallengeClient.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintRevokeChallengeClient.java index 93d8ff3db177..b6b29b32d909 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintRevokeChallengeClient.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/FingerprintRevokeChallengeClient.java @@ -37,8 +37,8 @@ public class FingerprintRevokeChallengeClient FingerprintRevokeChallengeClient(@NonNull Context context, @NonNull LazyDaemon<IBiometricsFingerprint> lazyDaemon, @NonNull IBinder token, - @NonNull String owner, int sensorId) { - super(context, lazyDaemon, token, owner, sensorId); + int userId, @NonNull String owner, int sensorId) { + super(context, lazyDaemon, token, userId, owner, sensorId); } @Override diff --git a/services/core/java/com/android/server/compat/CompatConfig.java b/services/core/java/com/android/server/compat/CompatConfig.java index 55e269630093..924756889408 100644 --- a/services/core/java/com/android/server/compat/CompatConfig.java +++ b/services/core/java/com/android/server/compat/CompatConfig.java @@ -33,6 +33,7 @@ import com.android.internal.compat.AndroidBuildClassifier; import com.android.internal.compat.CompatibilityChangeConfig; import com.android.internal.compat.CompatibilityChangeInfo; import com.android.internal.compat.CompatibilityOverrideConfig; +import com.android.internal.compat.CompatibilityOverridesToRemoveConfig; import com.android.internal.compat.IOverrideValidator; import com.android.internal.compat.OverrideAllowedState; import com.android.server.compat.config.Change; @@ -370,6 +371,27 @@ final class CompatConfig { } } + /** + * Removes overrides whose change ID is specified in {@code overridesToRemove} that were + * previously added via {@link #addOverride(long, String, boolean)} or + * {@link #addOverrides(CompatibilityOverrideConfig, String)} for a certain package. + * + * <p>This restores the default behaviour for the given change IDs and app. + * + * @param overridesToRemove list of change IDs for which to restore the default behaviour. + * @param packageName the package for which the overrides should be purged + */ + void removePackageOverrides(CompatibilityOverridesToRemoveConfig overridesToRemove, + String packageName) { + synchronized (mChanges) { + for (Long changeId : overridesToRemove.changeIds) { + removeOverrideUnsafe(changeId, packageName); + } + saveOverrides(); + invalidateCache(); + } + } + private long[] getAllowedChangesSinceTargetSdkForPackage(String packageName, int targetSdkVersion) { LongArray allowed = new LongArray(); diff --git a/services/core/java/com/android/server/compat/PlatformCompat.java b/services/core/java/com/android/server/compat/PlatformCompat.java index e604a05ebdac..eba53fb05985 100644 --- a/services/core/java/com/android/server/compat/PlatformCompat.java +++ b/services/core/java/com/android/server/compat/PlatformCompat.java @@ -46,6 +46,7 @@ import com.android.internal.compat.ChangeReporter; import com.android.internal.compat.CompatibilityChangeConfig; import com.android.internal.compat.CompatibilityChangeInfo; import com.android.internal.compat.CompatibilityOverrideConfig; +import com.android.internal.compat.CompatibilityOverridesToRemoveConfig; import com.android.internal.compat.IOverrideValidator; import com.android.internal.compat.IPlatformCompat; import com.android.internal.util.DumpUtils; @@ -54,6 +55,7 @@ import com.android.server.LocalServices; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -209,7 +211,7 @@ public class PlatformCompat extends IPlatformCompat.Stub { String packageName) { // TODO(b/183630314): Unify the permission enforcement with the other setOverrides* methods. checkCompatChangeOverrideOverridablePermission(); - checkAllCompatOverridesAreOverridable(overrides); + checkAllCompatOverridesAreOverridable(overrides.overrides.keySet()); mCompatConfig.addOverrides(overrides, packageName); } @@ -273,6 +275,16 @@ public class PlatformCompat extends IPlatformCompat.Stub { } @Override + public void removeOverridesOnReleaseBuilds( + CompatibilityOverridesToRemoveConfig overridesToRemove, + String packageName) { + // TODO(b/183630314): Unify the permission enforcement with the other setOverrides* methods. + checkCompatChangeOverrideOverridablePermission(); + checkAllCompatOverridesAreOverridable(overridesToRemove.changeIds); + mCompatConfig.removePackageOverrides(overridesToRemove, packageName); + } + + @Override public CompatibilityChangeConfig getAppConfig(ApplicationInfo appInfo) { checkCompatChangeReadAndLogPermission(); return mCompatConfig.getAppConfig(appInfo); @@ -418,8 +430,8 @@ public class PlatformCompat extends IPlatformCompat.Stub { } } - private void checkAllCompatOverridesAreOverridable(CompatibilityOverrideConfig overrides) { - for (Long changeId : overrides.overrides.keySet()) { + private void checkAllCompatOverridesAreOverridable(Collection<Long> changeIds) { + for (Long changeId : changeIds) { if (!mCompatConfig.isOverridable(changeId)) { throw new SecurityException("Only change ids marked as Overridable can be " + "overridden."); diff --git a/services/core/java/com/android/server/connectivity/FullScore.java b/services/core/java/com/android/server/connectivity/FullScore.java index 14cec0956070..fbfa7a18c9d8 100644 --- a/services/core/java/com/android/server/connectivity/FullScore.java +++ b/services/core/java/com/android/server/connectivity/FullScore.java @@ -108,9 +108,10 @@ public class FullScore { // and all bits managed by FullScore unset. As bits are handled from 0 up in NetworkScore and // from 63 down in FullScore, cut at the 32nd bit for simplicity, but change this if some day // there are more than 32 bits handled on either side. - // YIELD_TO_BAD_WIFI is temporarily handled by ConnectivityService. - private static final long EXTERNAL_POLICIES_MASK = - 0x00000000FFFFFFFFL & ~(1L << POLICY_YIELD_TO_BAD_WIFI); + // YIELD_TO_BAD_WIFI is temporarily handled by ConnectivityService, but the factory is still + // allowed to set it, so that it's possible to transition from handling it in CS to handling + // it in the factory. + private static final long EXTERNAL_POLICIES_MASK = 0x00000000FFFFFFFFL; @VisibleForTesting static @NonNull String policyNameOf(final int policy) { diff --git a/services/core/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java index 17f39ddac4fd..c3c42bae55b0 100644 --- a/services/core/java/com/android/server/content/ContentService.java +++ b/services/core/java/com/android/server/content/ContentService.java @@ -261,10 +261,12 @@ public final class ContentService extends IContentService.Stub { pw.print(pidCounts.get(pid)); pw.println(" observers"); } pw.println(); - pw.print(" Total number of nodes: "); pw.println(counts[0]); - pw.print(" Total number of observers: "); pw.println(counts[1]); + pw.increaseIndent(); + pw.print("Total number of nodes: "); pw.println(counts[0]); + pw.print("Total number of observers: "); pw.println(counts[1]); - sObserverDeathDispatcher.dump(pw, " "); + sObserverDeathDispatcher.dump(pw); + pw.decreaseIndent(); } synchronized (sObserverLeakDetectedUid) { pw.println(); diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java index 4bd1fd8e44cc..fb919fbe0a3d 100644 --- a/services/core/java/com/android/server/content/SyncManager.java +++ b/services/core/java/com/android/server/content/SyncManager.java @@ -1478,12 +1478,11 @@ public class SyncManager { + logSafe(syncOperation.target)); backoff = new Pair<Long, Long>(SyncStorageEngine.NOT_IN_BACKOFF_MODE, SyncStorageEngine.NOT_IN_BACKOFF_MODE); - } else { + } else if (backoff.first != SyncStorageEngine.NOT_IN_BACKOFF_MODE) { // if an EJ is being backed-off but doesn't have SYNC_EXTRAS_IGNORE_BACKOFF set, - // reschedule it as a regular job - if (syncOperation.isScheduledAsExpeditedJob()) { - syncOperation.scheduleEjAsRegularJob = true; - } + // reschedule it as a regular job. Immediately downgrade here in case minDelay is + // set to 0. + syncOperation.scheduleEjAsRegularJob = true; } long now = SystemClock.elapsedRealtime(); long backoffDelay = backoff.first == SyncStorageEngine.NOT_IN_BACKOFF_MODE ? 0 @@ -1660,13 +1659,31 @@ public class SyncManager { final UsageStatsManagerInternal usmi = LocalServices.getService(UsageStatsManagerInternal.class); if (usmi != null) { + // This method name is unfortunate. It elevates apps to a higher bucket, so it ideally + // should be called before we attempt to schedule the job (especially as EJ). usmi.reportSyncScheduled(syncOperation.owningPackage, UserHandle.getUserId(syncOperation.owningUid), syncOperation.isAppStandbyExempted()); } - getJobScheduler().scheduleAsPackage(b.build(), syncOperation.owningPackage, + final JobInfo ji = b.build(); + int result = getJobScheduler().scheduleAsPackage(ji, syncOperation.owningPackage, syncOperation.target.userId, syncOperation.wakeLockName()); + if (result == JobScheduler.RESULT_FAILURE && ji.isExpedited()) { + if (isLoggable) { + Slog.i(TAG, "Failed to schedule EJ for " + syncOperation.owningPackage + + ". Downgrading to regular"); + } + syncOperation.scheduleEjAsRegularJob = true; + b.setExpedited(false).setExtras(syncOperation.toJobInfoExtras()); + result = getJobScheduler().scheduleAsPackage(b.build(), syncOperation.owningPackage, + syncOperation.target.userId, syncOperation.wakeLockName()); + } + if (result == JobScheduler.RESULT_FAILURE) { + Slog.e(TAG, "Failed to schedule job for " + syncOperation.owningPackage); + // TODO: notify AppStandbyController that the sync isn't actually scheduled so the + // bucket doesn't stay elevated + } } /** diff --git a/services/core/java/com/android/server/content/SyncOperation.java b/services/core/java/com/android/server/content/SyncOperation.java index c8654d1b36ee..f6fad2500626 100644 --- a/services/core/java/com/android/server/content/SyncOperation.java +++ b/services/core/java/com/android/server/content/SyncOperation.java @@ -258,6 +258,7 @@ public class SyncOperation { jobInfoExtras.putLong("expectedRuntime", expectedRuntime); jobInfoExtras.putInt("retries", retries); jobInfoExtras.putInt("syncExemptionFlag", syncExemptionFlag); + jobInfoExtras.putBoolean("ejDowngradedToRegular", scheduleEjAsRegularJob); return jobInfoExtras; } @@ -325,6 +326,7 @@ public class SyncOperation { op.jobId = jobExtras.getInt("jobId"); op.expectedRuntime = jobExtras.getLong("expectedRuntime"); op.retries = jobExtras.getInt("retries"); + op.scheduleEjAsRegularJob = jobExtras.getBoolean("ejDowngradedToRegular"); return op; } diff --git a/services/core/java/com/android/server/display/DisplayDeviceConfig.java b/services/core/java/com/android/server/display/DisplayDeviceConfig.java index c46cfe3d1d2f..0f9e604651e8 100644 --- a/services/core/java/com/android/server/display/DisplayDeviceConfig.java +++ b/services/core/java/com/android/server/display/DisplayDeviceConfig.java @@ -74,11 +74,16 @@ public class DisplayDeviceConfig { // so -2 is used instead private static final float INVALID_BRIGHTNESS_IN_CONFIG = -2f; + private static final float NITS_INVALID = -1; + private final Context mContext; // The details of the ambient light sensor associated with this display. private final SensorIdentifier mAmbientLightSensor = new SensorIdentifier(); + // The details of the proximity sensor associated with this display. + private final SensorIdentifier mProximitySensor = new SensorIdentifier(); + // Nits and backlight values that are loaded from either the display device config file, or // config.xml. These are the raw values and just used for the dumpsys private float[] mRawNits; @@ -227,7 +232,7 @@ public class DisplayDeviceConfig { public float getNitsFromBacklight(float backlight) { if (mBacklightToNitsSpline == null) { Slog.wtf(TAG, "requesting nits when no mapping exists."); - return -1; + return NITS_INVALID; } backlight = Math.max(backlight, mBacklightMinimum); return mBacklightToNitsSpline.interpolate(backlight); @@ -272,11 +277,8 @@ public class DisplayDeviceConfig { return mAmbientLightSensor; } - /** - * @return true if a nits to backlight mapping is defined in this config, false otherwise. - */ - public boolean hasNitsMapping() { - return mBacklightToNitsSpline != null; + SensorIdentifier getProximitySensor() { + return mProximitySensor; } /** @@ -322,6 +324,7 @@ public class DisplayDeviceConfig { + ", mBrightnessRampSlowDecrease=" + mBrightnessRampSlowDecrease + ", mBrightnessRampSlowIncrease=" + mBrightnessRampSlowIncrease + ", mAmbientLightSensor=" + mAmbientLightSensor + + ", mProximitySensor=" + mProximitySensor + "}"; return str; } @@ -374,6 +377,7 @@ public class DisplayDeviceConfig { loadQuirks(config); loadBrightnessRamps(config); loadAmbientLightSensorFromDdc(config); + loadProxSensorFromDdc(config); } else { Slog.w(TAG, "DisplayDeviceConfig file is null"); } @@ -390,6 +394,7 @@ public class DisplayDeviceConfig { loadBrightnessMapFromConfigXml(); loadBrightnessRampsFromConfigXml(); loadAmbientLightSensorFromConfigXml(); + setProxSensorUnspecified(); } private void initFromDefaultValues() { @@ -403,6 +408,7 @@ public class DisplayDeviceConfig { mBrightnessRampSlowIncrease = PowerManager.BRIGHTNESS_MAX; setSimpleMappingStrategyValues(); loadAmbientLightSensorFromConfigXml(); + setProxSensorUnspecified(); } private void loadBrightnessDefaultFromDdcXml(DisplayConfiguration config) { @@ -686,6 +692,21 @@ public class DisplayDeviceConfig { } } + private void setProxSensorUnspecified() { + mProximitySensor.name = ""; + mProximitySensor.type = ""; + } + + private void loadProxSensorFromDdc(DisplayConfiguration config) { + SensorDetails sensorDetails = config.getProxSensor(); + if (sensorDetails != null) { + mProximitySensor.name = sensorDetails.getName(); + mProximitySensor.type = sensorDetails.getType(); + } else { + setProxSensorUnspecified(); + } + } + static class SensorIdentifier { public String type; public String name; diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 0a4b137fa6cd..f75f3e1f2f79 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -1282,6 +1282,7 @@ public final class DisplayManagerService extends SystemService { // this point. sendDisplayEventLocked(displayId, DisplayManagerGlobal.EVENT_DISPLAY_CHANGED); scheduleTraversalLocked(false); + mPersistentDataStore.saveIfNeeded(); } private void handleLogicalDisplayFrameRateOverridesChangedLocked( @@ -2884,6 +2885,7 @@ public final class DisplayManagerService extends SystemService { if (dpc != null) { dpc.putScreenBrightnessSetting(brightness); } + mPersistentDataStore.saveIfNeeded(); } } finally { Binder.restoreCallingIdentity(token); diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index 7a50a34ae4ad..4ad8797a14bf 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -584,15 +584,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessBucketsInDozeConfig = resources.getBoolean( com.android.internal.R.bool.config_displayBrightnessBucketsInDoze); - if (mDisplayId == Display.DEFAULT_DISPLAY && !DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { - // TODO: b/178385123 Once there are sensor associations, we can enable proximity for - // non-default displays. - mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); - if (mProximitySensor != null) { - mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), - TYPICAL_PROXIMITY_THRESHOLD); - } - } + loadProximitySensor(); + mCurrentScreenBrightnessSetting = getScreenBrightnessSetting(); mScreenBrightnessForVr = getScreenBrightnessForVrSetting(); mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting(); @@ -658,7 +651,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessMapper.recalculateSplines(mCdsi.isReduceBrightColorsActivated(), adjustedNits); } - private Sensor findSensor(String sensorType, String sensorName, int fallbackType) { + private Sensor findSensor(String sensorType, String sensorName, int fallbackType, + boolean useFallback) { final boolean isNameSpecified = !TextUtils.isEmpty(sensorName); final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType); List<Sensor> sensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); @@ -670,7 +664,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } } } - return mSensorManager.getDefaultSensor(fallbackType); + if (useFallback) { + return mSensorManager.getDefaultSensor(fallbackType); + } else { + return null; + } } /** @@ -806,6 +804,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mDisplayDeviceConfig = config; loadAmbientLightSensor(); + loadProximitySensor(); mHbmController.resetHbmData(token, config.getHighBrightnessModeData()); }); } @@ -1614,7 +1613,24 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mDisplayDeviceConfig.getAmbientLightSensor(); String lightSensorName = lightSensor.name; String lightSensorType = lightSensor.type; - mLightSensor = findSensor(lightSensorType, lightSensorName, Sensor.TYPE_LIGHT); + mLightSensor = findSensor(lightSensorType, lightSensorName, Sensor.TYPE_LIGHT, + mDisplayId == Display.DEFAULT_DISPLAY); + } + + private void loadProximitySensor() { + if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT) { + return; + } + final DisplayDeviceConfig.SensorIdentifier proxSensor = + mDisplayDeviceConfig.getProximitySensor(); + final String proxSensorName = proxSensor.name; + final String proxSensorType = proxSensor.type; + mProximitySensor = findSensor(proxSensorType, proxSensorName, Sensor.TYPE_PROXIMITY, + mDisplayId == Display.DEFAULT_DISPLAY); + if (mProximitySensor != null) { + mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(), + TYPICAL_PROXIMITY_THRESHOLD); + } } private float clampScreenBrightnessForVr(float value) { diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java index e7f056261b70..2f17481f7487 100644 --- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java @@ -67,8 +67,6 @@ final class LocalDisplayAdapter extends DisplayAdapter { private static final int NO_DISPLAY_MODE_ID = 0; - private static final float NITS_INVALID = -1; - private final LongSparseArray<LocalDisplayDevice> mDevices = new LongSparseArray<>(); private final Injector mInjector; @@ -770,48 +768,51 @@ final class LocalDisplayAdapter extends DisplayAdapter { } } - private void setDisplayBrightness(float brightness, float sdrBrightness) { - // Ensure brightnessState is valid before processing and sending to - // surface control - if (Float.isNaN(brightness)) { + private void setDisplayBrightness(float brightnessState, + float sdrBrightnessState) { + // brightnessState includes invalid, off and full range. + if (Float.isNaN(brightnessState) || Float.isNaN(sdrBrightnessState)) { return; } if (DEBUG) { Slog.d(TAG, "setDisplayBrightness(" + "id=" + physicalDisplayId - + ", brightness=" + brightness - + ", sdrBrightness=" + sdrBrightness + ")"); + + ", brightnessState=" + brightnessState + + ", sdrBrightnessState=" + sdrBrightnessState + ")"); } Trace.traceBegin(Trace.TRACE_TAG_POWER, "setDisplayBrightness(" - + "id=" + physicalDisplayId + ", brightness=" + brightness - + ", sdrBrightness=" + sdrBrightness + ")"); + + "id=" + physicalDisplayId + ", brightnessState=" + + brightnessState + ", sdrBrightnessState=" + sdrBrightnessState + + ")"); try { - final float backlight = brightnessToBacklight(brightness); - float nits = NITS_INVALID; - float sdrBacklight = backlight; - float sdrNits = NITS_INVALID; - if (getDisplayDeviceConfig().hasNitsMapping() - && sdrBrightness != PowerManager.BRIGHTNESS_INVALID_FLOAT) { - nits = backlightToNits(backlight); - sdrBacklight = brightnessToBacklight(sdrBrightness); - sdrNits = backlightToNits(sdrBacklight); - } + final float backlight = brightnessToBacklight(brightnessState); + final float sdrBacklight = brightnessToBacklight(sdrBrightnessState); + + final float nits = backlightToNits(backlight); + final float sdrNits = backlightToNits(sdrBacklight); + mBacklightAdapter.setBacklight(sdrBacklight, sdrNits, backlight, nits); Trace.traceCounter(Trace.TRACE_TAG_POWER, "ScreenBrightness", - BrightnessSynchronizer.brightnessFloatToInt(brightness)); + BrightnessSynchronizer.brightnessFloatToInt(brightnessState)); Trace.traceCounter(Trace.TRACE_TAG_POWER, "SdrScreenBrightness", - BrightnessSynchronizer.brightnessFloatToInt(sdrBrightness)); + BrightnessSynchronizer.brightnessFloatToInt( + sdrBrightnessState)); } finally { Trace.traceEnd(Trace.TRACE_TAG_POWER); } } private float brightnessToBacklight(float brightness) { - return getDisplayDeviceConfig().getBacklightFromBrightness(brightness); + if (BrightnessSynchronizer.floatEquals( + brightness, PowerManager.BRIGHTNESS_OFF_FLOAT)) { + return PowerManager.BRIGHTNESS_OFF_FLOAT; + } else { + return getDisplayDeviceConfig().getBacklightFromBrightness(brightness); + } } private float backlightToNits(float backlight) { @@ -1306,7 +1307,8 @@ final class LocalDisplayAdapter extends DisplayAdapter { // Set backlight within min and max backlight values void setBacklight(float sdrBacklight, float sdrNits, float backlight, float nits) { if (mUseSurfaceControlBrightness || mForceSurfaceControl) { - if (sdrBacklight == PowerManager.BRIGHTNESS_INVALID_FLOAT) { + if (BrightnessSynchronizer.floatEquals( + sdrBacklight, PowerManager.BRIGHTNESS_INVALID_FLOAT)) { mSurfaceControlProxy.setDisplayBrightness(mDisplayToken, backlight); } else { mSurfaceControlProxy.setDisplayBrightness(mDisplayToken, sdrBacklight, sdrNits, diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java index 6114094f2dce..0bb128536b42 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystem.java @@ -610,7 +610,6 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { Arrays.stream(device.getEncodings()).mapToObj( AudioFormat::toLogFriendlyEncoding ).collect(Collectors.joining(", "))); - // TODO(b/80297701) use the actual device type that system audio mode is connected to. if (device.getType() == AudioDeviceInfo.TYPE_HDMI_ARC) { return device; } @@ -1027,7 +1026,6 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { if (isSystemAudioActivated() && port < 0) { // If system audio mode is on and the new active source is not under the current device, // Will switch to ARC input. - // TODO(b/115637145): handle system aduio without ARC routeToInputFromPortId(Constants.CEC_SWITCH_ARC); } else if (mIsSwitchDevice && port >= 0) { // If current device is a switch and the new active source is under it, @@ -1128,7 +1126,6 @@ public class HdmiCecLocalDeviceAudioSystem extends HdmiCecLocalDeviceSource { // Handle the system audio(ARC) part of the logic on receiving routing change or information. private void handleRoutingChangeAndInformationForSystemAudio() { - // TODO(b/115637145): handle system aduio without ARC routeToInputFromPortId(Constants.CEC_SWITCH_ARC); } diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java index f89594f3288f..702f85404868 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceSource.java @@ -296,6 +296,15 @@ abstract class HdmiCecLocalDeviceSource extends HdmiCecLocalDevice { // do nothing } + @Override + @ServiceThreadOnly + protected void disableDevice(boolean initiatedByCec, PendingActionClearedCallback callback) { + removeAction(OneTouchPlayAction.class); + removeAction(DevicePowerStatusAction.class); + + super.disableDevice(initiatedByCec, callback); + } + // Update the power status of the devices connected to the current device. // This only works if the current device is a switch and keeps tracking the device info // of the device connected to it. diff --git a/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java b/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java index 0a8621b3e726..1c8f21f6526e 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecMessageBuilder.java @@ -479,7 +479,6 @@ public class HdmiCecMessageBuilder { * @return newly created {@link HdmiCecMessage} */ static HdmiCecMessage buildReportShortAudioDescriptor(int src, int des, byte[] sadBytes) { - // TODO(b/80297701) validate. return buildCommand(src, des, Constants.MESSAGE_REPORT_SHORT_AUDIO_DESCRIPTOR, sadBytes); } diff --git a/services/core/java/com/android/server/hdmi/SystemAudioInitiationActionFromAvr.java b/services/core/java/com/android/server/hdmi/SystemAudioInitiationActionFromAvr.java index acafda6619f3..a0801965d4b4 100644 --- a/services/core/java/com/android/server/hdmi/SystemAudioInitiationActionFromAvr.java +++ b/services/core/java/com/android/server/hdmi/SystemAudioInitiationActionFromAvr.java @@ -143,8 +143,4 @@ public class SystemAudioInitiationActionFromAvr extends HdmiCecFeatureAction { } }); } - - private void switchToRelevantInputForDeviceAt(int physicalAddress) { - // TODO(shubang): implement this method - } } diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java index c51571a20bb1..1c27c6539b17 100644 --- a/services/core/java/com/android/server/input/InputManagerService.java +++ b/services/core/java/com/android/server/input/InputManagerService.java @@ -16,6 +16,8 @@ package com.android.server.input; +import static android.view.Surface.ROTATION_0; + import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Notification; @@ -38,6 +40,7 @@ import android.content.res.Resources.NotFoundException; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.database.ContentObserver; +import android.graphics.Point; import android.graphics.Rect; import android.hardware.display.DisplayManager; import android.hardware.display.DisplayViewport; @@ -97,6 +100,7 @@ import android.view.InputDevice; import android.view.InputEvent; import android.view.InputMonitor; import android.view.KeyEvent; +import android.view.MotionEvent; import android.view.PointerIcon; import android.view.Surface; import android.view.VerifiedInputEvent; @@ -820,6 +824,28 @@ public class InputManagerService extends IInputManager.Stub && mode != InputEventInjectionSync.WAIT_FOR_RESULT) { throw new IllegalArgumentException("mode is invalid"); } + if (ENABLE_PER_WINDOW_INPUT_ROTATION) { + if (event instanceof MotionEvent) { + final Context dispCtx = getContextForDisplay(event.getDisplayId()); + final Display display = dispCtx.getDisplay(); + final int rotation = display.getRotation(); + if (rotation != ROTATION_0) { + final MotionEvent motion = (MotionEvent) event; + // Injections are currently expected to be in the space of the injector (ie. + // usually assumed to be post-rotated). Thus we need to unrotate into raw + // input coordinates for dispatch. + final Point sz = new Point(); + display.getRealSize(sz); + if ((rotation % 2) != 0) { + final int tmpX = sz.x; + sz.x = sz.y; + sz.y = tmpX; + } + motion.applyTransform(MotionEvent.createRotateMatrix( + (4 - rotation), sz.x, sz.y)); + } + } + } final int pid = Binder.getCallingPid(); final int uid = Binder.getCallingUid(); diff --git a/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java b/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java index 659874441c97..fa33338a61e7 100644 --- a/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java +++ b/services/core/java/com/android/server/location/contexthub/ContextHubClientBroker.java @@ -665,7 +665,7 @@ public class ContextHubClientBroker extends IContextHubClient.Stub long nanoAppId, List<String> nanoappPermissions, boolean gracePeriodExpired) { return updateNanoAppAuthState( nanoAppId, nanoappPermissions, gracePeriodExpired, - mForceDeniedNapps.contains(nanoAppId) /* forceDenied */); + false /* forceDenied */); } /** @@ -705,7 +705,7 @@ public class ContextHubClientBroker extends IContextHubClient.Stub // DENIED_GRACE_PERIOD -> DENIED only if the grace period expires // DENIED/DENIED_GRACE_PERIOD -> GRANTED only if permissions are granted again // any state -> DENIED if "forceDenied" is true - if (forceDenied) { + if (forceDenied || mForceDeniedNapps.contains(nanoAppId)) { newAuthState = AUTHORIZATION_DENIED; mForceDeniedNapps.add(nanoAppId); } else if (gracePeriodExpired) { diff --git a/services/core/java/com/android/server/location/eventlog/LocationEventLog.java b/services/core/java/com/android/server/location/eventlog/LocationEventLog.java index 2ffc62a0731b..66b23c4d7377 100644 --- a/services/core/java/com/android/server/location/eventlog/LocationEventLog.java +++ b/services/core/java/com/android/server/location/eventlog/LocationEventLog.java @@ -58,13 +58,17 @@ public class LocationEventLog extends LocalEventLog { private static final int EVENT_LOCATION_ENABLED = 2; private static final int EVENT_PROVIDER_ENABLED = 3; private static final int EVENT_PROVIDER_MOCKED = 4; - private static final int EVENT_PROVIDER_REGISTER_CLIENT = 5; - private static final int EVENT_PROVIDER_UNREGISTER_CLIENT = 6; - private static final int EVENT_PROVIDER_UPDATE_REQUEST = 7; - private static final int EVENT_PROVIDER_RECEIVE_LOCATION = 8; - private static final int EVENT_PROVIDER_DELIVER_LOCATION = 9; - private static final int EVENT_PROVIDER_STATIONARY_THROTTLED = 10; - private static final int EVENT_LOCATION_POWER_SAVE_MODE_CHANGE = 11; + private static final int EVENT_PROVIDER_CLIENT_REGISTER = 5; + private static final int EVENT_PROVIDER_CLIENT_UNREGISTER = 6; + private static final int EVENT_PROVIDER_CLIENT_FOREGROUND = 7; + private static final int EVENT_PROVIDER_CLIENT_BACKGROUND = 8; + private static final int EVENT_PROVIDER_CLIENT_PERMITTED = 9; + private static final int EVENT_PROVIDER_CLIENT_UNPERMITTED = 10; + private static final int EVENT_PROVIDER_UPDATE_REQUEST = 11; + private static final int EVENT_PROVIDER_RECEIVE_LOCATION = 12; + private static final int EVENT_PROVIDER_DELIVER_LOCATION = 13; + private static final int EVENT_PROVIDER_STATIONARY_THROTTLED = 14; + private static final int EVENT_LOCATION_POWER_SAVE_MODE_CHANGE = 15; @GuardedBy("mAggregateStats") private final ArrayMap<String, ArrayMap<CallerIdentity, AggregateStats>> mAggregateStats; @@ -126,13 +130,13 @@ public class LocationEventLog extends LocalEventLog { /** Logs a new client registration for a location provider. */ public void logProviderClientRegistered(String provider, CallerIdentity identity, LocationRequest request) { - addLogEvent(EVENT_PROVIDER_REGISTER_CLIENT, provider, identity, request); + addLogEvent(EVENT_PROVIDER_CLIENT_REGISTER, provider, identity, request); getAggregateStats(provider, identity).markRequestAdded(request.getIntervalMillis()); } /** Logs a client unregistration for a location provider. */ public void logProviderClientUnregistered(String provider, CallerIdentity identity) { - addLogEvent(EVENT_PROVIDER_UNREGISTER_CLIENT, provider, identity); + addLogEvent(EVENT_PROVIDER_CLIENT_UNREGISTER, provider, identity); getAggregateStats(provider, identity).markRequestRemoved(); } @@ -148,14 +152,34 @@ public class LocationEventLog extends LocalEventLog { /** Logs a client for a location provider entering the foreground state. */ public void logProviderClientForeground(String provider, CallerIdentity identity) { + if (Build.IS_DEBUGGABLE || D) { + addLogEvent(EVENT_PROVIDER_CLIENT_FOREGROUND, provider, identity); + } getAggregateStats(provider, identity).markRequestForeground(); } /** Logs a client for a location provider leaving the foreground state. */ public void logProviderClientBackground(String provider, CallerIdentity identity) { + if (Build.IS_DEBUGGABLE || D) { + addLogEvent(EVENT_PROVIDER_CLIENT_BACKGROUND, provider, identity); + } getAggregateStats(provider, identity).markRequestBackground(); } + /** Logs a client for a location provider entering the permitted state. */ + public void logProviderClientPermitted(String provider, CallerIdentity identity) { + if (Build.IS_DEBUGGABLE || D) { + addLogEvent(EVENT_PROVIDER_CLIENT_PERMITTED, provider, identity); + } + } + + /** Logs a client for a location provider leaving the permitted state. */ + public void logProviderClientUnpermitted(String provider, CallerIdentity identity) { + if (Build.IS_DEBUGGABLE || D) { + addLogEvent(EVENT_PROVIDER_CLIENT_UNPERMITTED, provider, identity); + } + } + /** Logs a change to the provider request for a location provider. */ public void logProviderUpdateRequest(String provider, ProviderRequest request) { addLogEvent(EVENT_PROVIDER_UPDATE_REQUEST, provider, request); @@ -201,12 +225,24 @@ public class LocationEventLog extends LocalEventLog { (Boolean) args[2]); case EVENT_PROVIDER_MOCKED: return new ProviderMockedEvent(timeDelta, (String) args[0], (Boolean) args[1]); - case EVENT_PROVIDER_REGISTER_CLIENT: - return new ProviderRegisterEvent(timeDelta, (String) args[0], true, + case EVENT_PROVIDER_CLIENT_REGISTER: + return new ProviderClientRegisterEvent(timeDelta, (String) args[0], true, (CallerIdentity) args[1], (LocationRequest) args[2]); - case EVENT_PROVIDER_UNREGISTER_CLIENT: - return new ProviderRegisterEvent(timeDelta, (String) args[0], false, + case EVENT_PROVIDER_CLIENT_UNREGISTER: + return new ProviderClientRegisterEvent(timeDelta, (String) args[0], false, (CallerIdentity) args[1], null); + case EVENT_PROVIDER_CLIENT_FOREGROUND: + return new ProviderClientForegroundEvent(timeDelta, (String) args[0], true, + (CallerIdentity) args[1]); + case EVENT_PROVIDER_CLIENT_BACKGROUND: + return new ProviderClientForegroundEvent(timeDelta, (String) args[0], false, + (CallerIdentity) args[1]); + case EVENT_PROVIDER_CLIENT_PERMITTED: + return new ProviderClientPermittedEvent(timeDelta, (String) args[0], true, + (CallerIdentity) args[1]); + case EVENT_PROVIDER_CLIENT_UNPERMITTED: + return new ProviderClientPermittedEvent(timeDelta, (String) args[0], false, + (CallerIdentity) args[1]); case EVENT_PROVIDER_UPDATE_REQUEST: return new ProviderUpdateEvent(timeDelta, (String) args[0], (ProviderRequest) args[1]); @@ -279,13 +315,13 @@ public class LocationEventLog extends LocalEventLog { } } - private static final class ProviderRegisterEvent extends ProviderEvent { + private static final class ProviderClientRegisterEvent extends ProviderEvent { private final boolean mRegistered; private final CallerIdentity mIdentity; @Nullable private final LocationRequest mLocationRequest; - ProviderRegisterEvent(long timeDelta, String provider, boolean registered, + ProviderClientRegisterEvent(long timeDelta, String provider, boolean registered, CallerIdentity identity, @Nullable LocationRequest locationRequest) { super(timeDelta, provider); mRegistered = registered; @@ -296,14 +332,52 @@ public class LocationEventLog extends LocalEventLog { @Override public String getLogString() { if (mRegistered) { - return mProvider + " provider " + "+registration " + mIdentity + " -> " + return mProvider + " provider +registration " + mIdentity + " -> " + mLocationRequest; } else { - return mProvider + " provider " + "-registration " + mIdentity; + return mProvider + " provider -registration " + mIdentity; } } } + private static final class ProviderClientForegroundEvent extends ProviderEvent { + + private final boolean mForeground; + private final CallerIdentity mIdentity; + + ProviderClientForegroundEvent(long timeDelta, String provider, boolean foreground, + CallerIdentity identity) { + super(timeDelta, provider); + mForeground = foreground; + mIdentity = identity; + } + + @Override + public String getLogString() { + return mProvider + " provider client " + mIdentity + " -> " + + (mForeground ? "foreground" : "background"); + } + } + + private static final class ProviderClientPermittedEvent extends ProviderEvent { + + private final boolean mPermitted; + private final CallerIdentity mIdentity; + + ProviderClientPermittedEvent(long timeDelta, String provider, boolean permitted, + CallerIdentity identity) { + super(timeDelta, provider); + mPermitted = permitted; + mIdentity = identity; + } + + @Override + public String getLogString() { + return mProvider + " provider client " + mIdentity + " -> " + + (mPermitted ? "permitted" : "unpermitted"); + } + } + private static final class ProviderUpdateEvent extends ProviderEvent { private final ProviderRequest mRequest; diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java index 4b772f29e250..ca5343174478 100644 --- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java +++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java @@ -462,6 +462,12 @@ public class LocationProviderManager extends } @GuardedBy("mLock") + final boolean onProviderPropertiesChanged() { + onHighPowerUsageChanged(); + return false; + } + + @GuardedBy("mLock") private void onHighPowerUsageChanged() { boolean isUsingHighPower = isUsingHighPower(); if (isUsingHighPower != mIsUsingHighPower) { @@ -485,9 +491,14 @@ public class LocationProviderManager extends Preconditions.checkState(Thread.holdsLock(mLock)); } + ProviderProperties properties = getProperties(); + if (properties == null) { + return false; + } + return isActive() && getRequest().getIntervalMillis() < MAX_HIGH_POWER_INTERVAL_MS - && getProperties().getPowerUsage() == ProviderProperties.POWER_USAGE_HIGH; + && properties.getPowerUsage() == ProviderProperties.POWER_USAGE_HIGH; } @GuardedBy("mLock") @@ -523,6 +534,13 @@ public class LocationProviderManager extends } mPermitted = permitted; + + if (mForeground) { + EVENT_LOG.logProviderClientPermitted(mName, getIdentity()); + } else { + EVENT_LOG.logProviderClientUnpermitted(mName, getIdentity()); + } + return true; } @@ -2270,6 +2288,10 @@ public class LocationProviderManager extends onEnabledChanged(UserHandle.USER_ALL); } + if (!Objects.equals(oldState.properties, newState.properties)) { + updateRegistrations(Registration::onProviderPropertiesChanged); + } + if (mOnLocationTagsChangeListener != null) { if (!oldState.extraAttributionTags.equals(newState.extraAttributionTags) || !Objects.equals(oldState.identity, newState.identity)) { diff --git a/services/core/java/com/android/server/media/AudioPlayerStateMonitor.java b/services/core/java/com/android/server/media/AudioPlayerStateMonitor.java index b9822fcb096a..d285c437a3df 100644 --- a/services/core/java/com/android/server/media/AudioPlayerStateMonitor.java +++ b/services/core/java/com/android/server/media/AudioPlayerStateMonitor.java @@ -258,16 +258,16 @@ class AudioPlayerStateMonitor { if (mActiveAudioUids.size() > 0 && !mActiveAudioUids.contains(mSortedAudioPlaybackClientUids.get(0))) { int firstActiveUid = -1; - int firatActiveUidIndex = -1; + int firstActiveUidIndex = -1; for (int i = 1; i < mSortedAudioPlaybackClientUids.size(); ++i) { int uid = mSortedAudioPlaybackClientUids.get(i); if (mActiveAudioUids.contains(uid)) { - firatActiveUidIndex = i; + firstActiveUidIndex = i; firstActiveUid = uid; break; } } - for (int i = firatActiveUidIndex; i > 0; --i) { + for (int i = firstActiveUidIndex; i > 0; --i) { mSortedAudioPlaybackClientUids.set(i, mSortedAudioPlaybackClientUids.get(i - 1)); } diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java index 384bc99cb115..9f02c3caa388 100644 --- a/services/core/java/com/android/server/media/MediaRouterService.java +++ b/services/core/java/com/android/server/media/MediaRouterService.java @@ -907,6 +907,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub mActiveBluetoothDevice = btDevice; mGlobalBluetoothA2dpOn = btDevice != null; if (wasA2dpOn != mGlobalBluetoothA2dpOn) { + Slog.d(TAG, "GlobalBluetoothA2dpOn is changed to '" + + mGlobalBluetoothA2dpOn + "'"); UserRecord userRecord = mUserRecords.get(mCurrentUserId); if (userRecord != null) { for (ClientRecord cr : userRecord.mClientRecords) { diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 0840e75823b5..67fd09b3e15e 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -645,7 +645,7 @@ public class NotificationManagerService extends SystemService { sb.append("Archive ("); sb.append(N); sb.append(" notification"); - sb.append((N==1)?")":"s)"); + sb.append((N == 1) ? ")" : "s)"); return sb.toString(); } @@ -718,6 +718,22 @@ public class NotificationManagerService extends SystemService { } } } + + void dumpImpl(PrintWriter pw, @NonNull DumpFilter filter) { + synchronized (mBufferLock) { + Iterator<Pair<StatusBarNotification, Integer>> iter = descendingIterator(); + int i = 0; + while (iter.hasNext()) { + final StatusBarNotification sbn = iter.next().first; + if (filter != null && !filter.matches(sbn)) continue; + pw.println(" " + sbn); + if (++i >= 5) { + if (iter.hasNext()) pw.println(" ..."); + break; + } + } + } + } } void loadDefaultApprovedServices(int userId) { @@ -5928,17 +5944,7 @@ public class NotificationManagerService extends SystemService { + mPreferencesHelper.shouldHideSilentStatusIcons()); } pw.println(" mArchive=" + mArchive.toString()); - Iterator<Pair<StatusBarNotification, Integer>> iter = mArchive.descendingIterator(); - int j=0; - while (iter.hasNext()) { - final StatusBarNotification sbn = iter.next().first; - if (filter != null && !filter.matches(sbn)) continue; - pw.println(" " + sbn); - if (++j >= 5) { - if (iter.hasNext()) pw.println(" ..."); - break; - } - } + mArchive.dumpImpl(pw, filter); if (!zenOnly) { N = mEnqueuedNotifications.size(); @@ -8297,6 +8303,21 @@ public class NotificationManagerService extends SystemService { int rank, int count, boolean wasPosted, String listenerName) { final String canceledKey = r.getKey(); + // Get pending intent used to create alarm, use FLAG_NO_CREATE if PendingIntent + // does not already exist, then null will be returned. + final PendingIntent pi = PendingIntent.getBroadcast(getContext(), + REQUEST_CODE_TIMEOUT, + new Intent(ACTION_NOTIFICATION_TIMEOUT) + .setData(new Uri.Builder().scheme(SCHEME_TIMEOUT) + .appendPath(r.getKey()).build()) + .addFlags(Intent.FLAG_RECEIVER_FOREGROUND), + PendingIntent.FLAG_NO_CREATE | PendingIntent.FLAG_IMMUTABLE); + + // Cancel alarm corresponding to pi. + if (pi != null) { + mAlarmManager.cancel(pi); + } + // Record caller. recordCallerLocked(r); @@ -10252,13 +10273,24 @@ public class NotificationManagerService extends SystemService { if (typeList != null) { String[] typeStrings = typeList.split(XML_SEPARATOR); for (int i = 0; i < typeStrings.length; i++) { - if (TextUtils.isEmpty(typeStrings[i])) { + final String typeString = typeStrings[i]; + if (TextUtils.isEmpty(typeString)) { continue; } - try { - types |= Integer.parseInt(typeStrings[i]); - } catch (NumberFormatException e) { - // skip + if (typeString.equalsIgnoreCase("ONGOING")) { + types |= FLAG_FILTER_TYPE_ONGOING; + } else if (typeString.equalsIgnoreCase("CONVERSATIONS")) { + types |= FLAG_FILTER_TYPE_CONVERSATIONS; + } else if (typeString.equalsIgnoreCase("SILENT")) { + types |= FLAG_FILTER_TYPE_SILENT; + } else if (typeString.equalsIgnoreCase("ALERTING")) { + types |= FLAG_FILTER_TYPE_ALERTING; + } else { + try { + types |= Integer.parseInt(typeString); + } catch (NumberFormatException e) { + // skip + } } } } diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java index 6bc4f7e333e2..9968b95aeabf 100644 --- a/services/core/java/com/android/server/notification/NotificationRecord.java +++ b/services/core/java/com/android/server/notification/NotificationRecord.java @@ -29,6 +29,7 @@ import android.app.ActivityManager; import android.app.IActivityManager; import android.app.Notification; import android.app.NotificationChannel; +import android.app.Person; import android.content.ContentProvider; import android.content.ContentResolver; import android.content.Context; @@ -556,7 +557,7 @@ public final class NotificationRecord { pw.println(prefix + "bigContentView=" + formatRemoteViews(notification.bigContentView)); pw.println(prefix + "headsUpContentView=" + formatRemoteViews(notification.headsUpContentView)); - pw.print(prefix + String.format("color=0x%08x", notification.color)); + pw.println(prefix + String.format("color=0x%08x", notification.color)); pw.println(prefix + "timeout=" + TimeUtils.formatForLogging(notification.getTimeoutAfter())); if (notification.actions != null && notification.actions.length > 0) { @@ -1438,8 +1439,8 @@ public final class NotificationRecord { } if (mTargetSdkVersion >= Build.VERSION_CODES.R - && Notification.MessagingStyle.class.equals(notification.getNotificationStyle()) - && mShortcutInfo == null) { + && Notification.MessagingStyle.class.equals(notification.getNotificationStyle()) + && (mShortcutInfo == null || isOnlyBots(mShortcutInfo.getPersons()))) { return false; } if (mHasSentValidMsg && mShortcutInfo == null) { @@ -1448,6 +1449,28 @@ public final class NotificationRecord { return true; } + /** + * Determines if the {@link ShortcutInfo#getPersons()} array includes only bots, for the purpose + * of excluding that shortcut from the "conversations" section of the notification shade. If + * the shortcut has no people, this returns false to allow the conversation into the shade, and + * if there is any non-bot person we allow it as well. Otherwise, this is only bots and will + * not count as a conversation. + */ + private boolean isOnlyBots(Person[] persons) { + // Return false if there are no persons at all + if (persons == null || persons.length == 0) { + return false; + } + // Return false if there are any non-bot persons + for (Person person : persons) { + if (!person.isBot()) { + return false; + } + } + // Return true otherwise + return true; + } + StatusBarNotification getSbn() { return sbn; } diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java index 55a0949fb7c7..03676b5556d9 100644 --- a/services/core/java/com/android/server/notification/PreferencesHelper.java +++ b/services/core/java/com/android/server/notification/PreferencesHelper.java @@ -330,7 +330,8 @@ public class PreferencesHelper implements RankingConfig { } } - if (isShortcutOk(channel) && isDeletionOk(channel)) { + if (isShortcutOk(channel) && isDeletionOk(channel) + && !channel.isSoundMissing()) { r.channels.put(id, channel); } } diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index fcee63c62ae8..4cb6c3ba20d8 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -659,7 +659,8 @@ public class ZenModeHelper { mConfig.manualRule.dumpDebug(proto, ZenModeProto.ENABLED_ACTIVE_CONDITIONS); } for (ZenRule rule : mConfig.automaticRules.values()) { - if (rule.enabled && rule.condition.state == Condition.STATE_TRUE + if (rule.enabled && rule.condition != null + && rule.condition.state == Condition.STATE_TRUE && !rule.snoozing) { rule.dumpDebug(proto, ZenModeProto.ENABLED_ACTIVE_CONDITIONS); } diff --git a/services/core/java/com/android/server/pm/ComponentResolver.java b/services/core/java/com/android/server/pm/ComponentResolver.java index 1d556fec31ea..dde9f822ac76 100644 --- a/services/core/java/com/android/server/pm/ComponentResolver.java +++ b/services/core/java/com/android/server/pm/ComponentResolver.java @@ -59,6 +59,9 @@ import com.android.server.IntentResolver; import com.android.server.pm.parsing.PackageInfoUtils; import com.android.server.pm.parsing.PackageInfoUtils.CachedApplicationInfoGenerator; import com.android.server.pm.parsing.pkg.AndroidPackage; +import com.android.server.utils.Snappable; +import com.android.server.utils.SnapshotCache; +import com.android.server.utils.WatchableImpl; import java.io.PrintWriter; import java.util.ArrayList; @@ -72,12 +75,19 @@ import java.util.Set; import java.util.function.Function; /** Resolves all Android component types [activities, services, providers and receivers]. */ -public class ComponentResolver { +public class ComponentResolver + extends WatchableImpl + implements Snappable { private static final boolean DEBUG = false; private static final String TAG = "PackageManager"; private static final boolean DEBUG_FILTERS = false; private static final boolean DEBUG_SHOW_INFO = false; + // Convenience function to report that this object has changed. + private void onChanged() { + dispatchChange(this); + } + /** * The set of all protected actions [i.e. those actions for which a high priority * intent filter is disallowed]. @@ -158,27 +168,27 @@ public class ComponentResolver { * would be able to hold its lock while checking the package setting state.</li> * </ol> */ - private final Object mLock; + private final PackageManagerTracedLock mLock; /** All available activities, for your resolving pleasure. */ @GuardedBy("mLock") - private final ActivityIntentResolver mActivities = new ActivityIntentResolver(); + private final ActivityIntentResolver mActivities; /** All available providers, for your resolving pleasure. */ @GuardedBy("mLock") - private final ProviderIntentResolver mProviders = new ProviderIntentResolver(); + private final ProviderIntentResolver mProviders; /** All available receivers, for your resolving pleasure. */ @GuardedBy("mLock") - private final ActivityIntentResolver mReceivers = new ReceiverIntentResolver(); + private final ReceiverIntentResolver mReceivers; /** All available services, for your resolving pleasure. */ @GuardedBy("mLock") - private final ServiceIntentResolver mServices = new ServiceIntentResolver(); + private final ServiceIntentResolver mServices; /** Mapping from provider authority [first directory in content URI codePath) to provider. */ @GuardedBy("mLock") - private final ArrayMap<String, ParsedProvider> mProvidersByAuthority = new ArrayMap<>(); + private final ArrayMap<String, ParsedProvider> mProvidersByAuthority; /** Whether or not processing protected filters should be deferred. */ private boolean mDeferProtectedFilters = true; @@ -200,12 +210,57 @@ public class ComponentResolver { ComponentResolver(UserManagerService userManager, PackageManagerInternal packageManagerInternal, - Object lock) { + PackageManagerTracedLock lock) { sPackageManagerInternal = packageManagerInternal; sUserManager = userManager; mLock = lock; + + mActivities = new ActivityIntentResolver(); + mProviders = new ProviderIntentResolver(); + mReceivers = new ReceiverIntentResolver(); + mServices = new ServiceIntentResolver(); + mProvidersByAuthority = new ArrayMap<>(); + mDeferProtectedFilters = true; + + mSnapshot = new SnapshotCache<ComponentResolver>(this, this) { + @Override + public ComponentResolver createSnapshot() { + return new ComponentResolver(mSource); + }}; + } + + // Copy constructor used in creating snapshots. + private ComponentResolver(ComponentResolver orig) { + // Do not set the static variables that are set in the default constructor. Do + // create a new object for the lock. The snapshot is read-only, so a lock is not + // strictly required. However, the current code is simpler if the lock exists, + // but does not contend with any outside class. + // TODO: make the snapshot lock-free + mLock = new PackageManagerTracedLock(); + + mActivities = new ActivityIntentResolver(orig.mActivities); + mProviders = new ProviderIntentResolver(orig.mProviders); + mReceivers = new ReceiverIntentResolver(orig.mReceivers); + mServices = new ServiceIntentResolver(orig.mServices); + mProvidersByAuthority = new ArrayMap<>(orig.mProvidersByAuthority); + mDeferProtectedFilters = orig.mDeferProtectedFilters; + mProtectedFilters = (mProtectedFilters == null) + ? null + : new ArrayList<>(orig.mProtectedFilters); + + mSnapshot = null; } + final SnapshotCache<ComponentResolver> mSnapshot; + + /** + * Create a snapshot. + */ + public ComponentResolver snapshot() { + return mSnapshot.snapshot(); + } + + /** Returns the given activity */ @Nullable @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) @@ -474,6 +529,7 @@ public class ComponentResolver { addReceiversLocked(pkg, chatty); addProvidersLocked(pkg, chatty); addServicesLocked(pkg, chatty); + onChanged(); } // expect single setupwizard package final String setupWizardPackage = ArrayUtils.firstOrNull( @@ -489,6 +545,7 @@ public class ComponentResolver { final List<ParsedActivity> systemActivities = disabledPkg != null ? disabledPkg.getActivities() : null; adjustPriority(systemActivities, pair.first, pair.second, setupWizardPackage); + onChanged(); } } @@ -496,6 +553,7 @@ public class ComponentResolver { void removeAllComponents(AndroidPackage pkg, boolean chatty) { synchronized (mLock) { removeAllComponentsLocked(pkg, chatty); + onChanged(); } } @@ -504,51 +562,54 @@ public class ComponentResolver { * all of the filters defined on the /system partition and know the special components. */ void fixProtectedFilterPriorities() { - if (!mDeferProtectedFilters) { - return; - } - mDeferProtectedFilters = false; + synchronized (mLock) { + if (!mDeferProtectedFilters) { + return; + } + mDeferProtectedFilters = false; - if (mProtectedFilters == null || mProtectedFilters.size() == 0) { - return; - } - final List<Pair<ParsedMainComponent, ParsedIntentInfo>> protectedFilters = - mProtectedFilters; - mProtectedFilters = null; + if (mProtectedFilters == null || mProtectedFilters.size() == 0) { + return; + } + final List<Pair<ParsedMainComponent, ParsedIntentInfo>> protectedFilters = + mProtectedFilters; + mProtectedFilters = null; - // expect single setupwizard package - final String setupWizardPackage = ArrayUtils.firstOrNull( + // expect single setupwizard package + final String setupWizardPackage = ArrayUtils.firstOrNull( sPackageManagerInternal.getKnownPackageNames( - PACKAGE_SETUP_WIZARD, UserHandle.USER_SYSTEM)); - - if (DEBUG_FILTERS && setupWizardPackage == null) { - Slog.i(TAG, "No setup wizard;" - + " All protected intents capped to priority 0"); - } - for (int i = protectedFilters.size() - 1; i >= 0; --i) { - final Pair<ParsedMainComponent, ParsedIntentInfo> pair = protectedFilters.get(i); - ParsedMainComponent component = pair.first; - ParsedIntentInfo filter = pair.second; - String packageName = component.getPackageName(); - String className = component.getClassName(); - if (packageName.equals(setupWizardPackage)) { + PACKAGE_SETUP_WIZARD, UserHandle.USER_SYSTEM)); + + if (DEBUG_FILTERS && setupWizardPackage == null) { + Slog.i(TAG, "No setup wizard;" + + " All protected intents capped to priority 0"); + } + for (int i = protectedFilters.size() - 1; i >= 0; --i) { + final Pair<ParsedMainComponent, ParsedIntentInfo> pair = protectedFilters.get(i); + ParsedMainComponent component = pair.first; + ParsedIntentInfo filter = pair.second; + String packageName = component.getPackageName(); + String className = component.getClassName(); + if (packageName.equals(setupWizardPackage)) { + if (DEBUG_FILTERS) { + Slog.i(TAG, "Found setup wizard;" + + " allow priority " + filter.getPriority() + ";" + + " package: " + packageName + + " activity: " + className + + " priority: " + filter.getPriority()); + } + // skip setup wizard; allow it to keep the high priority filter + continue; + } if (DEBUG_FILTERS) { - Slog.i(TAG, "Found setup wizard;" - + " allow priority " + filter.getPriority() + ";" + Slog.i(TAG, "Protected action; cap priority to 0;" + " package: " + packageName + " activity: " + className - + " priority: " + filter.getPriority()); + + " origPrio: " + filter.getPriority()); } - // skip setup wizard; allow it to keep the high priority filter - continue; - } - if (DEBUG_FILTERS) { - Slog.i(TAG, "Protected action; cap priority to 0;" - + " package: " + packageName - + " activity: " + className - + " origPrio: " + filter.getPriority()); + filter.setPriority(0); } - filter.setPriority(0); + onChanged(); } } @@ -1181,9 +1242,20 @@ public class ComponentResolver { private abstract static class MimeGroupsAwareIntentResolver<F extends Pair<? extends ParsedComponent, ParsedIntentInfo>, R> extends IntentResolver<F, R> { - private ArrayMap<String, F[]> mMimeGroupToFilter = new ArrayMap<>(); + private final ArrayMap<String, F[]> mMimeGroupToFilter = new ArrayMap<>(); private boolean mIsUpdatingMimeGroup = false; + // Default constructor + MimeGroupsAwareIntentResolver() { + } + + // Copy constructor used in creating snapshots + MimeGroupsAwareIntentResolver(MimeGroupsAwareIntentResolver<F, R> orig) { + copyFrom(orig); + copyInto(mMimeGroupToFilter, orig.mMimeGroupToFilter); + mIsUpdatingMimeGroup = orig.mIsUpdatingMimeGroup; + } + @Override public void addFilter(F f) { IntentFilter intentFilter = getIntentFilter(f); @@ -1282,6 +1354,17 @@ public class ComponentResolver { private static class ActivityIntentResolver extends MimeGroupsAwareIntentResolver<Pair<ParsedActivity, ParsedIntentInfo>, ResolveInfo> { + // Default constructor + ActivityIntentResolver() { + } + + // Copy constructor used in creating snapshots + ActivityIntentResolver(ActivityIntentResolver orig) { + super(orig); + mActivities.putAll(orig.mActivities); + mFlags = orig.mFlags; + } + @Override public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, boolean defaultOnly, int userId) { @@ -1330,7 +1413,7 @@ public class ComponentResolver { return super.queryIntentFromList(intent, resolvedType, defaultOnly, listCut, userId); } - private void addActivity(ParsedActivity a, String type, + protected void addActivity(ParsedActivity a, String type, List<Pair<ParsedActivity, ParsedIntentInfo>> newIntents) { mActivities.put(a.getComponentName(), a); if (DEBUG_SHOW_INFO) { @@ -1354,7 +1437,7 @@ public class ComponentResolver { } } - private void removeActivity(ParsedActivity a, String type) { + protected void removeActivity(ParsedActivity a, String type) { mActivities.remove(a.getComponentName()); if (DEBUG_SHOW_INFO) { Log.v(TAG, " " + type + ":"); @@ -1567,8 +1650,11 @@ public class ComponentResolver { return pkg.getActivities(); } - // Keys are String (activity class name), values are Activity. - private final ArrayMap<ComponentName, ParsedActivity> mActivities = + // Keys are String (activity class name), values are Activity. This attribute is + // protected because it is accessed directly from ComponentResolver. That works + // even if the attribute is private, but fails for subclasses of + // ActivityIntentResolver. + protected final ArrayMap<ComponentName, ParsedActivity> mActivities = new ArrayMap<>(); private int mFlags; } @@ -1576,6 +1662,15 @@ public class ComponentResolver { // Both receivers and activities share a class, but point to different get methods private static final class ReceiverIntentResolver extends ActivityIntentResolver { + // Default constructor + ReceiverIntentResolver() { + } + + // Copy constructor used in creating snapshots + ReceiverIntentResolver(ReceiverIntentResolver orig) { + super(orig); + } + @Override protected List<ParsedActivity> getResolveList(AndroidPackage pkg) { return pkg.getReceivers(); @@ -1584,6 +1679,17 @@ public class ComponentResolver { private static final class ProviderIntentResolver extends MimeGroupsAwareIntentResolver<Pair<ParsedProvider, ParsedIntentInfo>, ResolveInfo> { + // Default constructor + ProviderIntentResolver() { + } + + // Copy constructor used in creating snapshots + ProviderIntentResolver(ProviderIntentResolver orig) { + super(orig); + mProviders.putAll(orig.mProviders); + mFlags = orig.mFlags; + } + @Override public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, boolean defaultOnly, int userId) { @@ -1829,6 +1935,17 @@ public class ComponentResolver { private static final class ServiceIntentResolver extends MimeGroupsAwareIntentResolver<Pair<ParsedService, ParsedIntentInfo>, ResolveInfo> { + // Default constructor + ServiceIntentResolver() { + } + + // Copy constructor used in creating snapshots + ServiceIntentResolver(ServiceIntentResolver orig) { + copyFrom(orig); + mServices.putAll(orig.mServices); + mFlags = orig.mFlags; + } + @Override public List<ResolveInfo> queryIntent(Intent intent, String resolvedType, boolean defaultOnly, int userId) { @@ -2213,11 +2330,16 @@ public class ComponentResolver { * @return true if any intent filters were changed due to this update */ boolean updateMimeGroup(String packageName, String group) { - boolean hasChanges = mActivities.updateMimeGroup(packageName, group); - hasChanges |= mProviders.updateMimeGroup(packageName, group); - hasChanges |= mReceivers.updateMimeGroup(packageName, group); - hasChanges |= mServices.updateMimeGroup(packageName, group); - + boolean hasChanges = false; + synchronized (mLock) { + hasChanges |= mActivities.updateMimeGroup(packageName, group); + hasChanges |= mProviders.updateMimeGroup(packageName, group); + hasChanges |= mReceivers.updateMimeGroup(packageName, group); + hasChanges |= mServices.updateMimeGroup(packageName, group); + if (hasChanges) { + onChanged(); + } + } return hasChanges; } } diff --git a/services/core/java/com/android/server/pm/CrossProfileIntentFilter.java b/services/core/java/com/android/server/pm/CrossProfileIntentFilter.java index 7c19d90e4ede..f5910fa3143c 100644 --- a/services/core/java/com/android/server/pm/CrossProfileIntentFilter.java +++ b/services/core/java/com/android/server/pm/CrossProfileIntentFilter.java @@ -24,6 +24,7 @@ import android.util.TypedXmlPullParser; import android.util.TypedXmlSerializer; import com.android.internal.util.XmlUtils; +import com.android.server.utils.SnapshotCache; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -35,7 +36,7 @@ import java.io.IOException; * If an {@link Intent} matches the {@link CrossProfileIntentFilter}, then activities in the user * {@link #mTargetUserId} can access it. */ -class CrossProfileIntentFilter extends IntentFilter { +class CrossProfileIntentFilter extends WatchedIntentFilter { private static final String ATTR_TARGET_USER_ID = "targetUserId"; private static final String ATTR_FLAGS = "flags"; private static final String ATTR_OWNER_PACKAGE = "ownerPackage"; @@ -48,12 +49,41 @@ class CrossProfileIntentFilter extends IntentFilter { final String mOwnerPackage; // packageName of the app. final int mFlags; + // The cache for snapshots, so they are not rebuilt if the base object has not + // changed. + final SnapshotCache<CrossProfileIntentFilter> mSnapshot; + + private SnapshotCache makeCache() { + return new SnapshotCache<CrossProfileIntentFilter>(this, this) { + @Override + public CrossProfileIntentFilter createSnapshot() { + CrossProfileIntentFilter s = new CrossProfileIntentFilter(mSource); + s.seal(); + return s; + }}; + } + CrossProfileIntentFilter(IntentFilter filter, String ownerPackage, int targetUserId, int flags) { super(filter); mTargetUserId = targetUserId; mOwnerPackage = ownerPackage; mFlags = flags; + mSnapshot = makeCache(); + } + + CrossProfileIntentFilter(WatchedIntentFilter filter, String ownerPackage, int targetUserId, + int flags) { + this(filter.mFilter, ownerPackage, targetUserId, flags); + } + + // Copy constructor used only to create a snapshot. + private CrossProfileIntentFilter(CrossProfileIntentFilter f) { + super(f); + mTargetUserId = f.mTargetUserId; + mOwnerPackage = f.mOwnerPackage; + mFlags = f.mFlags; + mSnapshot = new SnapshotCache.Sealed(); } public int getTargetUserId() { @@ -72,6 +102,7 @@ class CrossProfileIntentFilter extends IntentFilter { mTargetUserId = parser.getAttributeInt(null, ATTR_TARGET_USER_ID, UserHandle.USER_NULL); mOwnerPackage = getStringFromXml(parser, ATTR_OWNER_PACKAGE, ""); mFlags = parser.getAttributeInt(null, ATTR_FLAGS, 0); + mSnapshot = makeCache(); int outerDepth = parser.getDepth(); String tagName = parser.getName(); @@ -94,7 +125,7 @@ class CrossProfileIntentFilter extends IntentFilter { } } if (tagName.equals(ATTR_FILTER)) { - readFromXml(parser); + mFilter.readFromXml(parser); } else { String msg = "Missing element under " + TAG + ": " + ATTR_FILTER + " at " + parser.getPositionDescription(); @@ -103,7 +134,8 @@ class CrossProfileIntentFilter extends IntentFilter { } } - String getStringFromXml(TypedXmlPullParser parser, String attribute, String defaultValue) { + private String getStringFromXml(TypedXmlPullParser parser, String attribute, + String defaultValue) { String value = parser.getAttributeValue(null, attribute); if (value == null) { String msg = "Missing element under " + TAG +": " + attribute + " at " + @@ -120,7 +152,7 @@ class CrossProfileIntentFilter extends IntentFilter { serializer.attributeInt(null, ATTR_FLAGS, mFlags); serializer.attribute(null, ATTR_OWNER_PACKAGE, mOwnerPackage); serializer.startTag(null, ATTR_FILTER); - super.writeToXml(serializer); + mFilter.writeToXml(serializer); serializer.endTag(null, ATTR_FILTER); } @@ -135,4 +167,8 @@ class CrossProfileIntentFilter extends IntentFilter { && mOwnerPackage.equals(other.mOwnerPackage) && mFlags == other.mFlags; } + + public CrossProfileIntentFilter snapshot() { + return mSnapshot.snapshot(); + } } diff --git a/services/core/java/com/android/server/pm/CrossProfileIntentResolver.java b/services/core/java/com/android/server/pm/CrossProfileIntentResolver.java index 791a1057d112..792753860358 100644 --- a/services/core/java/com/android/server/pm/CrossProfileIntentResolver.java +++ b/services/core/java/com/android/server/pm/CrossProfileIntentResolver.java @@ -21,6 +21,7 @@ import android.content.IntentFilter; import com.android.server.WatchedIntentResolver; import com.android.server.utils.Snappable; +import com.android.server.utils.SnapshotCache; import java.util.List; @@ -47,7 +48,34 @@ class CrossProfileIntentResolver @Override protected IntentFilter getIntentFilter(@NonNull CrossProfileIntentFilter input) { - return input; + return input.getIntentFilter(); + } + + CrossProfileIntentResolver() { + mSnapshot = makeCache(); + } + + // Take the snapshot of F + protected CrossProfileIntentFilter snapshot(CrossProfileIntentFilter f) { + return (f == null) ? null : f.snapshot(); + } + + // Copy constructor used only to create a snapshot. + private CrossProfileIntentResolver(CrossProfileIntentResolver f) { + copyFrom(f); + mSnapshot = new SnapshotCache.Sealed(); + } + + // The cache for snapshots, so they are not rebuilt if the base object has not + // changed. + final SnapshotCache<CrossProfileIntentResolver> mSnapshot; + + private SnapshotCache makeCache() { + return new SnapshotCache<CrossProfileIntentResolver>(this, this) { + @Override + public CrossProfileIntentResolver createSnapshot() { + return new CrossProfileIntentResolver(mSource); + }}; } /** @@ -56,8 +84,6 @@ class CrossProfileIntentResolver * @return A snapshot of the current object. */ public CrossProfileIntentResolver snapshot() { - CrossProfileIntentResolver result = new CrossProfileIntentResolver(); - result.copyFrom(this); - return result; + return mSnapshot.snapshot(); } } diff --git a/services/core/java/com/android/server/pm/DefaultCrossProfileIntentFilter.java b/services/core/java/com/android/server/pm/DefaultCrossProfileIntentFilter.java index a32e107d9e73..c58128a3c9b1 100644 --- a/services/core/java/com/android/server/pm/DefaultCrossProfileIntentFilter.java +++ b/services/core/java/com/android/server/pm/DefaultCrossProfileIntentFilter.java @@ -43,7 +43,7 @@ final class DefaultCrossProfileIntentFilter { } /** The intent filter that's used */ - public final IntentFilter filter; + public final WatchedIntentFilter filter; /** * The flags related to the forwarding, e.g. @@ -66,7 +66,7 @@ final class DefaultCrossProfileIntentFilter { */ public final boolean letsPersonalDataIntoProfile; - private DefaultCrossProfileIntentFilter(IntentFilter filter, int flags, + private DefaultCrossProfileIntentFilter(WatchedIntentFilter filter, int flags, @Direction int direction, boolean letsPersonalDataIntoProfile) { this.filter = requireNonNull(filter); this.flags = flags; @@ -75,7 +75,7 @@ final class DefaultCrossProfileIntentFilter { } static final class Builder { - private IntentFilter mFilter = new IntentFilter(); + private WatchedIntentFilter mFilter = new WatchedIntentFilter(); private int mFlags; private @Direction int mDirection; private boolean mLetsPersonalDataIntoProfile; diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 3fc9ac2d9378..fc36378a9447 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -134,7 +134,6 @@ import static com.android.server.pm.PackageManagerServiceUtils.getLastModifiedTi import static com.android.server.pm.PackageManagerServiceUtils.logCriticalInfo; import static com.android.server.pm.PackageManagerServiceUtils.makeDirRecursive; import static com.android.server.pm.PackageManagerServiceUtils.verifySignatures; -import static com.android.server.pm.parsing.PackageInfoUtils.checkUseInstalledOrHidden; import android.Manifest; import android.annotation.AppIdInt; @@ -1482,7 +1481,9 @@ public class PackageManagerService extends IPackageManager.Stub // Internal interface for permission manager private final PermissionManagerServiceInternal mPermissionManager; + @Watched private final ComponentResolver mComponentResolver; + // List of packages names to keep cached, even if they are uninstalled for all users private List<String> mKeepUninstalledPackages; @@ -1826,6 +1827,7 @@ public class PackageManagerService extends IPackageManager.Stub public final ApplicationInfo androidApplication; public final String appPredictionServicePackage; public final AppsFilter appsFilter; + public final ComponentResolver componentResolver; public final PackageManagerService service; Snapshot(int type) { @@ -1851,6 +1853,7 @@ public class PackageManagerService extends IPackageManager.Stub : new ApplicationInfo(mAndroidApplication); appPredictionServicePackage = mAppPredictionServicePackage; appsFilter = mAppsFilter.snapshot(); + componentResolver = mComponentResolver.snapshot(); } else if (type == Snapshot.LIVE) { settings = mSettings; isolatedOwners = mIsolatedOwners; @@ -1867,6 +1870,7 @@ public class PackageManagerService extends IPackageManager.Stub androidApplication = mAndroidApplication; appPredictionServicePackage = mAppPredictionServicePackage; appsFilter = mAppsFilter; + componentResolver = mComponentResolver; } else { throw new IllegalArgumentException(); } @@ -1956,8 +1960,8 @@ public class PackageManagerService extends IPackageManager.Stub int callingUid); ResolveInfo createForwardingResolveInfo(CrossProfileIntentFilter filter, Intent intent, String resolvedType, int flags, int sourceUserId); - ResolveInfo createForwardingResolveInfoUnchecked(IntentFilter filter, int sourceUserId, - int targetUserId); + ResolveInfo createForwardingResolveInfoUnchecked(WatchedIntentFilter filter, + int sourceUserId, int targetUserId); ResolveInfo queryCrossProfileIntents(List<CrossProfileIntentFilter> matchingFilters, Intent intent, String resolvedType, int flags, int sourceUserId, boolean matchInCurrentProfile); @@ -2114,6 +2118,7 @@ public class PackageManagerService extends IPackageManager.Stub mInstantAppRegistry = args.instantAppRegistry; mLocalAndroidApplication = args.androidApplication; mAppsFilter = args.appsFilter; + mComponentResolver = args.componentResolver; mAppPredictionServicePackage = args.appPredictionServicePackage; @@ -2124,7 +2129,6 @@ public class PackageManagerService extends IPackageManager.Stub mContext = args.service.mContext; mInjector = args.service.mInjector; mApexManager = args.service.mApexManager; - mComponentResolver = args.service.mComponentResolver; mInstantAppResolverConnection = args.service.mInstantAppResolverConnection; mDefaultAppProvider = args.service.mDefaultAppProvider; mDomainVerificationManager = args.service.mDomainVerificationManager; @@ -2511,8 +2515,8 @@ public class PackageManagerService extends IPackageManager.Stub if (DEBUG_PACKAGE_INFO) Log.v(TAG, "getActivityInfo " + component + ": " + a); AndroidPackage pkg = a == null ? null : mPackages.get(a.getPackageName()); - PackageSetting ps = a == null ? null : mSettings.getPackageLPr(a.getPackageName()); if (pkg != null && mSettings.isEnabledAndMatchLPr(pkg, a, flags, userId)) { + PackageSetting ps = mSettings.getPackageLPr(component.getPackageName()); if (ps == null) return null; if (shouldFilterApplicationLocked( ps, filterCallingUid, component, TYPE_ACTIVITY, userId)) { @@ -2522,8 +2526,8 @@ public class PackageManagerService extends IPackageManager.Stub a, flags, ps.readUserState(userId), userId, ps); } if (resolveComponentName().equals(component)) { - return generateDelegateActivityInfo(pkg, ps, new PackageUserState(), - mResolveActivity, flags, userId); + return PackageParser.generateActivityInfo( + mResolveActivity, flags, new PackageUserState(), userId); } return null; } @@ -2860,8 +2864,8 @@ public class PackageManagerService extends IPackageManager.Stub } if (result == null) { result = new CrossProfileDomainInfo(); - result.resolveInfo = createForwardingResolveInfoUnchecked(new IntentFilter(), - sourceUserId, parentUserId); + result.resolveInfo = createForwardingResolveInfoUnchecked( + new WatchedIntentFilter(), sourceUserId, parentUserId); } result.highestApprovalLevel = Math.max(mDomainVerificationManager @@ -3169,8 +3173,8 @@ public class PackageManagerService extends IPackageManager.Stub return result; } final ResolveInfo ephemeralInstaller = new ResolveInfo(mInstantAppInstallerInfo); - ephemeralInstaller.activityInfo = generateDelegateActivityInfo(ps.getPkg(), ps, - ps.readUserState(userId), instantAppInstallerActivity(), 0 /*flags*/, userId); + ephemeralInstaller.activityInfo = PackageParser.generateActivityInfo( + instantAppInstallerActivity(), 0, ps.readUserState(userId), userId); ephemeralInstaller.match = IntentFilter.MATCH_CATEGORY_SCHEME_SPECIFIC_PART | IntentFilter.MATCH_ADJUSTMENT_NORMAL; // add a non-generic filter @@ -3254,7 +3258,7 @@ public class PackageManagerService extends IPackageManager.Stub ai.flags = ps.pkgFlags; ai.privateFlags = ps.pkgPrivateFlags; pi.applicationInfo = - PackageInfoUtils.generateApplicationInfo(p, flags, state, userId, ps); + PackageParser.generateApplicationInfo(ai, flags, state, userId); if (DEBUG_PACKAGE_INFO) Log.v(TAG, "ps.pkg is n/a for [" + ps.name + "]. Provides a minimum info."); @@ -3370,19 +3374,6 @@ public class PackageManagerService extends IPackageManager.Stub return getInstalledPackagesBody(flags, userId, callingUid); } - private static ActivityInfo generateDelegateActivityInfo(@Nullable AndroidPackage pkg, - @Nullable PackageSetting ps, @NonNull PackageUserState state, - @Nullable ActivityInfo activity, int flags, int userId) { - if (activity == null || pkg == null - || !checkUseInstalledOrHidden(pkg, ps, state, flags)) { - return null; - } - final ActivityInfo info = new ActivityInfo(activity); - info.applicationInfo = - PackageInfoUtils.generateApplicationInfo(pkg, flags, state, userId, ps); - return info; - } - public ParceledListSlice<PackageInfo> getInstalledPackagesBody(int flags, int userId, int callingUid) { // writer @@ -3469,15 +3460,15 @@ public class PackageManagerService extends IPackageManager.Stub for (int i = resultTargetUser.size() - 1; i >= 0; i--) { if ((resultTargetUser.get(i).activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SUSPENDED) == 0) { - return createForwardingResolveInfoUnchecked(filter, sourceUserId, - targetUserId); + return createForwardingResolveInfoUnchecked(filter, + sourceUserId, targetUserId); } } } return null; } - public ResolveInfo createForwardingResolveInfoUnchecked(IntentFilter filter, + public ResolveInfo createForwardingResolveInfoUnchecked(WatchedIntentFilter filter, int sourceUserId, int targetUserId) { ResolveInfo forwardingResolveInfo = new ResolveInfo(); final long ident = Binder.clearCallingIdentity(); @@ -3507,7 +3498,7 @@ public class PackageManagerService extends IPackageManager.Stub forwardingResolveInfo.preferredOrder = 0; forwardingResolveInfo.match = 0; forwardingResolveInfo.isDefault = true; - forwardingResolveInfo.filter = filter; + forwardingResolveInfo.filter = new IntentFilter(filter.getIntentFilter()); forwardingResolveInfo.targetUserId = targetUserId; return forwardingResolveInfo; } @@ -6144,6 +6135,7 @@ public class PackageManagerService extends IPackageManager.Stub mInstantAppRegistry.registerObserver(mWatcher); mSettings.registerObserver(mWatcher); mIsolatedOwners.registerObserver(mWatcher); + mComponentResolver.registerObserver(mWatcher); // If neither "build" attribute is true then this may be a mockito test, and verification // can fail as a false positive. Watchable.verifyWatchedAttributes(this, mWatcher, !(mIsEngBuild || mIsUserDebugBuild)); @@ -9457,6 +9449,15 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void setLastChosenActivity(Intent intent, String resolvedType, int flags, IntentFilter filter, int match, ComponentName activity) { + setLastChosenActivity(intent, resolvedType, flags, + new WatchedIntentFilter(filter), match, activity); + } + + /** + * Variant that takes a {@link WatchedIntentFilter} + */ + public void setLastChosenActivity(Intent intent, String resolvedType, int flags, + WatchedIntentFilter filter, int match, ComponentName activity) { if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return; } @@ -9477,7 +9478,7 @@ public class PackageManagerService extends IPackageManager.Stub findPreferredActivityNotLocked( intent, resolvedType, flags, query, 0, false, true, false, userId); // Add the new activity as the last chosen for this filter - addPreferredActivityInternal(filter, match, null, activity, false, userId, + addPreferredActivity(filter, match, null, activity, false, userId, "Setting last chosen", false); } @@ -10195,12 +10196,6 @@ public class PackageManagerService extends IPackageManager.Stub resolvedType, flags, sourceUserId); } - private ResolveInfo createForwardingResolveInfoUnchecked(IntentFilter filter, - int sourceUserId, int targetUserId) { - return liveComputer().createForwardingResolveInfoUnchecked(filter, - sourceUserId, targetUserId); - } - @Override public @NonNull ParceledListSlice<ResolveInfo> queryIntentActivityOptions(ComponentName caller, Intent[] specifics, String[] specificTypes, Intent intent, @@ -12136,6 +12131,8 @@ public class PackageManagerService extends IPackageManager.Stub public boolean performDexOptMode(String packageName, boolean checkProfiles, String targetCompilerFilter, boolean force, boolean bootComplete, String splitName) { + enforceSystemOrRootOrShell("performDexOptMode"); + int flags = (checkProfiles ? DexoptOptions.DEXOPT_CHECK_FOR_PROFILES_UPDATES : 0) | (force ? DexoptOptions.DEXOPT_FORCE : 0) | (bootComplete ? DexoptOptions.DEXOPT_BOOT_COMPLETE : 0); @@ -16477,7 +16474,7 @@ public class PackageManagerService extends IPackageManager.Stub return new ParceledListSlice<IntentFilter>(result) { @Override protected void writeElement(IntentFilter parcelable, Parcel dest, int callFlags) { - // IntentFilter has final Parcelable methods, so redirect to the subclass + // WatchedIntentFilter has final Parcelable methods, so redirect to the subclass ((ParsedIntentInfo) parcelable).writeIntentInfoToParcel(dest, callFlags); } @@ -21964,11 +21961,14 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void addPreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity, int userId, boolean removeExisting) { - addPreferredActivityInternal(filter, match, set, activity, true, userId, + addPreferredActivity(new WatchedIntentFilter(filter), match, set, activity, true, userId, "Adding preferred", removeExisting); } - private void addPreferredActivityInternal(IntentFilter filter, int match, + /** + * Variant that takes a {@link WatchedIntentFilter} + */ + public void addPreferredActivity(WatchedIntentFilter filter, int match, ComponentName[] set, ComponentName activity, boolean always, int userId, String opname, boolean removeExisting) { // writer @@ -22007,7 +22007,7 @@ public class PackageManagerService extends IPackageManager.Stub pir.addFilter(new PreferredActivity(filter, match, set, activity, always)); scheduleWritePackageRestrictionsLocked(userId); } - if (!updateDefaultHomeNotLocked(userId)) { + if (!(isHomeFilter(filter) && updateDefaultHomeNotLocked(userId))) { postPreferredActivityChangedBroadcast(userId); } } @@ -22034,6 +22034,15 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void replacePreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity, int userId) { + replacePreferredActivity(new WatchedIntentFilter(filter), match, + set, activity, userId); + } + + /** + * Variant that takes a {@link WatchedIntentFilter} + */ + public void replacePreferredActivity(WatchedIntentFilter filter, int match, + ComponentName[] set, ComponentName activity, int userId) { if (filter.countActions() != 1) { throw new IllegalArgumentException( "replacePreferredActivity expects filter to have only 1 action."); @@ -22106,7 +22115,7 @@ public class PackageManagerService extends IPackageManager.Stub } } } - addPreferredActivityInternal(filter, match, set, activity, true, userId, + addPreferredActivity(filter, match, set, activity, true, userId, "Replacing preferred", false); } @@ -22213,6 +22222,22 @@ public class PackageManagerService extends IPackageManager.Stub @Override public int getPreferredActivities(List<IntentFilter> outFilters, List<ComponentName> outActivities, String packageName) { + List<WatchedIntentFilter> temp = + WatchedIntentFilter.toWatchedIntentFilterList(outFilters); + final int result = getPreferredActivitiesInternal( + temp, outActivities, packageName); + outFilters.clear(); + for (int i = 0; i < temp.size(); i++) { + outFilters.add(temp.get(i).getIntentFilter()); + } + return result; + } + + /** + * Variant that takes a {@link WatchedIntentFilter} + */ + public int getPreferredActivitiesInternal(List<WatchedIntentFilter> outFilters, + List<ComponentName> outActivities, String packageName) { if (getInstantAppPackageName(Binder.getCallingUid()) != null) { return 0; } @@ -22229,7 +22254,7 @@ public class PackageManagerService extends IPackageManager.Stub || (pa.mPref.mComponent.getPackageName().equals(packageName) && pa.mPref.mAlways)) { if (outFilters != null) { - outFilters.add(new IntentFilter(pa)); + outFilters.add(new WatchedIntentFilter(pa.getIntentFilter())); } if (outActivities != null) { outActivities.add(pa.mPref.mComponent); @@ -22245,6 +22270,14 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void addPersistentPreferredActivity(IntentFilter filter, ComponentName activity, int userId) { + addPersistentPreferredActivity(new WatchedIntentFilter(filter), activity, userId); + } + + /** + * Variant that takes a {@link WatchedIntentFilter} + */ + public void addPersistentPreferredActivity(WatchedIntentFilter filter, ComponentName activity, + int userId) { int callingUid = Binder.getCallingUid(); if (callingUid != Process.SYSTEM_UID) { throw new SecurityException( @@ -22264,7 +22297,9 @@ public class PackageManagerService extends IPackageManager.Stub new PersistentPreferredActivity(filter, activity, true)); scheduleWritePackageRestrictionsLocked(userId); } - updateDefaultHomeNotLocked(userId); + if (isHomeFilter(filter)) { + updateDefaultHomeNotLocked(userId); + } postPreferredActivityChangedBroadcast(userId); } @@ -22488,6 +22523,15 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void addCrossProfileIntentFilter(IntentFilter intentFilter, String ownerPackage, int sourceUserId, int targetUserId, int flags) { + addCrossProfileIntentFilter(new WatchedIntentFilter(intentFilter), ownerPackage, + sourceUserId, targetUserId, flags); + } + + /** + * Variant that takes a {@link WatchedIntentFilter} + */ + public void addCrossProfileIntentFilter(WatchedIntentFilter intentFilter, String ownerPackage, + int sourceUserId, int targetUserId, int flags) { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, null); int callingUid = Binder.getCallingUid(); @@ -22617,13 +22661,18 @@ public class PackageManagerService extends IPackageManager.Stub return liveComputer().getHomeIntent(); } - private IntentFilter getHomeFilter() { - IntentFilter filter = new IntentFilter(Intent.ACTION_MAIN); + private WatchedIntentFilter getHomeFilter() { + WatchedIntentFilter filter = new WatchedIntentFilter(Intent.ACTION_MAIN); filter.addCategory(Intent.CATEGORY_HOME); filter.addCategory(Intent.CATEGORY_DEFAULT); return filter; } + private boolean isHomeFilter(@NonNull WatchedIntentFilter filter) { + return filter.hasAction(Intent.ACTION_MAIN) && filter.hasCategory(Intent.CATEGORY_HOME) + && filter.hasCategory(CATEGORY_DEFAULT); + } + ComponentName getHomeActivitiesAsUser(List<ResolveInfo> allHomeCandidates, int userId) { return liveComputer().getHomeActivitiesAsUser(allHomeCandidates, @@ -23618,7 +23667,7 @@ public class PackageManagerService extends IPackageManager.Stub boolean compatibilityModeEnabled = android.provider.Settings.Global.getInt( mContext.getContentResolver(), android.provider.Settings.Global.COMPATIBILITY_MODE, 1) == 1; - ParsingPackageUtils.setCompatibilityModeEnabled(compatibilityModeEnabled); + PackageParser.setCompatibilityModeEnabled(compatibilityModeEnabled); if (DEBUG_SETTINGS) { Log.d(TAG, "compatibility mode:" + compatibilityModeEnabled); diff --git a/services/core/java/com/android/server/pm/PersistentPreferredActivity.java b/services/core/java/com/android/server/pm/PersistentPreferredActivity.java index a015456f1485..ad3950c906ef 100644 --- a/services/core/java/com/android/server/pm/PersistentPreferredActivity.java +++ b/services/core/java/com/android/server/pm/PersistentPreferredActivity.java @@ -23,13 +23,14 @@ import android.util.TypedXmlPullParser; import android.util.TypedXmlSerializer; import com.android.internal.util.XmlUtils; +import com.android.server.utils.SnapshotCache; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; -class PersistentPreferredActivity extends IntentFilter { +class PersistentPreferredActivity extends WatchedIntentFilter { private static final String ATTR_NAME = "name"; // component name private static final String ATTR_FILTER = "filter"; // filter private static final String ATTR_SET_BY_DPM = "set-by-dpm"; // set by DPM @@ -41,10 +42,38 @@ class PersistentPreferredActivity extends IntentFilter { final ComponentName mComponent; final boolean mIsSetByDpm; + // The cache for snapshots, so they are not rebuilt if the base object has not + // changed. + final SnapshotCache<PersistentPreferredActivity> mSnapshot; + + private SnapshotCache makeCache() { + return new SnapshotCache<PersistentPreferredActivity>(this, this) { + @Override + public PersistentPreferredActivity createSnapshot() { + PersistentPreferredActivity s = new PersistentPreferredActivity(mSource); + s.seal(); + return s; + }}; + } + PersistentPreferredActivity(IntentFilter filter, ComponentName activity, boolean isSetByDpm) { super(filter); mComponent = activity; mIsSetByDpm = isSetByDpm; + mSnapshot = makeCache(); + } + + PersistentPreferredActivity(WatchedIntentFilter filter, ComponentName activity, + boolean isSetByDpm) { + this(filter.mFilter, activity, isSetByDpm); + } + + // Copy constructor used only to create a snapshot + private PersistentPreferredActivity(PersistentPreferredActivity f) { + super(f); + mComponent = f.mComponent; + mIsSetByDpm = f.mIsSetByDpm; + mSnapshot = new SnapshotCache.Sealed(); } PersistentPreferredActivity(TypedXmlPullParser parser) @@ -79,27 +108,36 @@ class PersistentPreferredActivity extends IntentFilter { } } if (tagName.equals(ATTR_FILTER)) { - readFromXml(parser); + mFilter.readFromXml(parser); } else { PackageManagerService.reportSettingsProblem(Log.WARN, "Missing element filter at " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); } + mSnapshot = makeCache(); } public void writeToXml(TypedXmlSerializer serializer) throws IOException { serializer.attribute(null, ATTR_NAME, mComponent.flattenToShortString()); serializer.attributeBoolean(null, ATTR_SET_BY_DPM, mIsSetByDpm); serializer.startTag(null, ATTR_FILTER); - super.writeToXml(serializer); + mFilter.writeToXml(serializer); serializer.endTag(null, ATTR_FILTER); } + public IntentFilter getIntentFilter() { + return mFilter; + } + @Override public String toString() { return "PersistentPreferredActivity{0x" + Integer.toHexString(System.identityHashCode(this)) + " " + mComponent.flattenToShortString() + ", mIsSetByDpm=" + mIsSetByDpm + "}"; } + + public PersistentPreferredActivity snapshot() { + return mSnapshot.snapshot(); + } } diff --git a/services/core/java/com/android/server/pm/PersistentPreferredIntentResolver.java b/services/core/java/com/android/server/pm/PersistentPreferredIntentResolver.java index 2b11a4297835..bfddaea0dd75 100644 --- a/services/core/java/com/android/server/pm/PersistentPreferredIntentResolver.java +++ b/services/core/java/com/android/server/pm/PersistentPreferredIntentResolver.java @@ -21,6 +21,7 @@ import android.content.IntentFilter; import com.android.server.WatchedIntentResolver; import com.android.server.utils.Snappable; +import com.android.server.utils.SnapshotCache; public class PersistentPreferredIntentResolver extends WatchedIntentResolver<PersistentPreferredActivity, PersistentPreferredActivity> @@ -32,7 +33,7 @@ public class PersistentPreferredIntentResolver @Override protected IntentFilter getIntentFilter(@NonNull PersistentPreferredActivity input) { - return input; + return input.getIntentFilter(); } @Override @@ -40,14 +41,40 @@ public class PersistentPreferredIntentResolver return packageName.equals(filter.mComponent.getPackageName()); } + public PersistentPreferredIntentResolver() { + super(); + mSnapshot = makeCache(); + } + + // Take the snapshot of F + protected PersistentPreferredActivity snapshot(PersistentPreferredActivity f) { + return (f == null) ? null : f.snapshot(); + } + + // Copy constructor used only to create a snapshot. + private PersistentPreferredIntentResolver(PersistentPreferredIntentResolver f) { + copyFrom(f); + mSnapshot = new SnapshotCache.Sealed(); + } + + // The cache for snapshots, so they are not rebuilt if the base object has not + // changed. + final SnapshotCache<PersistentPreferredIntentResolver> mSnapshot; + + private SnapshotCache makeCache() { + return new SnapshotCache<PersistentPreferredIntentResolver>(this, this) { + @Override + public PersistentPreferredIntentResolver createSnapshot() { + return new PersistentPreferredIntentResolver(mSource); + }}; + } + /** * Return a snapshot of the current object. The snapshot is a read-only copy suitable * for read-only methods. * @return A snapshot of the current object. */ public PersistentPreferredIntentResolver snapshot() { - PersistentPreferredIntentResolver result = new PersistentPreferredIntentResolver(); - result.copyFrom(this); - return result; + return mSnapshot.snapshot(); } } diff --git a/services/core/java/com/android/server/pm/PreferredActivity.java b/services/core/java/com/android/server/pm/PreferredActivity.java index 4e1dcb27111d..5bc915f2c1c4 100644 --- a/services/core/java/com/android/server/pm/PreferredActivity.java +++ b/services/core/java/com/android/server/pm/PreferredActivity.java @@ -23,32 +23,62 @@ import android.util.TypedXmlPullParser; import android.util.TypedXmlSerializer; import com.android.internal.util.XmlUtils; +import com.android.server.utils.SnapshotCache; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; +import java.io.PrintWriter; -class PreferredActivity extends IntentFilter implements PreferredComponent.Callbacks { +class PreferredActivity extends WatchedIntentFilter implements PreferredComponent.Callbacks { private static final String TAG = "PreferredActivity"; private static final boolean DEBUG_FILTERS = false; final PreferredComponent mPref; + // The cache for snapshots, so they are not rebuilt if the base object has not + // changed. + final SnapshotCache<PreferredActivity> mSnapshot; + + private SnapshotCache makeCache() { + return new SnapshotCache<PreferredActivity>(this, this) { + @Override + public PreferredActivity createSnapshot() { + PreferredActivity s = new PreferredActivity(mSource); + s.seal(); + return s; + }}; + } + PreferredActivity(IntentFilter filter, int match, ComponentName[] set, ComponentName activity, boolean always) { super(filter); mPref = new PreferredComponent(this, match, set, activity, always); + mSnapshot = makeCache(); + } + + PreferredActivity(WatchedIntentFilter filter, int match, ComponentName[] set, + ComponentName activity, boolean always) { + this(filter.mFilter, match, set, activity, always); + } + + // Copy constructor used only to create a snapshot + private PreferredActivity(PreferredActivity f) { + super(f); + mPref = f.mPref; + mSnapshot = new SnapshotCache.Sealed(); } PreferredActivity(TypedXmlPullParser parser) throws XmlPullParserException, IOException { mPref = new PreferredComponent(this, parser); + mSnapshot = makeCache(); } public void writeToXml(TypedXmlSerializer serializer, boolean full) throws IOException { mPref.writeToXml(serializer, full); serializer.startTag(null, "filter"); - super.writeToXml(serializer); + mFilter.writeToXml(serializer); serializer.endTag(null, "filter"); } @@ -58,7 +88,7 @@ class PreferredActivity extends IntentFilter implements PreferredComponent.Callb if (DEBUG_FILTERS) { Log.i(TAG, "Starting to parse filter..."); } - readFromXml(parser); + mFilter.readFromXml(parser); if (DEBUG_FILTERS) { Log.i(TAG, "Finished filter: depth=" + parser.getDepth() + " tag=" + parser.getName()); @@ -71,9 +101,17 @@ class PreferredActivity extends IntentFilter implements PreferredComponent.Callb return true; } + public void dumpPref(PrintWriter out, String prefix, PreferredActivity filter) { + mPref.dump(out, prefix, filter); + } + @Override public String toString() { return "PreferredActivity{0x" + Integer.toHexString(System.identityHashCode(this)) + " " + mPref.mComponent.flattenToShortString() + "}"; } + + public PreferredActivity snapshot() { + return mSnapshot.snapshot(); + } } diff --git a/services/core/java/com/android/server/pm/PreferredIntentResolver.java b/services/core/java/com/android/server/pm/PreferredIntentResolver.java index 10a6b3f69fde..0aca6eec25fc 100644 --- a/services/core/java/com/android/server/pm/PreferredIntentResolver.java +++ b/services/core/java/com/android/server/pm/PreferredIntentResolver.java @@ -21,6 +21,7 @@ import android.content.IntentFilter; import com.android.server.WatchedIntentResolver; import com.android.server.utils.Snappable; +import com.android.server.utils.SnapshotCache; import java.io.PrintWriter; import java.util.ArrayList; @@ -46,7 +47,7 @@ public class PreferredIntentResolver @Override protected IntentFilter getIntentFilter(@NonNull PreferredActivity input) { - return input; + return input.getIntentFilter(); } public boolean shouldAddPreferredActivity(PreferredActivity pa) { @@ -69,14 +70,40 @@ public class PreferredIntentResolver return true; } + public PreferredIntentResolver() { + super(); + mSnapshot = makeCache(); + } + + // Take the snapshot of F + protected PreferredActivity snapshot(PreferredActivity f) { + return (f == null) ? null : f.snapshot(); + } + + // Copy constructor used only to create a snapshot. + private PreferredIntentResolver(PreferredIntentResolver f) { + copyFrom(f); + mSnapshot = new SnapshotCache.Sealed(); + } + + // The cache for snapshots, so they are not rebuilt if the base object has not + // changed. + final SnapshotCache<PreferredIntentResolver> mSnapshot; + + private SnapshotCache makeCache() { + return new SnapshotCache<PreferredIntentResolver>(this, this) { + @Override + public PreferredIntentResolver createSnapshot() { + return new PreferredIntentResolver(mSource); + }}; + } + /** * Return a snapshot of the current object. The snapshot is a read-only copy suitable * for read-only methods. * @return A snapshot of the current object. */ public PreferredIntentResolver snapshot() { - PreferredIntentResolver result = new PreferredIntentResolver(); - result.copyFrom(this); - return result; + return mSnapshot.snapshot(); } } diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index b985229d3116..1b8eee3925a5 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -3026,8 +3026,9 @@ public final class Settings implements Watchable, Snappable { = ps.pkg.getPreferredActivityFilters(); for (int i=0; i<intents.size(); i++) { Pair<String, ParsedIntentInfo> pair = intents.get(i); - applyDefaultPreferredActivityLPw(pmInternal, pair.second, new ComponentName( - ps.name, pair.first), userId); + applyDefaultPreferredActivityLPw(pmInternal, + new WatchedIntentFilter(pair.second), + new ComponentName(ps.name, pair.first), userId); } } } @@ -3097,7 +3098,7 @@ public final class Settings implements Watchable, Snappable { } static void removeFilters(@NonNull PreferredIntentResolver pir, - @NonNull IntentFilter filter, @NonNull List<PreferredActivity> existing) { + @NonNull WatchedIntentFilter filter, @NonNull List<PreferredActivity> existing) { if (PackageManagerService.DEBUG_PREFERRED) { Slog.i(TAG, existing.size() + " preferred matches for:"); filter.dump(new LogPrinter(Log.INFO, TAG), " "); @@ -3112,8 +3113,8 @@ public final class Settings implements Watchable, Snappable { } } - private void applyDefaultPreferredActivityLPw( - PackageManagerInternal pmInternal, IntentFilter tmpPa, ComponentName cn, int userId) { + private void applyDefaultPreferredActivityLPw(PackageManagerInternal pmInternal, + WatchedIntentFilter tmpPa, ComponentName cn, int userId) { // The initial preferences only specify the target activity // component and intent-filter, not the set of matches. So we // now need to query for the matches to build the correct @@ -3284,7 +3285,7 @@ public final class Settings implements Watchable, Snappable { haveNonSys = null; } if (haveAct && haveNonSys == null) { - IntentFilter filter = new IntentFilter(); + WatchedIntentFilter filter = new WatchedIntentFilter(); if (intent.getAction() != null) { filter.addAction(intent.getAction()); } diff --git a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java index b89dbdc863e0..61f51e36202c 100644 --- a/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java +++ b/services/core/java/com/android/server/pm/parsing/PackageInfoUtils.java @@ -417,7 +417,7 @@ public class PackageInfoUtils { * Returns true if the package is installed and not hidden, or if the caller * explicitly wanted all uninstalled and hidden packages as well. */ - public static boolean checkUseInstalledOrHidden(AndroidPackage pkg, + private static boolean checkUseInstalledOrHidden(AndroidPackage pkg, PackageSetting pkgSetting, PackageUserState state, @PackageManager.PackageInfoFlags int flags) { // Returns false if the package is hidden system app until installed. diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 884bbea2eb28..1bfa72f64d8e 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -70,7 +70,9 @@ import android.app.admin.DevicePolicyManagerInternal; import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledAfter; import android.content.AttributionSource; +import android.content.AttributionSourceState; import android.content.Context; +import android.content.PermissionChecker; import android.content.pm.ApplicationInfo; import android.content.pm.FeatureInfo; import android.content.pm.PackageManager; @@ -104,6 +106,7 @@ import android.os.UserHandle; import android.os.UserManager; import android.os.storage.StorageManager; import android.permission.IOnPermissionsChangeListener; +import android.permission.IPermissionChecker; import android.permission.IPermissionManager; import android.permission.PermissionControllerManager; import android.permission.PermissionManager; @@ -164,6 +167,7 @@ import java.util.Objects; import java.util.Set; import java.util.WeakHashMap; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -451,6 +455,7 @@ public class PermissionManagerService extends IPermissionManager.Stub { if (permissionService == null) { permissionService = new PermissionManagerService(context, availableFeatures); ServiceManager.addService("permissionmgr", permissionService); + ServiceManager.addService("permission_checker", new PermissionCheckerService(context)); } return LocalServices.getService(PermissionManagerServiceInternal.class); } @@ -2175,23 +2180,30 @@ public class PermissionManagerService extends IPermissionManager.Stub { } final int callingUid = Binder.getCallingUid(); - final int userId = UserHandle.getUserId(newPackage.getUid()); - int numRequestedPermissions = newPackage.getRequestedPermissions().size(); - for (int i = 0; i < numRequestedPermissions; i++) { - PermissionInfo permInfo = getPermissionInfo(newPackage.getRequestedPermissions().get(i), - newPackage.getPackageName(), 0); - if (permInfo == null || !STORAGE_PERMISSIONS.contains(permInfo.name)) { - continue; - } + for (int userId: getAllUserIds()) { + int numRequestedPermissions = newPackage.getRequestedPermissions().size(); + for (int i = 0; i < numRequestedPermissions; i++) { + PermissionInfo permInfo = getPermissionInfo( + newPackage.getRequestedPermissions().get(i), + newPackage.getPackageName(), 0); + if (permInfo == null || !STORAGE_PERMISSIONS.contains(permInfo.name)) { + continue; + } - EventLog.writeEvent(0x534e4554, "171430330", newPackage.getUid(), - "Revoking permission " + permInfo.name + " from package " - + newPackage.getPackageName() + " as either the sdk downgraded " - + downgradedSdk + " or newly requested legacy full storage " - + newlyRequestsLegacy); + EventLog.writeEvent(0x534e4554, "171430330", newPackage.getUid(), + "Revoking permission " + permInfo.name + " from package " + + newPackage.getPackageName() + " as either the sdk downgraded " + + downgradedSdk + " or newly requested legacy full storage " + + newlyRequestsLegacy); - revokeRuntimePermissionInternal(newPackage.getPackageName(), permInfo.name, - false, callingUid, userId, null, mDefaultPermissionCallback); + try { + revokeRuntimePermissionInternal(newPackage.getPackageName(), permInfo.name, + false, callingUid, userId, null, mDefaultPermissionCallback); + } catch (IllegalStateException | SecurityException e) { + Log.e(TAG, "unable to revoke " + permInfo.name + " for " + + newPackage.getPackageName() + " user " + userId, e); + } + } } } @@ -5448,4 +5460,419 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } } + + /** + * TODO: We need to consolidate these APIs either on PermissionManager or an extension + * object or a separate PermissionChecker service in context. The impartant part is to + * keep a single impl that is exposed to Java and native. We are not sure about the + * API shape so let is soak a bit. + */ + private static final class PermissionCheckerService extends IPermissionChecker.Stub { + // Cache for platform defined runtime permissions to avoid multi lookup (name -> info) + private static final ConcurrentHashMap<String, PermissionInfo> sPlatformPermissions + = new ConcurrentHashMap<>(); + + private final @NonNull Context mContext; + private final @NonNull AppOpsManager mAppOpsManager; + + PermissionCheckerService(@NonNull Context context) { + mContext = context; + mAppOpsManager = mContext.getSystemService(AppOpsManager.class); + } + + @Override + @PermissionChecker.PermissionResult + public int checkPermission(@NonNull String permission, + @NonNull AttributionSourceState attributionSourceState, @Nullable String message, + boolean forDataDelivery, boolean startDataDelivery, boolean fromDatasource) { + Objects.requireNonNull(permission); + Objects.requireNonNull(attributionSourceState); + final AttributionSource attributionSource = new AttributionSource( + attributionSourceState); + final int result = checkPermission(mContext, permission, attributionSource, message, + forDataDelivery, startDataDelivery, fromDatasource); + // Finish any started op if some step in the attribution chain failed. + if (startDataDelivery && result != PermissionChecker.PERMISSION_GRANTED) { + finishDataDelivery(AppOpsManager.permissionToOp(permission), + attributionSource.asState()); + } + return result; + } + + @Override + public void finishDataDelivery(@NonNull String op, + @NonNull AttributionSourceState attributionSourceState) { + if (op == null || attributionSourceState.packageName == null) { + return; + } + mAppOpsManager.finishProxyOp(op, new AttributionSource(attributionSourceState)); + if (attributionSourceState.next != null) { + finishDataDelivery(op, attributionSourceState.next[0]); + } + } + + @Override + @PermissionChecker.PermissionResult + public int checkOp(int op, AttributionSourceState attributionSource, + String message, boolean forDataDelivery, boolean startDataDelivery) { + int result = checkOp(mContext, op, new AttributionSource(attributionSource), message, + forDataDelivery, startDataDelivery); + if (result != PermissionChecker.PERMISSION_GRANTED && startDataDelivery) { + // Finish any started op if some step in the attribution chain failed. + finishDataDelivery(AppOpsManager.opToName(op), attributionSource); + } + return result; + } + + @PermissionChecker.PermissionResult + private static int checkPermission(@NonNull Context context, @NonNull String permission, + @NonNull AttributionSource attributionSource, @Nullable String message, + boolean forDataDelivery, boolean startDataDelivery, boolean fromDatasource) { + PermissionInfo permissionInfo = sPlatformPermissions.get(permission); + + if (permissionInfo == null) { + try { + permissionInfo = context.getPackageManager().getPermissionInfo(permission, 0); + if (PLATFORM_PACKAGE_NAME.equals(permissionInfo.packageName)) { + // Double addition due to concurrency is fine - the backing + // store is concurrent. + sPlatformPermissions.put(permission, permissionInfo); + } + } catch (PackageManager.NameNotFoundException ignored) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + } + + if (permissionInfo.isAppOp()) { + return checkAppOpPermission(context, permission, attributionSource, message, + forDataDelivery, fromDatasource); + } + if (permissionInfo.isRuntime()) { + return checkRuntimePermission(context, permission, attributionSource, message, + forDataDelivery, startDataDelivery, fromDatasource); + } + + if (!fromDatasource && !checkPermission(context, permission, attributionSource.getUid(), + attributionSource.getRenouncedPermissions())) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + + if (attributionSource.getNext() != null) { + return checkPermission(context, permission, + attributionSource.getNext(), message, forDataDelivery, + startDataDelivery, /*fromDatasource*/ false); + } + + return PermissionChecker.PERMISSION_GRANTED; + } + + @PermissionChecker.PermissionResult + private static int checkAppOpPermission(@NonNull Context context, + @NonNull String permission, @NonNull AttributionSource attributionSource, + @Nullable String message, boolean forDataDelivery, boolean fromDatasource) { + final int op = AppOpsManager.permissionToOpCode(permission); + if (op < 0) { + Slog.wtf(LOG_TAG, "Appop permission " + permission + " with no app op defined!"); + return PermissionChecker.PERMISSION_HARD_DENIED; + } + + AttributionSource current = attributionSource; + AttributionSource next = null; + + while (true) { + final boolean skipCurrentChecks = (fromDatasource || next != null); + + next = current.getNext(); + + // If the call is from a datasource we need to vet only the chain before it. This + // way we can avoid the datasource creating an attribution context for every call. + if (!(fromDatasource && current == attributionSource) + && next != null && !current.isTrusted(context)) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + + // The access is for oneself if this is the single receiver of data + // after the data source or if this is the single attribution source + // in the chain if not from a datasource. + final boolean singleReceiverFromDatasource = (fromDatasource + && current == attributionSource && next != null && next.getNext() == null); + final boolean selfAccess = singleReceiverFromDatasource || next == null; + + final int opMode = performOpTransaction(context, op, current, message, + forDataDelivery, /*startDataDelivery*/ false, skipCurrentChecks, + selfAccess, singleReceiverFromDatasource); + + switch (opMode) { + case AppOpsManager.MODE_IGNORED: + case AppOpsManager.MODE_ERRORED: { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + case AppOpsManager.MODE_DEFAULT: { + if (!skipCurrentChecks && !checkPermission(context, permission, + attributionSource.getUid(), attributionSource + .getRenouncedPermissions())) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + if (next != null && !checkPermission(context, permission, + next.getUid(), next.getRenouncedPermissions())) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + } + } + + if (next == null || next.getNext() == null) { + return PermissionChecker.PERMISSION_GRANTED; + } + + current = next; + } + } + + private static int checkRuntimePermission(@NonNull Context context, + @NonNull String permission, @NonNull AttributionSource attributionSource, + @Nullable String message, boolean forDataDelivery, boolean startDataDelivery, + boolean fromDatasource) { + // Now let's check the identity chain... + final int op = AppOpsManager.permissionToOpCode(permission); + + AttributionSource current = attributionSource; + AttributionSource next = null; + + while (true) { + final boolean skipCurrentChecks = (fromDatasource || next != null); + next = current.getNext(); + + // If the call is from a datasource we need to vet only the chain before it. This + // way we can avoid the datasource creating an attribution context for every call. + if (!(fromDatasource && current == attributionSource) + && next != null && !current.isTrusted(context)) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + + // If we already checked the permission for this one, skip the work + if (!skipCurrentChecks && !checkPermission(context, permission, + current.getUid(), current.getRenouncedPermissions())) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + + if (next != null && !checkPermission(context, permission, + next.getUid(), next.getRenouncedPermissions())) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + + if (op < 0) { + // Bg location is one-off runtime modifier permission and has no app op + if (sPlatformPermissions.contains(permission) + && !Manifest.permission.ACCESS_BACKGROUND_LOCATION.equals(permission)) { + Slog.wtf(LOG_TAG, "Platform runtime permission " + permission + + " with no app op defined!"); + } + if (next == null) { + return PermissionChecker.PERMISSION_GRANTED; + } + current = next; + continue; + } + + // The access is for oneself if this is the single receiver of data + // after the data source or if this is the single attribution source + // in the chain if not from a datasource. + final boolean singleReceiverFromDatasource = (fromDatasource + && current == attributionSource && next != null && next.getNext() == null); + final boolean selfAccess = singleReceiverFromDatasource || next == null; + + final int opMode = performOpTransaction(context, op, current, message, + forDataDelivery, startDataDelivery, skipCurrentChecks, selfAccess, + singleReceiverFromDatasource); + + switch (opMode) { + case AppOpsManager.MODE_ERRORED: { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + case AppOpsManager.MODE_IGNORED: { + return PermissionChecker.PERMISSION_SOFT_DENIED; + } + } + + if (next == null || next.getNext() == null) { + return PermissionChecker.PERMISSION_GRANTED; + } + + current = next; + } + } + + private static boolean checkPermission(@NonNull Context context, @NonNull String permission, + int uid, @NonNull Set<String> renouncedPermissions) { + final boolean permissionGranted = context.checkPermission(permission, /*pid*/ -1, + uid) == PackageManager.PERMISSION_GRANTED; + if (permissionGranted && renouncedPermissions.contains(permission) + && context.checkPermission(Manifest.permission.RENOUNCE_PERMISSIONS, + /*pid*/ -1, uid) == PackageManager.PERMISSION_GRANTED) { + return false; + } + return permissionGranted; + } + + private static int checkOp(@NonNull Context context, @NonNull int op, + @NonNull AttributionSource attributionSource, @Nullable String message, + boolean forDataDelivery, boolean startDataDelivery) { + if (op < 0 || attributionSource.getPackageName() == null) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + + AttributionSource current = attributionSource; + AttributionSource next = null; + + while (true) { + final boolean skipCurrentChecks = (next != null); + next = current.getNext(); + + // If the call is from a datasource we need to vet only the chain before it. This + // way we can avoid the datasource creating an attribution context for every call. + if (next != null && !current.isTrusted(context)) { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + + // The access is for oneself if this is the single attribution source in the chain. + final boolean selfAccess = (next == null); + + final int opMode = performOpTransaction(context, op, current, message, + forDataDelivery, startDataDelivery, skipCurrentChecks, selfAccess, + /*fromDatasource*/ false); + + switch (opMode) { + case AppOpsManager.MODE_ERRORED: { + return PermissionChecker.PERMISSION_HARD_DENIED; + } + case AppOpsManager.MODE_IGNORED: { + return PermissionChecker.PERMISSION_SOFT_DENIED; + } + } + + if (next == null || next.getNext() == null) { + return PermissionChecker.PERMISSION_GRANTED; + } + + current = next; + } + } + + private static int performOpTransaction(@NonNull Context context, int op, + @NonNull AttributionSource attributionSource, @Nullable String message, + boolean forDataDelivery, boolean startDataDelivery, boolean skipProxyOperation, + boolean selfAccess, boolean singleReceiverFromDatasource) { + // We cannot perform app ops transactions without a package name. In all relevant + // places we pass the package name but just in case there is a bug somewhere we + // do a best effort to resolve the package from the UID (pick first without a loss + // of generality - they are in the same security sandbox). + final AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class); + final AttributionSource accessorSource = (!singleReceiverFromDatasource) + ? attributionSource : attributionSource.getNext(); + if (!forDataDelivery) { + final String resolvedAccessorPackageName = resolvePackageName(context, + accessorSource); + if (resolvedAccessorPackageName == null) { + return AppOpsManager.MODE_ERRORED; + } + final int opMode = appOpsManager.unsafeCheckOpRawNoThrow(op, + accessorSource.getUid(), resolvedAccessorPackageName); + final AttributionSource next = accessorSource.getNext(); + if (!selfAccess && opMode == AppOpsManager.MODE_ALLOWED && next != null) { + final String resolvedNextPackageName = resolvePackageName(context, next); + if (resolvedNextPackageName == null) { + return AppOpsManager.MODE_ERRORED; + } + return appOpsManager.unsafeCheckOpRawNoThrow(op, next.getUid(), + resolvedNextPackageName); + } + return opMode; + } else if (startDataDelivery) { + final AttributionSource resolvedAttributionSource = resolveAttributionSource( + context, accessorSource); + if (resolvedAttributionSource.getPackageName() == null) { + return AppOpsManager.MODE_ERRORED; + } + if (selfAccess) { + // If the datasource is not in a trusted platform component then in would not + // have UPDATE_APP_OPS_STATS and the call below would fail. The problem is that + // an app is exposing runtime permission protected data but cannot blame others + // in a trusted way which would not properly show in permission usage UIs. + // As a fallback we note a proxy op that blames the app and the datasource. + try { + return appOpsManager.startOpNoThrow(op, resolvedAttributionSource.getUid(), + resolvedAttributionSource.getPackageName(), + /*startIfModeDefault*/ false, + resolvedAttributionSource.getAttributionTag(), + message); + } catch (SecurityException e) { + Slog.w(LOG_TAG, "Datasource " + attributionSource + " protecting data with" + + " platform defined runtime permission " + + AppOpsManager.opToPermission(op) + " while not having " + + Manifest.permission.UPDATE_APP_OPS_STATS); + return appOpsManager.startProxyOpNoThrow(op, attributionSource, message, + skipProxyOperation); + } + } else { + return appOpsManager.startProxyOpNoThrow(op, resolvedAttributionSource, message, + skipProxyOperation); + } + } else { + final AttributionSource resolvedAttributionSource = resolveAttributionSource( + context, accessorSource); + if (resolvedAttributionSource.getPackageName() == null) { + return AppOpsManager.MODE_ERRORED; + } + if (selfAccess) { + // If the datasource is not in a trusted platform component then in would not + // have UPDATE_APP_OPS_STATS and the call below would fail. The problem is that + // an app is exposing runtime permission protected data but cannot blame others + // in a trusted way which would not properly show in permission usage UIs. + // As a fallback we note a proxy op that blames the app and the datasource. + try { + return appOpsManager.noteOpNoThrow(op, resolvedAttributionSource.getUid(), + resolvedAttributionSource.getPackageName(), + resolvedAttributionSource.getAttributionTag(), + message); + } catch (SecurityException e) { + Slog.w(LOG_TAG, "Datasource " + attributionSource + " protecting data with" + + " platform defined runtime permission " + + AppOpsManager.opToPermission(op) + " while not having " + + Manifest.permission.UPDATE_APP_OPS_STATS); + return appOpsManager.noteProxyOpNoThrow(op, attributionSource, message, + skipProxyOperation); + } + } else { + return appOpsManager.noteProxyOpNoThrow(op, resolvedAttributionSource, message, + skipProxyOperation); + } + } + } + + private static @Nullable String resolvePackageName(@NonNull Context context, + @NonNull AttributionSource attributionSource) { + if (attributionSource.getPackageName() != null) { + return attributionSource.getPackageName(); + } + final String[] packageNames = context.getPackageManager().getPackagesForUid( + attributionSource.getUid()); + if (packageNames != null) { + // This is best effort if the caller doesn't pass a package. The security + // sandbox is UID, therefore we pick an arbitrary package. + return packageNames[0]; + } + // Last resort to handle special UIDs like root, etc. + return AppOpsManager.resolvePackageName(attributionSource.getUid(), + attributionSource.getPackageName()); + } + + private static @NonNull AttributionSource resolveAttributionSource( + @NonNull Context context, @NonNull AttributionSource attributionSource) { + if (attributionSource.getPackageName() != null) { + return attributionSource; + } + return attributionSource.withPackageName(resolvePackageName(context, + attributionSource)); + } + } } diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 27f5350661f0..b56736ee9ab7 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -379,6 +379,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { private DisplayFoldController mDisplayFoldController; AppOpsManager mAppOpsManager; PackageManager mPackageManager; + SideFpsEventHandler mSideFpsEventHandler; private boolean mHasFeatureAuto; private boolean mHasFeatureWatch; private boolean mHasFeatureLeanback; @@ -928,6 +929,11 @@ public class PhoneWindowManager implements WindowManagerPolicy { } else if (count == 3) { powerMultiPressAction(eventTime, interactive, mTriplePressOnPowerBehavior); } else if (interactive && !beganFromNonInteractive) { + if (mSideFpsEventHandler.onSinglePressDetected(eventTime)) { + Slog.i(TAG, "Suppressing power key because the user is interacting with the " + + "fingerprint sensor"); + return; + } switch (mShortPressOnPowerBehavior) { case SHORT_PRESS_POWER_NOTHING: break; @@ -1803,6 +1809,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { }); initKeyCombinationRules(); initSingleKeyGestureRules(); + mSideFpsEventHandler = new SideFpsEventHandler(mContext, mHandler, mPowerManager); } private void initKeyCombinationRules() { @@ -4494,7 +4501,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { @Override public boolean okToAnimate(boolean ignoreScreenOn) { - return (ignoreScreenOn || mDefaultDisplayPolicy.isAwake()) && !mDeviceGoingToSleep; + return (ignoreScreenOn || isScreenOn()) && !mDeviceGoingToSleep; } /** {@inheritDoc} */ @@ -4668,6 +4675,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { mKeyguardDelegate.onBootCompleted(); } } + mSideFpsEventHandler.onFingerprintSensorReady(); startedWakingUp(PowerManager.WAKE_REASON_UNKNOWN); finishedWakingUp(PowerManager.WAKE_REASON_UNKNOWN); diff --git a/services/core/java/com/android/server/policy/SideFpsEventHandler.java b/services/core/java/com/android/server/policy/SideFpsEventHandler.java new file mode 100644 index 000000000000..7c0005cf9e80 --- /dev/null +++ b/services/core/java/com/android/server/policy/SideFpsEventHandler.java @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.policy; + +import static android.hardware.fingerprint.FingerprintStateListener.STATE_ENROLLING; +import static android.hardware.fingerprint.FingerprintStateListener.STATE_IDLE; + +import android.annotation.NonNull; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.pm.PackageManager; +import android.hardware.fingerprint.FingerprintManager; +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal; +import android.hardware.fingerprint.FingerprintStateListener; +import android.hardware.fingerprint.IFingerprintAuthenticatorsRegisteredCallback; +import android.os.Handler; +import android.os.PowerManager; +import android.view.WindowManager; + +import com.android.internal.R; + +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; + +/** + * Defines behavior for handling interactions between power button events and + * fingerprint-related operations, for devices where the fingerprint sensor (side fps) + * lives on the power button. + */ +public class SideFpsEventHandler { + @NonNull private final Context mContext; + @NonNull private final Handler mHandler; + @NonNull private final PowerManager mPowerManager; + @NonNull private final AtomicBoolean mIsSideFps; + @NonNull private final AtomicBoolean mSideFpsEventHandlerReady; + + private @FingerprintStateListener.State int mFingerprintState; + + SideFpsEventHandler(Context context, Handler handler, PowerManager powerManager) { + mContext = context; + mHandler = handler; + mPowerManager = powerManager; + mFingerprintState = STATE_IDLE; + mIsSideFps = new AtomicBoolean(false); + mSideFpsEventHandlerReady = new AtomicBoolean(false); + } + + /** + * Called from {@link PhoneWindowManager} after power button is pressed. Checks fingerprint + * sensor state and if mFingerprintState = STATE_ENROLLING, displays a dialog confirming intent + * to turn screen off. If confirmed, the device goes to sleep, and if canceled, the dialog is + * dismissed. + * @param eventTime powerPress event time + * @return true if powerPress was consumed, false otherwise + */ + public boolean onSinglePressDetected(long eventTime) { + if (!mSideFpsEventHandlerReady.get() || !mIsSideFps.get() + || mFingerprintState != STATE_ENROLLING) { + return false; + } + mHandler.post(() -> { + Dialog confirmScreenOffDialog = new AlertDialog.Builder(mContext) + .setTitle(R.string.fp_enrollment_powerbutton_intent_title) + .setMessage(R.string.fp_enrollment_powerbutton_intent_message) + .setPositiveButton( + R.string.fp_enrollment_powerbutton_intent_positive_button, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + mPowerManager.goToSleep( + eventTime, + PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON, + 0 /* flags */ + ); + } + }) + .setNegativeButton( + R.string.fp_enrollment_powerbutton_intent_negative_button, + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }) + .setCancelable(false) + .create(); + confirmScreenOffDialog.getWindow().setType( + WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL); + confirmScreenOffDialog.show(); + }); + return true; + } + + /** + * Awaits notification from PhoneWindowManager that fingerprint service is ready + * to send updates about power button fps sensor state. Then configures a + * FingerprintStateListener to receive and record updates to fps state, and + * registers the FingerprintStateListener in FingerprintManager. + */ + public void onFingerprintSensorReady() { + final PackageManager pm = mContext.getPackageManager(); + if (!pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) return; + FingerprintManager fingerprintManager = + mContext.getSystemService(FingerprintManager.class); + fingerprintManager.addAuthenticatorsRegisteredCallback( + new IFingerprintAuthenticatorsRegisteredCallback.Stub() { + @Override + public void onAllAuthenticatorsRegistered( + List<FingerprintSensorPropertiesInternal> sensors) { + mIsSideFps.set(fingerprintManager.isPowerbuttonFps()); + FingerprintStateListener fingerprintStateListener = + new FingerprintStateListener() { + @Override + public void onStateChanged( + @FingerprintStateListener.State int newState) { + mFingerprintState = newState; + } + }; + fingerprintManager.registerFingerprintStateListener( + fingerprintStateListener); + mSideFpsEventHandlerReady.set(true); + } + }); + } +} diff --git a/services/core/java/com/android/server/power/batterysaver/BatterySaverPolicy.java b/services/core/java/com/android/server/power/batterysaver/BatterySaverPolicy.java index 03584b981351..68e7bdb42d63 100644 --- a/services/core/java/com/android/server/power/batterysaver/BatterySaverPolicy.java +++ b/services/core/java/com/android/server/power/batterysaver/BatterySaverPolicy.java @@ -256,7 +256,7 @@ public class BatterySaverPolicy extends ContentObserver implements private final ContentResolver mContentResolver; private final BatterySavingStats mBatterySavingStats; - private final UiModeManager.OnProjectionStateChangeListener mOnProjectionStateChangeListener = + private final UiModeManager.OnProjectionStateChangedListener mOnProjectionStateChangedListener = (t, pkgs) -> mAutomotiveProjectionActive.update(!pkgs.isEmpty()); @GuardedBy("mLock") @@ -292,8 +292,8 @@ public class BatterySaverPolicy extends ContentObserver implements mAccessibilityEnabled.initialize(acm.isEnabled()); UiModeManager uiModeManager = mContext.getSystemService(UiModeManager.class); - uiModeManager.addOnProjectionStateChangeListener(UiModeManager.PROJECTION_TYPE_AUTOMOTIVE, - mContext.getMainExecutor(), mOnProjectionStateChangeListener); + uiModeManager.addOnProjectionStateChangedListener(UiModeManager.PROJECTION_TYPE_AUTOMOTIVE, + mContext.getMainExecutor(), mOnProjectionStateChangedListener); mAutomotiveProjectionActive.initialize( uiModeManager.getActiveProjectionTypes() != UiModeManager.PROJECTION_TYPE_NONE); diff --git a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java index 24337f3ad346..12e55e5f1805 100644 --- a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java +++ b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java @@ -24,10 +24,13 @@ import static android.os.RecoverySystem.RESUME_ON_REBOOT_REBOOT_ERROR_SLOT_MISMA import static android.os.RecoverySystem.RESUME_ON_REBOOT_REBOOT_ERROR_UNSPECIFIED; import static android.os.RecoverySystem.ResumeOnRebootRebootErrorCode; import static android.os.UserHandle.USER_SYSTEM; +import static android.ota.nano.OtaPackageMetadata.ApexMetadata; import static com.android.internal.widget.LockSettingsInternal.ARM_REBOOT_ERROR_NONE; import android.annotation.IntDef; +import android.apex.CompressedApexInfo; +import android.apex.CompressedApexInfoList; import android.content.Context; import android.content.IntentSender; import android.content.SharedPreferences; @@ -47,9 +50,11 @@ import android.os.ResultReceiver; import android.os.ShellCallback; import android.os.SystemProperties; import android.provider.DeviceConfig; +import android.sysprop.ApexProperties; import android.util.ArrayMap; import android.util.ArraySet; import android.util.FastImmutableArraySet; +import android.util.Log; import android.util.Slog; import com.android.internal.annotations.GuardedBy; @@ -59,6 +64,7 @@ import com.android.internal.widget.LockSettingsInternal; import com.android.internal.widget.RebootEscrowListener; import com.android.server.LocalServices; import com.android.server.SystemService; +import com.android.server.pm.ApexManager; import libcore.io.IoUtils; @@ -68,9 +74,13 @@ import java.io.File; import java.io.FileDescriptor; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; /** * The recovery system service is responsible for coordinating recovery related @@ -871,6 +881,76 @@ public class RecoverySystemService extends IRecoverySystem.Stub implements Reboo return rebootWithLskfImpl(packageName, reason, slotSwitch); } + public static boolean isUpdatableApexSupported() { + return ApexProperties.updatable().orElse(false); + } + + // Metadata should be no more than few MB, if it's larger than 100MB something is wrong. + private static final long APEX_INFO_SIZE_LIMIT = 24 * 1024 * 100; + + private static CompressedApexInfoList getCompressedApexInfoList(String packageFile) + throws IOException { + try (ZipFile zipFile = new ZipFile(packageFile)) { + final ZipEntry entry = zipFile.getEntry("apex_info.pb"); + if (entry == null) { + return null; + } + if (entry.getSize() >= APEX_INFO_SIZE_LIMIT) { + throw new IllegalArgumentException("apex_info.pb has size " + + entry.getSize() + + " which is larger than the permitted limit" + APEX_INFO_SIZE_LIMIT); + } + if (entry.getSize() == 0) { + CompressedApexInfoList infoList = new CompressedApexInfoList(); + infoList.apexInfos = new CompressedApexInfo[0]; + return infoList; + } + Log.i(TAG, "Allocating " + entry.getSize() + + " bytes of memory to store OTA Metadata"); + byte[] data = new byte[(int) entry.getSize()]; + + try (InputStream is = zipFile.getInputStream(entry)) { + int bytesRead = is.read(data); + String msg = "Read " + bytesRead + " when expecting " + data.length; + Log.e(TAG, msg); + if (bytesRead != data.length) { + throw new IOException(msg); + } + } + ApexMetadata metadata = ApexMetadata.parseFrom(data); + CompressedApexInfoList apexInfoList = new CompressedApexInfoList(); + apexInfoList.apexInfos = + Arrays.stream(metadata.apexInfo).filter(apex -> apex.isCompressed).map(apex -> { + CompressedApexInfo info = new CompressedApexInfo(); + info.moduleName = apex.packageName; + info.decompressedSize = apex.decompressedSize; + info.versionCode = apex.version; + return info; + }).toArray(CompressedApexInfo[]::new); + return apexInfoList; + } + } + + @Override + public boolean allocateSpaceForUpdate(String packageFile) { + if (!isUpdatableApexSupported()) { + Log.i(TAG, "Updatable Apex not supported, " + + "allocateSpaceForUpdate does nothing."); + return true; + } + try { + CompressedApexInfoList apexInfoList = getCompressedApexInfoList(packageFile); + ApexManager apexManager = ApexManager.getInstance(); + apexManager.reserveSpaceForCompressedApex(apexInfoList); + return true; + } catch (RemoteException e) { + e.rethrowAsRuntimeException(); + } catch (IOException | UnsupportedOperationException e) { + Slog.e(TAG, "Failed to reserve space for compressed apex: ", e); + } + return false; + } + @Override // Binder call public boolean isLskfCaptured(String packageName) { enforcePermissionForResumeOnReboot(); diff --git a/services/core/java/com/android/server/sensors/SensorService.java b/services/core/java/com/android/server/sensors/SensorService.java new file mode 100644 index 000000000000..f7ed8e7138fa --- /dev/null +++ b/services/core/java/com/android/server/sensors/SensorService.java @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.sensors; + +import android.content.Context; + +import com.android.internal.annotations.GuardedBy; +import com.android.internal.util.ConcurrentUtils; +import com.android.server.SystemServerInitThreadPool; +import com.android.server.SystemService; +import com.android.server.utils.TimingsTraceAndSlog; + +import java.util.concurrent.Future; + +public class SensorService extends SystemService { + private static final String START_NATIVE_SENSOR_SERVICE = "StartNativeSensorService"; + private final Object mLock = new Object(); + @GuardedBy("mLock") + private Future<?> mSensorServiceStart; + + + /** Start the sensor service. This is a blocking call and can take time. */ + private static native void startNativeSensorService(); + + public SensorService(Context ctx) { + super(ctx); + synchronized (mLock) { + mSensorServiceStart = SystemServerInitThreadPool.submit(() -> { + TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog(); + traceLog.traceBegin(START_NATIVE_SENSOR_SERVICE); + startNativeSensorService(); + traceLog.traceEnd(); + }, START_NATIVE_SENSOR_SERVICE); + } + } + + @Override + public void onStart() { } + + @Override + public void onBootPhase(int phase) { + if (phase == SystemService.PHASE_WAIT_FOR_SENSOR_SERVICE) { + ConcurrentUtils.waitForFutureNoInterrupt(mSensorServiceStart, + START_NATIVE_SENSOR_SERVICE); + synchronized (mLock) { + mSensorServiceStart = null; + } + } + } +} diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java index 6f0741d20e45..c1f8240f4018 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerMiddlewarePermission.java @@ -133,6 +133,7 @@ public class SoundTriggerMiddlewarePermission implements ISoundTriggerMiddleware * Throws a {@link SecurityException} iff the originator has permission to receive data. */ void enforcePermissionsForDataDelivery(@NonNull Identity identity, @NonNull String reason) { + // TODO(b/186164881): remove // START TEMP HACK enforcePermissionForPreflight(mContext, identity, RECORD_AUDIO); int hotwordOp = AppOpsManager.strOpToOp(AppOpsManager.OPSTR_RECORD_AUDIO_HOTWORD); diff --git a/services/core/java/com/android/server/utils/SnapshotCache.java b/services/core/java/com/android/server/utils/SnapshotCache.java index f0fb8b25b402..b4b8835ac026 100644 --- a/services/core/java/com/android/server/utils/SnapshotCache.java +++ b/services/core/java/com/android/server/utils/SnapshotCache.java @@ -57,6 +57,15 @@ public abstract class SnapshotCache<T> extends Watcher{ } /** + * A private constructor that sets fields to null and mSealed to true. This supports + * the Sealed subclass. + */ + public SnapshotCache() { + mSource = null; + mSealed = true; + } + + /** * Notify the object that the source object has changed. If the local object is sealed then * IllegalStateException is thrown. Otherwise, the cache is cleared. */ @@ -93,4 +102,25 @@ public abstract class SnapshotCache<T> extends Watcher{ * @return A snapshot */ public abstract T createSnapshot(); + + /** + * A snapshot cache suitable for sealed snapshots. Attempting to retrieve the + * snapshot will throw an UnsupportedOperationException. + * @param <T> the type of object being cached. This is needed for compilation only. It + * has no effect on execution. + */ + public static class Sealed<T> extends SnapshotCache<T> { + /** + * Create a sealed SnapshotCache that cannot be used to create new snapshots. + */ + public Sealed() { + } + /** + * Provide a concrete implementation of createSnapshot() that throws + * UnsupportedOperationException. + */ + public T createSnapshot() { + throw new UnsupportedOperationException("cannot snapshot a sealed snaphot"); + } + } } diff --git a/services/core/java/com/android/server/vcn/Vcn.java b/services/core/java/com/android/server/vcn/Vcn.java index e1747f71d5a9..edb042fd344e 100644 --- a/services/core/java/com/android/server/vcn/Vcn.java +++ b/services/core/java/com/android/server/vcn/Vcn.java @@ -311,7 +311,9 @@ public class Vcn extends Handler { private void handleConfigUpdated(@NonNull VcnConfig config) { // TODO: Add a dump function in VcnConfig that omits PII. Until then, use hashCode() - Slog.v(getLogTag(), "Config updated: config = " + config.hashCode()); + Slog.d( + getLogTag(), + "Config updated: old = " + mConfig.hashCode() + "; new = " + config.hashCode()); mConfig = config; @@ -340,6 +342,7 @@ public class Vcn extends Handler { } private void handleTeardown() { + Slog.d(getLogTag(), "Tearing down"); mVcnContext.getVcnNetworkProvider().unregisterListener(mRequestListener); for (VcnGatewayConnection gatewayConnection : mVcnGatewayConnections.values()) { @@ -350,6 +353,7 @@ public class Vcn extends Handler { } private void handleSafeModeStatusChanged() { + Slog.d(getLogTag(), "VcnGatewayConnection safe mode status changed"); boolean hasSafeModeGatewayConnection = false; // If any VcnGatewayConnection is in safe mode, mark the entire VCN as being in safe mode @@ -365,21 +369,24 @@ public class Vcn extends Handler { hasSafeModeGatewayConnection ? VCN_STATUS_CODE_SAFE_MODE : VCN_STATUS_CODE_ACTIVE; if (oldStatus != mCurrentStatus) { mVcnCallback.onSafeModeStatusChanged(hasSafeModeGatewayConnection); + Slog.d( + getLogTag(), + "Safe mode " + + (mCurrentStatus == VCN_STATUS_CODE_SAFE_MODE ? "entered" : "exited")); } } private void handleNetworkRequested(@NonNull NetworkRequest request) { - Slog.v(getLogTag(), "Received request " + request); + if (VDBG) { + Slog.v(getLogTag(), "Received request " + request); + } // If preexisting VcnGatewayConnection(s) satisfy request, return for (VcnGatewayConnectionConfig gatewayConnectionConfig : mVcnGatewayConnections.keySet()) { if (isRequestSatisfiedByGatewayConnectionConfig(request, gatewayConnectionConfig)) { - if (VDBG) { - Slog.v( - getLogTag(), - "Request already satisfied by existing VcnGatewayConnection: " - + request); - } + Slog.d( + getLogTag(), + "Request already satisfied by existing VcnGatewayConnection: " + request); return; } } @@ -389,7 +396,7 @@ public class Vcn extends Handler { for (VcnGatewayConnectionConfig gatewayConnectionConfig : mConfig.getGatewayConnectionConfigs()) { if (isRequestSatisfiedByGatewayConnectionConfig(request, gatewayConnectionConfig)) { - Slog.v(getLogTag(), "Bringing up new VcnGatewayConnection for request " + request); + Slog.d(getLogTag(), "Bringing up new VcnGatewayConnection for request " + request); if (getExposedCapabilitiesForMobileDataState(gatewayConnectionConfig).isEmpty()) { // Skip; this network does not provide any services if mobile data is disabled. @@ -414,8 +421,14 @@ public class Vcn extends Handler { new VcnGatewayStatusCallbackImpl(gatewayConnectionConfig), mIsMobileDataEnabled); mVcnGatewayConnections.put(gatewayConnectionConfig, vcnGatewayConnection); + + return; } } + + if (VDBG) { + Slog.v(getLogTag(), "Request could not be fulfilled by VCN: " + request); + } } private Set<Integer> getExposedCapabilitiesForMobileDataState( @@ -432,7 +445,7 @@ public class Vcn extends Handler { } private void handleGatewayConnectionQuit(VcnGatewayConnectionConfig config) { - Slog.v(getLogTag(), "VcnGatewayConnection quit: " + config); + Slog.d(getLogTag(), "VcnGatewayConnection quit: " + config); mVcnGatewayConnections.remove(config); // Trigger a re-evaluation of all NetworkRequests (to make sure any that can be satisfied @@ -479,6 +492,8 @@ public class Vcn extends Handler { // Trigger re-evaluation of all requests; mobile data state impacts supported caps. mVcnContext.getVcnNetworkProvider().resendAllRequests(mRequestListener); + + Slog.d(getLogTag(), "Mobile data " + (mIsMobileDataEnabled ? "enabled" : "disabled")); } } @@ -521,6 +536,7 @@ public class Vcn extends Handler { pw.increaseIndent(); pw.println("mCurrentStatus: " + mCurrentStatus); + pw.println("mIsMobileDataEnabled: " + mIsMobileDataEnabled); pw.println("mVcnGatewayConnections:"); for (VcnGatewayConnection gw : mVcnGatewayConnections.values()) { diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java index 65b947c1fcdd..46fd22810a58 100644 --- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java +++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java @@ -701,6 +701,7 @@ public class VcnGatewayConnection extends StateMachine { * <p>Once torn down, this VcnTunnel CANNOT be started again. */ public void teardownAsynchronously() { + Slog.d(TAG, "Triggering async teardown"); sendDisconnectRequestedAndAcquireWakelock( DISCONNECT_REASON_TEARDOWN, true /* shouldQuit */); @@ -710,6 +711,8 @@ public class VcnGatewayConnection extends StateMachine { @Override protected void onQuitting() { + Slog.d(TAG, "Quitting VcnGatewayConnection"); + // No need to call setInterfaceDown(); the IpSecInterface is being fully torn down. if (mTunnelIface != null) { mTunnelIface.close(); @@ -750,6 +753,11 @@ public class VcnGatewayConnection extends StateMachine { // TODO(b/180132994): explore safely removing this Thread check mVcnContext.ensureRunningOnLooperThread(); + Slog.d( + TAG, + "Selected underlying network changed: " + + (underlying == null ? null : underlying.network)); + // TODO(b/179091925): Move the delayed-message handling to BaseState // If underlying is null, all underlying networks have been lost. Disconnect VCN after a @@ -774,6 +782,10 @@ public class VcnGatewayConnection extends StateMachine { if (!mIsQuitting) { mWakeLock.acquire(); + + if (VDBG) { + Slog.v(TAG, "Wakelock acquired: " + mWakeLock); + } } } @@ -781,6 +793,10 @@ public class VcnGatewayConnection extends StateMachine { mVcnContext.ensureRunningOnLooperThread(); mWakeLock.release(); + + if (VDBG) { + Slog.v(TAG, "Wakelock released: " + mWakeLock); + } } /** @@ -935,10 +951,17 @@ public class VcnGatewayConnection extends StateMachine { } private void setTeardownTimeoutAlarm() { + if (VDBG) { + Slog.v(TAG, "Setting teardown timeout alarm; mCurrentToken: " + mCurrentToken); + } + // Safe to assign this alarm because it is either 1) already null, or 2) already fired. In // either case, there is nothing to cancel. if (mTeardownTimeoutAlarm != null) { - Slog.wtf(TAG, "mTeardownTimeoutAlarm should be null before being set"); + Slog.wtf( + TAG, + "mTeardownTimeoutAlarm should be null before being set; mCurrentToken: " + + mCurrentToken); } final Message delayedMessage = obtainMessage(EVENT_TEARDOWN_TIMEOUT_EXPIRED, mCurrentToken); @@ -950,6 +973,10 @@ public class VcnGatewayConnection extends StateMachine { } private void cancelTeardownTimeoutAlarm() { + if (VDBG) { + Slog.v(TAG, "Cancelling teardown timeout alarm; mCurrentToken: " + mCurrentToken); + } + if (mTeardownTimeoutAlarm != null) { mTeardownTimeoutAlarm.cancel(); mTeardownTimeoutAlarm = null; @@ -960,6 +987,13 @@ public class VcnGatewayConnection extends StateMachine { } private void setDisconnectRequestAlarm() { + if (VDBG) { + Slog.v( + TAG, + "Setting alarm to disconnect due to underlying network loss; mCurrentToken: " + + mCurrentToken); + } + // Only schedule a NEW alarm if none is already set. if (mDisconnectRequestAlarm != null) { return; @@ -980,6 +1014,13 @@ public class VcnGatewayConnection extends StateMachine { } private void cancelDisconnectRequestAlarm() { + if (VDBG) { + Slog.v( + TAG, + "Cancelling alarm to disconnect due to underlying network loss; mCurrentToken: " + + mCurrentToken); + } + if (mDisconnectRequestAlarm != null) { mDisconnectRequestAlarm.cancel(); mDisconnectRequestAlarm = null; @@ -993,10 +1034,17 @@ public class VcnGatewayConnection extends StateMachine { } private void setRetryTimeoutAlarm(long delay) { + if (VDBG) { + Slog.v(TAG, "Setting retry alarm; mCurrentToken: " + mCurrentToken); + } + // Safe to assign this alarm because it is either 1) already null, or 2) already fired. In // either case, there is nothing to cancel. if (mRetryTimeoutAlarm != null) { - Slog.wtf(TAG, "mRetryTimeoutAlarm should be null before being set"); + Slog.wtf( + TAG, + "mRetryTimeoutAlarm should be null before being set; mCurrentToken: " + + mCurrentToken); } final Message delayedMessage = obtainMessage(EVENT_RETRY_TIMEOUT_EXPIRED, mCurrentToken); @@ -1004,6 +1052,10 @@ public class VcnGatewayConnection extends StateMachine { } private void cancelRetryTimeoutAlarm() { + if (VDBG) { + Slog.v(TAG, "Cancel retry alarm; mCurrentToken: " + mCurrentToken); + } + if (mRetryTimeoutAlarm != null) { mRetryTimeoutAlarm.cancel(); mRetryTimeoutAlarm = null; @@ -1014,6 +1066,10 @@ public class VcnGatewayConnection extends StateMachine { @VisibleForTesting(visibility = Visibility.PRIVATE) void setSafeModeAlarm() { + if (VDBG) { + Slog.v(TAG, "Setting safe mode alarm; mCurrentToken: " + mCurrentToken); + } + // Only schedule a NEW alarm if none is already set. if (mSafeModeTimeoutAlarm != null) { return; @@ -1028,6 +1084,10 @@ public class VcnGatewayConnection extends StateMachine { } private void cancelSafeModeAlarm() { + if (VDBG) { + Slog.v(TAG, "Cancel safe mode alarm; mCurrentToken: " + mCurrentToken); + } + if (mSafeModeTimeoutAlarm != null) { mSafeModeTimeoutAlarm.cancel(); mSafeModeTimeoutAlarm = null; @@ -1092,6 +1152,15 @@ public class VcnGatewayConnection extends StateMachine { + exception.getMessage(); } + Slog.d( + TAG, + "Encountered error; code=" + + errorCode + + ", exceptionClass=" + + exceptionClass + + ", exceptionMessage=" + + exceptionMessage); + mGatewayStatusCallback.onGatewayConnectionError( mConnectionConfig.getGatewayConnectionName(), errorCode, @@ -1234,7 +1303,7 @@ public class VcnGatewayConnection extends StateMachine { protected void handleDisconnectRequested(EventDisconnectRequestedInfo info) { // TODO(b/180526152): notify VcnStatusCallback for Network loss - Slog.v(TAG, "Tearing down. Cause: " + info.reason); + Slog.d(TAG, "Tearing down. Cause: " + info.reason); mIsQuitting = info.shouldQuit; teardownNetwork(); @@ -1250,6 +1319,7 @@ public class VcnGatewayConnection extends StateMachine { protected void handleSafeModeTimeoutExceeded() { mSafeModeTimeoutAlarm = null; + Slog.d(TAG, "Entering safe mode after timeout exceeded"); // Connectivity for this GatewayConnection is broken; tear down the Network. teardownNetwork(); @@ -1722,6 +1792,8 @@ public class VcnGatewayConnection extends StateMachine { } private void handleMigrationCompleted(EventMigrationCompletedInfo migrationCompletedInfo) { + Slog.v(TAG, "Migration completed: " + mUnderlying.network); + applyTransform( mCurrentToken, mTunnelIface, @@ -1744,6 +1816,8 @@ public class VcnGatewayConnection extends StateMachine { mUnderlying = ((EventUnderlyingNetworkChangedInfo) msg.obj).newUnderlying; if (mUnderlying == null) { + Slog.v(TAG, "Underlying network lost"); + // Ignored for now; a new network may be coming up. If none does, the delayed // NETWORK_LOST disconnect will be fired, and tear down the session + network. return; diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index 561f1ad75c12..1ab402d804fc 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -80,6 +80,7 @@ import android.content.pm.dex.ArtManagerInternal; import android.content.pm.dex.PackageOptimizationInfo; import android.metrics.LogMaker; import android.os.Binder; +import android.os.Handler; import android.os.Looper; import android.os.SystemClock; import android.os.Trace; @@ -92,9 +93,9 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.logging.MetricsLogger; -import com.android.internal.os.BackgroundThread; import com.android.internal.util.FrameworkStatsLog; import com.android.internal.util.function.pooled.PooledLambda; +import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.apphibernation.AppHibernationManagerInternal; import com.android.server.apphibernation.AppHibernationService; @@ -150,6 +151,7 @@ class ActivityMetricsLogger { private long mLastLogTimeSecs; private final ActivityTaskSupervisor mSupervisor; private final MetricsLogger mMetricsLogger = new MetricsLogger(); + private final Handler mLoggerHandler = FgThread.getHandler(); /** All active transitions. */ private final ArrayList<TransitionInfo> mTransitionInfoList = new ArrayList<>(); @@ -247,13 +249,14 @@ class ActivityMetricsLogger { @Nullable static TransitionInfo create(@NonNull ActivityRecord r, @NonNull LaunchingState launchingState, @Nullable ActivityOptions options, - boolean processRunning, boolean processSwitch, int startResult) { + boolean processRunning, boolean processSwitch, boolean newActivityCreated, + int startResult) { if (startResult != START_SUCCESS && startResult != START_TASK_TO_FRONT) { return null; } final int transitionType; if (processRunning) { - transitionType = r.attachedToProcess() + transitionType = !newActivityCreated && r.attachedToProcess() ? TYPE_TRANSITION_HOT_LAUNCH : TYPE_TRANSITION_WARM_LAUNCH; } else { @@ -560,10 +563,12 @@ class ActivityMetricsLogger { * @param resultCode One of the {@link android.app.ActivityManager}.START_* flags, indicating * the result of the launch. * @param launchedActivity The activity that is being launched + * @param newActivityCreated Whether a new activity instance is created. * @param options The given options of the launching activity. */ void notifyActivityLaunched(@NonNull LaunchingState launchingState, int resultCode, - @Nullable ActivityRecord launchedActivity, @Nullable ActivityOptions options) { + boolean newActivityCreated, @Nullable ActivityRecord launchedActivity, + @Nullable ActivityOptions options) { if (launchedActivity == null) { // The launch is aborted, e.g. intent not resolved, class not found. abort(null /* info */, "nothing launched"); @@ -587,7 +592,8 @@ class ActivityMetricsLogger { if (DEBUG_METRICS) { Slog.i(TAG, "notifyActivityLaunched" + " resultCode=" + resultCode + " launchedActivity=" + launchedActivity + " processRunning=" + processRunning - + " processSwitch=" + processSwitch + " info=" + info); + + " processSwitch=" + processSwitch + + " newActivityCreated=" + newActivityCreated + " info=" + info); } if (launchedActivity.isReportedDrawn() && launchedActivity.isVisible()) { @@ -608,7 +614,7 @@ class ActivityMetricsLogger { } final TransitionInfo newInfo = TransitionInfo.create(launchedActivity, launchingState, - options, processRunning, processSwitch, resultCode); + options, processRunning, processSwitch, newActivityCreated, resultCode); if (newInfo == null) { abort(info, "unrecognized launch"); return; @@ -893,11 +899,11 @@ class ActivityMetricsLogger { // This will avoid any races with other operations that modify the ActivityRecord. final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info); if (info.isInterestingToLoggerAndObserver()) { - BackgroundThread.getHandler().post(() -> logAppTransition( + mLoggerHandler.post(() -> logAppTransition( info.mCurrentTransitionDeviceUptime, info.mCurrentTransitionDelayMs, infoSnapshot, isHibernating)); } - BackgroundThread.getHandler().post(() -> logAppDisplayed(infoSnapshot)); + mLoggerHandler.post(() -> logAppDisplayed(infoSnapshot)); if (info.mPendingFullyDrawn != null) { info.mPendingFullyDrawn.run(); } @@ -905,7 +911,7 @@ class ActivityMetricsLogger { info.mLastLaunchedActivity.info.launchToken = null; } - // This gets called on a background thread without holding the activity manager lock. + // This gets called on another thread without holding the activity manager lock. private void logAppTransition(int currentTransitionDeviceUptime, int currentTransitionDelayMs, TransitionInfoSnapshot info, boolean isHibernating) { final LogMaker builder = new LogMaker(APP_TRANSITION); @@ -1032,7 +1038,7 @@ class ActivityMetricsLogger { : TimeUnit.NANOSECONDS.toMillis(currentTimestampNs - info.mTransitionStartTimeNs); final TransitionInfoSnapshot infoSnapshot = new TransitionInfoSnapshot(info, r, (int) startupTimeMs); - BackgroundThread.getHandler().post(() -> logAppFullyDrawn(infoSnapshot)); + mLoggerHandler.post(() -> logAppFullyDrawn(infoSnapshot)); mLastTransitionInfo.remove(r); if (!info.isInterestingToLoggerAndObserver()) { diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 08a9f0928b8b..0d3c74ef318b 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -602,30 +602,6 @@ class ActivityStarter { } /** - * Starts an activity based on the provided {@link ActivityRecord} and environment parameters. - * Note that this method is called internally as well as part of {@link #executeRequest}. - */ - void startResolvedActivity(final ActivityRecord r, ActivityRecord sourceRecord, - IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, - int startFlags, boolean doResume, ActivityOptions options, Task inTask, - NeededUriGrants intentGrants) { - try { - final LaunchingState launchingState = mSupervisor.getActivityMetricsLogger() - .notifyActivityLaunching(r.intent, r.resultTo); - mLastStartReason = "startResolvedActivity"; - mLastStartActivityTimeMs = System.currentTimeMillis(); - mLastStartActivityRecord = r; - mLastStartActivityResult = startActivityUnchecked(r, sourceRecord, voiceSession, - voiceInteractor, startFlags, doResume, options, inTask, - false /* restrictedBgActivity */, intentGrants); - mSupervisor.getActivityMetricsLogger().notifyActivityLaunched(launchingState, - mLastStartActivityResult, mLastStartActivityRecord, options); - } finally { - onExecutionComplete(); - } - } - - /** * Resolve necessary information according the request parameters provided earlier, and execute * the request which begin the journey of starting an activity. * @return The starter result. @@ -707,11 +683,13 @@ class ActivityStarter { // used here because it may be cleared in setTargetRootTaskIfNeeded. final ActivityOptions originalOptions = mRequest.activityOptions != null ? mRequest.activityOptions.getOriginalOptions() : null; + // If the new record is the one that started, a new activity has created. + final boolean newActivityCreated = mStartActivity == mLastStartActivityRecord; // Notify ActivityMetricsLogger that the activity has launched. // ActivityMetricsLogger will then wait for the windows to be drawn and populate // WaitResult. mSupervisor.getActivityMetricsLogger().notifyActivityLaunched(launchingState, res, - mLastStartActivityRecord, originalOptions); + newActivityCreated, mLastStartActivityRecord, originalOptions); if (mRequest.waitResult != null) { mRequest.waitResult.result = res; res = waitResultIfNeeded(mRequest.waitResult, mLastStartActivityRecord, diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java index df1fec9ad0da..8583061a3986 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java @@ -2542,7 +2542,8 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { targetActivity.applyOptionsAnimation(); } finally { mActivityMetricsLogger.notifyActivityLaunched(launchingState, - START_TASK_TO_FRONT, targetActivity, activityOptions); + START_TASK_TO_FRONT, false /* newActivityCreated */, targetActivity, + activityOptions); } mService.getActivityStartController().postStartActivityProcessingForLastStarter( diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 203214d536dd..30f69dd79f5e 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -2861,6 +2861,10 @@ public class DisplayPolicy { mImmersiveModeConfirmation.onLockTaskModeChangedLw(lockTaskState); } + boolean onSystemUiSettingsChanged() { + return mImmersiveModeConfirmation.onSettingChanged(mService.mCurrentUserId); + } + /** * Request a screenshot be taken. * diff --git a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java index b94bc5b2c61d..747d3652e150 100644 --- a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java +++ b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java @@ -148,6 +148,15 @@ public class ImmersiveModeConfirmation { } } + boolean onSettingChanged(int currentUserId) { + final boolean changed = loadSetting(currentUserId, mContext); + // Remove the window if the setting changes to be confirmed. + if (changed && sConfirmed) { + mHandler.sendEmptyMessage(H.HIDE); + } + return changed; + } + void immersiveModeChangedLw(int rootDisplayAreaId, boolean isImmersiveMode, boolean userSetupComplete, boolean navBarEmpty) { mHandler.removeMessages(H.SHOW); diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java index 869133ae948c..a10b5d6e8177 100644 --- a/services/core/java/com/android/server/wm/RecentsAnimation.java +++ b/services/core/java/com/android/server/wm/RecentsAnimation.java @@ -255,7 +255,7 @@ class RecentsAnimation implements RecentsAnimationCallbacks, OnRootTaskOrderChan options.setSourceInfo(ActivityOptions.SourceInfo.TYPE_RECENTS_ANIMATION, eventTime); } mTaskSupervisor.getActivityMetricsLogger().notifyActivityLaunched(launchingState, - START_TASK_TO_FRONT, targetActivity, options); + START_TASK_TO_FRONT, !hasExistingActivity, targetActivity, options); // Register for root task order changes mDefaultTaskDisplayArea.registerRootTaskOrderChangedListener(this); diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java index dc079880d2aa..ab7e65cc64e8 100644 --- a/services/core/java/com/android/server/wm/RootWindowContainer.java +++ b/services/core/java/com/android/server/wm/RootWindowContainer.java @@ -23,7 +23,6 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; @@ -2933,17 +2932,6 @@ class RootWindowContainer extends WindowContainer<DisplayContent> || rootTask.mCreatedByOrganizer) { return rootTask; } - if (windowingMode == WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY - && container.getRootSplitScreenPrimaryTask() == rootTask - && candidateTask == rootTask.getTopMostTask()) { - // This is a special case when we try to launch an activity that is currently on - // top of root split-screen primary task, but is targeting split-screen - // secondary. - // In this case we don't want to move it to another root task. - // TODO(b/78788972): Remove after differentiating between preferred and required - // launch options. - return rootTask; - } } } diff --git a/services/core/java/com/android/server/wm/SurfaceAnimator.java b/services/core/java/com/android/server/wm/SurfaceAnimator.java index 6e0efbf8bd51..ba188937cfea 100644 --- a/services/core/java/com/android/server/wm/SurfaceAnimator.java +++ b/services/core/java/com/android/server/wm/SurfaceAnimator.java @@ -488,6 +488,12 @@ class SurfaceAnimator { public static final int ANIMATION_TYPE_FIXED_TRANSFORM = 1 << 6; /** + * Animation when a reveal starting window animation is applied to app window. + * @hide + */ + public static final int ANIMATION_TYPE_STARTING_REVEAL = 1 << 7; + + /** * Bitmask to include all animation types. This is NOT an {@link AnimationType} * @hide */ @@ -505,7 +511,8 @@ class SurfaceAnimator { ANIMATION_TYPE_RECENTS, ANIMATION_TYPE_WINDOW_ANIMATION, ANIMATION_TYPE_INSETS_CONTROL, - ANIMATION_TYPE_FIXED_TRANSFORM + ANIMATION_TYPE_FIXED_TRANSFORM, + ANIMATION_TYPE_STARTING_REVEAL }) @Retention(RetentionPolicy.SOURCE) @interface AnimationType {} @@ -523,6 +530,7 @@ class SurfaceAnimator { case ANIMATION_TYPE_WINDOW_ANIMATION: return "window_animation"; case ANIMATION_TYPE_INSETS_CONTROL: return "insets_animation"; case ANIMATION_TYPE_FIXED_TRANSFORM: return "fixed_rotation"; + case ANIMATION_TYPE_STARTING_REVEAL: return "starting_reveal"; default: return "unknown type:" + type; } } diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 2c592d00f90c..e5e1a7a245d6 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -4309,21 +4309,11 @@ class Task extends WindowContainer<WindowContainer> { // the screen are opaque. return TASK_VISIBILITY_INVISIBLE; } - if (gotRootSplitScreenTask) { - if (isAssistantType) { - // Assistant stack can't be visible behind split-screen. In addition to this not - // making sense, it also works around an issue here we boost the z-order of the - // assistant window surfaces in window manager whenever it is visible. - return TASK_VISIBILITY_INVISIBLE; - } - if (other.isHomeOrRecentsRootTask()) { - // While in split mode, home task will be reparented to the secondary split and - // leaving tasks not supporting split below. Due to - // TaskDisplayArea#assignRootTaskOrdering always adjusts home surface layer to - // the bottom, this makes sure those tasks below home is invisible and won't - // occlude home task unexpectedly. - return TASK_VISIBILITY_INVISIBLE; - } + if (isAssistantType && gotRootSplitScreenTask) { + // Assistant stack can't be visible behind split-screen. In addition to this not + // making sense, it also works around an issue here we boost the z-order of the + // assistant window surfaces in window manager whenever it is visible. + return TASK_VISIBILITY_INVISIBLE; } if (other.mAdjacentTask != null) { if (adjacentTasks.contains(other.mAdjacentTask)) { diff --git a/services/core/java/com/android/server/wm/TaskOrganizerController.java b/services/core/java/com/android/server/wm/TaskOrganizerController.java index ccc0916cf25b..fb481b41c0af 100644 --- a/services/core/java/com/android/server/wm/TaskOrganizerController.java +++ b/services/core/java/com/android/server/wm/TaskOrganizerController.java @@ -22,6 +22,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import static com.android.internal.protolog.ProtoLogGroup.WM_DEBUG_WINDOW_ORGANIZER; import static com.android.server.wm.ActivityTaskManagerService.enforceTaskPermission; import static com.android.server.wm.DisplayContent.IME_TARGET_LAYERING; +import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_STARTING_REVEAL; import static com.android.server.wm.WindowOrganizerController.CONTROLLABLE_CONFIGS; import static com.android.server.wm.WindowOrganizerController.CONTROLLABLE_WINDOW_CONFIGS; @@ -38,6 +39,7 @@ import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; import android.util.Slog; +import android.util.proto.ProtoOutputStream; import android.view.SurfaceControl; import android.window.ITaskOrganizer; import android.window.ITaskOrganizerController; @@ -134,29 +136,72 @@ class TaskOrganizerController extends ITaskOrganizerController.Stub { } } + // Capture the animation surface control for activity's main window + private class StartingWindowAnimationAdaptor implements AnimationAdapter { + private SurfaceControl mAnimationLeash; + @Override + public boolean getShowWallpaper() { + return false; + } + + @Override + public void startAnimation(SurfaceControl animationLeash, SurfaceControl.Transaction t, + int type, SurfaceAnimator.OnAnimationFinishedCallback finishCallback) { + mAnimationLeash = animationLeash; + } + + @Override + public void onAnimationCancelled(SurfaceControl animationLeash) { + if (mAnimationLeash == animationLeash) { + mAnimationLeash = null; + } + } + + @Override + public long getDurationHint() { + return 0; + } + + @Override + public long getStatusBarTransitionsStartTime() { + return 0; + } + + @Override + public void dump(PrintWriter pw, String prefix) { + pw.print(prefix + "StartingWindowAnimationAdaptor mCapturedLeash="); + pw.print(mAnimationLeash); + pw.println(); + } + + @Override + public void dumpDebug(ProtoOutputStream proto) { + } + } + void removeStartingWindow(Task task, boolean prepareAnimation) { - SurfaceControl firstWindowLeash = null; + SurfaceControl windowAnimationLeash = null; Rect mainFrame = null; - // TODO enable shift up animation once we fix flicker test -// final boolean playShiftUpAnimation = !task.inMultiWindowMode(); -// if (prepareAnimation && playShiftUpAnimation) { -// final ActivityRecord topActivity = task.topActivityWithStartingWindow(); -// if (topActivity != null) { -// final WindowState mainWindow = -// topActivity.findMainWindow(false/* includeStartingApp */); -// if (mainWindow != null) { - // TODO create proper leash instead of the copied SC -// firstWindowLeash = new SurfaceControl(mainWindow.getSurfaceControl(), -// "TaskOrganizerController.removeStartingWindow"); -// mainFrame = mainWindow.getRelativeFrame(); -// } -// } -// } + final boolean playShiftUpAnimation = !task.inMultiWindowMode(); + if (prepareAnimation && playShiftUpAnimation) { + final ActivityRecord topActivity = task.topActivityWithStartingWindow(); + if (topActivity != null) { + final WindowState mainWindow = + topActivity.findMainWindow(false/* includeStartingApp */); + if (mainWindow != null) { + final StartingWindowAnimationAdaptor adaptor = + new StartingWindowAnimationAdaptor(); + final SurfaceControl.Transaction t = mainWindow.getPendingTransaction(); + mainWindow.startAnimation(t, adaptor, false, + ANIMATION_TYPE_STARTING_REVEAL); + windowAnimationLeash = adaptor.mAnimationLeash; + mainFrame = mainWindow.getRelativeFrame(); + } + } + } try { - mTaskOrganizer.removeStartingWindow(task.mTaskId, firstWindowLeash, mainFrame, - /* TODO(183004107) Revert this when jankiness is solved - prepareAnimation); */ false); - + mTaskOrganizer.removeStartingWindow(task.mTaskId, windowAnimationLeash, + mainFrame, prepareAnimation); } catch (RemoteException e) { Slog.e(TAG, "Exception sending onStartTaskFinished callback", e); } diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 1657a136d61d..d43a76315502 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -818,7 +818,7 @@ public class WindowManagerService extends IWindowManager.Stub } if (mImmersiveModeConfirmationsUri.equals(uri) || mPolicyControlUri.equals(uri)) { - updateSystemUiSettings(); + updateSystemUiSettings(true /* handleChange */); return; } @@ -874,17 +874,22 @@ public class WindowManagerService extends IWindowManager.Stub } void loadSettings() { - updateSystemUiSettings(); + updateSystemUiSettings(false /* handleChange */); updatePointerLocation(); } - void updateSystemUiSettings() { - boolean changed; + void updateSystemUiSettings(boolean handleChange) { synchronized (mGlobalLock) { - changed = ImmersiveModeConfirmation.loadSetting(mCurrentUserId, mContext); - } - if (changed) { - updateRotation(false /* alwaysSendConfiguration */, false /* forceRelayout */); + boolean changed = false; + if (handleChange) { + changed = getDefaultDisplayContentLocked().getDisplayPolicy() + .onSystemUiSettingsChanged(); + } else { + ImmersiveModeConfirmation.loadSetting(mCurrentUserId, mContext); + } + if (changed) { + mWindowPlacerLocked.requestTraversal(); + } } } @@ -2990,7 +2995,7 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void onUserSwitched() { - mSettingsObserver.updateSystemUiSettings(); + mSettingsObserver.updateSystemUiSettings(true /* handleChange */); synchronized (mGlobalLock) { // force a re-application of focused window sysui visibility on each display. mRoot.forAllDisplayPolicies(DisplayPolicy::resetSystemUiVisibilityLw); diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 2e8d4cd4e7f8..b40223f6eed7 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -133,6 +133,7 @@ import static com.android.server.wm.MoveAnimationSpecProto.TO; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_ALL; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS; +import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_STARTING_REVEAL; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION; import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS; import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION; @@ -2410,6 +2411,18 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP ProtoLog.d(WM_DEBUG_STARTING_WINDOW, "Starting window removed %s", this); } + if (startingWindow && StartingSurfaceController.DEBUG_ENABLE_SHELL_DRAWER) { + // cancel the remove starting window animation on shell + if (mActivityRecord != null) { + final WindowState mainWindow = + mActivityRecord.findMainWindow(false/* includeStartingApp */); + if (mainWindow != null && mainWindow.isSelfAnimating(0 /* flags */, + ANIMATION_TYPE_STARTING_REVEAL)) { + mainWindow.cancelAnimation(); + } + } + } + ProtoLog.v(WM_DEBUG_FOCUS, "Remove client=%x, surfaceController=%s Callers=%s", System.identityHashCode(mClient.asBinder()), mWinAnimator.mSurfaceController, diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index 4ce959180753..53401fd47178 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -70,6 +70,7 @@ cc_library_static { "com_android_server_PersistentDataBlockService.cpp", "com_android_server_am_LowMemDetector.cpp", "com_android_server_pm_PackageManagerShellCommandDataLoader.cpp", + "com_android_server_sensor_SensorService.cpp", "onload.cpp", ":lib_cachedAppOptimizer_native", ":lib_networkStatsFactory_native", diff --git a/services/core/jni/com_android_server_SystemServer.cpp b/services/core/jni/com_android_server_SystemServer.cpp index fb664abb2d54..6721ecfc40a1 100644 --- a/services/core/jni/com_android_server_SystemServer.cpp +++ b/services/core/jni/com_android_server_SystemServer.cpp @@ -32,7 +32,6 @@ #include <memtrackproxy/MemtrackProxy.h> #include <schedulerservice/SchedulingPolicyService.h> -#include <sensorservice/SensorService.h> #include <sensorservicehidl/SensorManager.h> #include <stats/StatsAidl.h> #include <stats/StatsHal.h> @@ -41,12 +40,10 @@ #include <bionic/reserved_signals.h> #include <android-base/properties.h> -#include <cutils/properties.h> #include <utils/Log.h> #include <utils/misc.h> #include <utils/AndroidThreads.h> -using android::base::GetIntProperty; using namespace std::chrono_literals; namespace { @@ -81,15 +78,6 @@ static void android_server_SystemServer_startIStatsService(JNIEnv* /* env */, jo startStatsAidlService(); } -static void android_server_SystemServer_startSensorService(JNIEnv* /* env */, jobject /* clazz */) { - char propBuf[PROPERTY_VALUE_MAX]; - property_get("system_init.startsensorservice", propBuf, "1"); - if (strcmp(propBuf, "1") == 0) { - SensorService::publish(false /* allowIsolated */, - IServiceManager::DUMP_FLAG_PRIORITY_CRITICAL); - } -} - static void android_server_SystemServer_startMemtrackProxyService(JNIEnv* env, jobject /* clazz */) { using aidl::android::hardware::memtrack::MemtrackProxy; @@ -163,7 +151,6 @@ static void android_server_SystemServer_setIncrementalServiceSystemReady(JNIEnv* static const JNINativeMethod gMethods[] = { /* name, signature, funcPtr */ {"startIStatsService", "()V", (void*)android_server_SystemServer_startIStatsService}, - {"startSensorService", "()V", (void*)android_server_SystemServer_startSensorService}, {"startMemtrackProxyService", "()V", (void*)android_server_SystemServer_startMemtrackProxyService}, {"startHidlServices", "()V", (void*)android_server_SystemServer_startHidlServices}, diff --git a/services/core/jni/com_android_server_sensor_SensorService.cpp b/services/core/jni/com_android_server_sensor_SensorService.cpp new file mode 100644 index 000000000000..acad1bc95ce0 --- /dev/null +++ b/services/core/jni/com_android_server_sensor_SensorService.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#define LOG_TAG "SensorService" + +#include <nativehelper/JNIHelp.h> +#include "android_runtime/AndroidRuntime.h" +#include "core_jni_helpers.h" +#include "jni.h" + +#include <cutils/properties.h> +#include <sensorservice/SensorService.h> +#include <utils/Log.h> +#include <utils/misc.h> + +namespace android { + +static void startNativeSensorService(JNIEnv* env, jclass clazz) { + char propBuf[PROPERTY_VALUE_MAX]; + property_get("system_init.startsensorservice", propBuf, "1"); + if (strcmp(propBuf, "1") == 0) { + SensorService::publish(false /* allowIsolated */, + IServiceManager::DUMP_FLAG_PRIORITY_CRITICAL); + } +} + +static const JNINativeMethod methods[] = { + {"startNativeSensorService", "()V", (void*)startNativeSensorService}, +}; + +int register_android_server_sensor_SensorService(JNIEnv* env) { + return jniRegisterNativeMethods(env, "com/android/server/sensors/SensorService", methods, + NELEM(methods)); +} + +}; // namespace android diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp index b043e643b2bd..b8961d5ba9b0 100644 --- a/services/core/jni/onload.cpp +++ b/services/core/jni/onload.cpp @@ -62,6 +62,7 @@ int register_android_server_AdbDebuggingManager(JNIEnv* env); int register_android_server_FaceService(JNIEnv* env); int register_android_server_GpuService(JNIEnv* env); int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env); +int register_android_server_sensor_SensorService(JNIEnv* env); }; using namespace android; @@ -117,5 +118,6 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) register_android_server_FaceService(env); register_android_server_GpuService(env); register_android_server_stats_pull_StatsPullAtomService(env); + register_android_server_sensor_SensorService(env); return JNI_VERSION_1_4; } diff --git a/services/core/xsd/display-device-config/display-device-config.xsd b/services/core/xsd/display-device-config/display-device-config.xsd index 01834ddfbeac..c6dfe9dbbfc2 100644 --- a/services/core/xsd/display-device-config/display-device-config.xsd +++ b/services/core/xsd/display-device-config/display-device-config.xsd @@ -51,6 +51,9 @@ <xs:element type="sensorDetails" name="lightSensor"> <xs:annotation name="final"/> </xs:element> + <xs:element type="sensorDetails" name="proxSensor"> + <xs:annotation name="final"/> + </xs:element> </xs:sequence> </xs:complexType> </xs:element> diff --git a/services/core/xsd/display-device-config/schema/current.txt b/services/core/xsd/display-device-config/schema/current.txt index a848f82a0cb6..7c2436db8694 100644 --- a/services/core/xsd/display-device-config/schema/current.txt +++ b/services/core/xsd/display-device-config/schema/current.txt @@ -5,6 +5,7 @@ package com.android.server.display.config { ctor public DisplayConfiguration(); method public com.android.server.display.config.HighBrightnessMode getHighBrightnessMode(); method public final com.android.server.display.config.SensorDetails getLightSensor(); + method public final com.android.server.display.config.SensorDetails getProxSensor(); method public com.android.server.display.config.DisplayQuirks getQuirks(); method @NonNull public final java.math.BigDecimal getScreenBrightnessDefault(); method @NonNull public final com.android.server.display.config.NitsMap getScreenBrightnessMap(); @@ -14,6 +15,7 @@ package com.android.server.display.config { method public final java.math.BigDecimal getScreenBrightnessRampSlowIncrease(); method public void setHighBrightnessMode(com.android.server.display.config.HighBrightnessMode); method public final void setLightSensor(com.android.server.display.config.SensorDetails); + method public final void setProxSensor(com.android.server.display.config.SensorDetails); method public void setQuirks(com.android.server.display.config.DisplayQuirks); method public final void setScreenBrightnessDefault(@NonNull java.math.BigDecimal); method public final void setScreenBrightnessMap(@NonNull com.android.server.display.config.NitsMap); diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 9de50585bf67..ef7360d35706 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -4547,30 +4547,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } @Override - public boolean isProfileActivePasswordSufficientForParent(int userHandle) { - if (!mHasFeature) { - return true; - } - Preconditions.checkArgumentNonnegative(userHandle, "Invalid userId"); - - final CallerIdentity caller = getCallerIdentity(); - Preconditions.checkCallAuthorization(hasFullCrossUsersPermission(caller, userHandle)); - Preconditions.checkCallAuthorization(isManagedProfile(userHandle), - "can not call APIs refering to the parent profile outside a managed profile, " - + "userId = %d", userHandle); - - synchronized (getLockObject()) { - final int targetUser = getProfileParentId(userHandle); - enforceUserUnlocked(targetUser, false); - int credentialOwner = getCredentialOwner(userHandle, false); - DevicePolicyData policy = getUserDataUnchecked(credentialOwner); - PasswordMetrics metrics = mLockSettingsInternal.getUserPasswordMetrics(credentialOwner); - return isActivePasswordSufficientForUserLocked( - policy.mPasswordValidAtLastCheckpoint, metrics, targetUser); - } - } - - @Override public boolean isPasswordSufficientAfterProfileUnification(int userHandle, int profileUser) { if (!mHasFeature) { return true; diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index 36c0a677f43a..51b270c42bde 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -206,23 +206,27 @@ static bool isValidMountTarget(std::string_view path) { return path::isAbsolute(path) && path::isEmptyDir(path).value_or(true); } -std::string makeBindMdName() { +std::string makeUniqueName(std::string_view prefix) { static constexpr auto uuidStringSize = 36; uuid_t guid; uuid_generate(guid); std::string name; - const auto prefixSize = constants().mountpointMdPrefix.size(); + const auto prefixSize = prefix.size(); name.reserve(prefixSize + uuidStringSize); - name = constants().mountpointMdPrefix; + name = prefix; name.resize(prefixSize + uuidStringSize); uuid_unparse(guid, name.data() + prefixSize); return name; } +std::string makeBindMdName() { + return makeUniqueName(constants().mountpointMdPrefix); +} + static bool checkReadLogsDisabledMarker(std::string_view root) { const auto markerPath = path::c_str(path::join(root, constants().readLogsDisabledMarkerName)); struct stat st; @@ -394,16 +398,14 @@ static const char* toString(IncrementalService::BindKind kind) { } template <class Duration> -static long elapsedMcs(Duration start, Duration end) { +static int64_t elapsedMcs(Duration start, Duration end) { return std::chrono::duration_cast<std::chrono::microseconds>(end - start).count(); } -static uint64_t elapsedUsSinceMonoTs(uint64_t monoTsUs) { - timespec now; - if (clock_gettime(CLOCK_MONOTONIC, &now) != 0) { - return 0; - } - uint64_t nowUs = now.tv_sec * 1000000LL + now.tv_nsec / 1000; +int64_t IncrementalService::elapsedUsSinceMonoTs(uint64_t monoTsUs) { + const auto now = mClock->now(); + const auto nowUs = static_cast<uint64_t>( + duration_cast<std::chrono::microseconds>(now.time_since_epoch()).count()); return nowUs - monoTsUs; } @@ -424,7 +426,7 @@ void IncrementalService::onDump(int fd) { } else { dprintf(fd, " mountId: %d\n", mnt.mountId); dprintf(fd, " root: %s\n", mnt.root.c_str()); - const auto metricsInstanceName = path::basename(ifs->root); + const auto& metricsInstanceName = ifs->metricsKey; dprintf(fd, " metrics instance name: %s\n", path::c_str(metricsInstanceName).get()); dprintf(fd, " nextStorageDirNo: %d\n", mnt.nextStorageDirNo.load()); dprintf(fd, " flags: %d\n", int(mnt.flags)); @@ -617,6 +619,7 @@ StorageId IncrementalService::createStorage(std::string_view mountPoint, return kInvalidStorageId; } + std::string metricsKey; IncFsMount::Control control; { std::lock_guard l(mMountOperationLock); @@ -632,7 +635,8 @@ StorageId IncrementalService::createStorage(std::string_view mountPoint, if (!mkdirOrLog(path::join(backing, ".incomplete"), 0777)) { return kInvalidStorageId; } - auto status = mVold->mountIncFs(backing, mountTarget, 0, mountKey, &controlParcel); + metricsKey = makeUniqueName(mountKey); + auto status = mVold->mountIncFs(backing, mountTarget, 0, metricsKey, &controlParcel); if (!status.isOk()) { LOG(ERROR) << "Vold::mountIncFs() failed: " << status.toString8(); return kInvalidStorageId; @@ -655,8 +659,8 @@ StorageId IncrementalService::createStorage(std::string_view mountPoint, const auto mountId = mountIt->first; l.unlock(); - auto ifs = - std::make_shared<IncFsMount>(std::move(mountRoot), mountId, std::move(control), *this); + auto ifs = std::make_shared<IncFsMount>(std::move(mountRoot), std::move(metricsKey), mountId, + std::move(control), *this); // Now it's the |ifs|'s responsibility to clean up after itself, and the only cleanup we need // is the removal of the |ifs|. (void)firstCleanupOnFailure.release(); @@ -1485,8 +1489,11 @@ std::unordered_set<std::string_view> IncrementalService::adoptMountedInstances() dataLoaderParams.arguments = loader.arguments(); } - auto ifs = std::make_shared<IncFsMount>(std::string(expectedRoot), mountId, - std::move(control), *this); + // Not way to obtain a real sysfs key at this point - metrics will stop working after "soft" + // reboot. + std::string metricsKey{}; + auto ifs = std::make_shared<IncFsMount>(std::string(expectedRoot), std::move(metricsKey), + mountId, std::move(control), *this); (void)cleanupFiles.release(); // ifs will take care of that now // Check if marker file present. @@ -1643,7 +1650,8 @@ bool IncrementalService::mountExistingImage(std::string_view root) { std::string mountKey(path::basename(path::dirname(mountTarget))); IncrementalFileSystemControlParcel controlParcel; - auto status = mVold->mountIncFs(backing, mountTarget, 0, mountKey, &controlParcel); + auto metricsKey = makeUniqueName(mountKey); + auto status = mVold->mountIncFs(backing, mountTarget, 0, metricsKey, &controlParcel); if (!status.isOk()) { LOG(ERROR) << "Vold::mountIncFs() failed: " << status.toString8(); return false; @@ -1656,7 +1664,8 @@ bool IncrementalService::mountExistingImage(std::string_view root) { controlParcel.blocksWritten ? controlParcel.blocksWritten->release().release() : -1; IncFsMount::Control control = mIncFs->createControl(cmd, pendingReads, logs, blocksWritten); - auto ifs = std::make_shared<IncFsMount>(std::string(root), -1, std::move(control), *this); + auto ifs = std::make_shared<IncFsMount>(std::string(root), std::move(metricsKey), -1, + std::move(control), *this); auto mount = parseFromIncfs<metadata::Mount>(mIncFs.get(), ifs->control, path::join(mountTarget, constants().infoMdName)); @@ -2454,10 +2463,37 @@ void IncrementalService::getMetrics(StorageId storageId, android::os::Persistabl LOG(ERROR) << "getMetrics failed, invalid storageId: " << storageId; return; } - const auto kMetricsReadLogsEnabled = + const auto& kMetricsReadLogsEnabled = os::incremental::BnIncrementalService::METRICS_READ_LOGS_ENABLED(); - result->putBoolean(String16(kMetricsReadLogsEnabled.data()), ifs->readLogsEnabled() != 0); - + result->putBoolean(String16(kMetricsReadLogsEnabled.c_str()), ifs->readLogsEnabled() != 0); + const auto incfsMetrics = mIncFs->getMetrics(ifs->metricsKey); + if (incfsMetrics) { + const auto& kMetricsTotalDelayedReads = + os::incremental::BnIncrementalService::METRICS_TOTAL_DELAYED_READS(); + const auto totalDelayedReads = + incfsMetrics->readsDelayedMin + incfsMetrics->readsDelayedPending; + result->putInt(String16(kMetricsTotalDelayedReads.c_str()), totalDelayedReads); + const auto& kMetricsTotalFailedReads = + os::incremental::BnIncrementalService::METRICS_TOTAL_FAILED_READS(); + const auto totalFailedReads = incfsMetrics->readsFailedTimedOut + + incfsMetrics->readsFailedHashVerification + incfsMetrics->readsFailedOther; + result->putInt(String16(kMetricsTotalFailedReads.c_str()), totalFailedReads); + const auto& kMetricsTotalDelayedReadsMillis = + os::incremental::BnIncrementalService::METRICS_TOTAL_DELAYED_READS_MILLIS(); + const int64_t totalDelayedReadsMillis = + (incfsMetrics->readsDelayedMinUs + incfsMetrics->readsDelayedPendingUs) / 1000; + result->putLong(String16(kMetricsTotalDelayedReadsMillis.c_str()), totalDelayedReadsMillis); + } + const auto lastReadError = mIncFs->getLastReadError(ifs->control); + if (lastReadError && lastReadError->timestampUs != 0) { + const auto& kMetricsMillisSinceLastReadError = + os::incremental::BnIncrementalService::METRICS_MILLIS_SINCE_LAST_READ_ERROR(); + result->putLong(String16(kMetricsMillisSinceLastReadError.c_str()), + (int64_t)elapsedUsSinceMonoTs(lastReadError->timestampUs) / 1000); + const auto& kMetricsLastReadErrorNo = + os::incremental::BnIncrementalService::METRICS_LAST_READ_ERROR_NUMBER(); + result->putInt(String16(kMetricsLastReadErrorNo.c_str()), lastReadError->errorNo); + } std::unique_lock l(ifs->lock); if (!ifs->dataLoaderStub) { return; @@ -3004,24 +3040,24 @@ BootClockTsUs IncrementalService::DataLoaderStub::getOldestTsFromLastPendingRead void IncrementalService::DataLoaderStub::getMetrics(android::os::PersistableBundle* result) { const auto duration = elapsedMsSinceOldestPendingRead(); if (duration >= 0) { - const auto kMetricsMillisSinceOldestPendingRead = + const auto& kMetricsMillisSinceOldestPendingRead = os::incremental::BnIncrementalService::METRICS_MILLIS_SINCE_OLDEST_PENDING_READ(); - result->putLong(String16(kMetricsMillisSinceOldestPendingRead.data()), duration); + result->putLong(String16(kMetricsMillisSinceOldestPendingRead.c_str()), duration); } - const auto kMetricsStorageHealthStatusCode = + const auto& kMetricsStorageHealthStatusCode = os::incremental::BnIncrementalService::METRICS_STORAGE_HEALTH_STATUS_CODE(); - result->putInt(String16(kMetricsStorageHealthStatusCode.data()), mHealthStatus); - const auto kMetricsDataLoaderStatusCode = + result->putInt(String16(kMetricsStorageHealthStatusCode.c_str()), mHealthStatus); + const auto& kMetricsDataLoaderStatusCode = os::incremental::BnIncrementalService::METRICS_DATA_LOADER_STATUS_CODE(); - result->putInt(String16(kMetricsDataLoaderStatusCode.data()), mCurrentStatus); - const auto kMetricsMillisSinceLastDataLoaderBind = + result->putInt(String16(kMetricsDataLoaderStatusCode.c_str()), mCurrentStatus); + const auto& kMetricsMillisSinceLastDataLoaderBind = os::incremental::BnIncrementalService::METRICS_MILLIS_SINCE_LAST_DATA_LOADER_BIND(); - result->putLong(String16(kMetricsMillisSinceLastDataLoaderBind.data()), - (long)(elapsedMcs(mPreviousBindTs, mService.mClock->now()) / 1000)); - const auto kMetricsDataLoaderBindDelayMillis = + result->putLong(String16(kMetricsMillisSinceLastDataLoaderBind.c_str()), + elapsedMcs(mPreviousBindTs, mService.mClock->now()) / 1000); + const auto& kMetricsDataLoaderBindDelayMillis = os::incremental::BnIncrementalService::METRICS_DATA_LOADER_BIND_DELAY_MILLIS(); - result->putLong(String16(kMetricsDataLoaderBindDelayMillis.data()), - (long)(mPreviousBindDelay.count())); + result->putLong(String16(kMetricsDataLoaderBindDelayMillis.c_str()), + mPreviousBindDelay.count()); } long IncrementalService::DataLoaderStub::elapsedMsSinceOldestPendingRead() { diff --git a/services/incremental/IncrementalService.h b/services/incremental/IncrementalService.h index 8dc789f4a328..5de7325b3d28 100644 --- a/services/incremental/IncrementalService.h +++ b/services/incremental/IncrementalService.h @@ -340,6 +340,7 @@ private: mutable std::mutex lock; const std::string root; + const std::string metricsKey; Control control; /*const*/ MountId mountId; int32_t flags = StorageFlags::ReadLogsAllowed; @@ -350,9 +351,10 @@ private: std::atomic<int> nextStorageDirNo{0}; const IncrementalService& incrementalService; - IncFsMount(std::string root, MountId mountId, Control control, + IncFsMount(std::string root, std::string metricsKey, MountId mountId, Control control, const IncrementalService& incrementalService) : root(std::move(root)), + metricsKey(std::move(metricsKey)), control(std::move(control)), mountId(mountId), incrementalService(incrementalService) {} @@ -472,6 +474,7 @@ private: StorageLoadingProgressListener&& progressListener); void trimReservedSpaceV1(const IncFsMount& ifs); + int64_t elapsedUsSinceMonoTs(uint64_t monoTsUs); private: const std::unique_ptr<VoldServiceWrapper> mVold; diff --git a/services/incremental/test/IncrementalServiceTest.cpp b/services/incremental/test/IncrementalServiceTest.cpp index da7f0db5efc1..6c9310bbf052 100644 --- a/services/incremental/test/IncrementalServiceTest.cpp +++ b/services/incremental/test/IncrementalServiceTest.cpp @@ -635,6 +635,14 @@ public: void advanceMs(int deltaMs) { mClock += std::chrono::milliseconds(deltaMs); } TimePoint getClock() const { return mClock; } + std::optional<timespec> getClockMono() const { + const auto nsSinceEpoch = + std::chrono::duration_cast<std::chrono::nanoseconds>(mClock.time_since_epoch()) + .count(); + timespec ts = {.tv_sec = static_cast<time_t>(nsSinceEpoch / 1000000000LL), + .tv_nsec = static_cast<long>(nsSinceEpoch % 1000000000LL)}; + return ts; + } TimePoint mClock = Clock::now(); }; @@ -2203,4 +2211,89 @@ TEST_F(IncrementalServiceTest, testInvalidMetricsKeys) { ASSERT_EQ(6, (int)result.size()); } +TEST_F(IncrementalServiceTest, testMetricsWithNoLastReadError) { + mVold->setIncFsMountOptionsSuccess(); + ON_CALL(*mIncFs, getMetrics(_)) + .WillByDefault(Return(Metrics{ + .readsDelayedMin = 10, + .readsDelayedMinUs = 5000, + .readsDelayedPending = 10, + .readsDelayedPendingUs = 5000, + .readsFailedHashVerification = 10, + .readsFailedOther = 10, + .readsFailedTimedOut = 10, + })); + ON_CALL(*mIncFs, getLastReadError(_)).WillByDefault(Return(LastReadError{})); + TemporaryDir tempDir; + int storageId = + mIncrementalService->createStorage(tempDir.path, mDataLoaderParcel, + IncrementalService::CreateOptions::CreateNew); + ASSERT_GE(storageId, 0); + ASSERT_TRUE(mIncrementalService->startLoading(storageId, std::move(mDataLoaderParcel), {}, {}, + {}, {})); + android::os::PersistableBundle result{}; + mIncrementalService->getMetrics(storageId, &result); + ASSERT_EQ(9, (int)result.size()); + + int expectedtotalDelayedReads = 20, totalDelayedReads = -1; + ASSERT_TRUE(result.getInt(String16(BnIncrementalService::METRICS_TOTAL_DELAYED_READS().c_str()), + &totalDelayedReads)); + ASSERT_EQ(expectedtotalDelayedReads, totalDelayedReads); + int expectedtotalFailedReads = 30, totalFailedReads = -1; + ASSERT_TRUE(result.getInt(String16(BnIncrementalService::METRICS_TOTAL_FAILED_READS().c_str()), + &totalFailedReads)); + ASSERT_EQ(expectedtotalFailedReads, totalFailedReads); + int64_t expectedtotalDelayedReadsMillis = 10, totalDelayedReadsMillis = -1; + ASSERT_TRUE(result.getLong(String16(BnIncrementalService::METRICS_TOTAL_DELAYED_READS_MILLIS() + .c_str()), + &totalDelayedReadsMillis)); + ASSERT_EQ(expectedtotalDelayedReadsMillis, totalDelayedReadsMillis); + + int64_t expectedMillisSinceLastReadError = -1, millisSinceLastReadError = -1; + ASSERT_FALSE( + result.getLong(String16(BnIncrementalService::METRICS_MILLIS_SINCE_LAST_READ_ERROR() + .c_str()), + &millisSinceLastReadError)); + ASSERT_EQ(expectedMillisSinceLastReadError, millisSinceLastReadError); + int expectedLastReadErrorNumber = -1, lastReadErrorNumber = -1; + ASSERT_FALSE( + result.getInt(String16(BnIncrementalService::METRICS_LAST_READ_ERROR_NUMBER().c_str()), + &lastReadErrorNumber)); + ASSERT_EQ(expectedLastReadErrorNumber, lastReadErrorNumber); +} + +TEST_F(IncrementalServiceTest, testMetricsWithLastReadError) { + mVold->setIncFsMountOptionsSuccess(); + ON_CALL(*mIncFs, getMetrics(_)).WillByDefault(Return(Metrics{})); + mClock->advanceMs(5); + const auto now = mClock->getClock(); + ON_CALL(*mIncFs, getLastReadError(_)) + .WillByDefault(Return(LastReadError{.timestampUs = static_cast<uint64_t>( + duration_cast<std::chrono::microseconds>( + now.time_since_epoch()) + .count()), + .errorNo = static_cast<uint32_t>(-ETIME)})); + TemporaryDir tempDir; + int storageId = + mIncrementalService->createStorage(tempDir.path, mDataLoaderParcel, + IncrementalService::CreateOptions::CreateNew); + ASSERT_GE(storageId, 0); + ASSERT_TRUE(mIncrementalService->startLoading(storageId, std::move(mDataLoaderParcel), {}, {}, + {}, {})); + mClock->advanceMs(10); + android::os::PersistableBundle result{}; + mIncrementalService->getMetrics(storageId, &result); + ASSERT_EQ(11, (int)result.size()); + int64_t expectedMillisSinceLastReadError = 10, millisSinceLastReadError = -1; + ASSERT_TRUE(result.getLong(String16(BnIncrementalService::METRICS_MILLIS_SINCE_LAST_READ_ERROR() + .c_str()), + &millisSinceLastReadError)); + ASSERT_EQ(expectedMillisSinceLastReadError, millisSinceLastReadError); + int expectedLastReadErrorNumber = -ETIME, lastReadErrorNumber = -1; + ASSERT_TRUE( + result.getInt(String16(BnIncrementalService::METRICS_LAST_READ_ERROR_NUMBER().c_str()), + &lastReadErrorNumber)); + ASSERT_EQ(expectedLastReadErrorNumber, lastReadErrorNumber); +} + } // namespace android::os::incremental diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 8dc501119af1..1e4b2485cd94 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -179,6 +179,7 @@ import com.android.server.rotationresolver.RotationResolverManagerService; import com.android.server.security.FileIntegrityService; import com.android.server.security.KeyAttestationApplicationIdProviderService; import com.android.server.security.KeyChainSystemService; +import com.android.server.sensors.SensorService; import com.android.server.signedconfig.SignedConfigService; import com.android.server.soundtrigger.SoundTriggerService; import com.android.server.soundtrigger_middleware.SoundTriggerMiddlewareService; @@ -427,7 +428,6 @@ public final class SystemServer implements Dumpable { private final long mRuntimeStartElapsedTime; private final long mRuntimeStartUptime; - private static final String START_SENSOR_SERVICE = "StartSensorService"; private static final String START_HIDL_SERVICES = "StartHidlServices"; private static final String START_BLOB_STORE_SERVICE = "startBlobStoreManagerService"; @@ -435,7 +435,6 @@ public final class SystemServer implements Dumpable { private static final String SYSPROP_START_ELAPSED = "sys.system_server.start_elapsed"; private static final String SYSPROP_START_UPTIME = "sys.system_server.start_uptime"; - private Future<?> mSensorServiceStart; private Future<?> mZygotePreload; private Future<?> mBlobStoreServiceStart; @@ -449,9 +448,6 @@ public final class SystemServer implements Dumpable { /** Start the IStats services. This is a blocking call and can take time. */ private static native void startIStatsService(); - /** Start the sensor service. This is a blocking call and can take time. */ - private static native void startSensorService(); - /** * Start the memtrack proxy service. */ @@ -1229,15 +1225,9 @@ public final class SystemServer implements Dumpable { // The sensor service needs access to package manager service, app ops // service, and permissions service, therefore we start it after them. - // Start sensor service in a separate thread. Completion should be checked - // before using it. - mSensorServiceStart = SystemServerInitThreadPool.submit(() -> { - TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog(); - traceLog.traceBegin(START_SENSOR_SERVICE); - startSensorService(); - traceLog.traceEnd(); - }, START_SENSOR_SERVICE); - + t.traceBegin("StartSensorService"); + mSystemServiceManager.startService(SensorService.class); + t.traceEnd(); t.traceEnd(); // startBootstrapServices } @@ -1474,8 +1464,7 @@ public final class SystemServer implements Dumpable { t.traceBegin("StartWindowManagerService"); // WMS needs sensor service ready - ConcurrentUtils.waitForFutureNoInterrupt(mSensorServiceStart, START_SENSOR_SERVICE); - mSensorServiceStart = null; + mSystemServiceManager.startBootPhase(t, SystemService.PHASE_WAIT_FOR_SENSOR_SERVICE); wm = WindowManagerService.main(context, inputManager, !mFirstBoot, mOnlyCore, new PhoneWindowManager(), mActivityManagerService.mActivityTaskManager); ServiceManager.addService(Context.WINDOW_SERVICE, wm, /* allowIsolated= */ false, @@ -1493,8 +1482,8 @@ public final class SystemServer implements Dumpable { t.traceEnd(); // Start receiving calls from HIDL services. Start in in a separate thread - // because it need to connect to SensorManager. This have to start - // after START_SENSOR_SERVICE is done. + // because it need to connect to SensorManager. This has to start + // after PHASE_WAIT_FOR_SENSOR_SERVICE is done. SystemServerInitThreadPool.submit(() -> { TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog(); traceLog.traceBegin(START_HIDL_SERVICES); diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java index d913d4e37a5d..7189fb42f263 100644 --- a/services/people/java/com/android/server/people/data/DataManager.java +++ b/services/people/java/com/android/server/people/data/DataManager.java @@ -1149,11 +1149,11 @@ public class DataManager { if (conversationInfo == null) { return; } + if (DEBUG) Log.d(TAG, "Last event from notification: " + sbn.getPostTime()); ConversationInfo updated = new ConversationInfo.Builder(conversationInfo) .setLastEventTimestamp(sbn.getPostTime()) .setParentNotificationChannelId(sbn.getNotification().getChannelId()) .build(); - // Don't update listeners on notifications posted. packageData.getConversationStore().addOrUpdate(updated); EventHistoryImpl eventHistory = packageData.getEventStore().getOrCreateEventHistory( @@ -1186,9 +1186,19 @@ public class DataManager { if (reason != REASON_CLICK || packageData == null) { return; } + long currentTime = System.currentTimeMillis(); + ConversationInfo conversationInfo = packageData.getConversationInfo(shortcutId); + if (conversationInfo == null) { + return; + } + if (DEBUG) Log.d(TAG, "Last event from notification removed: " + currentTime); + ConversationInfo updated = new ConversationInfo.Builder(conversationInfo) + .setLastEventTimestamp(currentTime) + .build(); + packageData.getConversationStore().addOrUpdate(updated); + EventHistoryImpl eventHistory = packageData.getEventStore().getOrCreateEventHistory( EventStore.CATEGORY_SHORTCUT_BASED, shortcutId); - long currentTime = System.currentTimeMillis(); eventHistory.addEvent(new Event(currentTime, Event.TYPE_NOTIFICATION_OPENED)); } @@ -1265,6 +1275,7 @@ public class DataManager { public void onEvent(PackageData packageData, ConversationInfo conversationInfo, Event event) { if (event.getType() == Event.TYPE_IN_APP_CONVERSATION) { + if (DEBUG) Log.d(TAG, "Last event from in-app: " + event.getTimestamp()); ConversationInfo updated = new ConversationInfo.Builder(conversationInfo) .setLastEventTimestamp(event.getTimestamp()) .build(); diff --git a/services/smartspace/java/com/android/server/smartspace/SmartspacePerUserService.java b/services/smartspace/java/com/android/server/smartspace/SmartspacePerUserService.java index 5f435f91d62f..dcffc9e73c0e 100644 --- a/services/smartspace/java/com/android/server/smartspace/SmartspacePerUserService.java +++ b/services/smartspace/java/com/android/server/smartspace/SmartspacePerUserService.java @@ -87,7 +87,10 @@ public class SmartspacePerUserService extends protected boolean updateLocked(boolean disabled) { final boolean enabledChanged = super.updateLocked(disabled); if (enabledChanged) { - if (!isEnabledLocked()) { + if (isEnabledLocked()) { + // Send the pending sessions over to the service + resurrectSessionsLocked(); + } else { // Clear the remote service for the next call updateRemoteServiceLocked(); } diff --git a/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java b/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java index 607fb4760236..624e7dd3be4f 100644 --- a/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java @@ -1003,6 +1003,8 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean()); + verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2), + eq(true)); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1017,6 +1019,8 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean()); + verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2), + eq(false)); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1030,6 +1034,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1047,6 +1052,8 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(1)).updateJobsForUidPackage(eq(UID_10_2), eq(PACKAGE_2), anyBoolean()); + verify(l, times(1)).updateForceAppStandbyForUidPackage(eq(UID_10_2), eq(PACKAGE_2), + eq(true)); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1063,6 +1070,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1081,6 +1089,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1095,6 +1104,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1111,6 +1121,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1126,6 +1137,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1142,6 +1154,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1158,6 +1171,7 @@ public class AppStateTrackerTest { verify(l, times(2)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1172,6 +1186,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1188,6 +1203,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1203,6 +1219,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(anyInt(), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(anyInt()); @@ -1225,6 +1242,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1240,6 +1258,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1255,6 +1274,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1270,6 +1290,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1286,6 +1307,7 @@ public class AppStateTrackerTest { verify(l, times(1)).updateAllJobs(); verify(l, times(0)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(1)).updateAllAlarms(); verify(l, times(0)).updateAlarmsForUid(eq(UID_10_1)); @@ -1301,6 +1323,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1316,6 +1339,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1331,6 +1355,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); @@ -1346,6 +1371,7 @@ public class AppStateTrackerTest { verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); verify(l, times(0)).updateJobsForUidPackage(anyInt(), anyString(), anyBoolean()); + verify(l, times(0)).updateForceAppStandbyForUidPackage(anyInt(), anyString(), anyBoolean()); verify(l, times(0)).updateAllAlarms(); verify(l, times(1)).updateAlarmsForUid(eq(UID_10_1)); diff --git a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java index 64dad7f0feab..5222511cc479 100644 --- a/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/alarm/AlarmManagerServiceTest.java @@ -71,7 +71,9 @@ import static com.android.server.alarm.AlarmManagerService.Constants.KEY_CRASH_N import static com.android.server.alarm.AlarmManagerService.Constants.KEY_EXACT_ALARM_DENY_LIST; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_LAZY_BATCHING; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_LISTENER_TIMEOUT; +import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MAX_DEVICE_IDLE_FUZZ; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MAX_INTERVAL; +import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MIN_DEVICE_IDLE_FUZZ; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MIN_FUTURITY; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MIN_INTERVAL; import static com.android.server.alarm.AlarmManagerService.Constants.KEY_MIN_WINDOW; @@ -127,9 +129,11 @@ import android.os.Handler; import android.os.IBinder; import android.os.Looper; import android.os.Message; +import android.os.PowerExemptionManager; import android.os.PowerManager; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.SystemProperties; import android.os.UserHandle; import android.platform.test.annotations.Presubmit; import android.provider.DeviceConfig; @@ -367,6 +371,7 @@ public class AlarmManagerServiceTest { .mockStatic(MetricsHelper.class) .mockStatic(Settings.Global.class) .mockStatic(ServiceManager.class) + .mockStatic(SystemProperties.class) .spyStatic(UserHandle.class) .strictness(Strictness.WARN) .startMocking(); @@ -654,6 +659,8 @@ public class AlarmManagerServiceTest { setDeviceConfigLong(KEY_LISTENER_TIMEOUT, 45); setDeviceConfigLong(KEY_MIN_WINDOW, 50); setDeviceConfigLong(KEY_PRIORITY_ALARM_DELAY, 55); + setDeviceConfigLong(KEY_MIN_DEVICE_IDLE_FUZZ, 60); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, 65); assertEquals(5, mService.mConstants.MIN_FUTURITY); assertEquals(10, mService.mConstants.MIN_INTERVAL); assertEquals(15, mService.mConstants.MAX_INTERVAL); @@ -665,6 +672,8 @@ public class AlarmManagerServiceTest { assertEquals(45, mService.mConstants.LISTENER_TIMEOUT); assertEquals(50, mService.mConstants.MIN_WINDOW); assertEquals(55, mService.mConstants.PRIORITY_ALARM_DELAY); + assertEquals(60, mService.mConstants.MIN_DEVICE_IDLE_FUZZ); + assertEquals(65, mService.mConstants.MAX_DEVICE_IDLE_FUZZ); } @Test @@ -737,6 +746,20 @@ public class AlarmManagerServiceTest { } @Test + public void deviceIdleFuzzRangeNonNegative() { + final long newMinFuzz = mService.mConstants.MAX_DEVICE_IDLE_FUZZ + 1542; + final long newMaxFuzz = mService.mConstants.MIN_DEVICE_IDLE_FUZZ - 131; + + setDeviceConfigLong(KEY_MIN_DEVICE_IDLE_FUZZ, newMinFuzz); + assertTrue("Negative device-idle fuzz range", mService.mConstants.MAX_DEVICE_IDLE_FUZZ + >= mService.mConstants.MIN_DEVICE_IDLE_FUZZ); + + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, newMaxFuzz); + assertTrue("Negative device-idle fuzz range", mService.mConstants.MAX_DEVICE_IDLE_FUZZ + >= mService.mConstants.MIN_DEVICE_IDLE_FUZZ); + } + + @Test public void testMinFuturity() { setDeviceConfigLong(KEY_MIN_FUTURITY, 10L); assertEquals(10, mService.mConstants.MIN_FUTURITY); @@ -1431,7 +1454,7 @@ public class AlarmManagerServiceTest { @Test public void singleIdleUntil() { - doReturn(0).when(mService).fuzzForDuration(anyLong()); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, 0); final PendingIntent idleUntilPi6 = getNewMockPendingIntent(); setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 6, idleUntilPi6); @@ -1504,44 +1527,67 @@ public class AlarmManagerServiceTest { assertNull(mService.mNextWakeFromIdle); } + private static void assertInRange(String message, long minIncl, long maxIncl, long val) { + assertTrue(message, val >= minIncl && val <= maxIncl); + } + @Test - public void idleUntilBeforeWakeFromIdle() { - doReturn(0).when(mService).fuzzForDuration(anyLong()); + public void idleUntilFuzzedBeforeWakeFromIdle() { + final long minFuzz = 6; + final long maxFuzz = 17; + setDeviceConfigLong(KEY_MIN_DEVICE_IDLE_FUZZ, minFuzz); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, maxFuzz); + + mNowElapsedTest = 119; // Arbitrary, just to ensure we are not testing on 0. final PendingIntent idleUntilPi = getNewMockPendingIntent(); - final long requestedIdleUntil = mNowElapsedTest + 10; + final long requestedIdleUntil = mNowElapsedTest + 12; setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, requestedIdleUntil, idleUntilPi); assertEquals(requestedIdleUntil, mService.mPendingIdleUntil.getWhenElapsed()); final PendingIntent wakeFromIdle5 = getNewMockPendingIntent(); setWakeFromIdle(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 5, wakeFromIdle5); - assertEquals(mNowElapsedTest + 5, mService.mPendingIdleUntil.getWhenElapsed()); + // Anything before now, gets snapped to now. It is not necessary for it to fire + // immediately, just how it is implemented today for simplicity. + assertEquals(mNowElapsedTest, mService.mPendingIdleUntil.getWhenElapsed()); final PendingIntent wakeFromIdle8 = getNewMockPendingIntent(); setWakeFromIdle(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 8, wakeFromIdle8); - assertEquals(mNowElapsedTest + 5, mService.mPendingIdleUntil.getWhenElapsed()); + // Next wake from idle is still the same. + assertEquals(mNowElapsedTest, mService.mPendingIdleUntil.getWhenElapsed()); - final PendingIntent wakeFromIdle12 = getNewMockPendingIntent(); - setWakeFromIdle(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 12, wakeFromIdle12); - assertEquals(mNowElapsedTest + 5, mService.mPendingIdleUntil.getWhenElapsed()); + final PendingIntent wakeFromIdle19 = getNewMockPendingIntent(); + setWakeFromIdle(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 19, wakeFromIdle19); + // Next wake from idle is still the same. + assertEquals(mNowElapsedTest, mService.mPendingIdleUntil.getWhenElapsed()); mService.removeLocked(wakeFromIdle5, null, REMOVE_REASON_UNDEFINED); - assertEquals(mNowElapsedTest + 8, mService.mPendingIdleUntil.getWhenElapsed()); + // Next wake from idle is at now + 8. + long min = mNowElapsedTest; + long max = mNowElapsedTest + 8 - minFuzz; + assertInRange("Idle until alarm time not in expected range [" + min + ", " + max + "]", + min, max, mService.mPendingIdleUntil.getWhenElapsed()); mService.removeLocked(wakeFromIdle8, null, REMOVE_REASON_UNDEFINED); + // Next wake from idle is at now + 19, which is > minFuzz distance from + // the requested idle until time: now + 12. assertEquals(requestedIdleUntil, mService.mPendingIdleUntil.getWhenElapsed()); mService.removeLocked(idleUntilPi, null, REMOVE_REASON_UNDEFINED); assertNull(mService.mPendingIdleUntil); - setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 15, idleUntilPi); - assertEquals(mNowElapsedTest + 12, mService.mPendingIdleUntil.getWhenElapsed()); + setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 21, idleUntilPi); + // Next wake from idle is at now + 19, which means this alarm should get pulled back. + min = mNowElapsedTest + 19 - maxFuzz; + max = mNowElapsedTest + 19 - minFuzz; + assertInRange("Idle until alarm time not in expected range [" + min + ", " + max + "]", + min, max, mService.mPendingIdleUntil.getWhenElapsed()); } @Test public void allowWhileIdleAlarmsWhileDeviceIdle() throws Exception { - doReturn(0).when(mService).fuzzForDuration(anyLong()); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, 0); setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + mAllowWhileIdleWindow + 1000, getNewMockPendingIntent()); @@ -1571,7 +1617,7 @@ public class AlarmManagerServiceTest { @Test public void allowWhileIdleUnrestricted() throws Exception { - doReturn(0).when(mService).fuzzForDuration(anyLong()); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, 0); // Both battery saver and doze are on. setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 1000, @@ -1597,7 +1643,7 @@ public class AlarmManagerServiceTest { @Test public void deviceIdleDeferralOnSet() throws Exception { - doReturn(0).when(mService).fuzzForDuration(anyLong()); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, 0); final long deviceIdleUntil = mNowElapsedTest + 1234; setIdleUntilAlarm(ELAPSED_REALTIME_WAKEUP, deviceIdleUntil, getNewMockPendingIntent()); @@ -1622,7 +1668,7 @@ public class AlarmManagerServiceTest { @Test public void deviceIdleStateChanges() throws Exception { - doReturn(0).when(mService).fuzzForDuration(anyLong()); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, 0); final int numAlarms = 10; final PendingIntent[] pis = new PendingIntent[numAlarms]; @@ -1740,7 +1786,7 @@ public class AlarmManagerServiceTest { @Test public void prioritizedAlarmsInDeviceIdle() throws Exception { - doReturn(0).when(mService).fuzzForDuration(anyLong()); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, 0); final long minDelay = 5; setDeviceConfigLong(KEY_PRIORITY_ALARM_DELAY, minDelay); @@ -1791,7 +1837,7 @@ public class AlarmManagerServiceTest { @Test public void dispatchOrder() throws Exception { - doReturn(0).when(mService).fuzzForDuration(anyLong()); + setDeviceConfigLong(KEY_MAX_DEVICE_IDLE_FUZZ, 0); final long deviceIdleUntil = mNowElapsedTest + 1234; final PendingIntent idleUntilPi = getNewMockPendingIntent(); @@ -2357,6 +2403,34 @@ public class AlarmManagerServiceTest { } @Test + public void opScheduleExactAlarmGranted() throws Exception { + final long durationMs = 20000L; + when(mActivityManagerInternal.getBootTimeTempAllowListDuration()).thenReturn(durationMs); + + mockExactAlarmPermissionGrant(true, false, MODE_ALLOWED); + mIAppOpsCallback.opChanged(OP_SCHEDULE_EXACT_ALARM, TEST_CALLING_UID, TEST_CALLING_PACKAGE); + + final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class); + final ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); + + verify(mMockContext).sendBroadcastAsUser(intentCaptor.capture(), eq(UserHandle.SYSTEM), + isNull(), bundleCaptor.capture()); + + // Validate the intent. + assertEquals(AlarmManager.ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED, + intentCaptor.getValue().getAction()); + assertEquals(TEST_CALLING_PACKAGE, intentCaptor.getValue().getPackage()); + + // Validate the options. + final BroadcastOptions bOptions = new BroadcastOptions(bundleCaptor.getValue()); + assertEquals(TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + bOptions.getTemporaryAppAllowlistType()); + assertEquals(durationMs, bOptions.getTemporaryAppAllowlistDuration()); + assertEquals(PowerExemptionManager.REASON_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED, + bOptions.getTemporaryAppAllowlistReasonCode()); + } + + @Test public void removeExactAlarmsOnPermissionRevoked() { doReturn(true).when( () -> CompatChanges.isChangeEnabled(eq(AlarmManager.REQUIRE_EXACT_ALARM_PERMISSION), @@ -2536,6 +2610,24 @@ public class AlarmManagerServiceTest { verify(() -> MetricsHelper.pushAlarmBatchDelivered(10, 5)); } + @Test + public void setTimeZoneImpl() { + final long durationMs = 20000L; + when(mActivityManagerInternal.getBootTimeTempAllowListDuration()).thenReturn(durationMs); + mService.setTimeZoneImpl("UTC"); + final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class); + final ArgumentCaptor<Bundle> bundleCaptor = ArgumentCaptor.forClass(Bundle.class); + verify(mMockContext).sendBroadcastAsUser(intentCaptor.capture(), eq(UserHandle.ALL), + isNull(), bundleCaptor.capture()); + assertEquals(Intent.ACTION_TIMEZONE_CHANGED, intentCaptor.getValue().getAction()); + final BroadcastOptions bOptions = new BroadcastOptions(bundleCaptor.getValue()); + assertEquals(durationMs, bOptions.getTemporaryAppAllowlistDuration()); + assertEquals(TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + bOptions.getTemporaryAppAllowlistType()); + assertEquals(PowerExemptionManager.REASON_TIMEZONE_CHANGED, + bOptions.getTemporaryAppAllowlistReasonCode()); + } + @After public void tearDown() { if (mMockingSession != null) { diff --git a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java index 3404aff976d0..f59146e70841 100644 --- a/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java +++ b/services/tests/mockingservicestests/src/com/android/server/am/MockingOomAdjusterTests.java @@ -2078,7 +2078,7 @@ public class MockingOomAdjusterTests { doReturn(hasExternalProviders).when(record).hasExternalProcessHandles(); } ContentProviderConnection conn = spy(new ContentProviderConnection(record, client, - client.info.packageName)); + client.info.packageName, UserHandle.getUserId(client.uid))); record.connections.add(conn); client.mProviders.addProviderConnection(conn); return record; diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java index 64687908dc9b..029930abe6b1 100644 --- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/QuotaControllerTest.java @@ -68,7 +68,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; -import android.content.pm.IPackageManager; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; @@ -475,7 +474,6 @@ public class QuotaControllerTest { expectedRegular.add(thr); expectedRegular.add(two); expectedRegular.add(one); - expectedEJ.add(fiv); // EJ list should be unaffected expectedEJ.add(fou); expectedEJ.add(one); mQuotaController.saveTimingSession(0, "com.android.test", fiv, false); diff --git a/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java index 39a3aae767ea..2690948ca449 100644 --- a/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/accounts/AccountManagerServiceTest.java @@ -203,12 +203,18 @@ public class AccountManagerServiceTest extends AndroidTestCase { Account a12 = new Account("account1", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_2); Account a22 = new Account("account2", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_2); Account a32 = new Account("account3", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_2); - mAms.addAccountExplicitly(a11, "p11", null); - mAms.addAccountExplicitly(a12, "p12", null); - mAms.addAccountExplicitly(a21, "p21", null); - mAms.addAccountExplicitly(a22, "p22", null); - mAms.addAccountExplicitly(a31, "p31", null); - mAms.addAccountExplicitly(a32, "p32", null); + mAms.addAccountExplicitly( + a11, /* password= */ "p11", /* extras= */ null, /* callerPackage= */ null); + mAms.addAccountExplicitly( + a12, /* password= */ "p12", /* extras= */ null, /* callerPackage= */ null); + mAms.addAccountExplicitly( + a21, /* password= */ "p21", /* extras= */ null, /* callerPackage= */ null); + mAms.addAccountExplicitly( + a22, /* password= */ "p22", /* extras= */ null, /* callerPackage= */ null); + mAms.addAccountExplicitly( + a31, /* password= */ "p31", /* extras= */ null, /* callerPackage= */ null); + mAms.addAccountExplicitly( + a32, /* password= */ "p32", /* extras= */ null, /* callerPackage= */ null); String[] list = new String[]{AccountManagerServiceTestFixtures.CALLER_PACKAGE}; when(mMockPackageManager.getPackagesForUid(anyInt())).thenReturn(list); @@ -246,8 +252,10 @@ public class AccountManagerServiceTest extends AndroidTestCase { unlockSystemUser(); Account a11 = new Account("account1", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1); Account a12 = new Account("account1", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_2); - mAms.addAccountExplicitly(a11, "p11", null); - mAms.addAccountExplicitly(a12, "p12", null); + mAms.addAccountExplicitly( + a11, /* password= */ "p11", /* extras= */ null, /* callerPackage= */ null); + mAms.addAccountExplicitly( + a12, /* password= */ "p12", /* extras= */ null, /* callerPackage= */ null); assertEquals("p11", mAms.getPassword(a11)); assertEquals("p12", mAms.getPassword(a12)); @@ -271,8 +279,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { u12.putString("a", "a_a12"); u12.putString("b", "b_a12"); u12.putString("c", "c_a12"); - mAms.addAccountExplicitly(a11, "p11", u11); - mAms.addAccountExplicitly(a12, "p12", u12); + mAms.addAccountExplicitly(a11, /* password= */ "p11", u11, /* callerPackage= */ null); + mAms.addAccountExplicitly(a12, /* password= */ "p12", u12, /* callerPackage= */ null); assertEquals("a_a11", mAms.getUserData(a11, "a")); assertEquals("b_a11", mAms.getUserData(a11, "b")); @@ -297,8 +305,10 @@ public class AccountManagerServiceTest extends AndroidTestCase { unlockSystemUser(); Account a11 = new Account("account1", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1); Account a12 = new Account("account1", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_2); - mAms.addAccountExplicitly(a11, "p11", null); - mAms.addAccountExplicitly(a12, "p12", null); + mAms.addAccountExplicitly( + a11, /* password= */ "p11", /* extras= */ null, /* callerPackage= */ null); + mAms.addAccountExplicitly( + a12, /* password= */ "p12", /* extras= */ null, /* callerPackage= */ null); mAms.setAuthToken(a11, "att1", "a11_att1"); mAms.setAuthToken(a11, "att2", "a11_att2"); @@ -334,8 +344,10 @@ public class AccountManagerServiceTest extends AndroidTestCase { unlockSystemUser(); Account a1 = new Account("account1", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1); Account a2 = new Account("account2", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_2); - mAms.addAccountExplicitly(a1, "p1", null); - mAms.addAccountExplicitly(a2, "p2", null); + mAms.addAccountExplicitly( + a1, /* password= */ "p1", /* extras= */ null, /* callerPackage= */ null); + mAms.addAccountExplicitly( + a2, /* password= */ "p2", /* extras= */ null, /* callerPackage= */ null); Context originalContext = ((MyMockContext)getContext()).mTestContext; // create a separate instance of AMS. It initially assumes that user0 is locked @@ -1426,7 +1438,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { when(mMockPackageManager.getPackagesForUid(anyInt())).thenReturn(list); unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p1", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p1", + /* extras= */ null, + /* callerPackage= */ null); Account[] addedAccounts = mAms.getAccounts(UserHandle.USER_SYSTEM, mContext.getOpPackageName()); assertEquals(1, addedAccounts.length); @@ -1508,9 +1524,17 @@ public class AccountManagerServiceTest extends AndroidTestCase { AccountManager.VISIBILITY_USER_MANAGED_NOT_VISIBLE); mAms.addAccountExplicitlyWithVisibility( - AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "P11", null, visibility1); + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "P11", + /* extras= */ null, + visibility1, + /* callerPackage= */ null); mAms.addAccountExplicitlyWithVisibility( - AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "P12", null, visibility2); + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "P12", + /* extras= */ null, + visibility2, + /* callerPackage= */ null); Account[] accounts = mAms.getAccountsByTypeForPackage( null, "otherPackageName", @@ -1631,7 +1655,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { when(mMockContext.getPackageManager()).thenReturn(mMockPackageManager); String[] list = new String[]{AccountManagerServiceTestFixtures.CALLER_PACKAGE}; when(mMockPackageManager.getPackagesForUid(anyInt())).thenReturn(list); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); mAms.setAuthToken(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "authTokenType", AccountManagerServiceTestFixtures.AUTH_TOKEN); @@ -2438,7 +2466,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { public void testGetAccountByTypeAndFeaturesWithNoFeaturesAndOneVisibleAccount() throws Exception { unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); mAms.getAccountByTypeAndFeatures( mMockAccountManagerResponse, AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1, @@ -2460,7 +2492,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { visibility.put(AccountManagerServiceTestFixtures.CALLER_PACKAGE, AccountManager.VISIBILITY_USER_MANAGED_NOT_VISIBLE); mAms.addAccountExplicitlyWithVisibility( - AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null, visibility); + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + visibility, + /* callerPackage= */ null); mAms.getAccountByTypeAndFeatures( mMockAccountManagerResponse, AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1, @@ -2476,8 +2512,16 @@ public class AccountManagerServiceTest extends AndroidTestCase { @SmallTest public void testGetAccountByTypeAndFeaturesWithNoFeaturesAndTwoAccounts() throws Exception { unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "p12", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "p12", + /* extras= */ null, + /* callerPackage= */ null); mAms.getAccountByTypeAndFeatures( mMockAccountManagerResponse, @@ -2519,7 +2563,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { public void testGetAccountByTypeAndFeaturesWithFeaturesAndNoQualifiedAccount() throws Exception { unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "p12", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "p12", + /* extras= */ null, + /* callerPackage= */ null); final CountDownLatch latch = new CountDownLatch(1); mAms.getAccountByTypeAndFeatures( mMockAccountManagerResponse, @@ -2539,8 +2587,16 @@ public class AccountManagerServiceTest extends AndroidTestCase { public void testGetAccountByTypeAndFeaturesWithFeaturesAndOneQualifiedAccount() throws Exception { unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "p12", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "p12", + /* extras= */ null, + /* callerPackage= */ null); final CountDownLatch latch = new CountDownLatch(1); mAms.getAccountByTypeAndFeatures( mMockAccountManagerResponse, @@ -2564,7 +2620,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { visibility.put(AccountManagerServiceTestFixtures.CALLER_PACKAGE, AccountManager.VISIBILITY_USER_MANAGED_NOT_VISIBLE); mAms.addAccountExplicitlyWithVisibility( - AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null, visibility); + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + visibility, + /* callerPackage= */ null); final CountDownLatch latch = new CountDownLatch(1); mAms.getAccountByTypeAndFeatures( mMockAccountManagerResponse, @@ -2583,9 +2643,21 @@ public class AccountManagerServiceTest extends AndroidTestCase { public void testGetAccountByTypeAndFeaturesWithFeaturesAndTwoQualifiedAccount() throws Exception { unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS_2, "p12", null); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "p13", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS_2, + /* password= */ "p12", + /* extras= */ null, + /* callerPackage= */ null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "p13", + /* extras= */ null, + /* callerPackage= */ null); final CountDownLatch latch = new CountDownLatch(1); mAms.getAccountByTypeAndFeatures( mMockAccountManagerResponse, @@ -2666,8 +2738,16 @@ public class AccountManagerServiceTest extends AndroidTestCase { public void testGetAccountsByFeaturesNullFeatureReturnsAllAccounts() throws Exception { unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "p12", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "p12", + /* extras= */ null, + /* callerPackage= */ null); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -2691,8 +2771,16 @@ public class AccountManagerServiceTest extends AndroidTestCase { public void testGetAccountsByFeaturesReturnsAccountsWithFeaturesOnly() throws Exception { unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "p12", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "p12", + /* extras= */ null, + /* callerPackage= */ null); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -2713,8 +2801,16 @@ public class AccountManagerServiceTest extends AndroidTestCase { @SmallTest public void testGetAccountsByFeaturesError() throws Exception { unlockSystemUser(); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_ERROR, "p12", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_ERROR, + /* password= */ "p12", + /* extras= */ null, + /* callerPackage= */ null); final CountDownLatch latch = new CountDownLatch(1); Response response = new Response(latch, mMockAccountManagerResponse); @@ -2758,7 +2854,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { new String [] {AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1}, "testpackage"); // opPackageName - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); // Notification about new account updateBroadcastCounters(2); assertEquals(mVisibleAccountsChangedBroadcasts, 1); @@ -2772,9 +2872,16 @@ public class AccountManagerServiceTest extends AndroidTestCase { new String [] {AccountManagerServiceTestFixtures.ACCOUNT_TYPE_2}, "testpackage"); // opPackageName - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); mAms.addAccountExplicitly( - AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "p11", null); + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); // Notification about new account updateBroadcastCounters(2); @@ -2794,14 +2901,21 @@ public class AccountManagerServiceTest extends AndroidTestCase { new String [] {AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1}, AccountManagerServiceTestFixtures.CALLER_PACKAGE); mAms.addAccountExplicitlyWithVisibility( - AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null, visibility); + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, visibility, + /* callerPackage= */ null); mAms.unregisterAccountListener( new String [] {AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1}, AccountManagerServiceTestFixtures.CALLER_PACKAGE); addAccountRemovedReceiver(AccountManagerServiceTestFixtures.CALLER_PACKAGE); mAms.addAccountExplicitlyWithVisibility( - AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, "p11", null, visibility); + AccountManagerServiceTestFixtures.ACCOUNT_INTERVENE, + /* password= */ "p11", + /* extras= */ null, + visibility, + /* callerPackage= */ null); updateBroadcastCounters(3); assertEquals(mVisibleAccountsChangedBroadcasts, 1); @@ -2839,7 +2953,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { new String [] {AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1}, "testpackage3"); // opPackageName mAms.addAccountExplicitlyWithVisibility( - AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null, visibility); + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + visibility, + /* callerPackage= */ null); updateBroadcastCounters(4); assertEquals(mVisibleAccountsChangedBroadcasts, 3); assertEquals(mLoginAccountsChangedBroadcasts, 1); @@ -2856,7 +2974,10 @@ public class AccountManagerServiceTest extends AndroidTestCase { // Add account of another type. mAms.addAccountExplicitly( - AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS_TYPE_2, "p11", null); + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS_TYPE_2, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); updateBroadcastCounters(8); assertEquals(mVisibleAccountsChangedBroadcasts, 5); @@ -2884,7 +3005,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { new String [] {AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1}, "testpackage3"); // opPackageName mAms.addAccountExplicitlyWithVisibility( - AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null, visibility); + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + visibility, + /* callerPackage= */ null); updateBroadcastCounters(2); assertEquals(mVisibleAccountsChangedBroadcasts, 1); @@ -2904,7 +3029,11 @@ public class AccountManagerServiceTest extends AndroidTestCase { mAms.registerAccountListener( new String [] {AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1}, "testpackage"); // opPackageName - mAms.addAccountExplicitly(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "p11", null); + mAms.addAccountExplicitly( + AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, + /* password= */ "p11", + /* extras= */ null, + /* callerPackage= */ null); mAms.setPassword(AccountManagerServiceTestFixtures.ACCOUNT_SUCCESS, "pwd"); updateBroadcastCounters(4); assertEquals(mVisibleAccountsChangedBroadcasts, 2); @@ -2963,7 +3092,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { Account a1 = new Account("account1", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1); - mAms.addAccountExplicitly(a1, "p1", null); + mAms.addAccountExplicitly( + a1, /* password= */ "p1", /* extras= */ null, /* callerPackage= */ null); List<String> errors = Collections.synchronizedList(new ArrayList<>()); int readerCount = 2; ExecutorService es = Executors.newFixedThreadPool(readerCount + 1); @@ -3040,7 +3170,8 @@ public class AccountManagerServiceTest extends AndroidTestCase { Account a1 = new Account("account1", AccountManagerServiceTestFixtures.ACCOUNT_TYPE_1); - mAms.addAccountExplicitly(a1, "p1", null); + mAms.addAccountExplicitly( + a1, /* password= */ "p1", /* extras= */ null, /* callerPackage= */ null); List<String> errors = Collections.synchronizedList(new ArrayList<>()); int readerCount = 2; ExecutorService es = Executors.newFixedThreadPool(readerCount + 1); diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java index 41237c8ae51f..12e0d8bc5d62 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerServiceTest.java @@ -168,7 +168,7 @@ public class ActivityManagerServiceTest { private void mockNoteOperation() { SyncNotedAppOp allowed = new SyncNotedAppOp(AppOpsManager.MODE_ALLOWED, - AppOpsManager.OP_GET_USAGE_STATS, null); + AppOpsManager.OP_GET_USAGE_STATS, null, mContext.getPackageName()); when(mAppOpsService.noteOperation(eq(AppOpsManager.OP_GET_USAGE_STATS), eq(Process.myUid()), nullable(String.class), nullable(String.class), any(Boolean.class), nullable(String.class), any(Boolean.class))).thenReturn(allowed); diff --git a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java index 6bca5e449b34..eace99f61e60 100644 --- a/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/am/ActivityManagerTest.java @@ -52,6 +52,7 @@ import android.server.wm.settings.SettingsSession; import android.support.test.uiautomator.UiDevice; import android.test.suitebuilder.annotation.LargeTest; import android.text.TextUtils; +import android.util.KeyValueListParser; import android.util.Log; import androidx.test.InstrumentationRegistry; @@ -417,6 +418,142 @@ public class ActivityManagerTest { return false; } + @LargeTest + @Test + public void testKillAppIfFasCachedIdle() throws Exception { + final long shortTimeoutMs = 5_000; + final long backgroundSettleMs = 10_000; + final PackageManager pm = mContext.getPackageManager(); + final int uid = pm.getPackageUid(TEST_APP, 0); + final MyUidImportanceListener uidListener1 = new MyUidImportanceListener(uid); + final MyUidImportanceListener uidListener2 = new MyUidImportanceListener(uid); + SettingsSession<String> amConstantsSettings = null; + DeviceConfigSession<Boolean> killForceAppStandByAndCachedIdle = null; + final ActivityManager am = mContext.getSystemService(ActivityManager.class); + final CountDownLatch[] latchHolder = new CountDownLatch[1]; + final H handler = new H(Looper.getMainLooper(), latchHolder); + final Messenger messenger = new Messenger(handler); + try { + am.addOnUidImportanceListener(uidListener1, + RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE); + am.addOnUidImportanceListener(uidListener2, RunningAppProcessInfo.IMPORTANCE_GONE); + toggleScreenOn(true); + + killForceAppStandByAndCachedIdle = new DeviceConfigSession<>( + DeviceConfig.NAMESPACE_ACTIVITY_MANAGER, + ActivityManagerConstants.KEY_KILL_FAS_CACHED_IDLE, + DeviceConfig::getBoolean, + ActivityManagerConstants.DEFAULT_KILL_FAS_CACHED_IDLE); + killForceAppStandByAndCachedIdle.set(true); + amConstantsSettings = new SettingsSession<>( + Settings.Global.getUriFor(Settings.Global.ACTIVITY_MANAGER_CONSTANTS), + Settings.Global::getString, Settings.Global::putString); + final KeyValueListParser parser = new KeyValueListParser(','); + long currentBackgroundSettleMs = + ActivityManagerConstants.DEFAULT_BACKGROUND_SETTLE_TIME; + try { + parser.setString(amConstantsSettings.get()); + currentBackgroundSettleMs = parser.getLong( + ActivityManagerConstants.KEY_BACKGROUND_SETTLE_TIME, + ActivityManagerConstants.DEFAULT_BACKGROUND_SETTLE_TIME); + } catch (IllegalArgumentException e) { + } + // Drain queue to make sure the existing UID_IDLE_MSG has been processed. + Thread.sleep(currentBackgroundSettleMs); + amConstantsSettings.set( + ActivityManagerConstants.KEY_BACKGROUND_SETTLE_TIME + "=" + backgroundSettleMs); + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND allow"); + + final Intent intent = new Intent(ACTION_FGS_STATS_TEST); + final ComponentName cn = ComponentName.unflattenFromString( + TEST_APP + "/" + TEST_FGS_CLASS); + final Bundle bundle = new Bundle(); + intent.setComponent(cn); + bundle.putBinder(EXTRA_MESSENGER, messenger.getBinder()); + intent.putExtras(bundle); + + // Start the FGS. + latchHolder[0] = new CountDownLatch(1); + mContext.startForegroundService(intent); + assertTrue("Timed out to start fg service", uidListener1.waitFor( + RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs)); + assertTrue("Timed out to get the remote messenger", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Stop the FGS, it shouldn't be killed because it's not in FAS state. + latchHolder[0] = new CountDownLatch(1); + handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null); + assertTrue("Timed out to wait for stop fg", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Set the FAS state. + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND deny"); + // Now it should've been killed. + assertTrue("Should have been killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Start the FGS. + // Temporarily allow RUN_ANY_IN_BACKGROUND to start FGS. + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND allow"); + latchHolder[0] = new CountDownLatch(1); + mContext.startForegroundService(intent); + assertTrue("Timed out to start fg service", uidListener1.waitFor( + RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs)); + assertTrue("Timed out to get the remote messenger", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND deny"); + // It shouldn't be killed since it's not cached. + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Stop the FGS, it should get killed because it's cached & uid idle & in FAS state. + latchHolder[0] = new CountDownLatch(1); + handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null); + assertTrue("Timed out to wait for stop fg", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + assertTrue("Should have been killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Disable this FAS cached idle kill feature. + killForceAppStandByAndCachedIdle.set(false); + + // Start the FGS. + // Temporarily allow RUN_ANY_IN_BACKGROUND to start FGS. + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND allow"); + latchHolder[0] = new CountDownLatch(1); + mContext.startForegroundService(intent); + assertTrue("Timed out to start fg service", uidListener1.waitFor( + RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE, shortTimeoutMs)); + assertTrue("Timed out to get the remote messenger", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND deny"); + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + + // Stop the FGS, it shouldn't be killed because the feature has been turned off. + latchHolder[0] = new CountDownLatch(1); + handler.sendRemoteMessage(H.MSG_STOP_FOREGROUND, 0, 0, null); + assertTrue("Timed out to wait for stop fg", latchHolder[0].await( + shortTimeoutMs, TimeUnit.MILLISECONDS)); + assertFalse("FGS shouldn't be killed", uidListener2.waitFor( + RunningAppProcessInfo.IMPORTANCE_GONE, backgroundSettleMs + shortTimeoutMs)); + } finally { + runShellCommand("cmd appops set " + TEST_APP + " RUN_ANY_IN_BACKGROUND default"); + if (amConstantsSettings != null) { + amConstantsSettings.close(); + } + if (killForceAppStandByAndCachedIdle != null) { + killForceAppStandByAndCachedIdle.close(); + } + am.removeOnUidImportanceListener(uidListener1); + am.removeOnUidImportanceListener(uidListener2); + } + } + /** * Make sure the screen state. */ diff --git a/services/tests/servicestests/src/com/android/server/compat/CompatConfigBuilder.java b/services/tests/servicestests/src/com/android/server/compat/CompatConfigBuilder.java index 7bdc87ef6bd7..6b9aa18b9f8f 100644 --- a/services/tests/servicestests/src/com/android/server/compat/CompatConfigBuilder.java +++ b/services/tests/servicestests/src/com/android/server/compat/CompatConfigBuilder.java @@ -115,7 +115,12 @@ class CompatConfigBuilder { return this; } - CompatConfigBuilder addOverridableChangeWithId(long id) { + CompatConfigBuilder addEnabledOverridableChangeWithId(long id) { + mChanges.add(new CompatChange(id, "", -1, -1, false, false, "", true)); + return this; + } + + CompatConfigBuilder addDisabledOverridableChangeWithId(long id) { mChanges.add(new CompatChange(id, "", -1, -1, true, false, "", true)); return this; } diff --git a/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java b/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java index a866363f46e6..0248b9b88788 100644 --- a/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java +++ b/services/tests/servicestests/src/com/android/server/compat/CompatConfigTest.java @@ -36,6 +36,7 @@ import androidx.test.runner.AndroidJUnit4; import com.android.internal.compat.AndroidBuildClassifier; import com.android.internal.compat.CompatibilityOverrideConfig; +import com.android.internal.compat.CompatibilityOverridesToRemoveConfig; import org.junit.Before; import org.junit.Test; @@ -50,6 +51,10 @@ import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.Paths; import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; import java.util.UUID; @RunWith(AndroidJUnit4.class) @@ -249,7 +254,7 @@ public class CompatConfigTest { when(packageManager.getApplicationInfo(eq("com.some.package"), anyInt())) .thenReturn(applicationInfo); - // Force the validator to prevent overriding the change by using a user build. + // Force the validator to prevent overriding non-overridable changes by using a user build. when(mBuildClassifier.isDebuggableBuild()).thenReturn(false); when(mBuildClassifier.isFinalBuild()).thenReturn(true); @@ -261,10 +266,12 @@ public class CompatConfigTest { @Test public void testInstallerCanSetOverrides() throws Exception { - final long changeId = 1234L; - final int installerUid = 23; + final long disabledChangeId1 = 1234L; + final long disabledChangeId2 = 1235L; + // We make disabledChangeId2 non-overridable to make sure it is ignored. CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext) - .addOverridableChangeWithId(1234L) + .addDisabledOverridableChangeWithId(disabledChangeId1) + .addDisabledChangeWithId(disabledChangeId2) .build(); ApplicationInfo applicationInfo = ApplicationInfoBuilder.create() .withPackageName("com.some.package") @@ -274,19 +281,56 @@ public class CompatConfigTest { when(packageManager.getApplicationInfo(eq("com.some.package"), anyInt())) .thenReturn(applicationInfo); - // Force the validator to prevent overriding the change by using a user build. + // Force the validator to prevent overriding non-overridable changes by using a user build. when(mBuildClassifier.isDebuggableBuild()).thenReturn(false); when(mBuildClassifier.isFinalBuild()).thenReturn(true); CompatibilityOverrideConfig config = new CompatibilityOverrideConfig( - Collections.singletonMap(1234L, + Collections.singletonMap(disabledChangeId1, new PackageOverride.Builder() .setMaxVersionCode(99L) .setEnabled(true) .build())); compatConfig.addOverrides(config, "com.some.package"); - assertThat(compatConfig.isChangeEnabled(1234L, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId1, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId2, applicationInfo)).isFalse(); + } + + @Test + public void testPreventInstallerSetNonOverridable() throws Exception { + final long disabledChangeId1 = 1234L; + final long disabledChangeId2 = 1235L; + final long disabledChangeId3 = 1236L; + CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext) + .addDisabledOverridableChangeWithId(disabledChangeId1) + .addDisabledChangeWithId(disabledChangeId2) + .addDisabledOverridableChangeWithId(disabledChangeId3) + .build(); + ApplicationInfo applicationInfo = ApplicationInfoBuilder.create() + .withPackageName("com.some.package") + .build(); + PackageManager packageManager = mock(PackageManager.class); + when(mContext.getPackageManager()).thenReturn(packageManager); + when(packageManager.getApplicationInfo(eq("com.some.package"), anyInt())) + .thenReturn(applicationInfo); + + // Force the validator to prevent overriding non-overridable changes by using a user build. + when(mBuildClassifier.isDebuggableBuild()).thenReturn(false); + when(mBuildClassifier.isFinalBuild()).thenReturn(true); + + Map<Long, PackageOverride> overrides = new HashMap<>(); + overrides.put(disabledChangeId1, new PackageOverride.Builder().setEnabled(true).build()); + overrides.put(disabledChangeId2, new PackageOverride.Builder().setEnabled(true).build()); + overrides.put(disabledChangeId3, new PackageOverride.Builder().setEnabled(true).build()); + CompatibilityOverrideConfig config = new CompatibilityOverrideConfig(overrides); + + assertThrows(SecurityException.class, + () -> compatConfig.addOverrides(config, "com.some.package") + ); + assertThat(compatConfig.isChangeEnabled(disabledChangeId1, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId2, applicationInfo)).isFalse(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId3, applicationInfo)).isFalse(); } @Test @@ -459,7 +503,7 @@ public class CompatConfigTest { assertThat(compatConfig.isChangeEnabled(1234L, applicationInfo)).isTrue(); // Reject all override attempts. - // Force the validator to prevent overriding the change by using a user build. + // Force the validator to prevent overriding non-overridable changes by using a user build. when(mBuildClassifier.isDebuggableBuild()).thenReturn(false); when(mBuildClassifier.isFinalBuild()).thenReturn(false); // Try to turn off change, but validator prevents it. @@ -481,7 +525,7 @@ public class CompatConfigTest { .thenReturn(applicationInfo); // Reject all override attempts. - // Force the validator to prevent overriding the change by using a user build. + // Force the validator to prevent overriding non-overridable changes by using a user build. when(mBuildClassifier.isDebuggableBuild()).thenReturn(false); when(mBuildClassifier.isFinalBuild()).thenReturn(true); // Try to remove a non existing override, and it doesn't fail. @@ -509,6 +553,90 @@ public class CompatConfigTest { } @Test + public void testInstallerCanRemoveOverrides() throws Exception { + final long disabledChangeId1 = 1234L; + final long disabledChangeId2 = 1235L; + final long enabledChangeId = 1236L; + // We make disabledChangeId2 non-overridable to make sure it is ignored. + CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext) + .addDisabledOverridableChangeWithId(disabledChangeId1) + .addDisabledChangeWithId(disabledChangeId2) + .addEnabledOverridableChangeWithId(enabledChangeId) + .build(); + ApplicationInfo applicationInfo = ApplicationInfoBuilder.create() + .withPackageName("com.some.package") + .build(); + when(mPackageManager.getApplicationInfo(eq("com.some.package"), anyInt())) + .thenReturn(applicationInfo); + + assertThat(compatConfig.addOverride(disabledChangeId1, "com.some.package", true)).isTrue(); + assertThat(compatConfig.addOverride(disabledChangeId2, "com.some.package", true)).isTrue(); + assertThat(compatConfig.addOverride(enabledChangeId, "com.some.package", false)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId1, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId2, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(enabledChangeId, applicationInfo)).isFalse(); + + // Force the validator to prevent overriding non-overridable changes by using a user build. + when(mBuildClassifier.isDebuggableBuild()).thenReturn(false); + when(mBuildClassifier.isFinalBuild()).thenReturn(true); + + Set<Long> overridesToRemove = new HashSet<>(); + overridesToRemove.add(disabledChangeId1); + overridesToRemove.add(enabledChangeId); + CompatibilityOverridesToRemoveConfig config = new CompatibilityOverridesToRemoveConfig( + overridesToRemove); + + compatConfig.removePackageOverrides(config, "com.some.package"); + assertThat(compatConfig.isChangeEnabled(disabledChangeId1, applicationInfo)).isFalse(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId2, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(enabledChangeId, applicationInfo)).isTrue(); + } + + @Test + public void testPreventInstallerRemoveNonOverridable() throws Exception { + final long disabledChangeId1 = 1234L; + final long disabledChangeId2 = 1235L; + final long disabledChangeId3 = 1236L; + CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext) + .addDisabledOverridableChangeWithId(disabledChangeId1) + .addDisabledChangeWithId(disabledChangeId2) + .addDisabledOverridableChangeWithId(disabledChangeId3) + .build(); + ApplicationInfo applicationInfo = ApplicationInfoBuilder.create() + .withPackageName("com.some.package") + .build(); + PackageManager packageManager = mock(PackageManager.class); + when(mContext.getPackageManager()).thenReturn(packageManager); + when(packageManager.getApplicationInfo(eq("com.some.package"), anyInt())) + .thenReturn(applicationInfo); + + assertThat(compatConfig.addOverride(disabledChangeId1, "com.some.package", true)).isTrue(); + assertThat(compatConfig.addOverride(disabledChangeId2, "com.some.package", true)).isTrue(); + assertThat(compatConfig.addOverride(disabledChangeId3, "com.some.package", true)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId1, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId2, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId3, applicationInfo)).isTrue(); + + // Force the validator to prevent overriding non-overridable changes by using a user build. + when(mBuildClassifier.isDebuggableBuild()).thenReturn(false); + when(mBuildClassifier.isFinalBuild()).thenReturn(true); + + Set<Long> overridesToRemove = new HashSet<>(); + overridesToRemove.add(disabledChangeId1); + overridesToRemove.add(disabledChangeId2); + overridesToRemove.add(disabledChangeId3); + CompatibilityOverridesToRemoveConfig config = new CompatibilityOverridesToRemoveConfig( + overridesToRemove); + + assertThrows(SecurityException.class, + () -> compatConfig.removePackageOverrides(config, "com.some.package") + ); + assertThat(compatConfig.isChangeEnabled(disabledChangeId1, applicationInfo)).isFalse(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId2, applicationInfo)).isTrue(); + assertThat(compatConfig.isChangeEnabled(disabledChangeId3, applicationInfo)).isTrue(); + } + + @Test public void testEnableTargetSdkChangesForPackage() throws Exception { CompatConfig compatConfig = CompatConfigBuilder.create(mBuildClassifier, mContext) .addEnabledChangeWithId(1L) diff --git a/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java b/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java index a2664e5f3b0a..9accd49bc392 100644 --- a/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java +++ b/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java @@ -98,7 +98,7 @@ public class PlatformCompatTest { .addEnableAfterSdkChangeWithId(Build.VERSION_CODES.Q, 5L) .addEnableAfterSdkChangeWithId(Build.VERSION_CODES.R, 6L) .addLoggingOnlyChangeWithId(7L) - .addOverridableChangeWithId(8L) + .addDisabledOverridableChangeWithId(8L) .build(); mPlatformCompat = new PlatformCompat(mContext, mCompatConfig, mBuildClassifier); assertThat(mPlatformCompat.listAllChanges()).asList().containsExactly( diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java index 011b8f899753..4f97c2660ba7 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/DevicePowerStatusActionTest.java @@ -282,4 +282,17 @@ public class DevicePowerStatusActionTest { verify(mCallbackMock).onComplete(HdmiControlManager.POWER_STATUS_STANDBY); } + + @Test + public void pendingActionDoesNotBlockSendingStandby() throws Exception { + mPlaybackDevice.addAndStartAction(mDevicePowerStatusAction); + mTestLooper.dispatchAll(); + mNativeWrapper.clearResultMessages(); + + mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); + mTestLooper.dispatchAll(); + HdmiCecMessage standbyMessage = HdmiCecMessageBuilder.buildStandby( + mPlaybackDevice.mAddress, ADDR_TV); + assertThat(mNativeWrapper.getResultMessages()).contains(standbyMessage); + } } diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java index a29a76b438df..1ac01509bb6f 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java @@ -1046,10 +1046,6 @@ public class HdmiCecLocalDevicePlaybackTest { assertThat(mHdmiCecLocalDevicePlayback.isActiveSource()).isTrue(); // 4. DUT turned off. mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); - // TODO(b/184939731): remove waiting times once pending actions no longer block <Standby> - mTestLooper.moveTimeForward(TIMEOUT_MS); - mTestLooper.dispatchAll(); - mTestLooper.moveTimeForward(TIMEOUT_MS); mTestLooper.dispatchAll(); HdmiCecMessage standbyMessageBroadcast = HdmiCecMessageBuilder.buildStandby( mHdmiCecLocalDevicePlayback.mAddress, ADDR_BROADCAST); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java index c7a508a9d626..8ee983f7375f 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTvTest.java @@ -295,10 +295,6 @@ public class HdmiCecLocalDeviceTvTest { HdmiControlManager.TV_SEND_STANDBY_ON_SLEEP_ENABLED); mTestLooper.dispatchAll(); mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); - // TODO(184939731): remove waiting times once pending actions no longer block <Standby> - mTestLooper.moveTimeForward(TIMEOUT_MS); - mTestLooper.dispatchAll(); - mTestLooper.moveTimeForward(TIMEOUT_MS); mTestLooper.dispatchAll(); HdmiCecMessage standby = HdmiCecMessageBuilder.buildStandby(ADDR_TV, ADDR_BROADCAST); assertThat(mNativeWrapper.getResultMessages()).contains(standby); diff --git a/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java index 48931739d9cf..826438fc8ddf 100644 --- a/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java +++ b/services/tests/servicestests/src/com/android/server/hdmi/OneTouchPlayActionTest.java @@ -526,6 +526,43 @@ public class OneTouchPlayActionTest { assertThat(playbackDevice.isActiveSource()).isTrue(); } + @Test + public void pendingActionDoesNotBlockSendingStandby_Cec14b() throws Exception { + setUp(true); + + mHdmiControlService.getHdmiCecNetwork().addCecDevice(INFO_TV); + HdmiCecLocalDevicePlayback playbackDevice = new HdmiCecLocalDevicePlayback( + mHdmiControlService); + playbackDevice.init(); + mLocalDevices.add(playbackDevice); + playbackDevice.mService.getHdmiCecConfig().setStringValue( + HdmiControlManager.CEC_SETTING_NAME_POWER_CONTROL_MODE, + HdmiControlManager.POWER_CONTROL_MODE_TV); + mHdmiControlService.allocateLogicalAddress(mLocalDevices, INITIATED_BY_ENABLE_CEC); + mTestLooper.dispatchAll(); + mNativeWrapper.clearResultMessages(); + + TestActionTimer actionTimer = new TestActionTimer(); + TestCallback callback = new TestCallback(); + OneTouchPlayAction action = createOneTouchPlayAction(playbackDevice, actionTimer, callback, + false); + playbackDevice.addAndStartAction(action); + mTestLooper.dispatchAll(); + + assertThat(actionTimer.getState()).isEqualTo(STATE_WAITING_FOR_REPORT_POWER_STATUS); + for (int i = 0; i < 5; ++i) { + action.handleTimerEvent(STATE_WAITING_FOR_REPORT_POWER_STATUS); + mTestLooper.dispatchAll(); + } + mNativeWrapper.clearResultMessages(); + + mHdmiControlService.onStandby(HdmiControlService.STANDBY_SCREEN_OFF); + mTestLooper.dispatchAll(); + HdmiCecMessage standbyMessage = HdmiCecMessageBuilder.buildStandby( + playbackDevice.mAddress, ADDR_TV); + assertThat(mNativeWrapper.getResultMessages()).contains(standbyMessage); + } + private static class TestActionTimer implements ActionTimer { private int mState; diff --git a/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java b/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java index 8b35af80e47f..2efebbf044c9 100644 --- a/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java +++ b/services/tests/servicestests/src/com/android/server/job/JobStoreTest.java @@ -374,7 +374,7 @@ public class JobStoreTest { .setPersisted(true) .setRequiredNetwork(new NetworkRequest.Builder() .addCapability(NET_CAPABILITY_IMS) - .addUnwantedCapability(NET_CAPABILITY_OEM_PAID) + .addForbiddenCapability(NET_CAPABILITY_OEM_PAID) .build()) .build()); } diff --git a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java index 6c1e915b53b7..b112f3fc0014 100644 --- a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java @@ -693,7 +693,6 @@ public final class DataManagerTest { NotificationListenerService listenerService = mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY); listenerService.onNotificationPosted(mStatusBarNotification); - ConversationChannel result = mDataManager.getConversation(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID); @@ -1361,6 +1360,27 @@ public final class DataManagerTest { } @Test + public void testNotificationRemoved() { + mDataManager.onUserUnlocked(USER_ID_PRIMARY); + + ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID, + buildPerson()); + shortcut.setCached(ShortcutInfo.FLAG_CACHED_NOTIFICATIONS); + mDataManager.addOrUpdateConversationInfo(shortcut); + + NotificationListenerService listenerService = + mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY); + listenerService.onNotificationPosted(mStatusBarNotification); + listenerService.onNotificationRemoved(mStatusBarNotification, null, + NotificationListenerService.REASON_CANCEL); + + ConversationInfo conversationInfo = mDataManager.getPackage(TEST_PKG_NAME, USER_ID_PRIMARY) + .getConversationStore() + .getConversation(TEST_SHORTCUT_ID); + assertEquals(conversationInfo.getLastEventTimestamp(), System.currentTimeMillis()); + } + + @Test public void testRemoveRecentConversation() { mDataManager.onUserUnlocked(USER_ID_PRIMARY); diff --git a/services/tests/servicestests/src/com/android/server/pm/WatchedIntentHandlingTest.java b/services/tests/servicestests/src/com/android/server/pm/WatchedIntentHandlingTest.java index 153938cbbbf1..b2c300255aef 100644 --- a/services/tests/servicestests/src/com/android/server/pm/WatchedIntentHandlingTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/WatchedIntentHandlingTest.java @@ -18,6 +18,7 @@ package com.android.server.pm; import static org.junit.Assert.assertTrue; +import android.content.ComponentName; import android.content.IntentFilter; import androidx.test.filters.SmallTest; @@ -83,4 +84,80 @@ public class WatchedIntentHandlingTest { watcher.verifyNoChangeReported("pulled snapshot"); } + @Test + public void testPreferredActivity() { + // Create a bunch of nondescript component names + ComponentName component = new ComponentName("Package_A", "Class_A"); + ComponentName[] components = new ComponentName[10]; + for (int i = 0; i < components.length; i++) { + components[i] = new ComponentName("Package_" + i, "Class_" + i); + } + IntentFilter i = new IntentFilter("TEST_ACTION"); + PreferredActivity a = new PreferredActivity(i, 1, components, component, true); + final WatchableTester watcher = new WatchableTester(a, "PreferredIntentResolver"); + watcher.register(); + + // Verify that the initial IntentFilter and the PreferredActivity are truly + // independent. This is in addition to verifying that the PreferredActivity + // properly reports its changes. + i.setPriority(i.getPriority() + 1); + watcher.verifyNoChangeReported("indepenent intent"); + a.setPriority(a.getPriority() + 2); + watcher.verifyChangeReported("dependent intent"); + // Verify independence of i and a + assertTrue(i.getPriority() != a.getPriority()); + + // Verify that snapshots created from the PreferredActivity are stable when the + // source PreferredActivity changes. + a.setPriority(3); + watcher.verifyChangeReported("initialize intent priority"); + PreferredActivity s1 = a.snapshot(); + watcher.verifyNoChangeReported("pulled snapshot"); + // Verify snapshot cache. In the absence of changes to the PreferredActivity, the + // snapshot will not be rebuilt and will be the exact same object as before. + assertTrue(s1 == a.snapshot()); + // Force a change by incrementing the priority. The next snapshot must be + // different from the first snapshot. + a.setPriority(a.getPriority() + 1); + watcher.verifyChangeReported("increment priority"); + PreferredActivity s2 = a.snapshot(); + watcher.verifyNoChangeReported("pulled second snapshot"); + assertTrue(s1 != s2); + // Assert the two snapshots are different. s1 should have priority 3 and s2 + // should have priority 4. s2 should match the current value in a. + assertTrue(a.getPriority() == s2.getPriority()); + assertTrue(s1.getPriority() != s2.getPriority()); + } + + @Test + public void testPreferredIntentResolver() { + PreferredIntentResolver r = new PreferredIntentResolver(); + final WatchableTester watcher = new WatchableTester(r, "PreferredIntentResolver"); + watcher.register(); + // Create a bunch of nondescript component names + ComponentName component = new ComponentName("Package_A", "Class_A"); + ComponentName[] components = new ComponentName[10]; + for (int i = 0; i < components.length; i++) { + components[i] = new ComponentName("Package_" + i, "Class_" + i); + } + IntentFilter i = new IntentFilter("TEST_ACTION"); + PreferredActivity a1 = new PreferredActivity(i, 1, components, component, true); + + r.addFilter(a1); + watcher.verifyChangeReported("addFilter"); + i.setPriority(i.getPriority() + 1); + watcher.verifyNoChangeReported("indepenent intent"); + a1.setPriority(a1.getPriority() + 1); + watcher.verifyChangeReported("dependent intent"); + + PreferredActivity s1 = a1.snapshot(); + watcher.verifyNoChangeReported("pulled snapshot"); + // Verify snapshot cache. + assertTrue(s1 == a1.snapshot()); + a1.setPriority(a1.getPriority() + 1); + watcher.verifyChangeReported("increment priority"); + PreferredActivity s2 = a1.snapshot(); + watcher.verifyNoChangeReported("pulled second snapshot"); + assertTrue(s1.getPriority() != s2.getPriority()); + } } diff --git a/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java b/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java index f255c67cf47d..9679e58c4e7d 100644 --- a/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java +++ b/services/tests/servicestests/src/com/android/server/utils/WatcherTest.java @@ -916,5 +916,14 @@ public class WatcherTest { assertTrue(s1 != s2); assertTrue(leafA.get() == s1.get() + 1); assertTrue(leafA.get() == s2.get()); + + // Test sealed snapshots + SnapshotCache<Leaf> sealed = new SnapshotCache.Sealed(); + try { + Leaf x1 = sealed.snapshot(); + fail(name + " sealed snapshot did not throw"); + } catch (UnsupportedOperationException e) { + // This is the passing scenario - the exception is expected. + } } } diff --git a/services/tests/uiservicestests/src/com/android/server/UiModeManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/UiModeManagerServiceTest.java index 81c237b8ccac..4b3771b95c05 100644 --- a/services/tests/uiservicestests/src/com/android/server/UiModeManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/UiModeManagerServiceTest.java @@ -55,7 +55,7 @@ import static org.testng.Assert.assertThrows; import android.Manifest; import android.app.AlarmManager; -import android.app.IOnProjectionStateChangeListener; +import android.app.IOnProjectionStateChangedListener; import android.app.IUiModeManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; @@ -669,46 +669,46 @@ public class UiModeManagerServiceTest extends UiServiceTestCase { } @Test - public void addOnProjectionStateChangeListener_enforcesReadProjStatePermission() { + public void addOnProjectionStateChangedListener_enforcesReadProjStatePermission() { doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.READ_PROJECTION_STATE), any()); - IOnProjectionStateChangeListener listener = mock(IOnProjectionStateChangeListener.class); + IOnProjectionStateChangedListener listener = mock(IOnProjectionStateChangedListener.class); - assertThrows(SecurityException.class, () -> mService.addOnProjectionStateChangeListener( + assertThrows(SecurityException.class, () -> mService.addOnProjectionStateChangedListener( listener, PROJECTION_TYPE_ALL)); } @Test - public void addOnProjectionStateChangeListener_callsListenerIfProjectionActive() + public void addOnProjectionStateChangedListener_callsListenerIfProjectionActive() throws Exception { when(mPackageManager.getPackageUid(PACKAGE_NAME, 0)).thenReturn(TestInjector.CALLING_UID); mService.requestProjection(mBinder, PROJECTION_TYPE_AUTOMOTIVE, PACKAGE_NAME); assertEquals(PROJECTION_TYPE_AUTOMOTIVE, mService.getActiveProjectionTypes()); - IOnProjectionStateChangeListener listener = mock(IOnProjectionStateChangeListener.class); + IOnProjectionStateChangedListener listener = mock(IOnProjectionStateChangedListener.class); when(listener.asBinder()).thenReturn(mBinder); // Any binder will do - mService.addOnProjectionStateChangeListener(listener, PROJECTION_TYPE_ALL); + mService.addOnProjectionStateChangedListener(listener, PROJECTION_TYPE_ALL); verify(listener).onProjectionStateChanged(eq(PROJECTION_TYPE_AUTOMOTIVE), eq(List.of(PACKAGE_NAME))); } @Test - public void removeOnProjectionStateChangeListener_enforcesReadProjStatePermission() { + public void removeOnProjectionStateChangedListener_enforcesReadProjStatePermission() { doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission( eq(android.Manifest.permission.READ_PROJECTION_STATE), any()); - IOnProjectionStateChangeListener listener = mock(IOnProjectionStateChangeListener.class); + IOnProjectionStateChangedListener listener = mock(IOnProjectionStateChangedListener.class); - assertThrows(SecurityException.class, () -> mService.removeOnProjectionStateChangeListener( + assertThrows(SecurityException.class, () -> mService.removeOnProjectionStateChangedListener( listener)); } @Test - public void removeOnProjectionStateChangeListener() throws Exception { - IOnProjectionStateChangeListener listener = mock(IOnProjectionStateChangeListener.class); + public void removeOnProjectionStateChangedListener() throws Exception { + IOnProjectionStateChangedListener listener = mock(IOnProjectionStateChangedListener.class); when(listener.asBinder()).thenReturn(mBinder); // Any binder will do. - mService.addOnProjectionStateChangeListener(listener, PROJECTION_TYPE_ALL); + mService.addOnProjectionStateChangedListener(listener, PROJECTION_TYPE_ALL); - mService.removeOnProjectionStateChangeListener(listener); + mService.removeOnProjectionStateChangedListener(listener); // Now set automotive projection, should not call back. when(mPackageManager.getPackageUid(PACKAGE_NAME, 0)).thenReturn(TestInjector.CALLING_UID); mService.requestProjection(mBinder, PROJECTION_TYPE_AUTOMOTIVE, PACKAGE_NAME); @@ -716,10 +716,10 @@ public class UiModeManagerServiceTest extends UiServiceTestCase { } @Test - public void projectionStateChangeListener_calledWhenStateChanges() throws Exception { - IOnProjectionStateChangeListener listener = mock(IOnProjectionStateChangeListener.class); + public void projectionStateChangedListener_calledWhenStateChanges() throws Exception { + IOnProjectionStateChangedListener listener = mock(IOnProjectionStateChangedListener.class); when(listener.asBinder()).thenReturn(mBinder); // Any binder will do. - mService.addOnProjectionStateChangeListener(listener, PROJECTION_TYPE_ALL); + mService.addOnProjectionStateChangedListener(listener, PROJECTION_TYPE_ALL); verify(listener, atLeastOnce()).asBinder(); // Called twice during register. // No calls initially, no projection state set. @@ -748,19 +748,19 @@ public class UiModeManagerServiceTest extends UiServiceTestCase { } @Test - public void projectionStateChangeListener_calledForAnyRelevantStateChange() throws Exception { + public void projectionStateChangedListener_calledForAnyRelevantStateChange() throws Exception { int fakeProjectionType = 0x0002; int otherFakeProjectionType = 0x0004; String otherPackageName = "Internet Arms"; when(mPackageManager.getPackageUid(PACKAGE_NAME, 0)).thenReturn(TestInjector.CALLING_UID); when(mPackageManager.getPackageUid(otherPackageName, 0)) .thenReturn(TestInjector.CALLING_UID); - IOnProjectionStateChangeListener listener = mock(IOnProjectionStateChangeListener.class); + IOnProjectionStateChangedListener listener = mock(IOnProjectionStateChangedListener.class); when(listener.asBinder()).thenReturn(mBinder); // Any binder will do. - IOnProjectionStateChangeListener listener2 = mock(IOnProjectionStateChangeListener.class); + IOnProjectionStateChangedListener listener2 = mock(IOnProjectionStateChangedListener.class); when(listener2.asBinder()).thenReturn(mBinder); // Any binder will do. - mService.addOnProjectionStateChangeListener(listener, fakeProjectionType); - mService.addOnProjectionStateChangeListener(listener2, + mService.addOnProjectionStateChangedListener(listener, fakeProjectionType); + mService.addOnProjectionStateChangedListener(listener2, fakeProjectionType | otherFakeProjectionType); verify(listener, atLeastOnce()).asBinder(); // Called twice during register. verify(listener2, atLeastOnce()).asBinder(); // Called twice during register. @@ -795,11 +795,11 @@ public class UiModeManagerServiceTest extends UiServiceTestCase { } @Test - public void projectionStateChangeListener_unregisteredOnDeath() throws Exception { - IOnProjectionStateChangeListener listener = mock(IOnProjectionStateChangeListener.class); + public void projectionStateChangedListener_unregisteredOnDeath() throws Exception { + IOnProjectionStateChangedListener listener = mock(IOnProjectionStateChangedListener.class); IBinder listenerBinder = mock(IBinder.class); when(listener.asBinder()).thenReturn(listenerBinder); - mService.addOnProjectionStateChangeListener(listener, PROJECTION_TYPE_ALL); + mService.addOnProjectionStateChangedListener(listener, PROJECTION_TYPE_ALL); ArgumentCaptor<IBinder.DeathRecipient> listenerDeathRecipient = ArgumentCaptor.forClass( IBinder.DeathRecipient.class); verify(listenerBinder).linkToDeath(listenerDeathRecipient.capture(), anyInt()); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java index 9ac755f78a06..ab545266466e 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenersTest.java @@ -207,6 +207,22 @@ public class NotificationListenersTest extends UiServiceTestCase { } @Test + public void testEnsureFilters_newServiceWithMetadata_namesNotNumbers() { + ServiceInfo si = new ServiceInfo(); + si.packageName = "new"; + si.name = "comp"; + si.metaData = new Bundle(); + si.metaData.putString(NotificationListenerService.META_DATA_DEFAULT_FILTER_TYPES, + "conversations,ALERTING"); + + mListeners.ensureFilters(si, 0); + + assertThat(mListeners.getNotificationListenerFilter( + Pair.create(si.getComponentName(), 0)).getTypes()) + .isEqualTo(FLAG_FILTER_TYPE_CONVERSATIONS | FLAG_FILTER_TYPE_ALERTING); + } + + @Test public void testEnsureFilters_newServiceWithMetadata_onlyOneListed() { ServiceInfo si = new ServiceInfo(); si.packageName = "new"; @@ -237,6 +253,22 @@ public class NotificationListenersTest extends UiServiceTestCase { } @Test + public void testEnsureFilters_newServiceWithMetadata_disabledTypes_mixedText() { + ServiceInfo si = new ServiceInfo(); + si.packageName = "new"; + si.name = "comp"; + si.metaData = new Bundle(); + si.metaData.putString(NotificationListenerService.META_DATA_DISABLED_FILTER_TYPES, + "1,alerting"); + + mListeners.ensureFilters(si, 0); + + assertThat(mListeners.getNotificationListenerFilter( + Pair.create(si.getComponentName(), 0)).getTypes()) + .isEqualTo(FLAG_FILTER_TYPE_SILENT | FLAG_FILTER_TYPE_ONGOING); + } + + @Test public void testEnsureFilters_newServiceWithMetadata_metaDataDisagrees() { ServiceInfo si = new ServiceInfo(); si.packageName = "new"; diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java index da613e6f4d1d..38c470da5029 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java @@ -1134,6 +1134,48 @@ public class NotificationRecordTest extends UiServiceTestCase { } @Test + public void testIsConversation_shortcutHasOneBot_targetsR() { + StatusBarNotification sbn = getMessagingStyleNotification(PKG_R); + NotificationRecord record = new NotificationRecord(mMockContext, sbn, channel); + ShortcutInfo shortcutMock = mock(ShortcutInfo.class); + when(shortcutMock.getPersons()).thenReturn(new Person[]{ + new Person.Builder().setName("Bot").setBot(true).build() + }); + record.setShortcutInfo(shortcutMock); + + assertFalse(record.isConversation()); + } + + @Test + public void testIsConversation_shortcutHasOnePerson_targetsR() { + StatusBarNotification sbn = getMessagingStyleNotification(PKG_R); + NotificationRecord record = new NotificationRecord(mMockContext, sbn, channel); + ShortcutInfo shortcutMock = mock(ShortcutInfo.class); + when(shortcutMock.getPersons()).thenReturn(new Person[]{ + new Person.Builder().setName("Person").setBot(false).build() + }); + record.setShortcutInfo(shortcutMock); + + assertTrue(record.isConversation()); + assertEquals(FLAG_FILTER_TYPE_CONVERSATIONS, record.getNotificationType()); + } + + @Test + public void testIsConversation_shortcutHasOneBotOnePerson_targetsR() { + StatusBarNotification sbn = getMessagingStyleNotification(PKG_R); + NotificationRecord record = new NotificationRecord(mMockContext, sbn, channel); + ShortcutInfo shortcutMock = mock(ShortcutInfo.class); + when(shortcutMock.getPersons()).thenReturn(new Person[]{ + new Person.Builder().setName("Bot").setBot(true).build(), + new Person.Builder().setName("Person").setBot(false).build() + }); + record.setShortcutInfo(shortcutMock); + + assertTrue(record.isConversation()); + assertEquals(FLAG_FILTER_TYPE_CONVERSATIONS, record.getNotificationType()); + } + + @Test public void testIsConversation_noShortcut() { StatusBarNotification sbn = getMessagingStyleNotification(); NotificationRecord record = new NotificationRecord(mMockContext, sbn, channel); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java index 1b26352abe35..3a51ff2fb5fa 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java @@ -375,19 +375,27 @@ public class PreferencesHelperTest extends UiServiceTestCase { when(mPm.getPackageUidAsUser(eq(packageName), anyInt())).thenReturn(uid); } + private static NotificationChannel createNotificationChannel(String id, String name, + int importance) { + NotificationChannel channel = new NotificationChannel(id, name, importance); + channel.setSound(SOUND_URI, Notification.AUDIO_ATTRIBUTES_DEFAULT); + return channel; + } + @Test public void testWriteXml_onlyBackupsTargetUser() throws Exception { // Setup package notifications. String package0 = "test.package.user0"; int uid0 = 1001; setUpPackageWithUid(package0, uid0); - NotificationChannel channel0 = new NotificationChannel("id0", "name0", IMPORTANCE_HIGH); + NotificationChannel channel0 = createNotificationChannel("id0", "name0", IMPORTANCE_HIGH); assertTrue(mHelper.createNotificationChannel(package0, uid0, channel0, true, false)); String package10 = "test.package.user10"; int uid10 = 1001001; setUpPackageWithUid(package10, uid10); - NotificationChannel channel10 = new NotificationChannel("id10", "name10", IMPORTANCE_HIGH); + NotificationChannel channel10 = createNotificationChannel("id10", "name10", + IMPORTANCE_HIGH); assertTrue(mHelper.createNotificationChannel(package10, uid10, channel10, true, false)); ByteArrayOutputStream baos = writeXmlAndPurge(package10, uid10, true, 10); @@ -412,7 +420,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { String package0 = "test.package.user0"; int uid0 = 1001; setUpPackageWithUid(package0, uid0); - NotificationChannel channel0 = new NotificationChannel("id0", "name0", IMPORTANCE_HIGH); + NotificationChannel channel0 = createNotificationChannel("id0", "name0", IMPORTANCE_HIGH); assertTrue(mHelper.createNotificationChannel(package0, uid0, channel0, true, false)); ByteArrayOutputStream baos = writeXmlAndPurge(package0, uid0, true, 0); @@ -505,9 +513,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannelGroup ncg = new NotificationChannelGroup("1", "bye"); NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "hello"); NotificationChannel channel1 = - new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); - NotificationChannel channel2 = - new NotificationChannel("id2", "name2", IMPORTANCE_LOW); + createNotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); + NotificationChannel channel2 = createNotificationChannel("id2", "name2", IMPORTANCE_LOW); channel2.setDescription("descriptions for all"); channel2.setSound(SOUND_URI, mAudioAttributes); channel2.enableLights(true); @@ -516,7 +523,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { channel2.enableVibration(false); channel2.setGroup(ncg.getId()); channel2.setLightColor(Color.BLUE); - NotificationChannel channel3 = new NotificationChannel("id3", "NAM3", IMPORTANCE_HIGH); + NotificationChannel channel3 = createNotificationChannel("id3", "NAM3", IMPORTANCE_HIGH); channel3.enableVibration(true); mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg, true); @@ -623,7 +630,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { } @Test - public void testRestoreXml_withNonExistentCanonicalizedSoundUri() throws Exception { + public void testRestoreXml_withNonExistentCanonicalizedSoundUri_ignoreChannel() + throws Exception { Thread.sleep(3000); doReturn(null) .when(mTestIContentProvider).canonicalize(any(), eq(CANONICAL_SOUND_URI)); @@ -641,7 +649,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannel actualChannel = mHelper.getNotificationChannel( PKG_N_MR1, UID_N_MR1, channel.getId(), false); - assertEquals(Settings.System.DEFAULT_NOTIFICATION_URI, actualChannel.getSound()); + assertNull(actualChannel); } @@ -650,7 +658,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { * handle its restore properly. */ @Test - public void testRestoreXml_withUncanonicalizedNonLocalSoundUri() throws Exception { + public void testRestoreXml_withUncanonicalizedNonLocalSoundUri_ignoreChannel() + throws Exception { // Not a local uncanonicalized uri, simulating that it fails to exist locally doReturn(null) .when(mTestIContentProvider).canonicalize(any(), eq(SOUND_URI)); @@ -669,7 +678,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { backupWithUncanonicalizedSoundUri.getBytes(), true, UserHandle.USER_SYSTEM); NotificationChannel actualChannel = mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, id, false); - assertEquals(Settings.System.DEFAULT_NOTIFICATION_URI, actualChannel.getSound()); + assertNull(actualChannel); } @Test @@ -693,11 +702,11 @@ public class PreferencesHelperTest extends UiServiceTestCase { NotificationChannelGroup ncg = new NotificationChannelGroup("1", "bye"); NotificationChannelGroup ncg2 = new NotificationChannelGroup("2", "hello"); NotificationChannel channel1 = - new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); + createNotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); NotificationChannel channel2 = - new NotificationChannel("id2", "name2", IMPORTANCE_HIGH); + createNotificationChannel("id2", "name2", IMPORTANCE_HIGH); NotificationChannel channel3 = - new NotificationChannel("id3", "name3", IMPORTANCE_LOW); + createNotificationChannel("id3", "name3", IMPORTANCE_LOW); channel3.setGroup(ncg.getId()); mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, ncg, true); @@ -3048,7 +3057,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { @Test public void testChannelXml_backupDefaultApp() throws Exception { NotificationChannel channel1 = - new NotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); + createNotificationChannel("id1", "name1", NotificationManager.IMPORTANCE_HIGH); mHelper.createNotificationChannel(PKG_O, UID_O, channel1, true, false); @@ -3329,7 +3338,7 @@ public class PreferencesHelperTest extends UiServiceTestCase { mAppOpsManager, mStatsEventBuilderFactory); mHelper.createNotificationChannel( - PKG_P, UID_P, new NotificationChannel("id", "id", 2), true, false); + PKG_P, UID_P, createNotificationChannel("id", "id", 2), true, false); mHelper.deleteNotificationChannel(PKG_P, UID_P, "id"); NotificationChannel nc1 = mHelper.getNotificationChannel(PKG_P, UID_P, "id", true); assertTrue(DateUtils.isToday(nc1.getDeletedTimeMs())); diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml index 04db6861e694..de4698dcf3b2 100644 --- a/services/tests/wmtests/AndroidManifest.xml +++ b/services/tests/wmtests/AndroidManifest.xml @@ -54,11 +54,8 @@ <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityRequestedOrientationChange" /> <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityTaskChangeCallbacks" /> <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityTaskDescriptionChange" /> - <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityViewTestActivity" /> - <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityInActivityView" + <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityInVirtualDisplay" android:resizeableActivity="true" /> - <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ActivityLaunchesNewActivityInActivityView" - android:resizeableActivity="true" /> <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$LandscapeActivity" android:screenOrientation="sensorLandscape" android:showWhenLocked="true" diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java index 2148589529f3..349270ff708a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java @@ -77,6 +77,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { private ActivityRecord mTopActivity; private ActivityOptions mActivityOptions; private boolean mLaunchTopByTrampoline; + private boolean mNewActivityCreated = true; @Before public void setUpAMLO() { @@ -187,6 +188,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { .isEqualTo(WaitResult.LAUNCH_STATE_WARM); mTopActivity.app = app; + mNewActivityCreated = false; assertWithMessage("Hot launch").that(launchTemplate.applyAsInt(false /* doRelaunch */)) .isEqualTo(WaitResult.LAUNCH_STATE_HOT); @@ -194,6 +196,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { .isEqualTo(WaitResult.LAUNCH_STATE_RELAUNCH); mTopActivity.app = null; + mNewActivityCreated = true; doReturn(null).when(mAtm).getProcessController(app.mName, app.mUid); assertWithMessage("Cold launch").that(launchTemplate.applyAsInt(false /* doRelaunch */)) .isEqualTo(WaitResult.LAUNCH_STATE_COLD); @@ -313,8 +316,8 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { } private void notifyActivityLaunched(int resultCode, ActivityRecord activity) { - mActivityMetricsLogger.notifyActivityLaunched(mLaunchingState, resultCode, activity, - mActivityOptions); + mActivityMetricsLogger.notifyActivityLaunched(mLaunchingState, resultCode, + mNewActivityCreated, activity, mActivityOptions); } private void notifyTransitionStarting(ActivityRecord activity) { diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java index e6ac52d2bf6f..0a36af2d586a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java @@ -870,7 +870,8 @@ public class ActivityStarterTests extends WindowTestsBase { verify(secondaryTaskContainer, times(2)).createRootTask(anyInt(), anyInt(), anyBoolean()); // The metrics logger should receive the same result and non-null options. verify(mActivityMetricsLogger).notifyActivityLaunched(any() /* launchingState */, - eq(result), eq(singleTaskActivity), notNull() /* options */); + eq(result), eq(false) /* newActivityCreated */, eq(singleTaskActivity), + notNull() /* options */); } @Test diff --git a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java index 4f5511b55d3a..7614579b9c3b 100644 --- a/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/RootWindowContainerTests.java @@ -20,7 +20,6 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY; import static android.content.pm.ActivityInfo.FLAG_ALWAYS_FOCUSABLE; @@ -486,31 +485,6 @@ public class RootWindowContainerTests extends WindowTestsBase { } /** - * Verify that split-screen primary root task will be chosen if activity is launched that - * targets split-screen secondary, but a matching existing instance is found on top of - * split-screen primary root task. - */ - @Test - public void testSplitScreenPrimaryChosenWhenTopActivityLaunchedToSecondary() { - // Create primary split-screen root task with a task and an activity. - final Task primaryRootTask = mRootWindowContainer.getDefaultTaskDisplayArea() - .createRootTask(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, ACTIVITY_TYPE_STANDARD, - true /* onTop */); - final Task task = new TaskBuilder(mSupervisor).setParentTask(primaryRootTask).build(); - final ActivityRecord r = new ActivityBuilder(mAtm).setTask(task).build(); - - // Find a launch root task for the top activity in split-screen primary, while requesting - // split-screen secondary. - final ActivityOptions options = ActivityOptions.makeBasic(); - options.setLaunchWindowingMode(WINDOWING_MODE_FULLSCREEN_OR_SPLIT_SCREEN_SECONDARY); - final Task result = - mRootWindowContainer.getLaunchRootTask(r, options, task, true /* onTop */); - - // Assert that the primary root task is returned. - assertEquals(primaryRootTask, result); - } - - /** * Verify that home root task would be moved to front when the top activity is Recents. */ @Test diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java b/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java index d1391412be11..a1d0eb8befcb 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/TaskStackChangedListenerTest.java @@ -16,7 +16,9 @@ package com.android.server.wm; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY; +import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION; +import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC; import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; @@ -31,7 +33,6 @@ import android.app.Activity; import android.app.ActivityManager.TaskDescription; import android.app.ActivityOptions; import android.app.ActivityTaskManager; -import android.app.ActivityView; import android.app.ITaskStackListener; import android.app.Instrumentation.ActivityMonitor; import android.app.TaskStackListener; @@ -39,6 +40,10 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ActivityInfo; +import android.graphics.PixelFormat; +import android.hardware.display.DisplayManager; +import android.hardware.display.VirtualDisplay; +import android.media.ImageReader; import android.os.Bundle; import android.os.RemoteException; import android.os.SystemClock; @@ -46,13 +51,16 @@ import android.platform.test.annotations.Presubmit; import android.text.TextUtils; import android.view.Display; import android.view.ViewGroup; +import android.widget.LinearLayout; import androidx.test.filters.FlakyTest; import androidx.test.filters.MediumTest; import org.junit.After; +import org.junit.Before; import org.junit.Test; +import java.util.Arrays; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -65,15 +73,49 @@ import java.util.function.Predicate; @MediumTest public class TaskStackChangedListenerTest { + private static final int VIRTUAL_DISPLAY_WIDTH = 800; + private static final int VIRTUAL_DISPLAY_HEIGHT = 600; + private static final int VIRTUAL_DISPLAY_DENSITY = 160; + private ITaskStackListener mTaskStackListener; + private DisplayManager mDisplayManager; + private VirtualDisplay mVirtualDisplay; private static final int WAIT_TIMEOUT_MS = 5000; private static final Object sLock = new Object(); + @Before + public void setUp() { + mDisplayManager = getInstrumentation().getContext().getSystemService( + DisplayManager.class); + mVirtualDisplay = createVirtualDisplay( + getClass().getSimpleName() + "_virtualDisplay", + VIRTUAL_DISPLAY_WIDTH, VIRTUAL_DISPLAY_HEIGHT, VIRTUAL_DISPLAY_DENSITY); + } + @After public void tearDown() throws Exception { ActivityTaskManager.getService().unregisterTaskStackListener(mTaskStackListener); mTaskStackListener = null; + mVirtualDisplay.release(); + } + + private VirtualDisplay createVirtualDisplay(String name, int width, int height, int density) { + VirtualDisplay virtualDisplay = null; + try (ImageReader reader = ImageReader.newInstance(width, height, + /* format= */ PixelFormat.RGBA_8888, /* maxImages= */ 2)) { + int flags = VIRTUAL_DISPLAY_FLAG_PRESENTATION | VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY + | VIRTUAL_DISPLAY_FLAG_PUBLIC; + virtualDisplay = mDisplayManager.createVirtualDisplay( + name, width, height, density, reader.getSurface(), flags); + virtualDisplay.setSurface(reader.getSurface()); + } + assertTrue("display id must be unique", + virtualDisplay.getDisplay().getDisplayId() != Display.DEFAULT_DISPLAY); + assertNotNull("display must be registered", + Arrays.asList(mDisplayManager.getDisplays()).stream().filter( + d -> d.getName().equals(name)).findAny()); + return virtualDisplay; } @Test @@ -235,48 +277,19 @@ public class TaskStackChangedListenerTest { assertTrue(activity.mOnDetachedFromWindowCalled); } - public static class ActivityLaunchesNewActivityInActivityView extends TestActivity { - private boolean mActivityBLaunched = false; - - @Override - protected void onPostResume() { - super.onPostResume(); - if (mActivityBLaunched) { - return; - } - mActivityBLaunched = true; - startActivity(new Intent(this, ActivityB.class)); - } - } - @Test public void testTaskDisplayChanged() throws Exception { - final CountDownLatch activityViewReadyLatch = new CountDownLatch(1); - final ActivityViewTestActivity activity = - (ActivityViewTestActivity) startTestActivity(ActivityViewTestActivity.class); - final ActivityView activityView = activity.getActivityView(); - activityView.setCallback(new ActivityView.StateCallback() { - @Override - public void onActivityViewReady(ActivityView view) { - activityViewReadyLatch.countDown(); - } - @Override - public void onActivityViewDestroyed(ActivityView view) {} - }); - waitForCallback(activityViewReadyLatch); + int virtualDisplayId = mVirtualDisplay.getDisplay().getDisplayId(); - // Launch a Activity inside ActivityView. + // Launch a Activity inside VirtualDisplay + CountDownLatch displayChangedLatch1 = new CountDownLatch(1); final Object[] params1 = new Object[1]; - final CountDownLatch displayChangedLatch1 = new CountDownLatch(1); - final int activityViewDisplayId = activityView.getVirtualDisplayId(); - registerTaskStackChangedListener( - new TaskDisplayChangedListener( - activityViewDisplayId, params1, displayChangedLatch1)); + registerTaskStackChangedListener(new TaskDisplayChangedListener( + virtualDisplayId, params1, displayChangedLatch1)); + ActivityOptions options1 = ActivityOptions.makeBasic().setLaunchDisplayId(virtualDisplayId); int taskId1; - ActivityOptions options1 = ActivityOptions.makeBasic() - .setLaunchDisplayId(activityView.getVirtualDisplayId()); synchronized (sLock) { - taskId1 = startTestActivity(ActivityInActivityView.class, options1).getTaskId(); + taskId1 = startTestActivity(ActivityInVirtualDisplay.class, options1).getTaskId(); } waitForCallback(displayChangedLatch1); @@ -292,7 +305,7 @@ public class TaskStackChangedListenerTest { ActivityOptions options2 = ActivityOptions.makeBasic() .setLaunchDisplayId(Display.DEFAULT_DISPLAY); synchronized (sLock) { - taskId2 = startTestActivity(ActivityInActivityView.class, options2).getTaskId(); + taskId2 = startTestActivity(ActivityInVirtualDisplay.class, options2).getTaskId(); } waitForCallback(displayChangedLatch2); @@ -447,8 +460,7 @@ public class TaskStackChangedListenerTest { } } - public static class ActivityA extends TestActivity { - } + public static class ActivityA extends TestActivity {} public static class ActivityB extends TestActivity { @@ -500,30 +512,20 @@ public class TaskStackChangedListenerTest { } } - public static class ActivityViewTestActivity extends TestActivity { - private ActivityView mActivityView; + public static class ActivityInVirtualDisplay extends TestActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - mActivityView = new ActivityView.Builder(this).build(); - setContentView(mActivityView); - - ViewGroup.LayoutParams layoutParams = mActivityView.getLayoutParams(); - layoutParams.width = MATCH_PARENT; - layoutParams.height = MATCH_PARENT; - mActivityView.requestLayout(); - } - - ActivityView getActivityView() { - return mActivityView; + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT)); + setContentView(layout); } } - // Activity that has {@link android.R.attr#resizeableActivity} attribute set to {@code true} - public static class ActivityInActivityView extends TestActivity {} - public static class ResumeWhilePausingActivity extends TestActivity {} public static class LandscapeActivity extends TestActivity {} diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java index 3fbd40f8a060..d1bd159ee7ff 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java @@ -270,14 +270,9 @@ final class HotwordDetectionConnection { if (DEBUG) { Slog.d(TAG, "startListeningFromExternalSource"); } - - ParcelFileDescriptor.AutoCloseInputStream audioReader = - new ParcelFileDescriptor.AutoCloseInputStream(audioStream); - - handleSoftwareHotwordDetection( + handleExternalSourceHotwordDetection( + audioStream, audioFormat, - AudioReader.createFromInputStream(audioReader), - AUDIO_SOURCE_EXTERNAL, options, callback); } @@ -556,14 +551,18 @@ final class HotwordDetectionConnection { } } - private void handleSoftwareHotwordDetection( + private void handleExternalSourceHotwordDetection( + ParcelFileDescriptor audioStream, AudioFormat audioFormat, - AudioReader audioSource, - int audioSourceValue, @Nullable PersistableBundle options, IMicrophoneHotwordDetectionVoiceInteractionCallback callback) { - Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = createPipe(); + if (DEBUG) { + Slog.d(TAG, "#handleExternalSourceHotwordDetection"); + } + AudioReader audioSource = AudioReader.createFromInputStream( + new ParcelFileDescriptor.AutoCloseInputStream(audioStream)); + Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = createPipe(); if (clientPipe == null) { // TODO: Need to propagate as unknown error or something? return; @@ -579,8 +578,8 @@ final class HotwordDetectionConnection { try (AudioReader source = audioSource; OutputStream fos = new ParcelFileDescriptor.AutoCloseOutputStream(serviceAudioSink)) { - byte[] buffer = new byte[1024]; + byte[] buffer = new byte[1024]; while (true) { int bytesRead = source.read(buffer, 0, 1024); @@ -608,76 +607,32 @@ final class HotwordDetectionConnection { service -> service.detectFromMicrophoneSource( serviceAudioSource, // TODO: consider making a proxy callback + copy of audio format - audioSourceValue, audioFormat, options, + AUDIO_SOURCE_EXTERNAL, + audioFormat, + options, new IDspHotwordDetectionCallback.Stub() { @Override public void onRejected(@Nullable HotwordRejectedResult result) throws RemoteException { + bestEffortClose(serviceAudioSink); + bestEffortClose(serviceAudioSource); + bestEffortClose(audioSource); + // TODO: Propagate the HotwordRejectedResult. } @Override public void onDetected(@Nullable HotwordDetectedResult triggerResult) throws RemoteException { - // Stop bestEffortClose(serviceAudioSink); - - if (audioSourceValue == AUDIO_SOURCE_EXTERNAL) { - callback.onDetected(triggerResult, null, null); - // TODO: Add a delay before closing. - bestEffortClose(audioSource); - } - - Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = - createPipe(); - - if (clientPipe == null) { - // Error. - // Need to propagate as unknown error or something? - return; - } - ParcelFileDescriptor callbackAudioSink = clientPipe.second; - ParcelFileDescriptor callbackClientRead = clientPipe.first; - - mAudioCopyExecutor.execute(() -> { - try (AudioReader source = audioSource; - OutputStream fos = - new ParcelFileDescriptor.AutoCloseOutputStream( - callbackAudioSink)) { - - // TODO: get ring buffer suffix here - // fos.write(lastSeveralSeconds); - - byte[] buffer = new byte[1024]; - while (true) { - int bytesRead = source.read(buffer, 0, 1024); - - if (bytesRead < 0) { - break; - } - - fos.write(buffer, 0, bytesRead); - } - } catch (IOException e) { - Slog.w(TAG, "Failed supplying audio data to validator", e); - } finally { - synchronized (mLock) { - mCurrentAudioSink = null; - } - } - }); - + bestEffortClose(serviceAudioSource); // TODO: noteOp here. - // Remove hotword offset from trigger result - // TODO: consider propagating only capture session. - callback.onDetected(triggerResult, null, callbackClientRead); + callback.onDetected(triggerResult, null /* audioFormat */, + null /* audioStream */); // TODO: Add a delay before closing. - bestEffortClose(callbackClientRead); + bestEffortClose(audioSource); } })); - - // TODO: verify this is the right thing to do here. - bestEffortClose(serviceAudioSource); } private static void bestEffortClose(Closeable closeable) { diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java index 055284157457..9be1ac42d885 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java @@ -477,6 +477,11 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne return; } + if (audioStream == null) { + Slog.w(TAG, "External source is null for hotword detector"); + throw new IllegalStateException("External source is null for hotword detector"); + } + mHotwordDetectionConnection .startListeningFromExternalSource(audioStream, audioFormat, options, callback); } diff --git a/telecomm/java/android/telecom/CallerInfoAsyncQuery.java b/telecomm/java/android/telecom/CallerInfoAsyncQuery.java index a9e1a8fc1952..bf49f3c7b9bf 100644 --- a/telecomm/java/android/telecom/CallerInfoAsyncQuery.java +++ b/telecomm/java/android/telecom/CallerInfoAsyncQuery.java @@ -483,7 +483,16 @@ public class CallerInfoAsyncQuery { // check to see if these are recognized numbers, and use shortcuts if we can. TelephonyManager tm = context.getSystemService(TelephonyManager.class); - if (tm.isEmergencyNumber(number)) { + boolean isEmergencyNumber = false; + try { + isEmergencyNumber = tm.isEmergencyNumber(number); + } catch (IllegalStateException ise) { + // Ignore the exception that Telephony is not up. Use PhoneNumberUtils API now. + // Ideally the PhoneNumberUtils API needs to be removed once the + // telphony service not up issue can be fixed (b/187412989) + isEmergencyNumber = PhoneNumberUtils.isLocalEmergencyNumber(context, number); + } + if (isEmergencyNumber) { cw.event = EVENT_EMERGENCY_NUMBER; } else if (PhoneNumberUtils.isVoiceMailNumber(context, subId, number)) { cw.event = EVENT_VOICEMAIL_NUMBER; diff --git a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java index d361db2e9ee5..4d81b5e54470 100644 --- a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java +++ b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java @@ -263,7 +263,7 @@ public final class TelephonyPermissions { return true; } return checkPrivilegedReadPermissionOrCarrierPrivilegePermission( - context, subId, callingPackage, callingFeatureId, message, true); + context, subId, callingPackage, callingFeatureId, message, true, true); } /** @@ -286,14 +286,28 @@ public final class TelephonyPermissions { */ public static boolean checkCallingOrSelfReadSubscriberIdentifiers(Context context, int subId, String callingPackage, @Nullable String callingFeatureId, String message) { + return checkCallingOrSelfReadSubscriberIdentifiers(context, subId, callingPackage, + callingFeatureId, message, true); + } + + /** + * Same as {@link #checkCallingOrSelfReadSubscriberIdentifiers(Context, int, String, String, + * String)} except this allows an additional parameter reportFailure. Caller may not want to + * report a failure when this is an internal/intermediate check, for example, + * SubscriptionController calls this with an INVALID_SUBID to check if caller has the required + * permissions to bypass carrier privilege checks. + * @param reportFailure Indicates if failure should be reported. + */ + public static boolean checkCallingOrSelfReadSubscriberIdentifiers(Context context, int subId, + String callingPackage, @Nullable String callingFeatureId, String message, + boolean reportFailure) { if (checkCallingOrSelfUseIccAuthWithDeviceIdentifier(context, callingPackage, callingFeatureId, message)) { return true; } return checkPrivilegedReadPermissionOrCarrierPrivilegePermission( - context, subId, callingPackage, callingFeatureId, message, false); + context, subId, callingPackage, callingFeatureId, message, false, reportFailure); } - /** * Checks whether the app with the given pid/uid can read device identifiers. * @@ -314,7 +328,7 @@ public final class TelephonyPermissions { */ private static boolean checkPrivilegedReadPermissionOrCarrierPrivilegePermission( Context context, int subId, String callingPackage, @Nullable String callingFeatureId, - String message, boolean allowCarrierPrivilegeOnAnySub) { + String message, boolean allowCarrierPrivilegeOnAnySub, boolean reportFailure) { int uid = Binder.getCallingUid(); int pid = Binder.getCallingPid(); @@ -334,8 +348,12 @@ public final class TelephonyPermissions { return true; } - return reportAccessDeniedToReadIdentifiers(context, subId, pid, uid, callingPackage, - message); + if (reportFailure) { + return reportAccessDeniedToReadIdentifiers(context, subId, pid, uid, callingPackage, + message); + } else { + return false; + } } /** diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 5716a1d79040..84ea42fa7d73 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -4279,6 +4279,26 @@ public class CarrierConfigManager { public static final String KEY_RCS_FEATURE_TAG_ALLOWED_STRING_ARRAY = KEY_PREFIX + "rcs_feature_tag_allowed_string_array"; + /** + * Flag indicating whether or not carrier forbids device send the RCS request when the + * device receive the network response with the SIP code 489 BAD EVENT. + * <p> + * The default value for this key is {@code false}. + * @hide + */ + public static final String KEY_RCS_REQUEST_FORBIDDEN_BY_SIP_489_BOOL = + KEY_PREFIX + "rcs_request_forbidden_by_sip_489_bool"; + + /** + * Indicates the interval that SUBSCRIBE requests from applications will be retried at when + * the carrier network has responded to a previous request with a forbidden error. + * <p> + * The default value for this key is 20 minutes. + * @hide + */ + public static final String KEY_RCS_REQUEST_RETRY_INTERVAL_MILLIS_LONG = + KEY_PREFIX + "rcs_request_retry_interval_millis_long"; + private Ims() {} private static PersistableBundle getDefaults() { @@ -4292,6 +4312,8 @@ public class CarrierConfigManager { defaults.putBoolean(KEY_RCS_BULK_CAPABILITY_EXCHANGE_BOOL, false); defaults.putBoolean(KEY_ENABLE_PRESENCE_GROUP_SUBSCRIBE_BOOL, true); defaults.putInt(KEY_NON_RCS_CAPABILITIES_CACHE_EXPIRATION_SEC_INT, 30 * 24 * 60 * 60); + defaults.putBoolean(KEY_RCS_REQUEST_FORBIDDEN_BY_SIP_489_BOOL, false); + defaults.putLong(KEY_RCS_REQUEST_RETRY_INTERVAL_MILLIS_LONG, 20 * 60 * 1000); defaults.putStringArray(KEY_RCS_FEATURE_TAG_ALLOWED_STRING_ARRAY, new String[]{ "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.msg\"", "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.largemsg\"", diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java index 4004e37dc4e0..21bb43cb6f32 100644 --- a/telephony/java/android/telephony/SubscriptionInfo.java +++ b/telephony/java/android/telephony/SubscriptionInfo.java @@ -572,6 +572,13 @@ public class SubscriptionInfo implements Parcelable { /** * @hide */ + public void clearGroupUuid() { + this.mGroupUUID = null; + } + + /** + * @hide + */ public List<String> getEhplmns() { return mEhplmns == null ? Collections.emptyList() : Arrays.asList(mEhplmns); } diff --git a/telephony/java/android/telephony/ims/RcsConfig.java b/telephony/java/android/telephony/ims/RcsConfig.java index 6867c866cd94..fd8d8a76353b 100644 --- a/telephony/java/android/telephony/ims/RcsConfig.java +++ b/telephony/java/android/telephony/ims/RcsConfig.java @@ -357,9 +357,9 @@ public final class RcsConfig { /** * Check whether Rcs Volte single registration is supported by the config. */ - public boolean isRcsVolteSingleRegistrationSupported() { - return getBoolean(PARM_SINGLE_REGISTRATION, false) - || getInteger(PARM_SINGLE_REGISTRATION, 0) != 0; + public boolean isRcsVolteSingleRegistrationSupported(boolean isRoaming) { + int val = getInteger(PARM_SINGLE_REGISTRATION, 1); + return isRoaming ? val == 1 : val > 0; } @Override diff --git a/telephony/java/android/telephony/ims/feature/RcsFeature.java b/telephony/java/android/telephony/ims/feature/RcsFeature.java index ddd6fbe38cf4..18cc37d7fbda 100644 --- a/telephony/java/android/telephony/ims/feature/RcsFeature.java +++ b/telephony/java/android/telephony/ims/feature/RcsFeature.java @@ -398,16 +398,6 @@ public class RcsFeature extends ImsFeature { /** * Remove the given CapabilityExchangeImplBase instance. - * @param capExchangeImpl The {@link RcsCapabilityExchangeImplBase} instance to be removed. - * @hide - */ - public void removeCapabilityExchangeImpl( - @NonNull RcsCapabilityExchangeImplBase capExchangeImpl) { - // Override to implement the process of removing RcsCapabilityExchangeImplBase instance. - } - - /** - * Remove the given CapabilityExchangeImplBase instance. * @param capExchangeImpl The {@link RcsCapabilityExchangeImplBase} instance to be destroyed. */ public void destroyCapabilityExchangeImpl( @@ -450,7 +440,7 @@ public class RcsFeature extends ImsFeature { // Remove the RcsCapabilityExchangeImplBase instance when the capability exchange // instance has been removed in the framework. if (mCapabilityExchangeImpl != null) { - removeCapabilityExchangeImpl(mCapabilityExchangeImpl); + destroyCapabilityExchangeImpl(mCapabilityExchangeImpl); } mCapabilityExchangeImpl = null; } @@ -468,7 +458,7 @@ public class RcsFeature extends ImsFeature { synchronized (mLock) { // Remove the original instance if (mCapabilityExchangeImpl != null) { - removeCapabilityExchangeImpl(mCapabilityExchangeImpl); + destroyCapabilityExchangeImpl(mCapabilityExchangeImpl); } mCapabilityExchangeImpl = createCapabilityExchangeImpl(listener); } diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 00ddec298dcf..4cd59a24b182 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -2428,6 +2428,12 @@ interface ITelephony { String getLastUcePidfXmlShell(int subId); /** + * Remove UCE requests cannot be sent to the network status. + * Note: This is designed for a SHELL command only. + */ + boolean removeUceRequestDisallowedStatus(int subId); + + /** * Set a SignalStrengthUpdateRequest to receive notification when Signal Strength breach the * specified thresholds. */ diff --git a/tests/ActivityViewTest/Android.bp b/tests/ActivityViewTest/Android.bp deleted file mode 100644 index 95178a0fb9a5..000000000000 --- a/tests/ActivityViewTest/Android.bp +++ /dev/null @@ -1,15 +0,0 @@ -package { - // See: http://go/android-license-faq - // A large-scale-change added 'default_applicable_licenses' to import - // all of the 'license_kinds' from "frameworks_base_license" - // to get the below license kinds: - // SPDX-license-identifier-Apache-2.0 - default_applicable_licenses: ["frameworks_base_license"], -} - -android_test { - name: "ActivityViewTest", - srcs: ["src/**/*.java"], - platform_apis: true, - certificate: "platform", -} diff --git a/tests/ActivityViewTest/AndroidManifest.xml b/tests/ActivityViewTest/AndroidManifest.xml deleted file mode 100644 index 7563a25424ad..000000000000 --- a/tests/ActivityViewTest/AndroidManifest.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> - -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.google.android.test.activityview"> - <uses-permission android:name="android.permission.INJECT_EVENTS"/> - <uses-permission android:name="android.permission.MANAGE_ACTIVITY_TASKS"/> - <uses-permission android:name="android.permission.ACTIVITY_EMBEDDING"/> - <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW"/> - - <uses-sdk android:targetSdkVersion="27"/> - <application android:label="ActivityViewTest"> - <activity android:name=".ActivityViewMainActivity" - android:label="AV Main" - android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|colorMode|density" - android:exported="true"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.LAUNCHER"/> - <category android:name="android.intent.category.DEFAULT"/> - </intent-filter> - </activity> - - <activity android:name=".ActivityViewActivity" - android:label="AV" - android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|colorMode|density" - android:windowSoftInputMode="stateHidden|adjustResize"> - </activity> - - <activity android:name=".ActivityViewResizeActivity" - android:label="AV Resize" - android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|colorMode|density" - android:windowSoftInputMode="stateHidden|adjustResize"> - </activity> - - <activity android:name=".ActivityViewScrollActivity" - android:label="AV Scroll" - android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|colorMode|density" - android:windowSoftInputMode="stateHidden"> - </activity> - - <activity android:name=".ActivityViewTestActivity" - android:resizeableActivity="true" - android:theme="@*android:style/Theme.NoTitleBar" - android:exported="true" - android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|colorMode|density"> - </activity> - - <activity android:name=".ActivityViewVisibilityActivity" - android:label="AV Visibility" - android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|colorMode|density"> - </activity> - </application> -</manifest> diff --git a/tests/ActivityViewTest/res/layout/activity_view_activity.xml b/tests/ActivityViewTest/res/layout/activity_view_activity.xml deleted file mode 100644 index 67c01f8c78fe..000000000000 --- a/tests/ActivityViewTest/res/layout/activity_view_activity.xml +++ /dev/null @@ -1,47 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="#cfd8dc"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - - <Button - android:id="@+id/activity_launch_button" - android:layout_width="200dp" - android:layout_height="wrap_content" - android:text="Launch test activity" /> - - <Button - android:id="@+id/activity_pick_launch_button" - android:layout_width="200dp" - android:layout_height="wrap_content" - android:text="Launch from picker" /> - - </LinearLayout> - - <ActivityView - android:id="@+id/activity_view" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - -</LinearLayout>
\ No newline at end of file diff --git a/tests/ActivityViewTest/res/layout/activity_view_main_activity.xml b/tests/ActivityViewTest/res/layout/activity_view_main_activity.xml deleted file mode 100644 index efcaef679a9c..000000000000 --- a/tests/ActivityViewTest/res/layout/activity_view_main_activity.xml +++ /dev/null @@ -1,50 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> - -<LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical"> - - <Button - android:id="@+id/activity_view_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Test ActivityView" - android:textAllCaps="false"/> - - <Button - android:id="@+id/scroll_activity_view_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Test Scroll ActivityView" - android:textAllCaps="false"/> - - <Button - android:id="@+id/resize_activity_view_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Test Resize ActivityView" - android:textAllCaps="false"/> - - <Button - android:id="@+id/visibility_activity_view_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="Test ActivityView Visibility" - android:textAllCaps="false"/> -</LinearLayout> diff --git a/tests/ActivityViewTest/res/layout/activity_view_resize_activity.xml b/tests/ActivityViewTest/res/layout/activity_view_resize_activity.xml deleted file mode 100644 index 18d86e3d5a6f..000000000000 --- a/tests/ActivityViewTest/res/layout/activity_view_resize_activity.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="#cfd8dc"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - - <Button - android:id="@+id/activity_launch_button" - android:layout_width="100dp" - android:layout_height="wrap_content" - android:text="Launch" /> - - <Button - android:id="@+id/activity_resize_button" - android:layout_width="100dp" - android:layout_height="wrap_content" - android:text="Resize" /> - </LinearLayout> - - <SeekBar - android:id="@+id/activity_view_seek_bar" - android:layout_width="match_parent" - android:layout_height="wrap_content" /> - - <ActivityView - android:id="@+id/activity_view" - android:layout_width="match_parent" - android:layout_height="600dp" /> - -</LinearLayout>
\ No newline at end of file diff --git a/tests/ActivityViewTest/res/layout/activity_view_scroll_activity.xml b/tests/ActivityViewTest/res/layout/activity_view_scroll_activity.xml deleted file mode 100644 index 879c2c20a082..000000000000 --- a/tests/ActivityViewTest/res/layout/activity_view_scroll_activity.xml +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="match_parent"> - - <Button - android:id="@+id/activity_launch_button" - android:layout_width="100dp" - android:layout_height="wrap_content" - android:text="Launch" /> - - <ScrollView - android:id="@+id/activity_view_host_scroll_view" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:color="#cfd8dc"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" > - - <View - android:layout_width="match_parent" - android:layout_height="300dp" - android:layout_gravity="center_horizontal" - android:background="#eeeeee" /> - - <ActivityView - android:id="@+id/activity_view" - android:layout_width="match_parent" - android:layout_height="300dp" - android:background="#fce4ec" /> - - <View - android:layout_width="match_parent" - android:layout_height="300dp" - android:layout_gravity="center_horizontal" - android:background="#eeeeee" /> - </LinearLayout> - </ScrollView> -</LinearLayout>
\ No newline at end of file diff --git a/tests/ActivityViewTest/res/layout/activity_view_test_activity.xml b/tests/ActivityViewTest/res/layout/activity_view_test_activity.xml deleted file mode 100644 index 338d68adfafb..000000000000 --- a/tests/ActivityViewTest/res/layout/activity_view_test_activity.xml +++ /dev/null @@ -1,70 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> - -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@+id/test_activity_root" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="#ffe0b2"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:orientation="vertical" - android:background="#00000000" > - <TextView - android:id="@+id/test_activity_title" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textColor="@android:color/black" - android:background="#00000000" - android:gravity="center" /> - <TextView - android:id="@+id/test_activity_touch_state" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textColor="@android:color/black" - android:background="#00000000" - android:gravity="center" /> - </LinearLayout> - - <TextView - android:id="@+id/test_activity_width_text" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:textColor="@android:color/black" - android:background="#00000000" - android:gravity="center" /> - - <TextView - android:id="@+id/test_activity_height_text" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_alignParentRight="true" - android:layout_alignParentEnd="true" - android:textColor="@android:color/black" - android:background="#00000000" - android:gravity="center" /> - - <EditText - android:id="@+id/test_activity_edittext" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_margin="16dp" /> -</RelativeLayout>
\ No newline at end of file diff --git a/tests/ActivityViewTest/res/layout/activity_view_visibility_activity.xml b/tests/ActivityViewTest/res/layout/activity_view_visibility_activity.xml deleted file mode 100644 index d29d4dfc0428..000000000000 --- a/tests/ActivityViewTest/res/layout/activity_view_visibility_activity.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2019 The Android Open 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:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="#cfd8dc"> - - <LinearLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal"> - - <Button - android:id="@+id/activity_launch_button" - android:layout_width="200dp" - android:layout_height="wrap_content" - android:text="Launch test activity" /> - - <Spinner - android:id="@+id/visibility_spinner" - android:layout_width="200dp" - android:layout_height="match_parent"/> - - </LinearLayout> - - <ActivityView - android:id="@+id/activity_view" - android:layout_width="match_parent" - android:layout_height="match_parent" /> - -</LinearLayout> diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewActivity.java deleted file mode 100644 index f7c60fc73cb3..000000000000 --- a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewActivity.java +++ /dev/null @@ -1,56 +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.google.android.test.activityview; - -import android.app.Activity; -import android.app.ActivityView; -import android.content.Intent; -import android.os.Bundle; -import android.os.Parcelable; -import android.widget.Button; - -public class ActivityViewActivity extends Activity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_activity); - - final ActivityView activityView = findViewById(R.id.activity_view); - final Button launchButton = findViewById(R.id.activity_launch_button); - launchButton.setOnClickListener(v -> { - final Intent intent = new Intent(this, ActivityViewTestActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); - activityView.startActivity(intent); - }); - final Button pickActivityLaunchButton = findViewById(R.id.activity_pick_launch_button); - pickActivityLaunchButton.setOnClickListener(v -> { - final Intent intent = Intent.makeMainActivity(null); - final Intent chooser = Intent.createChooser(intent, - "Pick an app to launch in ActivityView"); - chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Parcelable[] { - new Intent(Intent.ACTION_MAIN) - .addCategory("com.android.internal.category.PLATLOGO") - }); - if (intent.resolveActivity(getPackageManager()) != null) { - chooser.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); - activityView.startActivity(chooser); - } - }); - } -} diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewMainActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewMainActivity.java deleted file mode 100644 index 4f09c28fe711..000000000000 --- a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewMainActivity.java +++ /dev/null @@ -1,42 +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.google.android.test.activityview; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; - -public class ActivityViewMainActivity extends Activity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_main_activity); - - findViewById(R.id.activity_view_button).setOnClickListener( - v -> startActivity(new Intent(this, ActivityViewActivity.class))); - - findViewById(R.id.scroll_activity_view_button).setOnClickListener( - v -> startActivity(new Intent(this, ActivityViewScrollActivity.class))); - - findViewById(R.id.resize_activity_view_button).setOnClickListener( - v -> startActivity(new Intent(this, ActivityViewResizeActivity.class))); - - findViewById(R.id.visibility_activity_view_button).setOnClickListener( - v -> startActivity(new Intent(this, ActivityViewVisibilityActivity.class))); - } -} diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewResizeActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewResizeActivity.java deleted file mode 100644 index 8860a771fd5a..000000000000 --- a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewResizeActivity.java +++ /dev/null @@ -1,79 +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.google.android.test.activityview; - -import android.app.Activity; -import android.app.ActivityView; -import android.content.Intent; -import android.os.Bundle; -import android.widget.Button; -import android.widget.LinearLayout; -import android.widget.SeekBar; - -public class ActivityViewResizeActivity extends Activity { - private static final int SMALL_SIZE = 600; - private static final int LARGE_SIZE = 1200; - - private ActivityView mActivityView; - - private boolean mFlipSize; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_resize_activity); - - mActivityView = findViewById(R.id.activity_view); - - final Button launchButton = findViewById(R.id.activity_launch_button); - launchButton.setOnClickListener(v -> { - final Intent intent = new Intent(this, ActivityViewTestActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); - mActivityView.startActivity(intent); - }); - final Button resizeButton = findViewById(R.id.activity_resize_button); - if (resizeButton != null) { - resizeButton.setOnClickListener(v -> { - LinearLayout.LayoutParams params = - (LinearLayout.LayoutParams) mActivityView.getLayoutParams(); - params.height = mFlipSize ? SMALL_SIZE : LARGE_SIZE; - mFlipSize = !mFlipSize; - mActivityView.setLayoutParams(params); - }); - } - final SeekBar seekBar = findViewById(R.id.activity_view_seek_bar); - if (seekBar != null) { - seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - final LinearLayout.LayoutParams params = - (LinearLayout.LayoutParams) mActivityView.getLayoutParams(); - params.height = SMALL_SIZE + progress * 10; - mActivityView.setLayoutParams(params); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - } - }); - } - } -} diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewScrollActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewScrollActivity.java deleted file mode 100644 index 56543662675c..000000000000 --- a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewScrollActivity.java +++ /dev/null @@ -1,44 +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.google.android.test.activityview; - -import android.app.Activity; -import android.app.ActivityView; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; - -public class ActivityViewScrollActivity extends Activity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_scroll_activity); - - final ActivityView activityView = findViewById(R.id.activity_view); - final Button launchButton = findViewById(R.id.activity_launch_button); - launchButton.setOnClickListener(v -> { - final Intent intent = new Intent(this, ActivityViewTestActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); - activityView.startActivity(intent); - }); - findViewById(R.id.activity_view_host_scroll_view).setOnScrollChangeListener( - (View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) - -> activityView.onLocationChanged()); - } -} diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewTestActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewTestActivity.java deleted file mode 100644 index 52aba2b13c42..000000000000 --- a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewTestActivity.java +++ /dev/null @@ -1,116 +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.google.android.test.activityview; - -import static android.view.MotionEvent.ACTION_CANCEL; -import static android.view.MotionEvent.ACTION_DOWN; -import static android.view.MotionEvent.ACTION_MOVE; -import static android.view.MotionEvent.ACTION_UP; - -import android.app.Activity; -import android.content.res.Configuration; -import android.os.Bundle; -import android.util.Log; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewTreeObserver; -import android.widget.TextView; - -public class ActivityViewTestActivity extends Activity { - private static final String TAG = "ActivityViewTestActivity"; - - private View mRoot; - private TextView mTextView; - private TextView mWidthTextView; - private TextView mHeightTextView; - private TextView mTouchStateTextView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_test_activity); - mRoot = findViewById(R.id.test_activity_root); - mTextView = findViewById(R.id.test_activity_title); - mWidthTextView = findViewById(R.id.test_activity_width_text); - mHeightTextView = findViewById(R.id.test_activity_height_text); - mTouchStateTextView = findViewById(R.id.test_activity_touch_state); - ViewTreeObserver viewTreeObserver = mRoot.getViewTreeObserver(); - if (viewTreeObserver.isAlive()) { - viewTreeObserver.addOnGlobalLayoutListener(this::updateDimensionTexts); - } - updateStateText("CREATED"); - } - - @Override - protected void onStart() { - super.onStart(); - updateStateText("STARTED"); - } - - @Override - protected void onResume() { - super.onResume(); - updateStateText("RESUMED"); - } - - @Override - protected void onPause() { - super.onPause(); - updateStateText("PAUSED"); - } - - @Override - protected void onStop() { - super.onStop(); - updateStateText("STOPPED"); - } - - @Override - public void onConfigurationChanged(Configuration newConfig) { - super.onConfigurationChanged(newConfig); - updateDimensionTexts(); - } - - private void updateStateText(String state) { - Log.d(TAG, state); - mTextView.setText(state); - } - - private void updateDimensionTexts() { - mWidthTextView.setText("" + mRoot.getWidth()); - mHeightTextView.setText("" + mRoot.getHeight()); - } - - private void updateTouchState(MotionEvent event) { - switch (event.getAction()) { - case ACTION_DOWN: - case ACTION_MOVE: - mTouchStateTextView.setText("[" + event.getX() + "," + event.getY() + "]"); - break; - case ACTION_UP: - case ACTION_CANCEL: - mTouchStateTextView.setText(""); - break; - } - } - - @Override - public boolean dispatchTouchEvent(MotionEvent event) { - updateTouchState(event); - return super.dispatchTouchEvent(event); - } -} diff --git a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewVisibilityActivity.java b/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewVisibilityActivity.java deleted file mode 100644 index ecd2cf3c578e..000000000000 --- a/tests/ActivityViewTest/src/com/google/android/test/activityview/ActivityViewVisibilityActivity.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * Copyright (c) 2019 The Android Open 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.google.android.test.activityview; - -import static android.view.View.GONE; -import static android.view.View.INVISIBLE; -import static android.view.View.VISIBLE; - -import android.app.Activity; -import android.app.ActivityView; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.Spinner; - -public class ActivityViewVisibilityActivity extends Activity { - private static final String[] sVisibilityOptions = {"VISIBLE", "INVISIBLE", "GONE"}; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_view_visibility_activity); - - final ActivityView activityView = findViewById(R.id.activity_view); - final Button launchButton = findViewById(R.id.activity_launch_button); - launchButton.setOnClickListener(v -> { - final Intent intent = new Intent(this, ActivityViewTestActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK); - activityView.startActivity(intent); - }); - - final Spinner visibilitySpinner = findViewById(R.id.visibility_spinner); - final ArrayAdapter<String> adapter = new ArrayAdapter<>(this, - android.R.layout.simple_spinner_item, sVisibilityOptions); - adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - visibilitySpinner.setAdapter(adapter); - visibilitySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - @Override - public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { - switch (position) { - case 0: - activityView.setVisibility(VISIBLE); - break; - case 1: - activityView.setVisibility(INVISIBLE); - break; - case 2: - activityView.setVisibility(GONE); - break; - } - } - - @Override - public void onNothingSelected(AdapterView<?> parent) { - } - }); - } -} diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt index 1f880f61d65e..4f4f06dab888 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppHomeButtonTest.kt @@ -16,12 +16,14 @@ package com.android.server.wm.flicker.close +import android.platform.test.annotations.Postsubmit import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.FlickerTestParameterFactory import com.android.server.wm.flicker.dsl.FlickerBuilder import org.junit.FixMethodOrder +import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.MethodSorters import org.junit.runners.Parameterized @@ -44,6 +46,30 @@ class CloseAppHomeButtonTest(testSpec: FlickerTestParameter) : CloseAppTransitio } } + @Postsubmit + @Test + override fun statusBarLayerIsAlwaysVisible() { + super.statusBarLayerIsAlwaysVisible() + } + + @Postsubmit + @Test + override fun statusBarLayerRotatesScales() { + super.statusBarLayerRotatesScales() + } + + @Postsubmit + @Test + override fun launcherLayerReplacesApp() { + super.launcherLayerReplacesApp() + } + + @Postsubmit + @Test + override fun noUncoveredRegions() { + super.noUncoveredRegions() + } + companion object { @Parameterized.Parameters(name = "{0}") @JvmStatic diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt index 96c7c0a4ae20..e088062888fb 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/close/CloseAppTransition.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.close import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import androidx.test.filters.FlakyTest @@ -82,7 +83,7 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) testSpec.navBarLayerIsAlwaysVisible(rotatesScreen = testSpec.isRotated) } - @FlakyTest + @Postsubmit @Test open fun statusBarLayerIsAlwaysVisible() { testSpec.statusBarLayerIsAlwaysVisible(rotatesScreen = testSpec.isRotated) @@ -94,7 +95,7 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) testSpec.navBarLayerRotatesAndScales(testSpec.config.startRotation, Surface.ROTATION_0) } - @FlakyTest + @Postsubmit @Test open fun statusBarLayerRotatesScales() { testSpec.statusBarLayerRotatesScales(testSpec.config.startRotation, Surface.ROTATION_0) @@ -122,13 +123,13 @@ abstract class CloseAppTransition(protected val testSpec: FlickerTestParameter) testSpec.noUncoveredRegions(testSpec.config.startRotation, Surface.ROTATION_0) } - @Presubmit + @FlakyTest(bugId = 185400889) @Test open fun launcherReplacesAppWindowAsTopWindow() { testSpec.launcherReplacesAppWindowAsTopWindow(testApp) } - @Presubmit + @Postsubmit @Test open fun launcherWindowBecomesVisible() { testSpec.launcherWindowBecomesVisible() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt index 3bd19ea74f1d..0bae8f617038 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToAppTest.kt @@ -51,7 +51,6 @@ import org.junit.runners.Parameterized @RunWith(Parameterized::class) @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) -@FlakyTest(bugId = 185400889) class CloseImeAutoOpenWindowToAppTest(private val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() private val testApp = ImeAppAutoFocusHelper(instrumentation, testSpec.config.startRotation) diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt index 3cb58b9b25d6..819d4dd09be3 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeAutoOpenWindowToHomeTest.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants @@ -104,7 +105,7 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete @Test fun imeAppWindowBecomesInvisible() = testSpec.imeAppWindowBecomesInvisible(testApp) - @FlakyTest + @Postsubmit @Test fun noUncoveredRegions() = testSpec.noUncoveredRegions(testSpec.config.startRotation, Surface.ROTATION_0) @@ -113,7 +114,7 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete @Test fun imeLayerBecomesInvisible() = testSpec.imeLayerBecomesInvisible() - @FlakyTest + @Postsubmit @Test fun imeAppLayerBecomesInvisible() = testSpec.imeAppLayerBecomesInvisible(testApp) @@ -123,7 +124,7 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete testSpec.navBarLayerRotatesAndScales(testSpec.config.startRotation, Surface.ROTATION_0) } - @FlakyTest + @Postsubmit @Test fun statusBarLayerRotatesScales() { testSpec.statusBarLayerRotatesScales(testSpec.config.startRotation, Surface.ROTATION_0) @@ -137,7 +138,7 @@ class CloseImeAutoOpenWindowToHomeTest(private val testSpec: FlickerTestParamete @Test fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsAlwaysVisible() - @FlakyTest + @Postsubmit @Test fun visibleLayersShownMoreThanOneConsecutiveEntry() { testSpec.assertLayers { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt index 22d341866088..5f841b892477 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/CloseImeWindowToHomeTest.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants @@ -98,7 +99,7 @@ class CloseImeWindowToHomeTest(private val testSpec: FlickerTestParameter) { } } - @FlakyTest + @Postsubmit @Test fun imeWindowBecomesInvisible() = testSpec.imeWindowBecomesInvisible() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt index bb9cd6fef4a2..85163b3cebf6 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/OpenImeWindowTest.kt @@ -17,10 +17,10 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants -import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider @@ -138,7 +138,7 @@ class OpenImeWindowTest(private val testSpec: FlickerTestParameter) { } } - @FlakyTest + @Postsubmit @Test fun visibleWindowsShownMoreThanOneConsecutiveEntry() { testSpec.assertWm { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt index 55bbe3aa2b5c..a0b0b7586c01 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/ReOpenImeWindowTest.kt @@ -17,6 +17,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation +import android.platform.test.annotations.Postsubmit import android.platform.test.annotations.Presubmit import android.view.Surface import android.view.WindowManagerPolicyConstants @@ -97,7 +98,7 @@ class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @FlakyTest + @Postsubmit @Test fun visibleWindowsShownMoreThanOneConsecutiveEntry() { testSpec.assertWm { @@ -147,13 +148,13 @@ class ReOpenImeWindowTest(private val testSpec: FlickerTestParameter) { testSpec.navBarLayerRotatesAndScales(Surface.ROTATION_0, testSpec.config.endRotation) } - @FlakyTest + @Postsubmit @Test fun statusBarLayerRotatesScales() { testSpec.statusBarLayerRotatesScales(Surface.ROTATION_0, testSpec.config.endRotation) } - @FlakyTest + @Postsubmit @Test fun visibleLayersShownMoreThanOneConsecutiveEntry() { testSpec.assertLayers { diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt index d0e95566f1b5..754d9e977ef3 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ime/SwitchImeWindowsFromGestureNavTest.kt @@ -17,7 +17,7 @@ package com.android.server.wm.flicker.ime import android.app.Instrumentation -import android.platform.test.annotations.Presubmit +import android.platform.test.annotations.Postsubmit import android.view.WindowManagerPolicyConstants import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice @@ -52,7 +52,6 @@ import org.junit.runners.Parameterized @RunWith(Parameterized::class) @Parameterized.UseParametersRunnerFactory(FlickerParametersRunnerFactory::class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) -@FlakyTest class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestParameter) { private val instrumentation: Instrumentation = InstrumentationRegistry.getInstrumentation() private val testApp = SimpleAppHelper(instrumentation) @@ -97,31 +96,31 @@ class SwitchImeWindowsFromGestureNavTest(private val testSpec: FlickerTestParame } } - @Presubmit + @FlakyTest @Test fun imeAppWindowIsAlwaysVisible() = testSpec.imeAppWindowIsAlwaysVisible(imeTestApp) - @Presubmit + @FlakyTest @Test fun imeLayerBecomesVisible() = testSpec.imeLayerBecomesVisible() - @Presubmit + @FlakyTest @Test fun imeLayerBecomesInvisible() = testSpec.imeLayerBecomesInvisible() - @Presubmit + @Postsubmit @Test fun navBarWindowIsAlwaysVisible() = testSpec.navBarWindowIsAlwaysVisible() - @Presubmit + @FlakyTest @Test fun navBarLayerIsAlwaysVisible() = testSpec.navBarLayerIsAlwaysVisible() - @Presubmit + @Postsubmit @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @Presubmit + @FlakyTest @Test fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsAlwaysVisible() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt index ad7ee3030ea8..e0179c1fb651 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/launch/OpenAppFromOverviewTest.kt @@ -16,7 +16,7 @@ package com.android.server.wm.flicker.launch -import android.platform.test.annotations.Postsubmit +import android.platform.test.annotations.Presubmit import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory @@ -63,12 +63,12 @@ class OpenAppFromOverviewTest(testSpec: FlickerTestParameter) : OpenAppTransitio } } - @Postsubmit + @Presubmit @Test override fun appWindowReplacesLauncherAsTopWindow() = super.appWindowReplacesLauncherAsTopWindow() - @Postsubmit + @Presubmit @Test override fun launcherWindowBecomesInvisible() { testSpec.launcherWindowBecomesInvisible() diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt index 5a8162efcb07..9a9d6ff0b49a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/ChangeAppRotationTest.kt @@ -16,6 +16,8 @@ package com.android.server.wm.flicker.rotation +import android.platform.test.annotations.Postsubmit +import android.platform.test.annotations.Presubmit import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory @@ -57,7 +59,7 @@ class ChangeAppRotationTest( super.focusDoesNotChange() } - @FlakyTest + @Postsubmit @Test override fun noUncoveredRegions() { super.noUncoveredRegions() @@ -75,6 +77,36 @@ class ChangeAppRotationTest( } } + @Postsubmit + @Test + override fun appLayerRotates_EndingPos() { + super.appLayerRotates_EndingPos() + } + + @Postsubmit + @Test + override fun appLayerRotates_StartingPos() { + super.appLayerRotates_StartingPos() + } + + @Presubmit + @Test + override fun navBarWindowIsAlwaysVisible() { + super.navBarWindowIsAlwaysVisible() + } + + @Postsubmit + @Test + override fun statusBarLayerIsAlwaysVisible() { + super.statusBarLayerIsAlwaysVisible() + } + + @Postsubmit + @Test + override fun statusBarWindowIsAlwaysVisible() { + super.statusBarWindowIsAlwaysVisible() + } + companion object { private const val SCREENSHOT_LAYER = "RotationLayer" diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt index a353c5962582..4770c3dd245a 100644 --- a/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt +++ b/tests/FlickerTests/src/com/android/server/wm/flicker/rotation/SeamlessAppRotationTest.kt @@ -16,6 +16,7 @@ package com.android.server.wm.flicker.rotation +import android.platform.test.annotations.Postsubmit import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory @@ -92,6 +93,18 @@ class SeamlessAppRotationTest( } } + @Postsubmit + @Test + override fun navBarWindowIsAlwaysVisible() { + super.navBarWindowIsAlwaysVisible() + } + + @Postsubmit + @Test + override fun visibleLayersShownMoreThanOneConsecutiveEntry() { + super.visibleLayersShownMoreThanOneConsecutiveEntry() + } + companion object { private val testFactory = FlickerTestParameterFactory.getInstance() diff --git a/tests/HwAccelerationTest/AndroidManifest.xml b/tests/HwAccelerationTest/AndroidManifest.xml index 6bf44920ee26..04a55d6038b0 100644 --- a/tests/HwAccelerationTest/AndroidManifest.xml +++ b/tests/HwAccelerationTest/AndroidManifest.xml @@ -409,6 +409,15 @@ </intent-filter> </activity> + <activity android:name="ScrollingStretchSurfaceViewActivity" + android:label="SurfaceView/Scrolling Stretched SurfaceView" + android:exported="true"> + <intent-filter> + <action android:name="android.intent.action.MAIN"/> + <category android:name="com.android.test.hwui.TEST"/> + </intent-filter> + </activity> + <activity android:name="GetBitmapSurfaceViewActivity" android:label="SurfaceView/GetBitmap with Camera source" android:exported="true"> diff --git a/tests/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml b/tests/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml new file mode 100644 index 000000000000..77f5e60dc091 --- /dev/null +++ b/tests/HwAccelerationTest/res/layout/scrolling_stretch_surfaceview.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2021 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License. + --> + +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + android:overScrollMode="always" + android:fillViewport="true" + android:layout_width="match_parent" + android:layout_height="match_parent"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="100dp" + android:layout_marginTop="100dp" + android:orientation="horizontal" + > + + <ImageView + android:id="@+id/vertical_imageview" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="match_parent"/> + <FrameLayout + android:id="@+id/vertical_surfaceview_container" + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1"/> + </LinearLayout> + + <HorizontalScrollView + android:overScrollMode="always" + android:layout_width="400dp" + android:layout_height="0dp" + android:background="#FF0000" + android:layout_weight="1" + > + <LinearLayout + android:layout_width="400dp" + android:layout_height="400dp" + android:layout_marginLeft="100dp" + android:orientation="vertical"> + + <ImageView + android:id="@+id/horizontal_imageview" + android:layout_width="100dp" + android:layout_weight="1" + android:layout_height="0dp"/> + + <FrameLayout + android:id="@+id/horizontal_surfaceview_container" + android:layout_width="100dp" + android:layout_height="0dp" + android:layout_weight="1"/> + + </LinearLayout> + </HorizontalScrollView> + </LinearLayout> +</ScrollView>
\ No newline at end of file diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java index 6b6287da2711..2ad034cd143e 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/PositionListenerActivity.java @@ -74,12 +74,10 @@ public class PositionListenerActivity extends Activity { float maxStretchAmount = 100f; // Although we could do this in a single call, the real one won't be - so mimic that if (dir.x != 0f) { - node.stretch(0f, 0f, (float) getWidth(), (float) getHeight(), - dir.x, 0f, maxStretchAmount, maxStretchAmount); + node.stretch(dir.x, 0f, maxStretchAmount, maxStretchAmount); } if (dir.y != 0f) { - node.stretch(0f, 0f, (float) getWidth(), (float) getHeight(), - 0f, dir.y, maxStretchAmount, maxStretchAmount); + node.stretch(0f, dir.y, maxStretchAmount, maxStretchAmount); } } }; @@ -94,10 +92,13 @@ public class PositionListenerActivity extends Activity { int mCurrentCount = 0; int mTranslateY = 0; Rect mPosition = new Rect(); - RectF mStretchArea = new RectF(); + float mWidth = 0f; + float mHeight = 0f; + RectF mMappedBounds = new RectF(); float mStretchX = 0.0f; float mStretchY = 0.0f; - float mStretchMax = 0.0f; + float mStretchMaxX = 0.0f; + float mStretchMaxY = 0.0f; MyPositionReporter(Context c) { super(c); @@ -128,9 +129,12 @@ public class PositionListenerActivity extends Activity { } void updateText() { - setText(String.format("%d: Position %s, stretch area %s, vec %f,%f, amount %f", - mCurrentCount, mPosition.toShortString(), mStretchArea.toShortString(), - mStretchX, mStretchY, mStretchMax)); + String posText = + "%d: Position %s, stretch width %f, height %f, vec %f,%f, amountX %f amountY %f mappedBounds %s"; + setText(String.format(posText, + mCurrentCount, mPosition.toShortString(), mWidth, mHeight, + mStretchX, mStretchY, mStretchMaxX, mStretchMaxY, + mMappedBounds.toShortString())); } @Override @@ -143,13 +147,19 @@ public class PositionListenerActivity extends Activity { } @Override - public void applyStretch(long frameNumber, float left, float top, float right, float bottom, - float vecX, float vecY, float maxStretch) { + public void applyStretch(long frameNumber, float width, float height, + float vecX, float vecY, + float maxStretchX, float maxStretchY, float childRelativeLeft, + float childRelativeTop, float childRelativeRight, float childRelativeBottom) { getHandler().postAtFrontOfQueue(() -> { - mStretchArea.set(left, top, right, bottom); + mWidth = width; + mHeight = height; mStretchX = vecX; mStretchY = vecY; - mStretchMax = maxStretch; + mStretchMaxX = maxStretchX; + mStretchMaxY = maxStretchY; + mMappedBounds.set(childRelativeLeft, childRelativeTop, childRelativeRight, + childRelativeBottom); updateText(); }); } diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java index 79410cf35f7a..d925541c76d6 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/RippleActivity.java @@ -20,6 +20,7 @@ import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.CanvasProperty; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.RecordingCanvas; import android.graphics.RuntimeShader; @@ -48,6 +49,7 @@ public class RippleActivity extends Activity { static class RippleView extends View { static final int DURATION = 1000; static final int MAX_RADIUS = 250; + private final int mColor = Color.RED; private boolean mToggle = false; ArrayList<RenderNodeAnimator> mRunningAnimations = new ArrayList<RenderNodeAnimator>(); @@ -104,7 +106,7 @@ public class RippleActivity extends Activity { Paint p = new Paint(); p.setAntiAlias(true); - p.setColor(0xFFFF0000); + p.setColor(mColor); mPaint = CanvasProperty.createPaint(p); mRuntimeShader = new RuntimeShader(sSkSL, false); @@ -118,7 +120,7 @@ public class RippleActivity extends Activity { if (canvas.isHardwareAccelerated()) { RecordingCanvas recordingCanvas = (RecordingCanvas) canvas; recordingCanvas.drawRipple(mX, mY, mRadius, mPaint, mProgress, mNoisePhase, - mRuntimeShader); + mColor, mRuntimeShader); } } diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java new file mode 100644 index 000000000000..040bff5d74d8 --- /dev/null +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ScrollingStretchSurfaceViewActivity.java @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.test.hwui; + +import android.app.Activity; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.ColorFilter; +import android.graphics.Paint; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.view.SurfaceHolder; +import android.view.SurfaceHolder.Callback; +import android.view.SurfaceView; +import android.widget.FrameLayout; +import android.widget.ImageView; + +public class ScrollingStretchSurfaceViewActivity extends Activity implements Callback { + + SurfaceView mVerticalSurfaceView; + SurfaceView mHorizontalSurfaceView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.scrolling_stretch_surfaceview); + + mVerticalSurfaceView = new SurfaceView(this); + mVerticalSurfaceView.getHolder().addCallback(this); + + mHorizontalSurfaceView = new SurfaceView(this); + mHorizontalSurfaceView.getHolder().addCallback(this); + + FrameLayout verticalContainer = findViewById(R.id.vertical_surfaceview_container); + verticalContainer.addView(mVerticalSurfaceView, + new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT)); + + FrameLayout horizontalContainer = findViewById(R.id.horizontal_surfaceview_container); + horizontalContainer.addView(mHorizontalSurfaceView, + new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT)); + + ImageView verticalImageView = findViewById(R.id.vertical_imageview); + verticalImageView.setImageDrawable(new LineDrawable()); + + ImageView horizontalImageView = findViewById(R.id.horizontal_imageview); + horizontalImageView.setImageDrawable(new LineDrawable()); + } + + @Override + public void surfaceCreated(SurfaceHolder holder) { + } + + @Override + public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { + Canvas canvas = holder.lockCanvas(); + + drawLine(canvas, width, height); + holder.unlockCanvasAndPost(canvas); + } + + private static void drawLine(Canvas canvas, int width, int height) { + canvas.drawColor(Color.GRAY); + + Paint paint = new Paint(); + paint.setAntiAlias(true); + paint.setColor(Color.GREEN); + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(10f); + canvas.drawLine(0, 0, width, height, paint); + } + + private static class LineDrawable extends Drawable { + @Override + public void draw(Canvas canvas) { + drawLine(canvas, getBounds().width(), getBounds().height()); + } + + @Override + public void setAlpha(int alpha) { + // NO-OP + } + + @Override + public void setColorFilter(ColorFilter colorFilter) { + // NO-OP + } + + @Override + public int getOpacity() { + return 0; + } + } + + @Override + public void surfaceDestroyed(SurfaceHolder holder) { + } +} diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java index ade94a9672bc..3307c36d9d1a 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/StretchShaderActivity.java @@ -409,10 +409,6 @@ public class StretchShaderActivity extends Activity { if (mStretchDistance > 0 && canvas instanceof RecordingCanvas) { Rect bounds = getBounds(); ((RecordingCanvas) canvas).mNode.stretch( - 0, - 0, - bounds.width(), - bounds.height(), mOverScrollX, mOverScrollY, mStretchDistance, diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java index 67b9be580ba6..acb872cd23b8 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/StretchySurfaceViewActivity.java @@ -99,7 +99,7 @@ public class StretchySurfaceViewActivity extends Activity implements Callback { super.onDraw(canvas); RenderNode node = ((RecordingCanvas) canvas).mNode; - node.stretch(0f, 0f, getWidth(), getHeight() / 2f, 0f, + node.stretch(0f, 1f, 400f, 400f); } }; diff --git a/tests/RollbackTest/MultiUserRollbackTest/src/com/android/tests/rollback/host/MultiUserRollbackTest.java b/tests/RollbackTest/MultiUserRollbackTest/src/com/android/tests/rollback/host/MultiUserRollbackTest.java index 741745560c61..35859fe1472e 100644 --- a/tests/RollbackTest/MultiUserRollbackTest/src/com/android/tests/rollback/host/MultiUserRollbackTest.java +++ b/tests/RollbackTest/MultiUserRollbackTest/src/com/android/tests/rollback/host/MultiUserRollbackTest.java @@ -48,6 +48,8 @@ public class MultiUserRollbackTest extends BaseHostJUnit4Test { public void tearDown() throws Exception { removeSecondaryUserIfNecessary(); runPhaseForUsers("cleanUp", mOriginalUserId); + uninstallPackage("com.android.cts.install.lib.testapp.A"); + uninstallPackage("com.android.cts.install.lib.testapp.B"); } @Before diff --git a/tests/TouchLatency/gradle/wrapper/gradle-wrapper.jar b/tests/TouchLatency/gradle/wrapper/gradle-wrapper.jar Binary files differindex 8c0fb64a8698..758de960ec79 100644 --- a/tests/TouchLatency/gradle/wrapper/gradle-wrapper.jar +++ b/tests/TouchLatency/gradle/wrapper/gradle-wrapper.jar diff --git a/tests/TouchLatency/gradle/wrapper/gradle-wrapper.properties b/tests/TouchLatency/gradle/wrapper/gradle-wrapper.properties index 111992a460fa..2d80b69a7665 100644 --- a/tests/TouchLatency/gradle/wrapper/gradle-wrapper.properties +++ b/tests/TouchLatency/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Tue Nov 27 13:37:59 PST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip diff --git a/tests/TouchLatency/gradlew b/tests/TouchLatency/gradlew index 91a7e269e19d..cccdd3d517fc 100755 --- a/tests/TouchLatency/gradlew +++ b/tests/TouchLatency/gradlew @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh ############################################################################## ## @@ -6,20 +6,38 @@ ## ############################################################################## -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" -warn ( ) { +warn () { echo "$*" } -die ( ) { +die () { echo echo "$*" echo @@ -30,6 +48,7 @@ die ( ) { cygwin=false msys=false darwin=false +nonstop=false case "`uname`" in CYGWIN* ) cygwin=true @@ -40,31 +59,11 @@ case "`uname`" in MINGW* ) msys=true ;; + NONSTOP* ) + nonstop=true + ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - -# Attempt to set APP_HOME -# Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi -done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- -APP_HOME="`pwd -P`" -cd "$SAVED" >&- - CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -90,7 +89,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -114,6 +113,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -154,11 +154,19 @@ if $cygwin ; then esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +exec "$JAVACMD" "$@" diff --git a/tests/TouchLatency/gradlew.bat b/tests/TouchLatency/gradlew.bat index aec99730b4e8..e95643d6a2ca 100644 --- a/tests/TouchLatency/gradlew.bat +++ b/tests/TouchLatency/gradlew.bat @@ -8,14 +8,14 @@ @rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS=
-
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
@@ -46,10 +46,9 @@ echo location of your Java installation. goto fail
:init
-@rem Get command-line arguments, handling Windowz variants
+@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
-if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
@@ -60,11 +59,6 @@ set _SKIP=2 if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
-goto execute
-
-:4NT_args
-@rem Get arguments from the 4NT Shell from JP Software
-set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
diff --git a/tests/UiBench/res/layout/recycler_view.xml b/tests/UiBench/res/layout/recycler_view.xml index 53eab68f7866..c8a85de81710 100644 --- a/tests/UiBench/res/layout/recycler_view.xml +++ b/tests/UiBench/res/layout/recycler_view.xml @@ -17,5 +17,6 @@ <androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/recyclerView" + android:overScrollMode="never" android:layout_width="match_parent" android:layout_height="match_parent"/> diff --git a/tests/UpdatableSystemFontTest/src/com/android/updatablesystemfont/UpdatableSystemFontTest.java b/tests/UpdatableSystemFontTest/src/com/android/updatablesystemfont/UpdatableSystemFontTest.java index 9793c3447ff2..898b8d4cbdc1 100644 --- a/tests/UpdatableSystemFontTest/src/com/android/updatablesystemfont/UpdatableSystemFontTest.java +++ b/tests/UpdatableSystemFontTest/src/com/android/updatablesystemfont/UpdatableSystemFontTest.java @@ -112,7 +112,8 @@ public class UpdatableSystemFontTest { @After public void tearDown() throws Exception { - expectCommandToSucceed("cmd font clear"); + // Ignore errors because this may fail if updatable system font is not enabled. + runShellCommand("cmd font clear", null); if (mKeyId != null) { expectCommandToSucceed("mini-keyctl unlink " + mKeyId + " .fs-verity"); } diff --git a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java index 9b7458397cf5..1c8a1bfeb417 100644 --- a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java +++ b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java @@ -391,9 +391,11 @@ public class NetworkCapabilitiesTest { @Test public void testOemPaid() { NetworkCapabilities nc = new NetworkCapabilities(); - // By default OEM_PAID is neither in the unwanted or required lists and the network is not + // By default OEM_PAID is neither in the required or forbidden lists and the network is not // restricted. - assertFalse(nc.hasUnwantedCapability(NET_CAPABILITY_OEM_PAID)); + if (isAtLeastS()) { + assertFalse(nc.hasForbiddenCapability(NET_CAPABILITY_OEM_PAID)); + } assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PAID)); nc.maybeMarkCapabilitiesRestricted(); assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); @@ -418,9 +420,9 @@ public class NetworkCapabilitiesTest { @Test @IgnoreUpTo(Build.VERSION_CODES.R) public void testOemPrivate() { NetworkCapabilities nc = new NetworkCapabilities(); - // By default OEM_PRIVATE is neither in the unwanted or required lists and the network is + // By default OEM_PRIVATE is neither in the required or forbidden lists and the network is // not restricted. - assertFalse(nc.hasUnwantedCapability(NET_CAPABILITY_OEM_PRIVATE)); + assertFalse(nc.hasForbiddenCapability(NET_CAPABILITY_OEM_PRIVATE)); assertFalse(nc.hasCapability(NET_CAPABILITY_OEM_PRIVATE)); nc.maybeMarkCapabilitiesRestricted(); assertTrue(nc.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); @@ -442,8 +444,8 @@ public class NetworkCapabilitiesTest { assertFalse(nr.satisfiedByNetworkCapabilities(new NetworkCapabilities())); } - @Test - public void testUnwantedCapabilities() { + @Test @IgnoreUpTo(Build.VERSION_CODES.R) + public void testForbiddenCapabilities() { NetworkCapabilities network = new NetworkCapabilities(); NetworkCapabilities request = new NetworkCapabilities(); @@ -451,19 +453,19 @@ public class NetworkCapabilitiesTest { request.satisfiedByNetworkCapabilities(network)); // Requesting absence of capabilities that network doesn't have. Request should satisfy. - request.addUnwantedCapability(NET_CAPABILITY_WIFI_P2P); - request.addUnwantedCapability(NET_CAPABILITY_NOT_METERED); + request.addForbiddenCapability(NET_CAPABILITY_WIFI_P2P); + request.addForbiddenCapability(NET_CAPABILITY_NOT_METERED); assertTrue(request.satisfiedByNetworkCapabilities(network)); - assertArrayEquals(new int[] {NET_CAPABILITY_WIFI_P2P, + assertArrayEquals(new int[]{NET_CAPABILITY_WIFI_P2P, NET_CAPABILITY_NOT_METERED}, - request.getUnwantedCapabilities()); + request.getForbiddenCapabilities()); // This is a default capability, just want to make sure its there because we use it below. assertTrue(network.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); - // Verify that adding unwanted capability will effectively remove it from capability list. - request.addUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED); - assertTrue(request.hasUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED)); + // Verify that adding forbidden capability will effectively remove it from capability list. + request.addForbiddenCapability(NET_CAPABILITY_NOT_RESTRICTED); + assertTrue(request.hasForbiddenCapability(NET_CAPABILITY_NOT_RESTRICTED)); assertFalse(request.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); // Now this request won't be satisfied because network contains NOT_RESTRICTED. @@ -471,10 +473,10 @@ public class NetworkCapabilitiesTest { network.removeCapability(NET_CAPABILITY_NOT_RESTRICTED); assertTrue(request.satisfiedByNetworkCapabilities(network)); - // Verify that adding capability will effectively remove it from unwanted list + // Verify that adding capability will effectively remove it from forbidden list request.addCapability(NET_CAPABILITY_NOT_RESTRICTED); assertTrue(request.hasCapability(NET_CAPABILITY_NOT_RESTRICTED)); - assertFalse(request.hasUnwantedCapability(NET_CAPABILITY_NOT_RESTRICTED)); + assertFalse(request.hasForbiddenCapability(NET_CAPABILITY_NOT_RESTRICTED)); assertFalse(request.satisfiedByNetworkCapabilities(network)); network.addCapability(NET_CAPABILITY_NOT_RESTRICTED); @@ -513,24 +515,20 @@ public class NetworkCapabilitiesTest { assertTrue(nc1.equalsNetCapabilities(nc2)); assertEquals(nc1, nc2); - nc1.addUnwantedCapability(NET_CAPABILITY_INTERNET); - assertFalse(nc1.equalsNetCapabilities(nc2)); - nc2.addUnwantedCapability(NET_CAPABILITY_INTERNET); - assertTrue(nc1.equalsNetCapabilities(nc2)); if (isAtLeastS()) { - // Remove a required capability doesn't affect unwanted capabilities. - // This is a behaviour change from S. - nc1.removeCapability(NET_CAPABILITY_INTERNET); - assertTrue(nc1.equalsNetCapabilities(nc2)); - - nc1.removeUnwantedCapability(NET_CAPABILITY_INTERNET); + nc1.addForbiddenCapability(NET_CAPABILITY_INTERNET); assertFalse(nc1.equalsNetCapabilities(nc2)); - nc2.removeUnwantedCapability(NET_CAPABILITY_INTERNET); + nc2.addForbiddenCapability(NET_CAPABILITY_INTERNET); assertTrue(nc1.equalsNetCapabilities(nc2)); - } else { + + // Remove a required capability doesn't affect forbidden capabilities. + // This is a behaviour change from R to S. nc1.removeCapability(NET_CAPABILITY_INTERNET); + assertTrue(nc1.equalsNetCapabilities(nc2)); + + nc1.removeForbiddenCapability(NET_CAPABILITY_INTERNET); assertFalse(nc1.equalsNetCapabilities(nc2)); - nc2.removeCapability(NET_CAPABILITY_INTERNET); + nc2.removeForbiddenCapability(NET_CAPABILITY_INTERNET); assertTrue(nc1.equalsNetCapabilities(nc2)); } } @@ -582,31 +580,25 @@ public class NetworkCapabilitiesTest { NetworkCapabilities nc1 = new NetworkCapabilities(); NetworkCapabilities nc2 = new NetworkCapabilities(); - nc1.addUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL); + if (isAtLeastS()) { + nc1.addForbiddenCapability(NET_CAPABILITY_CAPTIVE_PORTAL); + } nc1.addCapability(NET_CAPABILITY_NOT_ROAMING); assertNotEquals(nc1, nc2); nc2.combineCapabilities(nc1); assertEquals(nc1, nc2); assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); - assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); - - // This will effectively move NOT_ROAMING capability from required to unwanted for nc1. - nc1.addUnwantedCapability(NET_CAPABILITY_NOT_ROAMING); + if (isAtLeastS()) { + assertTrue(nc2.hasForbiddenCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); + } if (isAtLeastS()) { - // From S, it is not allowed to have the same capability in both wanted and - // unwanted list. + // This will effectively move NOT_ROAMING capability from required to forbidden for nc1. + nc1.addForbiddenCapability(NET_CAPABILITY_NOT_ROAMING); + // It is not allowed to have the same capability in both wanted and forbidden list. assertThrows(IllegalArgumentException.class, () -> nc2.combineCapabilities(nc1)); - // Remove unwanted capability to continue other tests. - nc1.removeUnwantedCapability(NET_CAPABILITY_NOT_ROAMING); - } else { - nc2.combineCapabilities(nc1); - // We will get this capability in both requested and unwanted lists thus this request - // will never be satisfied. - assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); - assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_NOT_ROAMING)); - // For R or below, remove unwanted capability via removeCapability. - nc1.removeCapability(NET_CAPABILITY_NOT_ROAMING); + // Remove forbidden capability to continue other tests. + nc1.removeForbiddenCapability(NET_CAPABILITY_NOT_ROAMING); } nc1.setSSID(TEST_SSID); @@ -684,14 +676,11 @@ public class NetworkCapabilitiesTest { public void testSetCapabilities() { final int[] REQUIRED_CAPABILITIES = new int[] { NET_CAPABILITY_INTERNET, NET_CAPABILITY_NOT_VPN }; - final int[] UNWANTED_CAPABILITIES = new int[] { - NET_CAPABILITY_NOT_RESTRICTED, NET_CAPABILITY_NOT_METERED - }; NetworkCapabilities nc1 = new NetworkCapabilities(); NetworkCapabilities nc2 = new NetworkCapabilities(); - nc1.setCapabilities(REQUIRED_CAPABILITIES, UNWANTED_CAPABILITIES); + nc1.setCapabilities(REQUIRED_CAPABILITIES); assertArrayEquals(REQUIRED_CAPABILITIES, nc1.getCapabilities()); // Verify that setting and adding capabilities leads to the same object state. @@ -699,10 +688,25 @@ public class NetworkCapabilitiesTest { for (int cap : REQUIRED_CAPABILITIES) { nc2.addCapability(cap); } - for (int cap : UNWANTED_CAPABILITIES) { - nc2.addUnwantedCapability(cap); - } assertEquals(nc1, nc2); + + if (isAtLeastS()) { + final int[] forbiddenCapabilities = new int[]{ + NET_CAPABILITY_NOT_METERED, NET_CAPABILITY_NOT_RESTRICTED }; + + nc1.setCapabilities(REQUIRED_CAPABILITIES, forbiddenCapabilities); + assertArrayEquals(REQUIRED_CAPABILITIES, nc1.getCapabilities()); + assertArrayEquals(forbiddenCapabilities, nc1.getForbiddenCapabilities()); + + nc2.clearAll(); + for (int cap : REQUIRED_CAPABILITIES) { + nc2.addCapability(cap); + } + for (int cap : forbiddenCapabilities) { + nc2.addForbiddenCapability(cap); + } + assertEquals(nc1, nc2); + } } @Test @@ -770,23 +774,32 @@ public class NetworkCapabilitiesTest { NetworkCapabilities nc1 = new NetworkCapabilities(); NetworkCapabilities nc2 = new NetworkCapabilities(); - nc1.addUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL); + if (isAtLeastS()) { + nc1.addForbiddenCapability(NET_CAPABILITY_CAPTIVE_PORTAL); + } nc1.addCapability(NET_CAPABILITY_NOT_ROAMING); assertNotEquals(nc1, nc2); nc2.set(nc1); assertEquals(nc1, nc2); assertTrue(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); - assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); + if (isAtLeastS()) { + assertTrue(nc2.hasForbiddenCapability(NET_CAPABILITY_CAPTIVE_PORTAL)); + } - // This will effectively move NOT_ROAMING capability from required to unwanted for nc1. - nc1.addUnwantedCapability(NET_CAPABILITY_NOT_ROAMING); + if (isAtLeastS()) { + // This will effectively move NOT_ROAMING capability from required to forbidden for nc1. + nc1.addForbiddenCapability(NET_CAPABILITY_NOT_ROAMING); + } nc1.setSSID(TEST_SSID); nc2.set(nc1); assertEquals(nc1, nc2); - // Contrary to combineCapabilities, set() will have removed the NOT_ROAMING capability - // from nc2. - assertFalse(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); - assertTrue(nc2.hasUnwantedCapability(NET_CAPABILITY_NOT_ROAMING)); + if (isAtLeastS()) { + // Contrary to combineCapabilities, set() will have removed the NOT_ROAMING capability + // from nc2. + assertFalse(nc2.hasCapability(NET_CAPABILITY_NOT_ROAMING)); + assertTrue(nc2.hasForbiddenCapability(NET_CAPABILITY_NOT_ROAMING)); + } + if (isAtLeastR()) { assertTrue(TEST_SSID.equals(nc2.getSsid())); } diff --git a/tests/net/integration/src/com/android/server/net/integrationtests/TestNetworkStackService.kt b/tests/net/integration/src/com/android/server/net/integrationtests/TestNetworkStackService.kt index a44ad1e05259..eff66584d6c1 100644 --- a/tests/net/integration/src/com/android/server/net/integrationtests/TestNetworkStackService.kt +++ b/tests/net/integration/src/com/android/server/net/integrationtests/TestNetworkStackService.kt @@ -61,7 +61,6 @@ class TestNetworkStackService : Service() { private class NetworkMonitorDeps(private val privateDnsBypassNetwork: Network) : NetworkMonitor.Dependencies() { override fun getPrivateDnsBypassNetwork(network: Network?) = privateDnsBypassNetwork - override fun sendNetworkConditionsBroadcast(context: Context, broadcast: Intent) = Unit } private inner class TestNetworkStackConnector(context: Context) : NetworkStackConnector( @@ -98,4 +97,4 @@ class TestNetworkStackService : Service() { cb.onNetworkMonitorCreated(NetworkMonitorConnector(nm, TestPermissionChecker())) } } -}
\ No newline at end of file +} diff --git a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java index aa4b5f8e208f..9ecd82ff6bcb 100644 --- a/tests/vcn/java/com/android/server/VcnManagementServiceTest.java +++ b/tests/vcn/java/com/android/server/VcnManagementServiceTest.java @@ -77,6 +77,7 @@ import android.os.test.TestLooper; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import android.util.ArraySet; import androidx.test.filters.SmallTest; import androidx.test.runner.AndroidJUnit4; @@ -98,6 +99,7 @@ import java.io.FileNotFoundException; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.Set; import java.util.UUID; @@ -326,6 +328,17 @@ public class VcnManagementServiceTest { return subIdToGroupMap.get(invocation.getArgument(0)); }).when(snapshot).getGroupForSubId(anyInt()); + doAnswer(invocation -> { + final ParcelUuid subGrp = invocation.getArgument(0); + final Set<Integer> subIds = new ArraySet<>(); + for (Entry<Integer, ParcelUuid> entry : subIdToGroupMap.entrySet()) { + if (entry.getValue().equals(subGrp)) { + subIds.add(entry.getKey()); + } + } + return subIds; + }).when(snapshot).getAllSubIdsInGroup(any()); + final TelephonySubscriptionTrackerCallback cb = getTelephonySubscriptionTrackerCallback(); cb.onNewSnapshot(snapshot); @@ -914,6 +927,18 @@ public class VcnManagementServiceTest { verify(mMockPolicyListener).onPolicyChanged(); } + @Test + public void testVcnSubIdChangeUpdatesPolicyListener() throws Exception { + startAndGetVcnInstance(TEST_UUID_2); + mVcnMgmtSvc.addVcnUnderlyingNetworkPolicyListener(mMockPolicyListener); + + triggerSubscriptionTrackerCbAndGetSnapshot( + Collections.singleton(TEST_UUID_2), + Collections.singletonMap(TEST_SUBSCRIPTION_ID, TEST_UUID_2)); + + verify(mMockPolicyListener).onPolicyChanged(); + } + private void triggerVcnSafeMode( @NonNull ParcelUuid subGroup, @NonNull TelephonySubscriptionSnapshot snapshot, diff --git a/tools/aapt2/ResourceValues.h b/tools/aapt2/ResourceValues.h index d11b013f14d5..d903b7e1b8b3 100644 --- a/tools/aapt2/ResourceValues.h +++ b/tools/aapt2/ResourceValues.h @@ -154,18 +154,18 @@ struct BaseItem : public Item { // A reference can be symbolic (with the name set to a valid resource name) or be // numeric (the id is set to a valid resource ID). struct Reference : public TransformableItem<Reference, BaseItem<Reference>> { - enum class Type { + enum class Type : uint8_t { kResource, kAttribute, }; Maybe<ResourceName> name; Maybe<ResourceId> id; + std::optional<uint32_t> type_flags; Reference::Type reference_type; bool private_reference = false; bool is_dynamic = false; - std::optional<uint32_t> type_flags; - bool allow_raw; + bool allow_raw = false; Reference(); explicit Reference(const ResourceNameRef& n, Type type = Type::kResource); diff --git a/tools/fonts/fontchain_linter.py b/tools/fonts/fontchain_linter.py index 1d308df00ef7..1266ccee4df5 100755 --- a/tools/fonts/fontchain_linter.py +++ b/tools/fonts/fontchain_linter.py @@ -114,7 +114,7 @@ def get_variation_sequences_cmap(font): def get_emoji_map(font): # Add normal characters emoji_map = copy.copy(get_best_cmap(font)) - reverse_cmap = {glyph: code for code, glyph in emoji_map.items()} + reverse_cmap = {glyph: code for code, glyph in emoji_map.items() if not contains_pua(code) } # Add variation sequences vs_dict = get_variation_sequences_cmap(font).uvsDict @@ -322,6 +322,22 @@ def get_emoji_font(): return emoji_fonts[0] +def is_pua(x): + return 0xE000 <= x <= 0xF8FF or 0xF0000 <= x <= 0xFFFFD or 0x100000 <= x <= 0x10FFFD + +def contains_pua(sequence): + if type(sequence) is tuple: + return any([is_pua(x) for x in sequence]) + else: + return is_pua(sequence) + + +def check_emoji_compat(): + ttf = open_font(get_emoji_font()) + meta = ttf['meta'] + assert meta, 'Compat font must have meta table' + assert 'Emji' in meta.data, 'meta table should have \'Emji\' data.' + def check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji): coverage = get_emoji_map(emoji_font) @@ -335,6 +351,11 @@ def check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji): if sequence in {0x0000, 0x000D, 0x0020}: # The font needs to support a few extra characters, which is OK continue + + if contains_pua(sequence): + # The font needs to have some PUA for EmojiCompat library. + continue + if sequence not in all_emoji: errors.append('%s support unexpected in the emoji font.' % printable(sequence)) @@ -347,7 +368,8 @@ def check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji): printable(second))) for glyph in set(coverage.values()): - maps_to_glyph = [seq for seq in coverage if coverage[seq] == glyph] + maps_to_glyph = [ + seq for seq in coverage if coverage[seq] == glyph and not contains_pua(seq) ] if len(maps_to_glyph) > 1: # There are more than one sequences mapping to the same glyph. We # need to make sure they were expected to be equivalent. @@ -728,6 +750,7 @@ def main(): ucd_path = sys.argv[3] parse_ucd(ucd_path) all_emoji, default_emoji, equivalent_emoji = compute_expected_emoji() + check_emoji_compat() check_emoji_coverage(all_emoji, equivalent_emoji) check_emoji_defaults(default_emoji) |