diff options
527 files changed, 5723 insertions, 3366 deletions
diff --git a/Android.bp b/Android.bp index 6c5acd2b416b..2321cc5dd61d 100644 --- a/Android.bp +++ b/Android.bp @@ -322,7 +322,6 @@ java_defaults { libs: [ "app-compat-annotations", "ext", - "framework-connectivity-annotations", "framework-updatable-stubs-module_libs_api", "unsupportedappusage", ], diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index ab610e4e71c6..d962fa3bc316 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -48,6 +48,23 @@ import java.util.Set; */ public abstract class ActivityManagerInternal { + public enum ServiceNotificationPolicy { + /** + * The Notification is not associated with any foreground service. + */ + NOT_FOREGROUND_SERVICE, + /** + * The Notification is associated with a foreground service, but the + * notification system should handle it just like non-FGS notifications. + */ + SHOW_IMMEDIATELY, + /** + * The Notification is associated with a foreground service, and the + * notification system should ignore it unless it has already been shown (in + * which case it should be used to update the currently displayed UI). + */ + UPDATE_ONLY + } // Access modes for handleIncomingUser. public static final int ALLOW_NON_FULL = 0; @@ -458,6 +475,24 @@ public abstract class ActivityManagerInternal { String channelId); /** + * Tell the service lifecycle logic that the given Notification content is now + * canonical for any foreground-service visibility policy purposes. + * + * Returns a description of any FGs-related policy around the given Notification: + * not associated with an FGS; ensure display; or only update if already displayed. + */ + public abstract ServiceNotificationPolicy applyForegroundServiceNotification( + Notification notification, int id, String pkg, @UserIdInt int userId); + + /** + * Callback from the notification subsystem that the given FGS notification has + * been shown or updated. This can happen after either Service.startForeground() + * or NotificationManager.notify(). + */ + public abstract void onForegroundServiceNotificationUpdate(Notification notification, + int id, String pkg, @UserIdInt int userId); + + /** * If the given app has any FGSs whose notifications are in the given channel, * stop them. */ diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 02520afea147..1415212ef07d 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -2784,16 +2784,6 @@ public class AppOpsManager { private static final ThreadLocal<Integer> sBinderThreadCallingUid = new ThreadLocal<>(); /** - * 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). * @@ -8903,7 +8893,6 @@ public class AppOpsManager { * @hide */ public static void startNotedAppOpsCollection(int callingUid) { - sThreadsListeningForOpNotedInBinderTransaction |= Thread.currentThread().getId(); sBinderThreadCallingUid.set(callingUid); } @@ -8918,7 +8907,6 @@ public class AppOpsManager { */ public static void finishNotedAppOpsCollection() { sBinderThreadCallingUid.remove(); - sThreadsListeningForOpNotedInBinderTransaction &= ~Thread.currentThread().getId(); sAppOpsNotedInThisBinderTransaction.remove(); } @@ -9263,9 +9251,7 @@ public class AppOpsManager { * @return whether we are in a binder transaction and collecting appops. */ private static boolean isListeningForOpNotedInBinderTransaction() { - return (sThreadsListeningForOpNotedInBinderTransaction - & Thread.currentThread().getId()) != 0 - && sBinderThreadCallingUid.get() != null; + return sBinderThreadCallingUid.get() != null; } /** diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 432d99d80b89..64b100f838ba 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -450,10 +450,12 @@ public class Notification implements Parcelable STANDARD_LAYOUTS.add(R.layout.notification_template_material_big_text); STANDARD_LAYOUTS.add(R.layout.notification_template_material_inbox); STANDARD_LAYOUTS.add(R.layout.notification_template_material_messaging); + STANDARD_LAYOUTS.add(R.layout.notification_template_material_big_messaging); STANDARD_LAYOUTS.add(R.layout.notification_template_material_conversation); STANDARD_LAYOUTS.add(R.layout.notification_template_material_media); STANDARD_LAYOUTS.add(R.layout.notification_template_material_big_media); STANDARD_LAYOUTS.add(R.layout.notification_template_material_call); + STANDARD_LAYOUTS.add(R.layout.notification_template_material_big_call); STANDARD_LAYOUTS.add(R.layout.notification_template_header); } @@ -5817,7 +5819,7 @@ public class Notification implements Parcelable * @hide */ public RemoteViews createContentView(boolean increasedHeight) { - if (mN.contentView != null && useExistingRemoteView()) { + if (useExistingRemoteView(mN.contentView)) { return fullyCustomViewRequiresDecoration(false /* fromStyle */) ? minimallyDecoratedContentView(mN.contentView) : mN.contentView; } else if (mStyle != null) { @@ -5833,8 +5835,24 @@ public class Notification implements Parcelable return applyStandardTemplate(getBaseLayoutResource(), p, null /* result */); } - private boolean useExistingRemoteView() { - return mStyle == null || !mStyle.displayCustomViewInline(); + private boolean useExistingRemoteView(RemoteViews customContent) { + if (customContent == null) { + return false; + } + if (styleDisplaysCustomViewInline()) { + // the provided custom view is intended to be wrapped by the style. + return false; + } + if (fullyCustomViewRequiresDecoration(false) + && STANDARD_LAYOUTS.contains(customContent.getLayoutId())) { + // If the app's custom views are objects returned from Builder.create*ContentView() + // then the app is most likely attempting to spoof the user. Even if they are not, + // the result would be broken (b/189189308) so we will ignore it. + Log.w(TAG, "For apps targeting S, a custom content view that is a modified " + + "version of any standard layout is disallowed."); + return false; + } + return true; } /** @@ -5842,7 +5860,7 @@ public class Notification implements Parcelable */ public RemoteViews createBigContentView() { RemoteViews result = null; - if (mN.bigContentView != null && useExistingRemoteView()) { + if (useExistingRemoteView(mN.bigContentView)) { return fullyCustomViewRequiresDecoration(false /* fromStyle */) ? minimallyDecoratedBigContentView(mN.bigContentView) : mN.bigContentView; } @@ -5947,7 +5965,7 @@ public class Notification implements Parcelable * @hide */ public RemoteViews createHeadsUpContentView(boolean increasedHeight) { - if (mN.headsUpContentView != null && useExistingRemoteView()) { + if (useExistingRemoteView(mN.headsUpContentView)) { return fullyCustomViewRequiresDecoration(false /* fromStyle */) ? minimallyDecoratedHeadsUpContentView(mN.headsUpContentView) : mN.headsUpContentView; @@ -6396,7 +6414,7 @@ public class Notification implements Parcelable mN.reduceImageSizes(mContext); if (mContext.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.N - && (useExistingRemoteView())) { + && !styleDisplaysCustomViewInline()) { if (mN.contentView == null) { mN.contentView = createContentView(); mN.extras.putInt(EXTRA_REBUILD_CONTENT_VIEW_ACTION_COUNT, @@ -6427,6 +6445,10 @@ public class Notification implements Parcelable return mN; } + private boolean styleDisplaysCustomViewInline() { + return mStyle != null && mStyle.displayCustomViewInline(); + } + /** * Apply this Builder to an existing {@link Notification} object. * @@ -6576,7 +6598,7 @@ public class Notification implements Parcelable public boolean usesTemplate() { return (mN.contentView == null && mN.headsUpContentView == null && mN.bigContentView == null) - || (mStyle != null && mStyle.displayCustomViewInline()); + || styleDisplaysCustomViewInline(); } } @@ -10137,6 +10159,8 @@ public class Notification implements Parcelable * {@link Activity#isLaunchedFromBubble()} will return with {@code true}. * </p> * + * Note that the pending intent used here requires PendingIntent.FLAG_MUTABLE. + * * @throws NullPointerException if intent is null. * @throws NullPointerException if icon is null. */ diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java index a88aed7f20a3..18c638112480 100644 --- a/core/java/android/appwidget/AppWidgetManager.java +++ b/core/java/android/appwidget/AppWidgetManager.java @@ -963,6 +963,9 @@ public class AppWidgetManager { /** * Set the component for a given appWidgetId. * + * If successful, the app widget provider will receive a {@link #ACTION_APPWIDGET_UPDATE} + * broadcast. + * * <p class="note">You need the BIND_APPWIDGET permission or the user must have enabled binding * widgets always for your component. Should be used by apps that host widgets; if this * method returns false, call {@link #ACTION_APPWIDGET_BIND} to request permission to @@ -983,6 +986,9 @@ public class AppWidgetManager { /** * Set the component for a given appWidgetId. * + * If successful, the app widget provider will receive a {@link #ACTION_APPWIDGET_UPDATE} + * broadcast. + * * <p class="note">You need the BIND_APPWIDGET permission or the user must have enabled binding * widgets always for your component. Should be used by apps that host widgets; if this * method returns false, call {@link #ACTION_APPWIDGET_BIND} to request permission to @@ -1006,6 +1012,10 @@ public class AppWidgetManager { /** * Set the provider for a given appWidgetId if the caller has a permission. + * + * If successful, the app widget provider will receive a {@link #ACTION_APPWIDGET_UPDATE} + * broadcast. + * * <p> * <strong>Note:</strong> You need the {@link android.Manifest.permission#BIND_APPWIDGET} * permission or the user must have enabled binding widgets always for your component. diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java index d8050ed5329d..7ebb646ba3eb 100644 --- a/core/java/android/net/NetworkPolicyManager.java +++ b/core/java/android/net/NetworkPolicyManager.java @@ -34,8 +34,6 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.Signature; -import android.net.ConnectivityAnnotations.MultipathPreference; -import android.net.ConnectivityAnnotations.RestrictBackgroundStatus; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.os.Build; @@ -465,7 +463,6 @@ public class NetworkPolicyManager { */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) - @RestrictBackgroundStatus public int getRestrictBackgroundStatus(int uid) { try { return mService.getRestrictBackgroundStatus(uid); @@ -591,7 +588,6 @@ public class NetworkPolicyManager { */ @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @RequiresPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK) - @MultipathPreference public int getMultipathPreference(@NonNull Network network) { try { return mService.getMultipathPreference(network); diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java index 9d1fd50a4112..3aa0bcb6abee 100644 --- a/core/java/android/os/PowerManager.java +++ b/core/java/android/os/PowerManager.java @@ -2107,6 +2107,8 @@ public final class PowerManager { * Return whether the given application package name is on the device's power allowlist. * Apps can be placed on the allowlist through the settings UI invoked by * {@link android.provider.Settings#ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS}. + * <p>Being on the power allowlist means that the system will not apply most power saving + * features to the app. Guardrails for extreme cases may still be applied. */ public boolean isIgnoringBatteryOptimizations(String packageName) { return getPowerWhitelistManager().isWhitelisted(packageName, true); diff --git a/core/java/android/permission/PermissionControllerService.java b/core/java/android/permission/PermissionControllerService.java index 0b99b85fdf24..8854e270eed6 100644 --- a/core/java/android/permission/PermissionControllerService.java +++ b/core/java/android/permission/PermissionControllerService.java @@ -17,6 +17,7 @@ package android.permission; import static android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED; +import static android.app.admin.DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED; import static android.permission.PermissionControllerManager.COUNT_ONLY_WHEN_GRANTED; import static android.permission.PermissionControllerManager.COUNT_WHEN_SYSTEM; @@ -510,7 +511,7 @@ public abstract class PermissionControllerService extends Service { String callerPackageName, AdminPermissionControlParams params, AndroidFuture callback) { checkStringNotEmpty(callerPackageName); - if (params.getGrantState() == PERMISSION_GRANT_STATE_DENIED) { + if (params.getGrantState() == PERMISSION_GRANT_STATE_GRANTED) { enforceSomePermissionsGrantedToCaller( Manifest.permission.GRANT_RUNTIME_PERMISSIONS); } @@ -542,6 +543,9 @@ public abstract class PermissionControllerService extends Service { public void updateUserSensitiveForApp(int uid, @NonNull AndroidFuture callback) { Preconditions.checkNotNull(callback, "callback cannot be null"); + enforceSomePermissionsGrantedToCaller( + Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY); + try { onUpdateUserSensitivePermissionFlags(uid, () -> callback.complete(null)); } catch (Exception e) { @@ -608,9 +612,7 @@ public abstract class PermissionControllerService extends Service { try { Objects.requireNonNull(permissionGroupName); Objects.requireNonNull(callback); - PermissionControllerService - .this - .onGetGroupOfPlatformPermission( + PermissionControllerService.this.onGetGroupOfPlatformPermission( permissionGroupName, callback::complete); } catch (Throwable t) { callback.completeExceptionally(t); diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index e3302d1ca9a0..13e5cda7cca3 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2773,6 +2773,7 @@ public final class Settings { private final ArraySet<String> mReadableFields; private final ArraySet<String> mAllFields; + private final ArrayMap<String, Integer> mReadableFieldsWithMaxTargetSdk; @GuardedBy("this") private GenerationTracker mGenerationTracker; @@ -2794,7 +2795,9 @@ public final class Settings { mProviderHolder = providerHolder; mReadableFields = new ArraySet<>(); mAllFields = new ArraySet<>(); - getPublicSettingsForClass(callerClass, mAllFields, mReadableFields); + mReadableFieldsWithMaxTargetSdk = new ArrayMap<>(); + getPublicSettingsForClass(callerClass, mAllFields, mReadableFields, + mReadableFieldsWithMaxTargetSdk); } public boolean putStringForUser(ContentResolver cr, String name, String value, @@ -2851,13 +2854,34 @@ public final class Settings { // Settings.Global and is not annotated as @Readable. // Notice that a key string that is not defined in any of the Settings.* classes will // still be regarded as readable. - if (!isCallerExemptFromReadableRestriction() - && mAllFields.contains(name) && !mReadableFields.contains(name)) { - throw new SecurityException( - "Settings key: <" + name + "> is not readable. From S+, settings keys " - + "annotated with @hide are restricted to system_server and system " - + "apps only, unless they are annotated with @Readable."); + if (!isCallerExemptFromReadableRestriction() && mAllFields.contains(name)) { + if (!mReadableFields.contains(name)) { + throw new SecurityException( + "Settings key: <" + name + "> is not readable. From S+, settings keys " + + "annotated with @hide are restricted to system_server and " + + "system apps only, unless they are annotated with @Readable." + ); + } else { + // When the target settings key has @Readable annotation, if the caller app's + // target sdk is higher than the maxTargetSdk of the annotation, reject access. + if (mReadableFieldsWithMaxTargetSdk.containsKey(name)) { + final int maxTargetSdk = mReadableFieldsWithMaxTargetSdk.get(name); + final Application application = ActivityThread.currentApplication(); + final boolean targetSdkCheckOk = application != null + && application.getApplicationInfo() != null + && application.getApplicationInfo().targetSdkVersion + <= maxTargetSdk; + if (!targetSdkCheckOk) { + throw new SecurityException( + "Settings key: <" + name + "> is only readable to apps with " + + "targetSdkVersion lower than or equal to: " + + maxTargetSdk + ); + } + } + } } + final boolean isSelf = (userHandle == UserHandle.myUserId()); int currentGeneration = -1; if (isSelf) { @@ -3225,10 +3249,12 @@ public final class Settings { @Target({ ElementType.FIELD }) @Retention(RetentionPolicy.RUNTIME) private @interface Readable { + int maxTargetSdk() default 0; } private static <T extends NameValueTable> void getPublicSettingsForClass( - Class<T> callerClass, Set<String> allKeys, Set<String> readableKeys) { + Class<T> callerClass, Set<String> allKeys, Set<String> readableKeys, + ArrayMap<String, Integer> keysWithMaxTargetSdk) { final Field[] allFields = callerClass.getDeclaredFields(); try { for (int i = 0; i < allFields.length; i++) { @@ -3241,8 +3267,15 @@ public final class Settings { continue; } allKeys.add((String) value); - if (field.getAnnotation(Readable.class) != null) { - readableKeys.add((String) value); + final Readable annotation = field.getAnnotation(Readable.class); + + if (annotation != null) { + final String key = (String) value; + final int maxTargetSdk = annotation.maxTargetSdk(); + readableKeys.add(key); + if (maxTargetSdk != 0) { + keysWithMaxTargetSdk.put(key, maxTargetSdk); + } } } } catch (IllegalAccessException ignored) { @@ -3404,8 +3437,10 @@ public final class Settings { } /** @hide */ - public static void getPublicSettings(Set<String> allKeys, Set<String> readableKeys) { - getPublicSettingsForClass(System.class, allKeys, readableKeys); + public static void getPublicSettings(Set<String> allKeys, Set<String> readableKeys, + ArrayMap<String, Integer> readableKeysWithMaxTargetSdk) { + getPublicSettingsForClass(System.class, allKeys, readableKeys, + readableKeysWithMaxTargetSdk); } /** @@ -5734,8 +5769,10 @@ public final class Settings { } /** @hide */ - public static void getPublicSettings(Set<String> allKeys, Set<String> readableKeys) { - getPublicSettingsForClass(Secure.class, allKeys, readableKeys); + public static void getPublicSettings(Set<String> allKeys, Set<String> readableKeys, + ArrayMap<String, Integer> readableKeysWithMaxTargetSdk) { + getPublicSettingsForClass(Secure.class, allKeys, readableKeys, + readableKeysWithMaxTargetSdk); } /** @@ -11023,7 +11060,7 @@ public final class Settings { * @hide */ @UnsupportedAppUsage - @Readable + @Readable(maxTargetSdk = Build.VERSION_CODES.R) public static final String MOBILE_DATA = "mobile_data"; /** @@ -14965,8 +15002,10 @@ public final class Settings { } /** @hide */ - public static void getPublicSettings(Set<String> allKeys, Set<String> readableKeys) { - getPublicSettingsForClass(Global.class, allKeys, readableKeys); + public static void getPublicSettings(Set<String> allKeys, Set<String> readableKeys, + ArrayMap<String, Integer> readableKeysWithMaxTargetSdk) { + getPublicSettingsForClass(Global.class, allKeys, readableKeys, + readableKeysWithMaxTargetSdk); } /** diff --git a/core/java/android/view/InsetsAnimationControlImpl.java b/core/java/android/view/InsetsAnimationControlImpl.java index b3caac07aa61..17b3020001d4 100644 --- a/core/java/android/view/InsetsAnimationControlImpl.java +++ b/core/java/android/view/InsetsAnimationControlImpl.java @@ -44,6 +44,7 @@ import android.annotation.Nullable; import android.content.res.CompatibilityInfo; import android.graphics.Insets; import android.graphics.Matrix; +import android.graphics.Point; import android.graphics.Rect; import android.util.ArraySet; import android.util.Log; @@ -204,6 +205,19 @@ public class InsetsAnimationControlImpl implements WindowInsetsAnimationControll } @Override + public void updateSurfacePosition(SparseArray<InsetsSourceControl> controls) { + for (int i = controls.size() - 1; i >= 0; i--) { + final InsetsSourceControl control = controls.valueAt(i); + final InsetsSourceControl c = mControls.get(control.getType()); + if (c == null) { + continue; + } + final Point position = control.getSurfacePosition(); + c.setSurfacePosition(position.x, position.y); + } + } + + @Override public @AnimationType int getAnimationType() { return mAnimationType; } diff --git a/core/java/android/view/InsetsAnimationControlRunner.java b/core/java/android/view/InsetsAnimationControlRunner.java index 7787af5e133b..1cb00e3ae7af 100644 --- a/core/java/android/view/InsetsAnimationControlRunner.java +++ b/core/java/android/view/InsetsAnimationControlRunner.java @@ -16,6 +16,7 @@ package android.view; +import android.util.SparseArray; import android.util.proto.ProtoOutputStream; import android.view.InsetsController.AnimationType; import android.view.InsetsState.InternalInsetsType; @@ -45,6 +46,13 @@ public interface InsetsAnimationControlRunner { void notifyControlRevoked(@InsetsType int types); /** + * Updates the surface positions of the controls owned by this runner if there is any. + * + * @param controls An array of {@link InsetsSourceControl} that the caller newly receives. + */ + void updateSurfacePosition(SparseArray<InsetsSourceControl> controls); + + /** * Cancels the animation. */ void cancel(); diff --git a/core/java/android/view/InsetsAnimationThreadControlRunner.java b/core/java/android/view/InsetsAnimationThreadControlRunner.java index c6ebc9e52e84..691e638f3669 100644 --- a/core/java/android/view/InsetsAnimationThreadControlRunner.java +++ b/core/java/android/view/InsetsAnimationThreadControlRunner.java @@ -62,7 +62,12 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro @Override public void scheduleApplyChangeInsets(InsetsAnimationControlRunner runner) { - mControl.applyChangeInsets(null /* outState */); + synchronized (mControl) { + // This reads the surface position on the animation thread, but the surface position + // would be updated on the UI thread, so we need this critical section. + // See: updateSurfacePosition. + mControl.applyChangeInsets(null /* outState */); + } } @Override @@ -148,12 +153,23 @@ public class InsetsAnimationThreadControlRunner implements InsetsAnimationContro } @Override + @UiThread public void notifyControlRevoked(@InsetsType int types) { mControl.notifyControlRevoked(types); } @Override @UiThread + public void updateSurfacePosition(SparseArray<InsetsSourceControl> controls) { + synchronized (mControl) { + // This is called from the UI thread, however, the surface position will be used on the + // animation thread, so we need this critical section. See: scheduleApplyChangeInsets. + mControl.updateSurfacePosition(controls); + } + } + + @Override + @UiThread public void cancel() { InsetsAnimationThread.getHandler().post(mControl::cancel); } diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index d339c0471125..8080883c2b3e 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -829,7 +829,13 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation requestedStateStale = requestedVisibilityChanged || imeRequestedVisible; } + } + if (mTmpControlArray.size() > 0) { + // Update surface positions for animations. + for (int i = mRunningAnimations.size() - 1; i >= 0; i--) { + mRunningAnimations.get(i).runner.updateSurfacePosition(mTmpControlArray); + } } mTmpControlArray.clear(); diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 908d236c6c02..8138b3d30ddf 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -4727,9 +4727,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, WindowInsetsAnimation.Callback mWindowInsetsAnimationCallback; /** - * This lives here since it's only valid for interactive views. + * This lives here since it's only valid for interactive views. This list is null until the + * first use. */ - private List<Rect> mSystemGestureExclusionRects; + private List<Rect> mSystemGestureExclusionRects = null; /** * Used to track {@link #mSystemGestureExclusionRects} @@ -11603,8 +11604,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * a precision touch gesture in a small area in either the X or Y dimension, such as * an edge swipe or dragging a <code>SeekBar</code> thumb.</p> * - * <p>Do not modify the provided list after this method is called.</p> - * * <p>Note: the system will put a limit of <code>200dp</code> on the vertical extent of the * exclusions it takes into account. The limit does not apply while the navigation * bar is {@link #SYSTEM_UI_FLAG_IMMERSIVE_STICKY stickily} hidden, nor to the @@ -11618,13 +11617,17 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (rects.isEmpty() && mListenerInfo == null) return; final ListenerInfo info = getListenerInfo(); + if (info.mSystemGestureExclusionRects != null) { + info.mSystemGestureExclusionRects.clear(); + info.mSystemGestureExclusionRects.addAll(rects); + } else { + info.mSystemGestureExclusionRects = new ArrayList<>(rects); + } if (rects.isEmpty()) { - info.mSystemGestureExclusionRects = null; if (info.mPositionUpdateListener != null) { mRenderNode.removePositionUpdateListener(info.mPositionUpdateListener); } } else { - info.mSystemGestureExclusionRects = rects; if (info.mPositionUpdateListener == null) { info.mPositionUpdateListener = new RenderNode.PositionUpdateListener() { @Override diff --git a/core/java/com/android/internal/policy/IKeyguardService.aidl b/core/java/com/android/internal/policy/IKeyguardService.aidl index b01e4a83a438..76aa7a015d2f 100644 --- a/core/java/com/android/internal/policy/IKeyguardService.aidl +++ b/core/java/com/android/internal/policy/IKeyguardService.aidl @@ -63,8 +63,10 @@ oneway interface IKeyguardService { * @param pmWakeReason One of PowerManager.WAKE_REASON_*, detailing the reason we're waking up, * such as WAKE_REASON_POWER_BUTTON or WAKE_REASON_GESTURE. + * @param cameraGestureTriggered Whether we're waking up due to a power button double tap + * gesture. */ - void onStartedWakingUp(int pmWakeReason); + void onStartedWakingUp(int pmWakeReason, boolean cameraGestureTriggered); /** * Called when the device has finished waking up. diff --git a/core/java/com/android/internal/view/ScrollViewCaptureHelper.java b/core/java/com/android/internal/view/ScrollViewCaptureHelper.java index a1d202e3a39f..a360f63e97d4 100644 --- a/core/java/com/android/internal/view/ScrollViewCaptureHelper.java +++ b/core/java/com/android/internal/view/ScrollViewCaptureHelper.java @@ -125,10 +125,19 @@ public class ScrollViewCaptureHelper implements ScrollCaptureViewHelper<ViewGrou view.getScrollX() - contentView.getLeft(), view.getScrollY() - contentView.getTop()); + Rect input = new Rect(requestedContentBounds); + + // Expand input rect to get the requested rect to be in the center + int remainingHeight = view.getHeight() - view.getPaddingTop() + - view.getPaddingBottom() - input.height(); + if (remainingHeight > 0) { + input.inset(0, -remainingHeight / 2); + } + // requestRect is now local to contentView as requestedContentBounds // contentView (and each parent in turn if possible) will be scrolled // (if necessary) to make all of requestedContent visible, (if possible!) - contentView.requestRectangleOnScreen(new Rect(requestedContentBounds), true); + contentView.requestRectangleOnScreen(input, true); // update new offset between starting and current scroll position scrollDelta = view.getScrollY() - mStartScrollY; diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index f35a93b0afa9..498a004d3fe3 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Gedeeltelike vingerafdruk is bespeur"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Kon nie vingerafdruk verwerk nie. Probeer asseblief weer."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Maak die sensor skoon"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Hou \'n bietjie langer"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Vinger is te stadig beweer. Probeer asseblief weer."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Probeer \'n ander vingerafdruk"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Te helder"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Vingerafdrukikoon"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Gesigslot"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Skryf jou gesig weer in"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Skryf asseblief jou gesig weer in om herkenning te verbeter"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Stel Gesigslot op"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Ontsluit jou foon deur daarna te kyk"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Stel meer maniere op om te ontsluit"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tik om \'n vingerafdruk by te voeg"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Kan nie gesig verifieer nie. Hardeware nie beskikbaar nie."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Probeer Gesigslot weer"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Kan nie nuwe gesigdata berg nie. Vee eers \'n ou een uit."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Gesighandeling is gekanselleer."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Gebruiker het Gesigslot gekanselleer"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Te veel pogings. Probeer later weer."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Te veel pogings. Gesigslot is gedeaktiveer."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Te veel pogings. Gebruik eerder skermslot."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan nie gesig verifieer nie. Probeer weer."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Jy het nie Gesigslot opgestel nie"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Gesigslot word nie op hierdie toestel gesteun nie"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor is tydelik gedeaktiveer."</string> <string name="face_name_template" msgid="3877037340223318119">"Gesig <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Gebruik Gesigslot"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Gebruik Gesigslot of Skermslot"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Gebruik jou gesig om voort te gaan"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Gebruik jou gesig of skermslot om voort te gaan"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Vou ontsluitruimte uit."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Sleep-ontsluit."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Patroon ontsluit."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Gesigslot"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN ontsluit."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM-PIN-ontsluiting."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM-PUK-ontsluiting."</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 313ab77bef2d..50a6619a0215 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"ከፊል የጣት አሻራ ተገኝቷል"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"ጣት አሻራን መስራት አልተቻለም። እባክዎ እንደገና ይሞክሩ።"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"ዳሳሹን ያጽዱ"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"ትንሽ ረዘም ላለ ጊዜ ይያዙ"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"ጣት ከልክ በላይ ተንቀራፎ ተንቀሳቅሷል። እባክዎ እንደገና ይሞክሩ።"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"ሌላ የጣት አሻራ ይሞክሩ"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"በጣም ብርሃናማ"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"የጣት አሻራ አዶ"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"በመልክ መክፈት"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"የእርስዎን ፊት ዳግመኛ ያስመዝግቡ"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"ማንነትን ለይቶ ማወቅን ለማሻሻል፣ እባክዎ የእርስዎን ፊት ዳግም ያስመዝግቡ"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"በመልክ መክፈትን ያዋቅሩ"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"ስልክዎን በመመልከት ያስከፍቱት"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"የሚከፍቱባቸው ተጨማሪ መንገዶችን ያቀናብሩ"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"የጣት አሻራን ለማከል መታ ያድርጉ"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"መልክን ማረጋገጥ አይቻልም። ሃርድዌር የለም።"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"በመልክ መክፈትን እንደገና ይሞክሩ"</string> <string name="face_error_no_space" msgid="5649264057026021723">"አዲስ የመልክ ውውሂብ ማስቀመጥ አልተቻለም። መጀመሪያ የድሮውን ይሰርዙት።"</string> <string name="face_error_canceled" msgid="2164434737103802131">"የፊት ሥርዓተ ክወና ተሰርዟል።"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"በመልክ መክፈት በተጠቃሚ ተሰርዟል"</string> <string name="face_error_lockout" msgid="7864408714994529437">"ከልክ በላይ ብዙ ሙከራዎች። በኋላ ላይ እንደገና ይሞክሩ።"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"በጣም ብዙ ሙከራዎች። በመልክ መክፈት ተሰናክሏል።"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"በጣም ብዙ ሙከራዎች። በምትኩ የማያ ገጽ መቆለፊያን ያስገቡ።"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"ፊትን ማረጋገጥ አይቻልም። እንደገና ይሞክሩ።"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"በመልክ መክፈትን አላዋቀሩም።"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"በመልክ መክፈት በዚህ መሣሪያ ላይ አይደገፍም"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"ዳሳሽ ለጊዜው ተሰናክሏል።"</string> <string name="face_name_template" msgid="3877037340223318119">"ፊት <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"በመልክ መክፈትን ይጠቀሙ"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"የመልክ ወይም የማያ ገጽ መቆለፊያን ይጠቀሙ"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"ለመቀጠል መልክዎን ይጠቀሙ"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"ለመቀጠል መልክዎን ወይም የማያ ገጽዎን መቆለፊያ ይጠቀሙ"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"የመክፈቻ አካባቢውን አስፋፋ።"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"በማንሸራተት ክፈት።"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"በስርዓተ-ጥለት መክፈት።"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"በመልክ መክፈት።"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"በፒን መክፈት።"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"የሲም ፒን ክፈት።"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"የሲም PUK ክፈት።"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 7fe4afb27467..305331da4c67 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -592,8 +592,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"تم اكتشاف بصمة إصبع جزئية."</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"تعذرت معالجة بصمة الإصبع. يُرجى إعادة المحاولة."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"عليك تنظيف جهاز الاستشعار."</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"ثبِّت إصبعك أطول من ذلك قليلاً."</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"تم تحريك الإصبع ببطء شديد. يُرجى إعادة المحاولة."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"يمكنك تجربة بصمة إصبع أخرى."</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"الصورة ساطعة للغاية."</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index 0f4f4074e1f6..daa5bf32107f 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"আংশিক ফিংগাৰপ্ৰিণ্ট চিনাক্ত কৰা হৈছে"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"ফিগাৰপ্ৰিণ্টৰ প্ৰক্ৰিয়া সম্পাদন কৰিবপৰা নগ\'ল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক৷"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"ছেন্সৰটো চাফা কৰক"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"আৰু অলপ সময় ধৰি ৰাখক"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"আঙুলিৰ গতি অতি মন্থৰ আছিল। অনুগ্ৰহ কৰি আকৌ চেষ্টা কৰক৷"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"অন্য এটা ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰি চাওক"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"অতি উজ্জ্বল"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ফিংগাৰপ্ৰিণ্ট আইকন"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"মুখাৱয়বৰ দ্বাৰা আনলক কৰাৰ সুবিধা"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"আপোনাৰ মুখমণ্ডল পুনৰ পঞ্জীয়ণ কৰক"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"চিনাক্তকৰণৰ সুবিধাটো উন্নত কৰিবলৈ, অনুগ্ৰহ কৰি আপোনাৰ মুখমণ্ডল পুনৰ পঞ্জীয়ন কৰক"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"মুখাৱয়বৰে আনলক কৰাৰ সুবিধাটো ছেট আপ কৰক"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"আপোনাৰ ফ’নটোলৈ চাই সেইটো আনলক কৰক"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"আনলক কৰাৰ অধিক উপায় ছেট আপ কৰক"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"এটা ফিংগাৰপ্ৰিণ্ট যোগ দিবলৈ টিপক"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"মুখমণ্ডল সত্যাপন কৰিব পৰা নগ’ল। হাৰ্ডৱেৰ নাই।"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"পুনৰ মুখাৱয়বৰ দ্বাৰা আনলক কৰাটো ব্যৱহাৰ কৰি চাওক"</string> <string name="face_error_no_space" msgid="5649264057026021723">"নতুন মুখমণ্ডলৰ ডেটা জমা কৰিব পৰা নাই। প্ৰথমে পুৰণি এখন মচক।"</string> <string name="face_error_canceled" msgid="2164434737103802131">"মুখমণ্ডলৰ প্ৰক্ৰিয়া বাতিল কৰা হ’ল।"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"ব্যৱহাৰকাৰীয়ে মুখাৱয়বৰ দ্বাৰা আনলক কৰাৰ সুবিধাটো বাতিল কৰিছে"</string> <string name="face_error_lockout" msgid="7864408714994529437">"অত্যধিক ভুল প্ৰয়াস। কিছুসময়ৰ পাছত আকৌ চেষ্টা কৰক।"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"অতি বেছিসংখ্যক প্ৰয়াস। মুখাৱয়বৰ দ্বাৰা আনলক কৰাৰ সুবিধাটো অক্ষম কৰা হৈছে।"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"অতি বেছিসংখ্যক প্ৰয়াস। ইয়াৰ সলনি স্ক্ৰীন লক দিয়ক।"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"মুখমণ্ডল সত্যাপন কৰিব পৰা নগ’ল। আকৌ চেষ্টা কৰক।"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"আপুনি মুখাৱয়বৰ দ্বাৰা আনলক কৰাৰ সুবিধাটো ছেট আপ কৰা নাই"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"এই ডিভাইচটোত মুখাৱয়বৰ দ্বাৰা আনলক কৰাৰ সুবিধাটো সমৰ্থিত নহয়"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"ছেন্সৰটো সাময়িকভাৱে অক্ষম হৈ আছে।"</string> <string name="face_name_template" msgid="3877037340223318119">"মুখমণ্ডল <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"মুখাৱয়বৰে আনলক কৰাটো ব্যৱহাৰ কৰক"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"ফেচ আনলক অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰক"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"অব্যাহত ৰাখিবলৈ নিজৰ মুখাৱয়ব ব্যৱহাৰ কৰক"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"অব্যাহত ৰাখিবলৈ আপোনাৰ মুখাৱয়ব অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰক"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"আনলক ক্ষেত্ৰ বিস্তাৰ কৰক।"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"শ্লাইডৰদ্বাৰা আনলক।"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"আৰ্হিৰদ্বাৰা আনলক।"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"মুখাৱয়বৰ দ্বাৰা আনলক কৰাৰ সুবিধা।"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"পিনৰদ্বাৰা আনলক।"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"ছিম পিন আনলক।"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"ছিম পিইউকে আনলক।"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index 91cf9925fe62..52cdbcb8c0c4 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Barmaq izinin bir hissəsi aşkarlanıb"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Barmaq izi tanınmadı. Lütfən, yenidən cəhd edin."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Sensoru silin"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Azca daha saxlayın"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Barmağınızı çox yavaş hərəkət etdirdiniz. Lütfən, yenidən cəhd edin."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Başqa bir barmaq izini sınayın"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Çox işıqlıdır"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Barmaq izi ikonası"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Üz ilə kiliddən çıxarma"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Üzünüzü yenidən qeydiyyatdan keçirin"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Tanınmanı təkmilləşdirmək üçün üzünüzü yenidən qeydiyyatdan keçirin"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Üz ilə kiliddən çıxarmanı ayarlayın"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Telefona baxaraq onu kiliddən çıxarın"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Kiliddən çıxarmağın daha çox yolunu ayarlayın"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Barmaq izi əlavə etmək üçün toxunun"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Üz doğrulanmadı. Avadanlıq əlçatan deyil."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Üz ilə kiliddən çıxarmanı yenidən sınayın"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Yeni üz datası saxlanmadı. Əvvəlcə köhnə olanı silin."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Üz əməliyyatı ləğv edildi."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"İstifadəçi üz ilə kiliddən çıxarmanı ləğv edib"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Həddindən çox cəhd. Sonraya saxlayın."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Həddindən çox cəhd. Üz ilə kiliddən çıxarma deaktiv edildi."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Həddindən çox cəhd. Əvəzində ekran kilidi daxil edin."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Üz doğrulanmadı. Yenidən cəhd edin."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Üz ilə kiliddən çıxarma ayarlamamısınız"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Üz ilə kiliddən çıxarma bu cihazda dəstəklənmir"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor müvəqqəti deaktivdir."</string> <string name="face_name_template" msgid="3877037340223318119">"Üz <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Üz ilə kiliddən çıxarmadan istifadə edin"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Üz və ya ekran kilidindən istifadə edin"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Davam etmək üçün üzünüzdən istifadə edin"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Davam etmək üçün üz və ya ekran kilidinizdən istifadə edin"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Kilidi açma sahəsini genişləndir."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Sürüşdürmə kilidi."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Kild açma modeli."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Üz ilə kiliddən çıxarma."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin kilid açması."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Sim Pin kilidini açın."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Sim Puk kilidini açın."</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index ac9289755624..1762cce88269 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -583,8 +583,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Otkriven je delimičan otisak prsta"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Nije uspela obrada otiska prsta. Probajte ponovo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Obrišite senzor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Zadržite malo duže"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Previše sporo ste pomerili prst. Probajte ponovo."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Probajte sa drugim otiskom prsta"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Previše je svetlo"</string> @@ -613,12 +612,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona otiska prsta"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Otključavanje licem"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Ponovo registrujte lice"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Da biste poboljšali prepoznavanje, ponovo registrujte lice"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Podesite otključavanje licem"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Otključajte telefon tako što ćete ga pogledati"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Podesite još načina za otključavanje"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dodirnite da biste dodali otisak prsta"</string> @@ -645,26 +642,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Provera lica nije uspela. Hardver nije dostupan."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Probajte ponovo otključavanje licem"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Novi podaci o licu nisu sačuvani. Prvo izbrišete prethodne."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Obrada lica je otkazana."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Korisnik je otkazao otključavanje licem"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Previše pokušaja. Probajte ponovo kasnije."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Previše pokušaja. Otključavanje licem je onemogućeno."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Previše pokušaja. Koristite zaključavanje ekrana za to."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Provera lica nije uspela. Probajte ponovo."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Niste podesili otključavanje licem"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Otključavanje licem nije podržano na ovom uređaju"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je privremeno onemogućen."</string> <string name="face_name_template" msgid="3877037340223318119">"Lice <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Koristite otključavanje licem"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Koristite zaključavanje licem ili zaključavanje ekrana"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Potvrdite identitet licem da biste nastavili"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Koristite lice ili zaključavanje ekrana da biste nastavili"</string> @@ -967,8 +957,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Proširi oblast otključavanja."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Otključavanje prevlačenjem."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Otključavanje šablonom."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Otključavanje licem."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Otključavanje PIN-om."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Otključava SIM karticu PIN-om."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Otključava SIM karticu PUK-om."</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index ecdfde8b7e71..77d78200484e 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Адбітак пальца адсканіраваны не цалкам"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Не атрымалася апрацаваць адбітак пальца. Паспрабуйце яшчэ раз."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Ачысціце сканер"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Утрымлівайце палец крыху даўжэй"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Палец рухаўся занадта павольна. Паспрабуйце яшчэ раз."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Паспрабуйце іншы адбітак пальца"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Занадта светла"</string> @@ -616,12 +615,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Значок адбіткаў пальцаў"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Распазнаванне твару"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Паўтарыце рэгістрацыю твару"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Каб палепшыць распазнавальнасць, яшчэ раз выканайце рэгістрацыю твару"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Наладзьце распазнаванне твару"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Разблакіруйце свой тэлефон, паглядзеўшы на яго"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Наладзьце дадатковыя спосабы разблакіроўкі"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Націсніце, каб дадаць адбітак пальца"</string> @@ -648,26 +645,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Твар не спраўджаны. Абсталяванне недаступнае."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Выканайце распазнаванне твару паўторна"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Новыя даныя пра твар не захаваны. Спачатку выдаліце старыя."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Распазнаванне твару скасавана."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Распазнаванне твару скасавана карыстальнікам"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Занадта шмат спроб. Паўтарыце спробу пазней."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Занадта шмат спроб. Распазнаванне твару выключана."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Занадта шмат спроб. Разблакіруйце экран іншым спосабам."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Не ўдалося спраўдзіць твар. Паўтарыце спробу."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Вы не наладзілі распазнаванне твару"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"На гэтай прыладзе распазнаванне твару не падтрымліваецца"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Датчык часова выключаны."</string> <string name="face_name_template" msgid="3877037340223318119">"Твар <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Ужываць распазнаванне твару"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Выкарыстоўваць распазнаванне твару ці блакіроўку экрана"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Каб працягнуць, скарыстайце распазнаванне твару"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Каб працягнуць, скарыстайце распазнаванне твару ці сродак разблакіроўкі экрана"</string> @@ -970,8 +960,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Разгарнуць вобласць разблакіроўкі."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Разблакiроўка слайда."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Узор разблакiроўкі."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Распазнаванне твару."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN-код разблакiроўкі."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Разблакіроўка SIM-карты з дапамогай PIN-кода."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Разблакіроўка SIM-карты з дапамогай PUK-кода."</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 6ce042be5717..531746693a36 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Установен е частичен отпечатък"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Отпечатъкът не бе обработен. Моля, опитайте отново."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Почистете сензора"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Задръжте пръста си малко по-дълго"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Преместихте пръста си твърде бавно. Моля, опитайте отново."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Опитайте с друг отпечатък"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Твърде светло е"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Икона за отпечатък"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Отключване с лице"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Регистрирайте отново лицето си"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"С цел подобряване на разпознаването регистрирайте отново лицето си"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Настройване на отключването с лице"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Отключвайте телефона си, като го погледнете"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Настройване на още начини за отключване на телефона"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Докоснете, за да добавите отпечатък"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Лицето не може да се потвърди. Хардуерът не е налице."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Опитайте отново да отключите с лице"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Не може да се запази ново лице. Първо изтрийте старо."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Операцията с лице е анулирана."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Отключването с лице е анулирано от потребителя"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Твърде много опити. Опитайте отново по-късно."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Твърде много опити. Отключването с лице е деактивирано."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Твърде много опити. Използвайте опцията за заключване на екрана."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Лицето не може да се потвърди. Опитайте отново."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Не сте настроили отключването с лице"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Отключването с лице не се поддържа на това устройство"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Сензорът е временно деактивиран."</string> <string name="face_name_template" msgid="3877037340223318119">"Лице <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Отключване с лице"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Използване на отключването с лице или опцията за заключване на екрана"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Използвайте лицето си, за да продължите"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Използвайте лицето си или опцията за заключване на екрана, за да продължите"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Разгъване на областта за отключване."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Отключване с плъзгане."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Отключване с фигура."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Отключване с лице."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Отключване с ПИН код."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Отключване на SIM картата с ПИН код."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Отключване на SIM картата с PUK код."</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 361621d68f24..50e097437f90 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -583,8 +583,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Otkriven je djelimični otisak prsta"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Obrada otiska prsta nije uspjela. Pokušajte ponovo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Očistite senzor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Zadržite malo duže"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Presporo ste pomjerili prst. Pokušajte ponovo."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Pokušajte s drugim otiskom prsta"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Presvijetlo"</string> @@ -613,12 +612,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona za otisak prsta"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Otključavanje licem"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Ponovo registrirajte lice"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Ponovo registrirajte lice da poboljšate prepoznavanje"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Postavite otključavanje licem"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Otključajte telefon gledajući u njega"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Postavite više načina otključavanja"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dodirnite da dodate otisak prsta"</string> @@ -645,26 +642,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Nije moguće potvrditi lice. Hardver nije dostupan."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Pokušajte ponovo s otključavanjem licem"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Nije moguće sačuvati nove podatke o licu. Prvo izbrišite stare."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Prepoznavanje lica je otkazano."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Korisnik je otkazao otključavanje licem"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Previše pokušaja. Pokušajte ponovo kasnije."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Previše pokušaja. Otključavanje licem je onemogućeno."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Previše pokušaja. Umjesto toga unesite zaključavanje ekrana."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nije moguće potvrditi lice. Pokušajte ponovo."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Niste postavili otključavanje licem"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Otključavanje licem nije podržano na ovom uređaju"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je privremeno onemogućen."</string> <string name="face_name_template" msgid="3877037340223318119">"Lice <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Koristi otključavanje licem"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Koristi otključavanje licem ili zaključavanje ekrana"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Koristite lice da nastavite"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Koristite lice ili zaključavanje ekrana da nastavite"</string> @@ -967,8 +957,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Proširi oblast za otključavanje."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Otključavanje pomoću klizača."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Otključavanje uzorkom."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Otključavanje licem."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Otključavanje pinom."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Otključavanje Pin-om za Sim."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Otključavanje SIM-a PUK-om"</string> @@ -1188,7 +1177,7 @@ <string name="redo" msgid="7231448494008532233">"Ponovo uradi"</string> <string name="autofill" msgid="511224882647795296">"Automatsko popunjavanje"</string> <string name="textSelectionCABTitle" msgid="5151441579532476940">"Odabir teksta"</string> - <string name="addToDictionary" msgid="8041821113480950096">"Dodaj u rječnik"</string> + <string name="addToDictionary" msgid="8041821113480950096">"Dodajte u rječnik"</string> <string name="deleteText" msgid="4200807474529938112">"Izbriši"</string> <string name="inputMethod" msgid="1784759500516314751">"Način unosa"</string> <string name="editTextMenuTitle" msgid="857666911134482176">"Akcije za tekst"</string> @@ -1310,14 +1299,14 @@ <string name="volume_music" msgid="7727274216734955095">"Jačina zvuka medija"</string> <string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"Medijski sadržaj se reproducira preko Bluetooth veze"</string> <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"Postavljena nečujna melodija zvona"</string> - <string name="volume_call" msgid="7625321655265747433">"Jačina zvuka tokom poziva"</string> - <string name="volume_bluetooth_call" msgid="2930204618610115061">"Jačina zvuka tokom poziva preko Bluetooth veze"</string> + <string name="volume_call" msgid="7625321655265747433">"Jačina zvuka poziva"</string> + <string name="volume_bluetooth_call" msgid="2930204618610115061">"Jačina zvuka poziva putem Bluetootha"</string> <string name="volume_alarm" msgid="4486241060751798448">"Jačina zvuka alarma"</string> <string name="volume_notification" msgid="6864412249031660057">"Jačina zvuka za obavještenja"</string> <string name="volume_unknown" msgid="4041914008166576293">"Jačina zvuka"</string> <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"Jačina zvuka za Bluetooth vezu"</string> <string name="volume_icon_description_ringer" msgid="2187800636867423459">"Jačina zvuka melodije"</string> - <string name="volume_icon_description_incall" msgid="4491255105381227919">"Jačina zvuka tokom poziva"</string> + <string name="volume_icon_description_incall" msgid="4491255105381227919">"Jačina zvuka poziva"</string> <string name="volume_icon_description_media" msgid="4997633254078171233">"Jačina zvuka medija"</string> <string name="volume_icon_description_notification" msgid="579091344110747279">"Jačina zvuka za obavještenja"</string> <string name="ringtone_default" msgid="9118299121288174597">"Zadana melodija zvona"</string> @@ -1916,9 +1905,9 @@ <item quantity="other">%1$d min (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> </plurals> <plurals name="zen_mode_duration_hours_summary" formatted="false" msgid="7725354244196466758"> - <item quantity="one">Za %1$d sat (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> - <item quantity="few">Za %1$d sata (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> - <item quantity="other">Za %1$d sati (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> + <item quantity="one">%1$d sat (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> + <item quantity="few">%1$d sata (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> + <item quantity="other">%1$d sati (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> </plurals> <plurals name="zen_mode_duration_hours_summary_short" formatted="false" msgid="588719069121765642"> <item quantity="one">%1$d sat (do <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index ff84a4b896a1..8bafab34f6b3 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -556,8 +556,8 @@ <string name="permdesc_manageFingerprint" msgid="2025616816437339865">"Permet que l\'aplicació invoqui mètodes per afegir i suprimir plantilles d\'empremtes dactilars que es puguin fer servir."</string> <string name="permlab_useFingerprint" msgid="1001421069766751922">"Utilitzar el maquinari d\'empremtes digitals"</string> <string name="permdesc_useFingerprint" msgid="412463055059323742">"Permet que l\'aplicació faci servir maquinari d\'empremtes digitals per a l\'autenticació"</string> - <string name="permlab_audioWrite" msgid="8501705294265669405">"modificar la teva col·lecció de música"</string> - <string name="permdesc_audioWrite" msgid="8057399517013412431">"Permet que l\'aplicació modifiqui la teva col·lecció de música."</string> + <string name="permlab_audioWrite" msgid="8501705294265669405">"modificar la teva biblioteca de música"</string> + <string name="permdesc_audioWrite" msgid="8057399517013412431">"Permet que l\'aplicació modifiqui la teva biblioteca de música."</string> <string name="permlab_videoWrite" msgid="5940738769586451318">"modificar la teva col·lecció de vídeos"</string> <string name="permdesc_videoWrite" msgid="6124731210613317051">"Permet que l\'aplicació modifiqui la teva col·lecció de vídeos."</string> <string name="permlab_imagesWrite" msgid="1774555086984985578">"modificar la teva col·lecció de fotos"</string> @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"S\'ha detectat una empremta digital parcial"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"No s\'ha pogut processar l\'empremta digital. Torna-ho a provar."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Neteja el sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Mantén premut una estona més"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"El dit s\'ha mogut massa lentament. Torna-ho a provar."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prova una altra empremta digital"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Hi ha massa llum"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icona d\'empremta digital"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueig facial"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Torna a registrar la cara"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Per millorar el reconeixement, torna a registrar la cara"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configura Desbloqueig facial"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Mira el telèfon per desbloquejar-lo"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura més maneres de desbloquejar el dispositiu"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toca per afegir una empremta digital"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"No es pot verificar la cara. Maquinari no disponible."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Torna a provar Desbloqueig facial"</string> <string name="face_error_no_space" msgid="5649264057026021723">"No es poden desar dades facials noves. Suprimeix-ne d\'antigues."</string> <string name="face_error_canceled" msgid="2164434737103802131">"S\'ha cancel·lat el reconeixement facial."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"L\'usuari ha cancel·lat Desbloqueig facial"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Massa intents. Torna-ho a provar més tard."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Massa intents. Desbloqueig facial s\'ha desactivat."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Massa intents. Introdueix el bloqueig de pantalla."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"No es pot verificar la cara. Torna-ho a provar."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"No has configurat Desbloqueig facial"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Desbloqueig facial no és compatible amb aquest dispositiu"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"El sensor està desactivat temporalment."</string> <string name="face_name_template" msgid="3877037340223318119">"Cara <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Utilitza Desbloqueig facial"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Utilitza el desbloqueig facial o de pantalla"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Utilitza la teva cara per continuar"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Utilitza la cara o el bloqueig de pantalla per continuar"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Desplega l\'àrea de desbloqueig."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Desbloqueig lliscant"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Desbloqueig mitjançant patró"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Desbloqueig facial."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Desbloqueig mitjançant PIN"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Desbloqueja la SIM amb el PIN."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Desbloqueja la SIM amb el PUK."</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index bdd010cfd165..124d22e16721 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Byla zjištěna jen část otisku prstu"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Zpracování otisku prstu se nezdařilo. Zkuste to znovu."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Očistěte senzor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Ještě vydržte"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Pohyb prstem byl příliš pomalý. Zkuste to znovu."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Zkuste jiný otisk prstu"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Je příliš světlo"</string> @@ -616,12 +615,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona otisku prstů"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Odemknutí obličejem"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Zaznamenejte obličej znovu"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Chcete-li rozpoznání zdokonalit, zaznamenejte obličej znovu"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Nastavte odemknutí obličejem"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Telefon odemknete pohledem"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Nastavte si více způsobů odemykání"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Klepnutím přidáte otisk prstu"</string> @@ -648,26 +645,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Obličej nelze ověřit. Hardware není dostupný."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Zopakujte odemknutí obličejem"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Údaje o novém obličeji nelze uložit. Nejdřív vymažte starý."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Operace snímání obličeje byla zrušena."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Odemknutí obličejem zrušeno uživatelem"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Příliš mnoho pokusů. Zkuste to později."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Příliš mnoho pokusů. Odemknutí obličejem bylo deaktivováno."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Příliš mnoho pokusů. Zadejte zámek obrazovky."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Obličej se nepodařilo ověřit. Zkuste to znovu."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Odemknutí obličejem nemáte nastavené."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Odemknutí obličejem v tomto zařízení není podporováno"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je dočasně deaktivován."</string> <string name="face_name_template" msgid="3877037340223318119">"Obličej <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Používat odemknutí obličejem"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Použít odemknutí obličejem nebo zámek obrazovky"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Pokračujte ověřením obličeje"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Pokračujte ověřením pomocí obličeje nebo zámku obrazovky"</string> @@ -970,8 +960,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Rozšířit oblast odemknutí"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Odemknutí přejetím prstem."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Odemknutí gestem."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Odemknutí obličejem."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Odemknutí kódem PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Odemknutí SIM karty kódem PIN."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Odemknutí SIM karty kódem PUK."</string> @@ -1925,7 +1914,7 @@ <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"Spořič baterie zapíná tmavý motiv a omezuje či vypíná aktivitu na pozadí, některé vizuální efekty, některé funkce a připojení k některým sítím.\n\n"<annotation id="url">"Další informace"</annotation></string> <string name="battery_saver_description" msgid="8518809702138617167">"Spořič baterie zapíná tmavý motiv a omezuje či vypíná aktivitu na pozadí, některé vizuální efekty, některé funkce a připojení k některým sítím."</string> - <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_description" msgid="4995164271550590517">"S cílem snížit spotřebu dat brání spořič dat některým aplikacím odesílat nebo přijímat data 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> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273"> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index db2ab19b88c2..01a1e5a493fe 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Et delvist fingeraftryk blev registreret"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Fingeraftrykket kunne ikke behandles. Prøv igen."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Rengør sensoren"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Hold fingeren stille lidt længere"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Du bevægede fingeren for langsomt. Prøv igen."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prøv med et andet fingeraftryk"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Der er for lyst"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon for fingeraftryk"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ansigtslås"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Registrer dit ansigt igen"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Registrer dit ansigt igen for at forbedre genkendelsen af det"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Konfigurer ansigtslås"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Lås din telefon op ved at kigge på den"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfigurer flere måder at låse op på"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tryk for at tilføje et fingeraftryk"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Ansigt ikke bekræftet. Hardware ikke tilgængelig."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Prøv ansigtslås igen"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Der kan ikke gemmes nye ansigtsdata. Slet et gammelt først."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Ansigtshandlingen blev annulleret."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Ansigtslås blev annulleret af brugeren"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Du har prøvet for mange gange. Prøv igen senere."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Du har brugt for mange forsøg. Ansigtslås er deaktiveret."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Du har brugt for mange forsøg. Angiv skærmlåsen i stedet."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ansigtet kan ikke genkendes. Prøv igen."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Du har ikke konfigureret ansigtslås."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Ansigtslås understøttes ikke på denne enhed"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensoren er midlertidigt deaktiveret."</string> <string name="face_name_template" msgid="3877037340223318119">"Ansigt <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Brug ansigtslås"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Brug ansigts- eller skærmlås"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Brug dit ansigt for at fortsætte"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Brug din ansigts- eller skærmlås for at fortsætte"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Udvid oplåsningsområdet."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Lås op ved at stryge."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Lås op med mønster."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Ansigtslås."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Lås op med pinkode."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Lås op ved hjælp af pinkoden til SIM-kortet."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Lås op ved hjælp af PUK-koden til SIM-kortet."</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 5d5057d09fae..b2178d8e10fe 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Fingerabdruck wurde nur teilweise erkannt"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Fingerabdruck konnte nicht verarbeitet werden. Bitte versuche es noch einmal."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Sensor reinigen"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Lass den Finger bitte etwas länger liegen"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Finger zu langsam bewegt. Bitte versuche es noch einmal."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Anderen Fingerabdruck verwenden"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Zu hell"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Fingerabdruck-Symbol"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Entsperrung per Gesichtserkennung"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Gesicht neu scannen lassen"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Für bessere Erkennung Gesicht neu scannen lassen"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Entsperrung per Gesichtserkennung einrichten"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Entsperre dein Smartphone, indem du es ansiehst"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Weitere Möglichkeiten zum Entsperren einrichten"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tippe, um einen Fingerabdruck hinzuzufügen"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Gesicht nicht erkannt. Hardware nicht verfügbar."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Versuche es noch mal mit der Gesichtsentsperrung"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Kein Speicherplatz frei. Bitte erst ein Gesicht löschen."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Gesichtserkennung abgebrochen."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Entsperrung per Gesichtserkennung vom Nutzer abgebrochen"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Zu viele Versuche, bitte später noch einmal versuchen"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Zu viele Versuche. Entsperrung per Gesichtserkennung wurde deaktiviert."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Zu viele Versuche. Verwende stattdessen die Displaysperre."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Gesichtsprüfung nicht möglich. Noch mal versuchen."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Entsperrung per Gesichtserkennung ist nicht eingerichtet"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Gesichtsentsperrung wird auf diesem Gerät nicht unterstützt"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Der Sensor ist vorübergehend deaktiviert."</string> <string name="face_name_template" msgid="3877037340223318119">"Gesicht <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Gesichtsentsperrung verwenden"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Entsperrung per Gesichtserkennung oder Displaysperre verwenden"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Gesichtserkennung verwenden, um fortzufahren"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Verwende die Gesichtserkennung oder deine Display-Entsperrmethode, um fortzufahren"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Entsperr-Bereich maximieren"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Entsperrung mit Fingerbewegung"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Entsperrung mit Muster"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Entsperrung per Gesichtserkennung."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Entsperrung mit PIN"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM durch PIN-Eingabe entsperren."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM durch PUK-Eingabe entsperren."</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index f7f7d088dfc6..f57d0f9b4610 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Εντοπίστηκε μέρους του δακτυλικού αποτυπώματος"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Δεν ήταν δυνατή η επεξεργασία του δακτυλικού αποτυπώματος. Δοκιμάστε ξανά."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Καθαρίστε τον αισθητήρα"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Κρατήστε για λίγο ακόμη"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Πολύ αργή κίνηση δαχτύλου. Δοκιμάστε ξανά."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Δοκιμάστε άλλο δακτυλικό αποτύπωμα"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Υπερβολικά έντονος φωτισμός"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Εικονίδιο δακτυλικών αποτυπωμάτων"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ξεκλείδωμα με το πρόσωπο"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Εγγράψτε ξανά το πρόσωπό σας"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Για να βελτιώσετε την αναγνώριση, εγγράψτε ξανά το πρόσωπό σας"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Ρύθμιση της λειτουργίας Ξεκλείδωμα με το πρόσωπο"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Ξεκλειδώστε το τηλέφωνό σας απλώς κοιτώντας το"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Ρυθμίστε περισσότερους τρόπους ξεκλειδώματος"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Πατήστε για να προσθέσετε δακτυλικό αποτύπωμα"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Αδύν. επαλήθ. προσώπου. Μη διαθέσιμος εξοπλισμός."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Δοκιμάστε ξανά το Ξεκλείδωμα με το πρόσωπο"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Η αποθήκ. νέων δεδομ. προσώπ. είναι αδύν. Διαγρ. ένα παλιό."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Η ενέργεια προσώπου ακυρώθηκε."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Το Ξεκλείδωμα με το πρόσωπο ακυρώθηκε από τον χρήστη"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Πάρα πολλές προσπάθειες. Δοκιμάστε ξανά αργότερα."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Πάρα πολλές προσπάθειες. Το Ξεκλείδωμα με το πρόσωπο απενεργοποιήθηκε."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Πάρα πολλές προσπάθειες. Χρησιμοποιήστε εναλλακτικά το κλείδωμα οθόνης."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Αδύνατη επαλήθευση του προσώπου. Επανάληψη."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Δεν έχετε ρυθμίσει το Ξεκλείδωμα με το πρόσωπο"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Αυτή η συσκευή δεν υποστηρίζει το Ξεκλείδωμα με το πρόσωπο"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Ο αισθητήρας απενεργοποιήθηκε προσωρινά."</string> <string name="face_name_template" msgid="3877037340223318119">"Πρόσωπο <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Χρήση Ξεκλειδώματος με το πρόσωπο"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Χρήση προσώπου ή κλειδώματος οθόνης"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Χρησιμοποιήστε το πρόσωπό σας για να συνεχίσετε"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Χρησιμοποιήστε το πρόσωπό σας ή το κλείδωμα οθόνης για συνέχεια"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Ανάπτυξη περιοχής ξεκλειδώματος."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Ξεκλείδωμα ολίσθησης."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Ξεκλείδωμα μοτίβου."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Ξεκλείδωμα με το πρόσωπο."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Ξεκλείδωμα κωδικού ασφαλείας"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Ξεκλείδωμα αριθμού PIN κάρτας SIM."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Ξεκλείδωμα αριθμού PUK κάρτας SIM."</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 364b23a3de86..d8f18a7b14b0 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -609,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Fingerprint icon"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Face Unlock"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Re-enrol your face"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"To improve recognition, please re-enrol your face"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Set up Face Unlock"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string> @@ -641,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Can’t verify face. Hardware not available."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Try Face Unlock again"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Can’t store new face data. Delete an old one first."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Face operation cancelled."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock cancelled by user"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Too many attempts. Try again later."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Too many attempts. Face Unlock disabled."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Too many attempts. Enter screen lock instead."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Can’t verify face. Try again."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"You haven’t set up Face Unlock"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Face Unlock isn’t supported on this device"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor temporarily disabled."</string> <string name="face_name_template" msgid="3877037340223318119">"Face <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Use Face Unlock"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Use face or screen lock"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Use your face to continue"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Use your face or screen lock to continue"</string> @@ -963,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expand unlock area."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Slide unlock."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Pattern unlock."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Face Unlock."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin unlock."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM PIN unlock."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM PUK unlock."</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index ae2d44f7d25f..e78ae7006436 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -609,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Fingerprint icon"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Face Unlock"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Re-enrol your face"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"To improve recognition, please re-enrol your face"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Set up Face Unlock"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string> @@ -641,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Can’t verify face. Hardware not available."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Try Face Unlock again"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Can’t store new face data. Delete an old one first."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Face operation cancelled."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock cancelled by user"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Too many attempts. Try again later."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Too many attempts. Face Unlock disabled."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Too many attempts. Enter screen lock instead."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Can’t verify face. Try again."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"You haven’t set up Face Unlock"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Face Unlock isn’t supported on this device"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor temporarily disabled."</string> <string name="face_name_template" msgid="3877037340223318119">"Face <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Use Face Unlock"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Use face or screen lock"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Use your face to continue"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Use your face or screen lock to continue"</string> @@ -963,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expand unlock area."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Slide unlock."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Pattern unlock."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Face Unlock."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin unlock."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM PIN unlock."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM PUK unlock."</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index b03e1344c785..cd8c88817d4e 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -609,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Fingerprint icon"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Face Unlock"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Re-enrol your face"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"To improve recognition, please re-enrol your face"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Set up Face Unlock"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string> @@ -641,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Can’t verify face. Hardware not available."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Try Face Unlock again"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Can’t store new face data. Delete an old one first."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Face operation cancelled."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock cancelled by user"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Too many attempts. Try again later."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Too many attempts. Face Unlock disabled."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Too many attempts. Enter screen lock instead."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Can’t verify face. Try again."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"You haven’t set up Face Unlock"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Face Unlock isn’t supported on this device"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor temporarily disabled."</string> <string name="face_name_template" msgid="3877037340223318119">"Face <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Use Face Unlock"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Use face or screen lock"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Use your face to continue"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Use your face or screen lock to continue"</string> @@ -963,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expand unlock area."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Slide unlock."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Pattern unlock."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Face Unlock."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin unlock."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM PIN unlock."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM PUK unlock."</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index d06e4854c664..3d3197e4f9af 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -609,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Fingerprint icon"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Face Unlock"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Re-enrol your face"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"To improve recognition, please re-enrol your face"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Set up Face Unlock"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Unlock your phone by looking at it"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Set up more ways to unlock"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tap to add a fingerprint"</string> @@ -641,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Can’t verify face. Hardware not available."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Try Face Unlock again"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Can’t store new face data. Delete an old one first."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Face operation cancelled."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock cancelled by user"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Too many attempts. Try again later."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Too many attempts. Face Unlock disabled."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Too many attempts. Enter screen lock instead."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Can’t verify face. Try again."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"You haven’t set up Face Unlock"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Face Unlock isn’t supported on this device"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor temporarily disabled."</string> <string name="face_name_template" msgid="3877037340223318119">"Face <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Use Face Unlock"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Use face or screen lock"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Use your face to continue"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Use your face or screen lock to continue"</string> @@ -963,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expand unlock area."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Slide unlock."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Pattern unlock."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Face Unlock."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin unlock."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM PIN unlock."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM PUK unlock."</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 822a532f2ddf..f25059b43863 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Detección parcial de una huella dactilar"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"No se pudo procesar la huella dactilar. Vuelve a intentarlo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Limpia el sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Mantén presionado un poco más"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Moviste el dedo muy lento. Vuelve a intentarlo."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prueba con otra huella dactilar"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Demasiada luz"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ícono de huella dactilar"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueo facial"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Vuelve a registrar tu rostro"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Para mejorar el reconocimiento, vuelve a registrar tu rostro"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configura Desbloqueo facial"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloquea el teléfono con solo mirarlo"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura más formas de desbloquear el dispositivo"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Presiona para agregar una huella dactilar"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"No se verificó el rostro. Hardware no disponible."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Vuelve a probar Desbloqueo facial"</string> <string name="face_error_no_space" msgid="5649264057026021723">"No hay espacio para datos faciales nuevos. Borra uno viejo."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Se canceló el reconocimiento facial."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"El usuario canceló Desbloqueo facial"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Demasiados intentos. Inténtalo de nuevo más tarde."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Demasiados intentos. Se inhabilitó Desbloqueo facial."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Demasiados intentos. En su lugar, utiliza el bloqueo de pantalla."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"No se pudo verificar el rostro. Vuelve a intentarlo."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"No configuraste Desbloqueo facial"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Este dispositivo no admite Desbloqueo facial"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Se inhabilitó temporalmente el sensor."</string> <string name="face_name_template" msgid="3877037340223318119">"Rostro <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Usar Desbloqueo facial"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Usar desbloqueo facial o de pantalla"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Usa el rostro para continuar"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Usa tu rostro o bloqueo de pantalla para continuar"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expandir el área desbloqueada"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Desbloqueo por deslizamiento"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Desbloqueo por patrón"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Desbloqueo facial."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Desbloqueo por PIN"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"PIN de desbloqueo de SIM"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"PUK de desbloqueo de SIM"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 7a128fb70194..abf619ba14b7 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Huella digital parcial detectada"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"No se ha podido procesar la huella digital. Vuelve a intentarlo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Limpia el sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Mantén pulsado un poco más"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Has movido el dedo demasiado despacio. Vuelve a intentarlo."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prueba con otra huella digital"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Demasiada luz"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icono de huella digital"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueo facial"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Volver a registrar la cara"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Para mejorar el reconocimiento, vuelve a registrar tu cara"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configura Desbloqueo facial"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloquea el teléfono con solo mirarlo"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura más formas de desbloqueo"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toca para añadir una huella digital"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"No se puede verificar. Hardware no disponible."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Vuelve a probar Desbloqueo facial"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Para guardar nuevos datos faciales, borra otros antiguos."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Se ha cancelado el reconocimiento facial."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"El usuario ha cancelado Desbloqueo facial"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Demasiados intentos. Inténtalo de nuevo más tarde."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Demasiados intentos. Desbloqueo facial inhabilitado."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Demasiados intentos. Usa el bloqueo de pantalla."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"No se ha verificado tu cara. Vuelve a intentarlo."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"No has configurado Desbloqueo facial"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Este dispositivo no admite Desbloqueo facial"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"El sensor está inhabilitado en estos momentos."</string> <string name="face_name_template" msgid="3877037340223318119">"Cara <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Usar Desbloqueo facial"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Usar Desbloqueo facial o Bloqueo de pantalla"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Usa tu cara para continuar"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Usa tu cara o tu bloqueo de pantalla para continuar"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Ampliar área de desbloqueo"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Desbloqueo deslizando el dedo"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Desbloqueo por patrón"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Desbloqueo facial."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Desbloqueo por PIN"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Desbloqueo con PIN de la SIM."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Desbloqueo con PUK de la SIM."</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 745b986ca61e..2d1dd6a8fa7e 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Tuvastati osaline sõrmejälg"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Sõrmejälge ei õnnestunud töödelda. Proovige uuesti."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Puhastage andur"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Hoidke veidi kauem"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Sõrm liikus liiga aeglaselt. Proovige uuesti."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Proovige teist sõrmejälge"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Liiga ere"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Sõrmejälje ikoon"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Näoga avamine"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Registreerige oma nägu uuesti"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Tuvastamise parandamiseks registreerige oma nägu uuesti"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Näoga avamise seadistamine"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Avage telefon seda vaadates"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Seadistage rohkem viise avamiseks"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Puudutage sõrmejälje lisamiseks"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Nägu ei saa kinnitada. Riistvara pole saadaval."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Proovige näoga avamist uuesti"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Uue näo andmeid ei saa salvestada. Kustutage enne vanad."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Näotuvastuse toiming tühistati."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Kasutaja tühistas näoga avamise"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Liiga palju katseid. Proovige hiljem uuesti."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Liiga palju katseid. Näoga avamine on keelatud."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Liiga palju katseid. Kasutage selle asemel ekraanilukku."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nägu ei saa kinnitada. Proovige uuesti."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Näoga avamine ei ole seadistatud"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"See seade ei toeta näoga avamist"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Andur on ajutiselt keelatud."</string> <string name="face_name_template" msgid="3877037340223318119">"Nägu <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Näoga avamise kasutamine"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Näoga avamise või ekraaniluku kasutamine"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Jätkamiseks kasutage oma nägu"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Jätkamiseks kasutage oma nägu või ekraanilukku"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Avamisala laiendamine."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Lohistamisega avamine."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Mustriga avamine."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Näoga avamine."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN-koodiga avamine."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM-kaardi PIN-koodiga avamine."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM-kaardi PUK-koodiga avamine."</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index 12ac81fc7598..2424c7304580 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Hatz-marka ez da osorik hauteman"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Ezin izan da prozesatu hatz-marka. Saiatu berriro."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Garbitu sentsorea"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Azkarregi altxatu duzu hatza"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Mantsoegi mugitu duzu hatza. Saiatu berriro."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Erabili beste hatz-marka bat"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Argi gehiegi dago"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Hatz-markaren ikonoa"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Aurpegiaren bidez desblokeatzeko eginbidea"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Erregistratu aurpegia berriro"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Ezagutzea hobetzeko, erregistratu aurpegia berriro"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Konfiguratu aurpegiaren bidez desblokeatzeko eginbidea"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Telefonoa desblokeatzeko, begira iezaiozu"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfiguratu telefonoa desblokeatzeko modu gehiago"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Sakatu hau hatz-marka bat gehitzeko"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Ezin da egiaztatu aurpegia. Hardwarea ez dago erabilgarri."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Saiatu berriro aurpegiaren bidez desblokeatzen"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Ezin dira gorde aurpegiaren datu berriak. Ezabatu zaharrak."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Utzi da aurpegiaren bidezko eragiketa."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Erabiltzaileak aurpegiaren bidez desblokeatzeko aukera utzi du"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Saiakera gehiegi egin dituzu. Saiatu berriro geroago."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Saiakera gehiegi egin dira. Desgaitu egin da aurpegiaren bidez desblokeatzeko eginbidea."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Saiakera gehiegi egin dira. Horren ordez, erabili pantailaren blokeoa."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ezin da egiaztatu aurpegia. Saiatu berriro."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Ez duzu konfiguratu aurpegiaren bidez desblokeatzeko eginbidea"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Aurpegiaren bidez desblokeatzeko eginbidea ez da bateragarria gailu honekin"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sentsorea aldi baterako desgaitu da."</string> <string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> aurpegia"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Erabili aurpegiaren bidez desblokeatzeko eginbidea"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Erabili aurpegia edo pantailaren blokeoa"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Aurrera egiteko, erabili aurpegia"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Aurrera egiteko, erabili aurpegia edo pantailaren blokeoa"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Zabaldu desblokeatzeko eremua."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Hatza lerratuta desblokeatzea."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Ereduaren bidez desblokeatzea."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Aurpegiaren bidez desblokeatzeko eginbidea."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN kodearen bidez desblokeatzea."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM txartela desblokeatzeko PIN kodea."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM txartela desblokeatzeko PUK kodea."</string> @@ -1334,7 +1323,7 @@ <string name="select_character" msgid="3352797107930786979">"Txertatu karakterea"</string> <string name="sms_control_title" msgid="4748684259903148341">"SMS mezuak bidaltzen"</string> <string name="sms_control_message" msgid="6574313876316388239">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> SMS asko ari da bidaltzen. Mezuak bidaltzen jarrai dezan onartu nahi duzu?"</string> - <string name="sms_control_yes" msgid="4858845109269524622">"Baimendu"</string> + <string name="sms_control_yes" msgid="4858845109269524622">"Eman baimena"</string> <string name="sms_control_no" msgid="4845717880040355570">"Ukatu"</string> <string name="sms_short_code_confirm_message" msgid="1385416688897538724">"<b><xliff:g id="APP_NAME">%1$s</xliff:g></b> aplikazioak mezu bat bidali nahi du <b><xliff:g id="DEST_ADDRESS">%2$s</xliff:g></b> helbidera."</string> <string name="sms_short_code_details" msgid="2723725738333388351">"Baliteke horrek mugikorreko kontuan "<b>"gastuak eragitea"</b>"."</string> @@ -1483,7 +1472,7 @@ <string name="grant_credentials_permission_message_header" msgid="5365733888842570481">"Aplikazio hauetako bat edo gehiago kontua orain eta etorkizunean atzitzeko baimena eskatzen ari dira."</string> <string name="grant_credentials_permission_message_footer" msgid="1886710210516246461">"Eskaera onartu nahi duzu?"</string> <string name="grant_permissions_header_text" msgid="3420736827804657201">"Sarbide-eskaera"</string> - <string name="allow" msgid="6195617008611933762">"Baimendu"</string> + <string name="allow" msgid="6195617008611933762">"Eman baimena"</string> <string name="deny" msgid="6632259981847676572">"Ukatu"</string> <string name="permission_request_notification_title" msgid="1810025922441048273">"Baimena eskatu da"</string> <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"Baimena eskatu da \n<xliff:g id="ACCOUNT">%s</xliff:g> konturako."</string> @@ -1504,7 +1493,7 @@ <string name="vpn_text_long" msgid="278540576806169831">"<xliff:g id="SESSION">%s</xliff:g> saiora konektatuta. Sakatu sarea kudeatzeko."</string> <string name="vpn_lockdown_connecting" msgid="6096725311950342607">"Beti aktibatuta dagoen VPNa konektatzen…"</string> <string name="vpn_lockdown_connected" msgid="2853127976590658469">"Beti aktibatuta dagoen VPNa konektatu da"</string> - <string name="vpn_lockdown_disconnected" msgid="5573611651300764955">"Beti aktibatuta dagoen VPN sarea deskonektatuta dago"</string> + <string name="vpn_lockdown_disconnected" msgid="5573611651300764955">"Beti aktibatuta dagoen VPNa deskonektatuta dago"</string> <string name="vpn_lockdown_error" msgid="4453048646854247947">"Ezin izan da konektatu beti aktibatuta dagoen VPN sarera"</string> <string name="vpn_lockdown_config" msgid="8331697329868252169">"Aldatu sarearen edo VPN sarearen ezarpenak"</string> <string name="upload_file" msgid="8651942222301634271">"Aukeratu fitxategia"</string> @@ -1870,7 +1859,7 @@ <string name="managed_profile_label_badge" msgid="6762559569999499495">"Laneko <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge_2" msgid="5673187309555352550">"Laneko 2. <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge_3" msgid="6882151970556391957">"Laneko 3. <xliff:g id="LABEL">%1$s</xliff:g>"</string> - <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Eskatu PIN kodea aingura kendu aurretik"</string> + <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Eskatu PINa aingura kendu aurretik"</string> <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Eskatu desblokeatzeko eredua aingura kendu aurretik"</string> <string name="lock_to_app_unlock_password" msgid="9126722403506560473">"Eskatu pasahitza aingura kendu aurretik"</string> <string name="package_installed_device_owner" msgid="7035926868974878525">"Administratzaileak instalatu du"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index bf8f321da726..9edf11d81b39 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"بخشی از اثر انگشت شناسایی شد"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"اثرانگشت پردازش نشد. لطفاً دوباره امتحان کنید."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"حسگر را پاک کنید"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"کمی بیشتر نگه دارید"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"حرکت انگشت خیلی آهسته بود. لطفاً دوباره امتحان کنید."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"اثر انگشت دیگری را امتحان کنید"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"خیلی روشن است"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"نماد اثر انگشت"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"قفلگشایی با چهره"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"ثبت مجدد چهره"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"برای بهبود تشخیص، لطفاً چهرهتان را دوباره ثبت کنید"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"راهاندازی «قفلگشایی با چهره»"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"برای باز کردن قفل تلفن خود به آن نگاه کنید"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"راهاندازی روشهای بیشتر برای باز کردن قفل"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"برای افزودن اثر انگشت، ضربه بزنید"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"چهره تأیید نشد. سختافزار در دسترس نیست."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"«قفلگشایی با چهره» را دوباره امتحان کنید"</string> <string name="face_error_no_space" msgid="5649264057026021723">"داده چهره جدید ذخیره نشد. اول داده چهره قدیمی را حذف کنید."</string> <string name="face_error_canceled" msgid="2164434737103802131">"عملیات شناسایی چهره لغو شد."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"کاربر «قفلگشایی با چهره» را لغو کرد"</string> <string name="face_error_lockout" msgid="7864408714994529437">"تعداد زیادی تلاش ناموفق. بعداً دوباره امتحان کنید."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"تلاشها بیش از حدمجاز شده است. «قفلگشایی با چهره» غیرفعال است."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"تلاشها بیش از حدمجاز شده است. درعوض قفل صفحه را وارد کنید."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"چهره تأیید نشد. دوباره امتحان کنید."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"«قفلگشایی با چهره» را راهاندازی نکردهاید"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"از «قفلگشایی با چهره» در این دستگاه پشتیبانی نمیشود"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"حسگر بهطور موقت غیرفعال است."</string> <string name="face_name_template" msgid="3877037340223318119">"چهره <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"استفاده از «قفلگشایی با چهره»"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"استفاده از قفل صفحه یا چهره"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"برای ادامه، از چهرهتان استفاده کنید"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"برای ادامه، از تشخیص چهره یا قفل صفحه استفاده کنید"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"گسترده کردن منطقه بازگشایی شده."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"باز کردن قفل با کشیدن انگشت روی صفحه."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"باز کردن قفل با الگو."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"قفلگشایی با چهره."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"باز کردن قفل با پین."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"قفل پین سیمکارت باز شد."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"قفل Puk سیمکارت باز شد."</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 172ee5b8d563..d026cdf0bab4 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Osittainen sormenjälki havaittu"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Sormenjäljen prosessointi epäonnistui. Yritä uudelleen."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Puhdista anturi"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Jatka vielä hetki"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Liikutit sormea liian hitaasti. Yritä uudelleen."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Kokeile toista sormenjälkeä"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Liian kirkas"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Sormenjälkikuvake"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Kasvojentunnistusavaus"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Lisää kasvot uudelleen"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Lisää kasvosi uudelleen tunnistamisen parantamiseksi"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Ota kasvojentunnistusavaus käyttöön"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Avaa puhelimesi lukitus katsomalla laitetta"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Ota käyttöön lisää tapoja avata lukitus"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Napauta lisätäksesi sormenjälki"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Kasvoja ei voi vahvistaa. Laitteisto ei käytettäv."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Yritä käyttää kasvojentunnistusavausta uudelleen"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Uutta kasvodataa ei voi tallentaa. Poista ensin vanhaa."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Kasvotoiminto peruutettu"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Käyttäjä perui kasvojentunnistusavauksen"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Liian monta yritystä. Yritä myöhemmin uudelleen."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Liian monta yritystä. Kasvojentunnistusavaus poistettu käytöstä."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Liian monta yritystä. Lisää sen sijaan näytön lukitus."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Kasvoja ei voi vahvistaa. Yritä uudelleen."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Et ole ottanut käyttöön kasvojentunnistusavausta"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Kasvojentunnistusavausta ei tueta tällä laitteella"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Tunnistin poistettu väliaikaisesti käytöstä."</string> <string name="face_name_template" msgid="3877037340223318119">"Kasvot <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Käytä kasvojentunnistusavausta"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Käytä kasvojentunnistusavausta tai näytön lukitusta"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Jatka kasvojesi avulla"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Jatka kasvojentunnistuksen tai näytön lukituksen avulla"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Laajenna lukituksen poiston aluetta."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Lukituksen poisto liu\'uttamalla."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Lukituksen poisto salasanalla."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Kasvojentunnistusavaus."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Lukituksen poisto PIN-koodilla."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM-kortin PIN-koodin lukituksen avaus"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM-kortin PUK-koodin lukituksen avaus"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 8b41504ebf5d..51cacbeeba19 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Empreinte partielle détectée"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Impossible de reconnaître l\'empreinte digitale. Veuillez réessayer."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Nettoyez le lecteur"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Maintenez un peu plus longtemps"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Vous avez déplacé votre doigt trop lentement. Veuillez réessayer."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Essayez une autre empreinte"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Trop de lumière"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icône d\'empreinte digitale"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Déverrouillage par reconnaissance faciale"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Enregistrer à nouveau votre visage"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Pour améliorer la reconnaissance, veuillez enregistrer à nouveau votre visage"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configurer le déverrouillage facial"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Déverrouillez votre téléphone en le regardant"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configurer d\'autres méthodes de déverrouillage"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Appuyez pour ajouter une empreinte digitale"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Imposs. valider visage. Matériel non disponible."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Réessayez d\'utiliser le déverrouillage facial"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Impossible stocker nouv. visages. Veuillez en supprimer un."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Opération de reconnaissance faciale annulée."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Déverrouillage par reconnaissance faciale annulé par l\'utilisateur"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Trop de tentatives. Réessayez plus tard."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Tentatives trop nombreuses. Déverrouillage par reconnaissance faciale désactivé."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Tentatives trop nombreuses. Utilisez le verrouillage de l\'écran."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Impossible de valider votre visage. Réessayez."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Déverrouillage par reconnaissance faciale non configuré"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Déverrouillage facial indisponible sur cet appareil"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Capteur temporairement désactivé."</string> <string name="face_name_template" msgid="3877037340223318119">"Visage <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Utiliser déverrouillage facial"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Utiliser déverrouillage par authent. faciale ou verrouillage écran"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Utilisez la reconnaissance faciale pour continuer"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Utilisez la reconnaissance faciale ou le verrouillage de l\'écran pour continuer"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Développer la zone de déverrouillage"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Déverrouillage en faisant glisser votre doigt sur l\'écran"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Déverrouillage par schéma"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Déverrouillage par reconnaissance faciale."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Déverrouillage par code PIN"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Déverrouillage de la carte SIM à l\'aide d\'un code."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Déverrouillage de la carte SIM à l\'aide d\'une clé PUK."</string> @@ -2099,11 +2088,11 @@ <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Cette notification a été élevée d\'un niveau. Appuyez ici pour donner votre avis."</string> <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Cette notification a été abaissée d\'un niveau. Appuyez ici pour donner votre avis."</string> <string name="nas_upgrade_notification_title" msgid="8436359459300146555">"Notifications améliorées"</string> - <string name="nas_upgrade_notification_content" msgid="5157550369837103337">"Les actions et réponses suggérées sont maintenant fournies via les notifications améliorées. Les notifications intelligentes Android ne sont plus disponibles."</string> + <string name="nas_upgrade_notification_content" msgid="5157550369837103337">"Les suggestions d\'actions et de réponses sont désormais fournies via les notifications améliorées. Les notifications intelligentes Android ne sont plus disponibles."</string> <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"OK"</string> <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Désactiver"</string> <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"En savoir plus"</string> - <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Les notifications améliorées remplacent les notifications intelligentes dans Android 12. Cette fonctionnalité affiche les actions et réponses suggérées, et organise vos notifications.\n\nElle a accès au contenu des notifications, y compris aux informations personnelles comme le nom des contacts et les messages. Elle peut aussi fermer les notifications ou effectuer des actions comme répondre à un appel téléphonique et contrôler Ne pas déranger."</string> + <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Les notifications améliorées remplacent les notifications intelligentes dans Android 12. Cette fonctionnalité affiche les suggestions d\'actions et de réponses, et organise vos notifications.\n\nElle a accès au contenu des notifications, y compris aux informations personnelles tels que les noms des contacts et les messages. Elle peut aussi fermer les notifications ou effectuer des actions comme répondre à un appel téléphonique et contrôler le mode Ne pas déranger."</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification d\'information du mode Routine"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Vous risquez d\'être à court de batterie plus tôt que prévu"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Économiseur de batterie activé pour prolonger l\'autonomie"</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index 3da739d4ea93..7a26762cafb4 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Detectouse unha impresión dixital parcial"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Non se puido procesar a impresión dixital. Téntao de novo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Limpa o sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Mantén o dedo no sensor un pouco máis"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"O dedo moveuse demasiado lento. Téntao de novo."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Proba con outra impresión dixital"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Hai demasiada luz"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icona de impresión dixital"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueo facial"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Volve inscribir a túa cara"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Para mellorar o recoñecemento, inscribe de novo a túa cara"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configurar o desbloqueo facial"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Mira o teléfono para desbloquealo"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configura máis maneiras de desbloquear o dispositivo"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toca para engadir unha impresión dixital"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Sen verificar a cara. Hardware non dispoñible."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Tenta utilizar o desbloqueo facial de novo"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Para gardar novos datos faciais, elimina os antigos."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Cancelouse a operación relacionada coa cara"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"O usuario cancelou o desbloqueo facial"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Demasiados intentos. Téntao de novo máis tarde."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Realizaches demasiados intentos. Desactivouse o desbloqueo facial."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Realizaches demasiados intentos. Mellor usa o bloqueo de pantalla."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Non se puido verificar a cara. Téntao de novo."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Non configuraches o desbloqueo facial"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Este dispositivo non é compatible co desbloqueo facial"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Desactivouse o sensor temporalmente."</string> <string name="face_name_template" msgid="3877037340223318119">"Cara <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Utilizar desbloqueo facial"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Utilizar desbloqueo facial ou credencial do dispositivo"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Usa a cara para continuar"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Para continuar, utiliza o desbloqueo facial ou a credencial do dispositivo"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Ampliar zona de desbloqueo."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Desbloqueo pasando o dedo."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Desbloqueo mediante padrón"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Desbloqueo facial."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Desbloqueo mediante PIN"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Desbloqueo da SIM co PIN."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Desbloqueo da SIM co PUK."</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index b9a98ae230fa..4d4e0779f7d7 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -757,7 +757,7 @@ <string name="policydesc_encryptedStorage" msgid="1102516950740375617">"જરૂરી છે કે સંગ્રહિત ઍપ્લિકેશન એન્ક્રિપ્ટ થાય."</string> <string name="policylab_disableCamera" msgid="5749486347810162018">"કૅમેરા અક્ષમ કરો"</string> <string name="policydesc_disableCamera" msgid="3204405908799676104">"તમામ ઉપકરણ કૅમેરાનો ઉપયોગ અટકાવો."</string> - <string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"અમુક સ્ક્રીનલૉક સુવિધા અક્ષમ કરો"</string> + <string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"અમુક સ્ક્રીનલૉક સુવિધા બંધ કરો"</string> <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"કેટલીક સ્ક્રીન લૉક સુવિધાઓના ઉપયોગને અટકાવો."</string> <string-array name="phoneTypes"> <item msgid="8996339953292723951">"ઘર"</item> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index dc024fae1898..ef64440839bc 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"पूरा फ़िंगरप्रिंट पहचाना नहीं जा सका"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"फ़िंगरप्रिंट प्रोसेस नहीं हो सका. कृपया दोबारा कोशिश करें."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"सेंसर को साफ़ करें"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"उंगली को थोड़ी देर और सेंसर पर रखें"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"उंगली बहुत धीरे चलाई गई. कृपया फिर से कोशिश करें."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"किसी दूसरे फ़िंगरप्रिंट से कोशिश करें"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"बहुत रोशनी है"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"फ़िंगरप्रिंट आइकॉन"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"फ़ेस अनलॉक"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"अपना चेहरा फिर से दर्ज करें"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"कृपया अपना चेहरा फिर से दर्ज करें ताकि आपको बेहतर तरीके से पहचाना जा सके"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"फे़स अनलॉक की सुविधा सेट अप करें"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"अपने फ़ोन की तरफ़ देखकर उसे अनलॉक करें"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"फ़ोन को अनलॉक करने के दूसरे तरीके सेट अप करें"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"फ़िंगरप्रिंट जोड़ने के लिए टैप करें"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"चेहरा नहीं पहचान पा रहे. हार्डवेयर उपलब्ध नहीं है."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"फ़ेस अनलॉक की सुविधा फिर से आज़माएं"</string> <string name="face_error_no_space" msgid="5649264057026021723">"चेहरे का नया डेटा सेव नहीं हो सकता. कोई पुराना डेटा मिटाएं."</string> <string name="face_error_canceled" msgid="2164434737103802131">"चेहरा पहचानने की कार्रवाई रद्द की गई."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"उपयोगकर्ता ने फ़ेस अनलॉक को रद्द किया"</string> <string name="face_error_lockout" msgid="7864408714994529437">"कई बार कोशिश की गई. बाद में कोशिश करें."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"कई बार कोशिश की जा चुकी है. फ़ेस अनलॉक को बंद कर दिया गया है."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"कई बार कोशिश की जा चुकी है. इसके बजाय, स्क्रीन लॉक का इस्तेमाल करें."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"चेहरा नहीं पहचान पा रहे. फिर से कोशिश करें."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"आपने फ़ेस अनलॉक का सेट अप नहीं किया है"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"फ़ेस अनलॉक की सुविधा इस डिवाइस पर उपलब्ध नहीं है"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"सेंसर कुछ समय के लिए बंद कर दिया गया है."</string> <string name="face_name_template" msgid="3877037340223318119">"चेहरा <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"फ़ेस अनलॉक का इस्तेमाल करें"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"\'फ़ेस अनलॉक\' या स्क्रीन लॉक का क्रेडेंशियल इस्तेमाल करें"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"जारी रखने के लिए, अपने चेहरे की मदद से पुष्टि करें"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"जारी रखने के लिए, अपना चेहरा दिखाकर या स्क्रीन लॉक क्रेडेंशियल डालकर पुष्टि करें"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"अनलॉक क्षेत्र का विस्तार करें."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"स्लाइड अनलॉक."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"आकार अनलॉक."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"फ़ेस अनलॉक."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"पिन अनलॉक."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"पिन के ज़रिए सिम अनलॉक करें."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"पीयूके के ज़रिए सिम अनलॉक करें."</string> @@ -1879,7 +1868,7 @@ <string name="confirm_battery_saver" msgid="5247976246208245754">"ठीक है"</string> <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"बैटरी सेवर, गहरे रंग वाली थीम को चालू करता है. साथ ही, यह बैकग्राउंड की गतिविधि, कुछ विज़ुअल इफ़ेक्ट, कुछ खास सुविधाओं, और कुछ खास तरह के इंटरनेट कनेक्शन इस्तेमाल करने से डिवाइस को रोकता है या इन्हें बंद कर देता है.\n\n"<annotation id="url">"ज़्यादा जानें"</annotation></string> <string name="battery_saver_description" msgid="8518809702138617167">"बैटरी सेवर, गहरे रंग वाली थीम को चालू करता है. साथ ही, यह बैकग्राउंड की गतिविधि, कुछ विज़ुअल इफ़ेक्ट, कुछ खास सुविधाओं, और कुछ खास तरह के इंटरनेट कनेक्शन इस्तेमाल करने से डिवाइस को रोकता है या इन्हें बंद कर देता है."</string> - <string name="data_saver_description" msgid="4995164271550590517">"डेटा खर्च को कम करने के लिए, डेटा बचाने की सेटिंग कुछ ऐप्लिकेशन को बैकग्राउंड में डेटा भेजने या डेटा पाने से रोकती है. फ़िलहाल, आप जिस ऐप्लिकेशन का इस्तेमाल कर रहे हैं वह डेटा ऐक्सेस कर सकता है, लेकिन ऐसा कभी-कभी ही हो पाएगा. उदाहरण के लिए, इमेज तब तक दिखाई नहीं देंगी जब तक कि आप उन पर टैप नहीं करते."</string> + <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> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273"> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index e311fee36390..ce4eb9e75805 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -190,8 +190,8 @@ <string name="ssl_ca_cert_noti_by_administrator" msgid="4564941950768783879">"Administrator radnog profila"</string> <string name="ssl_ca_cert_noti_managed" msgid="217337232273211674">"Od strane domene <xliff:g id="MANAGING_DOMAIN">%s</xliff:g>"</string> <string name="work_profile_deleted" msgid="5891181538182009328">"Radni je profil izbrisan"</string> - <string name="work_profile_deleted_details" msgid="3773706828364418016">"Administratorska aplikacija radnog profila nedostaje ili je oštećena. Zbog toga su radni profil i povezani podaci izbrisani. Za pomoć se obratite svom administratoru."</string> - <string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Vaš radni profil više nije dostupan na ovom uređaju"</string> + <string name="work_profile_deleted_details" msgid="3773706828364418016">"Administratorska aplikacija poslovnog profila nedostaje ili je oštećena. Zbog toga su poslovni profil i povezani podaci izbrisani. Za pomoć se obratite svom administratoru."</string> + <string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"Vaš poslovni profil više nije dostupan na ovom uređaju"</string> <string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Previše pokušaja unosa zaporke"</string> <string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator je ustupio uređaj za osobnu upotrebu"</string> <string name="network_logging_notification_title" msgid="554983187553845004">"Uređaj je upravljan"</string> @@ -305,7 +305,7 @@ <string name="safeMode" msgid="8974401416068943888">"Siguran način rada"</string> <string name="android_system_label" msgid="5974767339591067210">"Sustav Android"</string> <string name="user_owner_label" msgid="8628726904184471211">"Prijeđite na osobni profil"</string> - <string name="managed_profile_label" msgid="7316778766973512382">"Radni profil"</string> + <string name="managed_profile_label" msgid="7316778766973512382">"Poslovni profil"</string> <string name="permgrouplab_contacts" msgid="4254143639307316920">"Kontakti"</string> <string name="permgroupdesc_contacts" msgid="9163927941244182567">"pristupati vašim kontaktima"</string> <string name="permgrouplab_location" msgid="1858277002233964394">"Lokacija"</string> @@ -583,8 +583,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Otkriven je djelomični otisak prsta"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Obrada otiska prsta nije uspjela. Pokušajte ponovo."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Očistite senzor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Zadržite još malo"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Presporo pomicanje prsta. Pokušajte ponovo."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Isprobajte drugi otisak prsta"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Presvijetlo"</string> @@ -613,12 +612,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona otiska prsta"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Otključavanje licem"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Ponovo registrirajte svoje lice"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Za poboljšanje prepoznavanja ponovo registrirajte svoje lice"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Postavite otključavanje licem"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Otključajte telefon gledajući u njega"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Postavite više načina otključavanja"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dodirnite da biste dodali otisak prsta"</string> @@ -645,26 +642,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Lice nije potvrđeno. Hardver nije dostupan."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Ponovo pokušajte otključavanje licem"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Podaci o novom licu nisu pohranjeni. Izbrišite neko staro."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Otkazana je radnja s licem."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Korisnik je otkazao otključavanje licem"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Previše pokušaja. Pokušajte ponovo kasnije."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Previše pokušaja. Otključavanje licem onemogućeno."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Previše pokušaja. Umjesto toga prijeđite na zaključavanje zaslona."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Lice nije potvrđeno. Pokušajte ponovo."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Niste postavili otključavanje licem"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Otključavanje licem nije podržano na ovom uređaju"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je privremeno onemogućen."</string> <string name="face_name_template" msgid="3877037340223318119">"Lice <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Upotrijebi otključavanje licem"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Upotreba otključavanja licem ili zaključavanja zaslona"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Autentificirajte se licem da biste nastavili"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Za nastavak se identificirajte licem ili vjerodajnicom zaključavanja zaslona"</string> @@ -967,8 +957,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Proširivanje područja za otključavanje."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Otključavanje klizanjem."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Uzorak za otključavanje."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Otključavanje licem."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Otključavanje PIN-om."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Otključavanje SIM-a PIN-om."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Otključavanje SIM-a PUK-om."</string> @@ -1641,7 +1630,7 @@ <string name="SetupCallDefault" msgid="5581740063237175247">"Prihvatiti poziv?"</string> <string name="activity_resolver_use_always" msgid="5575222334666843269">"Uvijek"</string> <string name="activity_resolver_use_once" msgid="948462794469672658">"Samo jednom"</string> - <string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s ne podržava radni profil"</string> + <string name="activity_resolver_work_profiles_support" msgid="4071345609235361269">"%1$s ne podržava poslovni profil"</string> <string name="default_audio_route_name" product="tablet" msgid="367936735632195517">"Tabletno računalo"</string> <string name="default_audio_route_name" product="tv" msgid="4908971385068087367">"Televizor"</string> <string name="default_audio_route_name" product="default" msgid="9213546147739983977">"Telefon"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 4f7bfeec9d2f..b9446ff405db 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"A rendszer részleges ujjlenyomatot észlelt"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Nem sikerült feldolgozni az ujjlenyomatot. Próbálkozzon újra."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Tisztítsa meg az érzékelőt"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Ne mozdítsa meg az ujját még egy kicsit"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Túl lassan húzta az ujját. Próbálkozzon újra."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Próbálkozzon másik ujjlenyomattal"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Túl világos"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ujjlenyomat ikon"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Arcalapú feloldás"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Rögzítsen újra képet az arcáról"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"A felismerés javítása érdekében rögzítsen újra az arcáról készített képet"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Az Arcalapú feloldás beállítása"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Feloldhatja a zárolást úgy, hogy ránéz a telefonra"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"További feloldási módszerek beállítása"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Koppintson ide ujjlenyomat hozzáadásához"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Sikertelen arcellenőrzés. A hardver nem érhető el."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Próbálja újra az Arcalapú feloldást"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Nem tárolhatók újabb arcadatok. Törölje valamelyik arcot."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Az arccal kapcsolatos művelet törölve."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Az Arcalapú feloldást megszakította a felhasználó"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Túl sok próbálkozás. Próbálja újra később."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Túl sok próbálkozás. Az Arcalapú feloldás letiltva."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Túl sok próbálkozás. Használja inkább a képernyőzárat."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nem sikerült ellenőrizni az arcát. Próbálja újra."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nem állította be az Arcalapú feloldást"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Az Arcalapú feloldást nem támogatja ez az eszköz"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Az érzékelő átmenetileg le van tiltva."</string> <string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> arc"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Arcalapú feloldás használata"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"A folytatás arcalapú feloldással vagy képernyőzárral lehetséges"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"A folytatáshoz használja az arcalapú feloldást"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"A folytatás arcalapú feloldással vagy a képernyőzár feloldásával lehetséges"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"A feloldási terület kiterjesztése."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Feloldás csúsztatással"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Feloldás mintával"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Arcalapú feloldás."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Feloldás PIN kóddal"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM-kártya PIN-kódjának feloldása."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM-kártya PUK-kódjának feloldása."</string> @@ -2103,7 +2092,7 @@ <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"OK"</string> <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Kikapcsolás"</string> <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"További információ"</string> - <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"A bővített értesítések felváltják az androidos alkalmazkodó értesítéseket az Android 12-es verziójában. Ez a funkció a javasolt műveleteket és válaszokat mutatja, és rendszerezi az értesítéseket.\n\nA bővített értesítések minden értesítéstartalmat olvashatnak (így a személyes adatokat, mint például a névjegyek nevét és az üzeneteket is). Ez a funkció emellett elvetheti az értesítéseket, valamint reagálhat rájuk, például felveheti a telefonhívásokat, és vezérelheti a Ne zavarjanak módot."</string> + <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"A bővített értesítések felváltják az androidos alkalmazkodó értesítéseket az Android 12-es verziójában. Ez a funkció javasolt műveleteket és válaszokat mutat, és rendszerezi az értesítéseket.\n\nA bővített értesítések minden értesítéstartalmat olvashatnak (így a személyes adatokat, mint például a névjegyek nevét és az üzeneteket is). Ez a funkció emellett elvetheti az értesítéseket, valamint reagálhat rájuk, például felveheti a telefonhívásokat, és vezérelheti a Ne zavarjanak módot."</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Információs értesítés a rutinmódról"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Előfordulhat, hogy az akkumulátor lemerül a szokásos töltési időszak előtt"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Akkumulátorkímélő mód aktiválva az akkumulátor üzemidejének növelése érdekében"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 74a8e8e80d42..fc302b561e9f 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> @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Մատնահետքն ամբողջությամբ չի սկանավորվել"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Չհաջողվեց մշակել մատնահետքը: Նորից փորձեք:"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Մաքրեք մատնահետքի սկաները"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Փոքր-ինչ երկար պահեք"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Շատ դանդաղ անցկացրիք մատը: Փորձեք նորից:"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Փորձեք մեկ այլ մատնահետք"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Շատ լուսավոր է"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Մատնահետքի պատկերակ"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Դեմքով ապակողպում"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Նորից գրանցեք ձեր դեմքը"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Ճանաչումը լավացնելու համար նորից գրանցեք ձեր դեմքը"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Կարգավորեք դեմքով ապակողպումը"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Ապակողպելու համար պարզապես նայեք հեռախոսին"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Կարգավորեք ապակողպելու այլ եղանակներ"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Հպեք՝ մատնահետք ավելացնելու համար"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Չհաջողվեց հաստատել դեմքը։ Սարքն անհասանելի է:"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Նորից փորձեք դեմքով ապակողպումը"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Չհաջողվեց պահել նոր դեմքը։ Ջնջեք հին տարբերակը։"</string> <string name="face_error_canceled" msgid="2164434737103802131">"Դեմքի ճանաչումը չեղարկվել է։"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Դեմքով ապակողմումը չեղարկվել է օգտատիրոջ կողմից"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Չափից շատ փորձեր եք կատարել: Փորձեք ավելի ուշ:"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Չափազանց շատ փորձեր են արվել։ Դեմքով ապակողպումն անջատված է։"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Չափազանց շատ փորձեր են արվել։ Օգտագործեք էկրանի կողպումը։"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Չհաջողվեց հաստատել դեմքը։ Նորից փորձեք։"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Դուք չեք կարգավորել դեմքով ապակողպումը։"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Դեմքով ապակողպումը չի աջակցվում այս սարքում"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Տվիչը ժամանակավորապես անջատված է:"</string> <string name="face_name_template" msgid="3877037340223318119">"Դեմք <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Օգտագործել դեմքով ապակողպում"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Օգտագործել դեմքով ապակողպում կամ էկրանի կողպում"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Շարունակելու համար օգտագործեք դեմքի նույնականացումը"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Շարունակելու համար օգտագործեք ձեր դեմքը կամ էկրանի կողպումը"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Ընդլայնել ապակողպման տարածությունը:"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Էջի ապակողպում:"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Սխեմայով ապակողպում:"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Դեմքով ապակողպում։"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin-ն ապակողպված է:"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM քարտի ապակողպում PIN կոդի միջոցով:"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM քարտի ապակողպում PUK կոդի միջոցով:"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 1e07c31c3542..716a92649807 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Sebagian sidik jari terdeteksi"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Tidak dapat memproses sidik jari. Coba lagi."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Bersihkan sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Tahan sedikit lebih lama"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Jari digerakkan terlalu lambat. Coba lagi."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Coba sidik jari lain"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Terlalu terang"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon sidik jari"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Face Unlock"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Daftarkan kembali wajah Anda"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Untuk menyempurnakan pengenalan wajah, daftarkan kembali wajah Anda"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Siapkan Face Unlock"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Buka kunci ponsel dengan melihat ke ponsel"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Siapkan lebih banyak cara untuk membuka kunci"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Ketuk untuk menambahkan sidik jari"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Tidak dapat memverifikasi wajah. Hardware tidak tersedia."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Coba Face Unlock lagi"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Tidak dapat menyimpan data wajah. Hapus dahulu data lama."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Pemrosesan wajah dibatalkan."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Face Unlock dibatalkan oleh pengguna"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Terlalu banyak percobaan. Coba lagi nanti."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Terlalu banyak upaya gagal. Face Unlock dinonaktifkan."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Terlalu banyak upaya gagal. Masukkan kunci layar."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Tidak dapat memverifikasi wajah. Coba lagi."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Anda belum menyiapkan Face Unlock"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Face Unlock tidak didukung di perangkat ini"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor dinonaktifkan untuk sementara."</string> <string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> wajah"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Gunakan Face Unlock"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Gunakan face lock atau kunci layar"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Gunakan wajah untuk melanjutkan"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Gunakan face lock atau kunci layar untuk melanjutkan"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Luaskan area buka kunci."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Buka kunci dengan menggeser."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Buka kunci dengan pola."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Face Unlock."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Buka kunci dengan PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"PIN SIM terbuka."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"PUK SIM terbuka."</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 7cff89968b30..52bede21dbe7 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Hluti fingrafars greindist"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Ekki var hægt að vinna úr fingrafarinu. Reyndu aftur."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Hreinsaðu lesarann"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Haltu aðeins lengur"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Fingurinn hreyfðist of hægt. Reyndu aftur."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prófaðu annað fingrafar"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Of bjart"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Fingrafaratákn"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Andlitsopnun"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Skráðu andlitið þitt aftur"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Skráðu andlitið þitt til að bæta kennsl"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Setja upp andlitsopnun"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Taktu símann úr lás með því að horfa á hann"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Settu upp fleiri leiðir til að taka úr lás"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Ýttu til að bæta við fingrafari"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Andlit ekki staðfest. Vélbúnaður er ekki tiltækur."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Prófaðu andlitsopnun aftur."</string> <string name="face_error_no_space" msgid="5649264057026021723">"Ekki er hægt að vista ný andlitsgögn. Eyddu gömlu fyrst."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Hætt við andlitsgreiningu."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Notandi hætti við andlitsopnun."</string> <string name="face_error_lockout" msgid="7864408714994529437">"Of margar tilraunir. Reyndu aftur síðar."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Of margar tilraunir. Slökkt á andlitsopnun."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Of margar tilraunir. Sláðu inn skjálásinn í staðinn."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ekki tókst að staðfesta andlit. Reyndu aftur."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Þú hefur ekki sett upp andlitsopnun."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Þetta tæki styður ekki andlitsopnun"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Slökkt tímabundið á skynjara."</string> <string name="face_name_template" msgid="3877037340223318119">"Andlit <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Nota andlitsopnun"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Nota andlit eða skjálás"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Notaðu andlitið þitt til að halda áfram"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Notaðu andlitið eða skjálás til að halda áfram"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Stækka opnunarsvæði."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Opnun með stroku."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Opnun með mynstri."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Andlitsopnun."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Opnun með PIN-númeri."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Taka PIN-númer SIM-korts úr lás."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Taka PUK-númer SIM-korts úr lás."</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index fc1053a87405..442575fbd757 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Rilevata impronta parziale"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Impossibile elaborare l\'impronta. Riprova."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Pulisci il sensore"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Tieni premuto un po\' più a lungo"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Movimento del dito troppo lento. Riprova."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prova con un\'altra impronta"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Troppa luce"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index f6b49ef201df..0593b0bb9207 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"זוהתה טביעת אצבע חלקית"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"לא ניתן היה לעבד את טביעת האצבע. אפשר לנסות שוב."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"יש לנקות את החיישן"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"עליך להשאיר את האצבע על החיישן קצת יותר זמן"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"הזזת את האצבע לאט מדי. יש לנסות שוב."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"יש להשתמש בטביעת אצבע אחרת"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"בהיר מדי"</string> @@ -616,12 +615,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"סמל טביעת אצבע"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"פתיחה ע\"י זיהוי הפנים"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"יש לבצע סריקה חוזרת של הפנים שלך"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"לשיפור הזיהוי יש לסרוק מחדש את הפנים שלך"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"הגדרת התכונה \'פתיחה ע\"י זיהוי הפנים\'"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"יש להביט בטלפון כדי לבטל את נעילתו"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"אפשר להגדיר דרכים נוספות לביטול נעילה"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"יש להקיש כדי להוסיף טביעת אצבע"</string> @@ -648,26 +645,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"לא ניתן לאמת את הפנים. החומרה לא זמינה."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"יש לנסות שוב את הפתיחה ע\"י זיהוי הפנים"</string> <string name="face_error_no_space" msgid="5649264057026021723">"לא ניתן לאחסן נתוני פנים חדשים. תחילה יש למחוק את הנתונים הישנים."</string> <string name="face_error_canceled" msgid="2164434737103802131">"הפעולה לאימות הפנים בוטלה."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"הפתיחה ע\"י זיהוי הפנים בוטלה על ידי המשתמש"</string> <string name="face_error_lockout" msgid="7864408714994529437">"יותר מדי ניסיונות. יש לנסות שוב מאוחר יותר."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"בוצעו יותר מדי ניסיונות. הושבתה הפתיחה ע\"י זיהוי הפנים."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"בוצעו יותר מדי ניסיונות. יש להשתמש בנעילת המסך במקום."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"לא ניתן לאמת את הפנים. יש לנסות שוב."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"לא הגדרת פתיחה ע\"י זיהוי הפנים"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"המכשיר הזה לא תומך בפתיחה ע\"י זיהוי הפנים"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"החיישן מושבת באופן זמני."</string> <string name="face_name_template" msgid="3877037340223318119">"פנים <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"פתיחה ע\"י זיהוי הפנים"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"שימוש בזיהוי פנים או בנעילת מסך"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"יש להשתמש באימות פנים כדי להמשיך"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"יש להשתמש בזיהוי הפנים או בנעילת המסך כדי להמשיך"</string> @@ -970,8 +960,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"הרחבה של אזור ביטול הנעילה."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"ביטול נעילה באמצעות הסטה."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"ביטול נעילה על ידי שרטוט קו."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"פתיחה ע\"י זיהוי הפנים."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"ביטול נעילה באמצעות קוד אימות."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"ביטול הנעילה של קוד האימות ל-SIM."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"ביטול נעילה של PUK ל-SIM."</string> @@ -2169,7 +2158,7 @@ <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"אישור"</string> <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"השבתה"</string> <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"מידע נוסף"</string> - <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"ההתראות המשופרות החליפו את ההתראות המותאמות ל-Android ב-Android 12. התכונה הזו מציגה הצעות לפעולות ולתשובות ומארגנת את ההתראות שלך.\n\nההתראות המשופרות יכולות לקבל גישה לתוכן של התראות, כולל מידע אישי כמו שמות אנשי קשר והודעות. התכונה הזו יכולה גם לסגור התראות או להשיב להן, למשל מענה לשיחות טלפון ושליטה בתכונה \'נא לא להפריע\'."</string> + <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"התכונה \'התראות משופרות\' החליפה את \'התראות מותאמות ל-Android\' ב-Android 12. התכונה הזו מציגה הצעות לפעולות ולתשובות ומארגנת את ההתראות שלך.\n\nל\'התראות משופרות\' יש גישה לתוכן של התראות, כולל מידע אישי כמו שמות אנשי קשר והודעות. התכונה הזו יכולה גם לסגור התראות או להגיב עליהן (למשל לענות לשיחות טלפון) ולשלוט בתכונה \'נא לא להפריע\'."</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"התראת מידע לגבי מצב שגרתי"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"הסוללה עלולה להתרוקן לפני המועד הרגיל של הטעינה"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"תכונת החיסכון בסוללה הופעלה כדי להאריך את חיי הסוללה"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 27a3d57b102a..5cc681f75144 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -44,7 +44,7 @@ <string name="mmiComplete" msgid="6341884570892520140">"MMIが完了しました。"</string> <string name="badPin" msgid="888372071306274355">"入力した古いPINは正しくありません。"</string> <string name="badPuk" msgid="4232069163733147376">"入力したPUKは正しくありません。"</string> - <string name="mismatchPin" msgid="2929611853228707473">"入力したPINが一致しません。"</string> + <string name="mismatchPin" msgid="2929611853228707473">"入力した PIN が一致しません。"</string> <string name="invalidPin" msgid="7542498253319440408">"4~8桁の数字のPINを入力してください。"</string> <string name="invalidPuk" msgid="8831151490931907083">"PUKは8桁以上で入力してください。"</string> <string name="needPuk" msgid="7321876090152422918">"SIMカードはPUKでロックされています。ロックを解除するにはPUKコードを入力してください。"</string> @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"指紋の一部しか検出できません"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"指紋を処理できませんでした。もう一度お試しください。"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"センサーの汚れを取り除いてください"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"もう少し長く押してください"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"指の動きが遅すぎました。もう一度お試しください。"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"別の指紋をお試しください"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"明るすぎます"</string> @@ -733,9 +732,9 @@ <string name="policylab_forceLock" msgid="7360335502968476434">"画面のロック"</string> <string name="policydesc_forceLock" msgid="1008844760853899693">"画面をロックする方法とタイミングを制御します。"</string> <string name="policylab_wipeData" msgid="1359485247727537311">"すべてのデータを消去"</string> - <string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"警告せずにデータの初期化を実行してタブレット内のデータを消去します。"</string> + <string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"警告せずにタブレットを初期化して内部のデータを消去します。"</string> <string name="policydesc_wipeData" product="tv" msgid="513862488950801261">"警告せずに出荷時設定へのリセットを実行して Android TV デバイスのデータを消去します。"</string> - <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"警告せずにデータの初期化を実行してデバイス内のデータを消去します。"</string> + <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"警告せずにデバイスを初期化して内部のデータを消去します。"</string> <string name="policylab_wipeData_secondaryUser" msgid="413813645323433166">"ユーザーデータの消去"</string> <string name="policydesc_wipeData_secondaryUser" product="tablet" msgid="2336676480090926470">"このタブレットのこのユーザーのデータを警告なく消去します。"</string> <string name="policydesc_wipeData_secondaryUser" product="tv" msgid="2293713284515865200">"この Android TV デバイスでこのユーザーのデータを警告なく消去します。"</string> @@ -1839,7 +1838,7 @@ <string name="restr_pin_enter_new_pin" msgid="3267614461844565431">"新しいPIN"</string> <string name="restr_pin_confirm_pin" msgid="7143161971614944989">"新しいPINの確認"</string> <string name="restr_pin_create_pin" msgid="917067613896366033">"制限を変更するためのPINを作成してください"</string> - <string name="restr_pin_error_doesnt_match" msgid="7063392698489280556">"PINが一致しません。もう一度お試しください。"</string> + <string name="restr_pin_error_doesnt_match" msgid="7063392698489280556">"PIN が一致しません。もう一度お試しください。"</string> <string name="restr_pin_error_too_short" msgid="1547007808237941065">"PINが短すぎます。4桁以上で作成してください。"</string> <plurals name="restr_pin_countdown" formatted="false" msgid="4427486903285216153"> <item quantity="other"><xliff:g id="COUNT">%d</xliff:g>秒後にもう一度お試しください</item> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 189776aad625..055c5d0de8a8 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"ამოცნობილია ნაწილობრივი თითის ანაბეჭდი"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"თითის ანაბეჭდის დამუშავება ვერ მოხერხდა. გთხოვთ, ცადოთ ხელახლა."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"გაწმინდეთ სენსორი"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"ცოტა მეტ ხანს გეჭიროთ"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"თითის აღება მეტისმეტად ნელა მოხდა. გთხოვთ, სცადოთ ხელახლა."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"ცადეთ სხვა თითის ანაბეჭდი"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"ზედმეტად ნათელია"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index b34490841357..00a1189c6bc8 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Саусақ ізі жартылай анықталды."</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Саусақ ізін өңдеу мүмкін емес. Әрекетті қайталаңыз."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Датчикті тазалаңыз."</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Сәл ұзағырақ ұстаңыз."</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Саусағыңызды тым баяу қозғалттыңыз. Әрекетті қайталап көріңіз."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Басқа саусақ ізін байқап көріңіз."</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Тым жарық."</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Саусақ ізі белгішесі"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Бет тану"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Бетті қайта тіркеу"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Құрылғы жүзіңізді жақсырақ тануы үшін, бетіңізді қайта тіркеңіз."</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Бет тану функциясын реттеу"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Телефоныңызға қарап, оның құлпын ашыңыз."</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Құлыпты ашудың басқа тәсілдерін реттеу"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Саусақ ізін қосу үшін түртіңіз."</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Бетті тану мүмкін емес. Жабдық қолжетімді емес."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Бет тану функциясын қайта қолданып көріңіз."</string> <string name="face_error_no_space" msgid="5649264057026021723">"Жаңа бетті сақтау мүмкін емес. Алдымен ескісін жойыңыз."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Бетті танудан бас тартылды."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Пайдаланушы бет тану функциясынан бас тартты."</string> <string name="face_error_lockout" msgid="7864408714994529437">"Тым көп әрекет жасалды. Кейінірек қайталаңыз."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Тым көп әрекет жасалды. Бет тану функциясы өшірілді."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Тым көп әрекет жасалды. Оның орнына экран құлпын енгізіңіз."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Бетті тану мүмкін емес. Әрекетті қайталаңыз."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Бет тану функциясы реттелмеген."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Бұл құрылғы бет тану функциясын қолдамайды."</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Датчик уақытша өшірулі."</string> <string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> беті"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Бет тану функциясын пайдалану"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Face Lock функциясын немесе экран құлпын пайдалану"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Жалғастыру үшін бетіңізді көрсетіңіз."</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Жалғастыру үшін бетті анықтау функциясын немесе экран құлпын пайдаланыңыз."</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Ашу аймағын кеңейту."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Сырғыту арқылы ашу."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Кескін арқылы ашу."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Бет тану."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin арқылы ашу."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM құлпын PIN кодымен ашу"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM құлпын PUK кодымен ашу"</string> @@ -1287,7 +1276,7 @@ <string name="dump_heap_ready_text" msgid="5849618132123045516">"<xliff:g id="PROC">%1$s</xliff:g> процесінің дамп файлы бөлісуге дайын. Бұл дамп файлында процесс кезінде пайдаланылған кез келген құпия жеке ақпарат (соның ішінде сіз енгізген деректер) болуы мүмкін екенін ескеріңіз."</string> <string name="sendText" msgid="493003724401350724">"Мәтін үшін әрекет таңдау"</string> <string name="volume_ringtone" msgid="134784084629229029">"Қоңырау шырылының қаттылығы"</string> - <string name="volume_music" msgid="7727274216734955095">"Mультимeдиа дыбыс деңгейі"</string> + <string name="volume_music" msgid="7727274216734955095">"Mультимeдианың дыбыс деңгейі"</string> <string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"Bluetooth арқылы ойнату"</string> <string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"Үнсіз қоңырау әуенін орнату"</string> <string name="volume_call" msgid="7625321655265747433">"Сөйлесу кезіндегі дыбыс деңгейі"</string> @@ -1297,8 +1286,8 @@ <string name="volume_unknown" msgid="4041914008166576293">"Дыбыс қаттылығы"</string> <string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"Bluetooth дыбысының қаттылығы"</string> <string name="volume_icon_description_ringer" msgid="2187800636867423459">"Қоңырау әуенінің дыбыс қаттылығы"</string> - <string name="volume_icon_description_incall" msgid="4491255105381227919">"Сөйлескендегі дыбыс деңгейі"</string> - <string name="volume_icon_description_media" msgid="4997633254078171233">"Mультимeдиа дыбыс деңгейі"</string> + <string name="volume_icon_description_incall" msgid="4491255105381227919">"Сөйлесу кезіндегі дыбыс деңгейі"</string> + <string name="volume_icon_description_media" msgid="4997633254078171233">"Mультимeдианың дыбыс деңгейі"</string> <string name="volume_icon_description_notification" msgid="579091344110747279">"Хабар дыбысының қаттылығы"</string> <string name="ringtone_default" msgid="9118299121288174597">"Әдепкі рингтон"</string> <string name="ringtone_default_with_actual" msgid="2709686194556159773">"Әдепкі (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index ed747c0fa596..281db65dcc47 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"បានសម្គាល់ស្នាមម្រាមដៃដោយផ្នែក"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"មិនអាចដំណើរការស្នាមម្រាមដៃបានទេ។ សូមព្យាយាមម្តងទៀត។"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"សម្អាតឧបករណ៍ចាប់ស្នាមម្រាមដៃ"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"ដាក់ឱ្យយូរជាងនេះបន្តិច"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"ចលនាម្រាមដៃយឺតពេកហើយ។ សូមព្យាយាមម្តងទៀត។"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"សាកល្បងប្រើស្នាមម្រាមដៃផ្សេងទៀត"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"ភ្លឺពេក"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 621a0aedac71..b475574fb12e 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -325,7 +325,7 @@ <string name="permgroupdesc_calllog" msgid="2026996642917801803">"ಪೋನ್ ಕರೆಯ ಲಾಗ್ ಅನ್ನು ಓದಿ ಮತ್ತು ಬರೆಯಿರಿ"</string> <string name="permgrouplab_phone" msgid="570318944091926620">"ಫೋನ್"</string> <string name="permgroupdesc_phone" msgid="270048070781478204">"ಫೋನ್ ಕರೆ ಮಾಡಲು ಹಾಗೂ ನಿರ್ವಹಿಸಲು"</string> - <string name="permgrouplab_sensors" msgid="9134046949784064495">"ದೇಹದ ಸೆನ್ಸರ್"</string> + <string name="permgrouplab_sensors" msgid="9134046949784064495">"ಬಾಡಿ ಸೆನ್ಸರ್"</string> <string name="permgroupdesc_sensors" msgid="2610631290633747752">"ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತು ಸೆನ್ಸಾರ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಿ"</string> <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"ವಿಂಡೋ ವಿಷಯವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"ನೀವು ಬಳಸುತ್ತಿರುವ ವಿಂಡೋದ ವಿಷಯ ಪರೀಕ್ಷಿಸುತ್ತದೆ."</string> @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"ಭಾಗಶಃ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಪತ್ತೆಯಾಗಿದೆ"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ದಯವಿಟ್ಟು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ವಚ್ಚಗೊಳಿಸಿ"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಸಮಯ ಒತ್ತಿ ಹಿಡಿಯಿರಿ"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"ಬೆರಳನ್ನು ತುಂಬಾ ನಿಧಾನವಾಗಿ ಸರಿಸಲಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"ಮತ್ತೊಂದು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಪ್ರಯತ್ನಿಸಿ"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"ತುಂಬಾ ಪ್ರಕಾಶಮಾನವಾಗಿದೆ"</string> @@ -983,7 +982,7 @@ <string name="double_tap_toast" msgid="7065519579174882778">"ಸಲಹೆ: ಝೂಮ್ ಇನ್ ಮತ್ತು ಝೂಮ್ ಔಟ್ ಮಾಡಲು ಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ"</string> <string name="autofill_this_form" msgid="3187132440451621492">"ಸ್ವಯಂತುಂಬುವಿಕೆ"</string> <string name="setup_autofill" msgid="5431369130866618567">"ಸ್ವಯಂತುಂಬುವಿಕೆಯನ್ನು ಹೊಂದಿಸಿ"</string> - <string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ನೊಂದಿಗೆ ಸ್ವಯಂ-ಭರ್ತಿ"</string> + <string name="autofill_window_title" msgid="4379134104008111961">"<xliff:g id="SERVICENAME">%1$s</xliff:g> ಸಹಾಯದಿಂದ ಸ್ವಯಂ-ಭರ್ತಿ"</string> <string name="autofill_address_name_separator" msgid="8190155636149596125">" "</string> <string name="autofill_address_summary_name_format" msgid="3402882515222673691">"$1$2$3"</string> <string name="autofill_address_summary_separator" msgid="760522655085707045">", "</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 58dbccb909f8..fea9c2b4eae7 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"지문의 일부만 감지됨"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"지문을 인식할 수 없습니다. 다시 시도해 주세요."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"센서 닦기"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"조금 더 오래 기다려 주세요."</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"손가락을 너무 느리게 움직였습니다. 다시 시도해 주세요."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"다른 지문으로 시도"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"너무 밝음"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"지문 아이콘"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"얼굴 인식 잠금 해제"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"얼굴 재등록 필요"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"인식률을 개선하려면 얼굴을 다시 등록하세요."</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"얼굴 인식 잠금 해제 설정"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"휴대전화의 화면을 응시하여 잠금 해제할 수 있습니다."</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"다른 잠금 해제 방법 설정"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"지문을 추가하려면 탭하세요."</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"얼굴을 확인할 수 없습니다. 하드웨어를 사용할 수 없습니다."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"얼굴 인식 잠금 해제를 다시 시도해 주세요."</string> <string name="face_error_no_space" msgid="5649264057026021723">"새 얼굴 데이터를 저장할 수 없습니다. 먼저 기존 얼굴 데이터를 삭제하세요."</string> <string name="face_error_canceled" msgid="2164434737103802131">"얼굴 인식 작업이 취소되었습니다."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"사용자가 얼굴 인식 잠금 해제를 취소했습니다."</string> <string name="face_error_lockout" msgid="7864408714994529437">"시도 횟수가 너무 많습니다. 나중에 다시 시도하세요."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"시도 횟수가 너무 많습니다. 얼굴 인식 잠금 해제가 사용 중지되었습니다."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"시도 횟수가 너무 많습니다. 화면 잠금을 대신 사용하세요."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"얼굴을 확인할 수 없습니다. 다시 시도하세요."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"얼굴 인식 잠금 해제를 설정하지 않았습니다."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"얼굴 인식 잠금 해제는 현재 사용 중인 기기에서 지원되지 않습니다."</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"센서가 일시적으로 사용 중지되었습니다."</string> <string name="face_name_template" msgid="3877037340223318119">"얼굴 <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"얼굴 인식 잠금 해제 사용"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"얼굴 또는 화면 잠금 사용"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"계속하려면 얼굴로 인증하세요"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"계속하려면 얼굴 또는 화면 잠금을 사용하세요"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"잠금 해제 영역 확장"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"슬라이드하여 잠금해제합니다."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"패턴을 사용하여 잠금해제합니다."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"얼굴 인식 잠금 해제입니다."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"핀을 사용하여 잠금해제합니다."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM PIN 잠금 해제"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM PUK 잠금 해제"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 35dba2e4b06c..8703524ebc4c 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Манжа изи жарым-жартылай аныкталды"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Манжа изи иштелбей койду. Кайталап көрүңүз."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Сенсорду тазалаңыз"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Дагы бир аз кармап туруңуз"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Манжа өтө жай жылды. Кайталап көрүңүз."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Башка манжа изин байкап көрүңүз"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Өтө жарык"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Манжа изинин сүрөтчөсү"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Жүзүнөн таанып ачуу"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Жүзүңүздү кайра таанытыңыз."</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Мыкты таануу үчүн, жүзүңүздү кайра таанытыңыз"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Жүзүнөн таанып ачууну жөндөө"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Телефонуңузду карап туруп эле кулпусун ачып алыңыз"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Кулпусун ачуунун көбүрөөк жолдорун жөндөңүз"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Манжа изин кошуу үчүн басыңыз"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Жүз ырасталбай жатат. Аппараттык камсыздоо жеткиликсиз."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Жүзүнөн таанып ачуу функциясын кайрадан колдонуңуз"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Жаңы жүздү сактоо мүмкүн эмес. Адегенде эскисин өчүрүңүз."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Жүздүн аныктыгын текшерүү жокко чыгарылды."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Жүзүнөн таанып ачуу функциясын колдонуучу өчүрүп салды"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Өтө көп жолу аракет жасадыңыз. Бир аздан кийин кайталап көрүңүз."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Өтө көп жолу аракет кылдыңыз. Жүзүнөн таануу функциясы өчүрүлдү."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Өтө көп жолу аракет кылдыңыз. Эрканды кулпулоо функциясын колдонуңуз."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Жүз ырасталбай жатат. Кайталап көрүңүз."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Жүзүнөн таанып ачуу функциясын жөндөй элексиз"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Жүзүнөн таанып ачуу функциясы бул түзмөктө иштебейт"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Сенсор убактылуу өчүрүлгөн."</string> <string name="face_name_template" msgid="3877037340223318119">"Жүз <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Жүзүнөн таанып ачууну колдонуу"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Жүзүнөн таанып ачууну же экрандын кулпусун колдонуу"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Улантуу үчүн жүзүңүздү көрсөтүңүз"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Улантуу үчүн жүзүңүздү же экрандын кулпусун колдонуңуз"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Бөгөттөн чыгаруу аймагын кеңейтүү."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Жылмыштырып ачуу."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Үлгү менен ачуу."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Жүзүнөн таанып ачуу."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Пин код менен ачуу."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM-картанын кулпусун PIN-код менен ачуу."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM-картанын кулпусун PUK-код менен ачуу."</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 8664833e688d..1a2d2d592c3b 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"ກວດພົບລາຍນິ້ວມືບາງສ່ວນ"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"ບໍ່ສາມາດດຳເນີນການລາຍນີ້ວມືໄດ້. ກະລຸນາລອງໃໝ່ອີກ."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"ກະລຸນາອະນາໄມເຊັນເຊີ"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"ກົດໄວ້ດົນຂຶ້ນອີກໜ້ອຍໜຶ່ງ"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"ຍ້າຍນີ້ວມືໄປຊ້າເກີນໄປ. ກະລຸນາລອງໃໝ່ອີກ."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"ລອງໃຊ້ລາຍນິ້ວມືອື່ນ"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"ແຈ້ງເກີນໄປ"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ໄອຄອນລາຍນິ້ວມື"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ປົດລັອກດ້ວຍໜ້າ"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"ລົງທະບຽນໃບໜ້າຂອງທ່ານຄືນໃໝ່"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"ເພື່ອປັບປຸງການຈຳແນກ, ກະລຸນາລົງທະບຽນໃບໜ້າຂອງທ່ານຄືນໃໝ່."</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"ຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"ປົດລັອກໂທລະສັບຂອງທ່ານໂດຍການເບິ່ງມັນ"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ຕັ້ງຄ່າວິທີເພີ່ມເຕີມເພື່ອປົດລັອກ"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ແຕະເພື່ອເພີ່ມລາຍນິ້ວມື"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"ບໍ່ສາມາດຢັ້ງຢືນໃບໜ້າໄດ້. ບໍ່ມີຮາດແວໃຫ້ໃຊ້."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"ກະລຸນາລອງປົດລັອກດ້ວຍໜ້າອີກເທື່ອໜຶ່ງ"</string> <string name="face_error_no_space" msgid="5649264057026021723">"ບໍ່ສາມາດບັນທຶກຂໍ້ມູນໃບໜ້າໃໝ່ໄດ້. ກະລຸນາລຶບຂໍ້ມູນເກົ່າອອກກ່ອນ."</string> <string name="face_error_canceled" msgid="2164434737103802131">"ຍົກເລີກການດຳເນີນການກັບໃບໜ້າແລ້ວ."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"ຜູ້ໃຊ້ຍົກເລີກການປົດລັອກດ້ວຍໜ້າແລ້ວ"</string> <string name="face_error_lockout" msgid="7864408714994529437">"ມີຄວາມພະຍາຍາມຫຼາຍຄັ້ງເກີນໄປ. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ພະຍາຍາມຫຼາຍເທື່ອເກີນໄປ. ປິດການນຳໃຊ້ການປົດລັອກດ້ວຍໜ້າແລ້ວ."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ພະຍາຍາມຫຼາຍເທື່ອເກີນໄປ. ກະລຸນາເຂົ້າການລັອກໜ້າຈໍແທນ."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"ບໍ່ສາມາດຢັ້ງຢືນໃບໜ້າໄດ້. ກະລຸນາລອງໃໝ່."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"ທ່ານຍັງບໍ່ໄດ້ຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າເທື່ອ"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"ອຸປະກອນນີ້ບໍ່ຮອງຮັບການປົດລັອກດ້ວຍໜ້າ"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"ປິດການເຮັດວຽກຂອງເຊັນເຊີໄວ້ຊົ່ວຄາວແລ້ວ."</string> <string name="face_name_template" msgid="3877037340223318119">"ໃບໜ້າ <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"ໃຊ້ການປົດລັອກດ້ວຍໜ້າ"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"ໃຊ້ໃບໜ້າ ຫຼື ການລັອກໜ້າຈໍ"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"ໃຊ້ໜ້າທ່ານເພື່ອສືບຕໍ່"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"ໃຊ້ໃບໜ້າ ຫຼື ການລັອກໜ້າຈໍຂອງທ່ານເພື່ອດຳເນີນການຕໍ່"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"ຂະຫຍາຍຂອບເຂດປົດລັອກ."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"ການປົດລັອກດ້ວຍການເລື່ອນ."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"ປົດລັອກດ້ວຍຮູບແບບ."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"ປົດລັອກດ້ວຍໜ້າ."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"ປົດລັອກດ້ວຍ PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"ປົດລັອກ Sim Pin."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"ປົດລັອກ Sim Puk."</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 0bf2ee739e06..85df23bb007c 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Aptiktas dalinis kontrolinis kodas"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Nepavyko apdoroti piršto antspaudo. Bandykite dar kartą."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Nuvalykite jutiklį"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Palaukite šiek tiek ilgiau"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Per lėtai judinate pirštą. Bandykite dar kartą."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Pabandykite kitą kontrolinį kodą"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Per šviesu"</string> @@ -616,12 +615,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Piršto antspaudo piktograma"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Atrakinimas pagal veidą"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Pakartotinis veido registravimas"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Kad patobulintumėte atpažinimą, iš naujo užregistruokite veidą"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Atrakinimo pagal veidą nustatymas"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Atrakinkite telefoną pažiūrėję į jį"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Daugiau atrakinimo metodų nustatymas"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Palieskite, kad pridėtumėte kontrolinį kodą"</string> @@ -648,26 +645,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Nepavyko patv. veido. Aparatinė įranga negalima."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Bandykite dar kartą naudoti atrakinimą pagal veidą"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Nepavyko išs. naujų veido duomenų. Pirm. ištrinkite senus."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Veido atpažinimo operacija atšaukta."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Atrakinimą pagal veidą atšaukė naudotojas"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Per daug bandymų. Vėliau bandykite dar kartą."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Per daug bandymų. Atrakinimas pagal veidą išjungtas."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Per daug bandymų. Geriau naudokite ekrano užraktą."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nepavyko patvirtinti veido. Bandykite dar kartą."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nenustatėte atrakinimo pagal veidą"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Šiame įrenginyje atrakinimas pagal veidą nepalaikomas"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Jutiklis laikinai išjungtas."</string> <string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> veidas"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Naudoti atrakinimą pagal veidą"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Naudoti atrakinimą pagal veidą arba ekrano užraktą"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Jei norite tęsti, naudokite atpažinimą pagal veidą"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Jei norite tęsti, naudokite veido atpažinimo funkciją arba ekrano užraktą"</string> @@ -970,8 +960,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Išplėsti atrakinimo sritį."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Atrakinimas slystant."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Atrakinimas pagal piešinį."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Atrakinimas pagal veidą"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Atrakinimas įvedus PIN kodą."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM kortelės PIN kodo atrakinimas."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM kortelės PUK kodo atrakinimas."</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index f6e2f96785e3..d2de0b2d5bbc 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -322,7 +322,7 @@ <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"piekļūt jūsu fiziskajām aktivitātēm"</string> <string name="permgrouplab_camera" msgid="9090413408963547706">"Kamera"</string> <string name="permgroupdesc_camera" msgid="7585150538459320326">"uzņemt attēlus un ierakstīt videoklipus"</string> - <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Tuvumā esošās ierīces"</string> + <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Tuvējās ierīces"</string> <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"tuvumā esošu ierīču meklēšana un savienojuma izveide ar tām"</string> <string name="permgrouplab_calllog" msgid="7926834372073550288">"Zvanu žurnāli"</string> <string name="permgroupdesc_calllog" msgid="2026996642917801803">"lasīt un rakstīt tālruņa zvanu žurnālu"</string> @@ -583,8 +583,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Tika konstatēts nepilnīgs pilna nospiedums"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Nevarēja apstrādāt pirksta nospiedumu. Lūdzu, mēģiniet vēlreiz."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Notīriet sensoru"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Turiet pirkstu uz sensora nedaudz ilgāk."</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Pārāk lēna pirksta kustība. Lūdzu, mēģiniet vēlreiz."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Izmēģiniet citu pirksta nospiedumu"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Pārāk spilgts"</string> @@ -613,12 +612,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Pirksta nospieduma ikona"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Autorizācija pēc sejas"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Atkārtoti reģistrējiet seju"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Lai uzlabotu atpazīšanu, lūdzu, atkārtoti reģistrējiet savu seju"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Autorizācijas pēc sejas iestatīšana"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Atbloķējiet tālruni, skatoties uz to"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Citi atbloķēšanas veidi"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Pieskarieties, lai pievienotu pirksta nospiedumu"</string> @@ -645,26 +642,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Nevar verificēt seju. Aparatūra nav pieejama."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Vēlreiz mēģiniet veikt autorizāciju pēc sejas."</string> <string name="face_error_no_space" msgid="5649264057026021723">"Nevar saglabāt jaunās sejas datus. Dzēsiet kādu no vecajām."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Darbība ar sejas datiem atcelta."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Lietotājs atcēla autorizāciju pēc sejas."</string> <string name="face_error_lockout" msgid="7864408714994529437">"Pārāk daudz mēģinājumu. Vēlāk mēģiniet vēlreiz."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Pārāk daudz mēģinājumu. Autorizācija pēc sejas ir atspējota."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Pārāk daudz mēģinājumu. Tā vietā ievadiet ekrāna bloķēšanas akreditācijas datus."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nevar verificēt seju. Mēģiniet vēlreiz."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Autorizācija pēc sejas nav iestatīta."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Šajā ierīcē netiek atbalstīta autorizācija pēc sejas."</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensors ir īslaicīgi atspējots."</string> <string name="face_name_template" msgid="3877037340223318119">"Seja <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Autorizācija pēc sejas"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Autorizācijas pēc sejas vai ekrāna bloķēšanas metodes izmantošana"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Lai turpinātu, veiciet autorizāciju pēc sejas"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Izmantojiet autorizāciju pēc sejas vai ekrāna bloķēšanas opciju, lai turpinātu"</string> @@ -967,8 +957,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Izvērst atbloķēšanas apgabalu."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Autorizācija, velkot ar pirkstu."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Autorizācija ar kombināciju."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Autorizācija pēc sejas."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Autorizācija ar PIN kodu."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM kartes atbloķēšanas PIN"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM kartes atbloķēšanas PUK"</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index 37c114b67039..6248d25a2ed0 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Откриен е делумен отпечаток"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Отпечатокот не може да се обработи. Обидете се повторно."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Исчистете го сензорот"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Држете малку подолго"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Прстот се движеше премногу бавно. Обидете се повторно."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Пробајте со друг отпечаток"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Премногу светло"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Икона за отпечатоци"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Отклучување со лик"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Повторно регистрирајте го ликот"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"За да се подобри препознавањето, повторно регистрирајте го ликот"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Поставете „Отклучување со лик“"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Отклучете го телефонот со гледање во него"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Поставете уште начини за отклучување"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Допрете за да додадете отпечаток"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Ликот не може да се потврди. Хардвер - недостапен."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Пробајте „Отклучување со лик“ повторно"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Не се зачуваа податоците за нов лик. Избришете го стариот."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Операцијата со лице се откажа."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Корисникот го откажа „Отклучувањето со лик“"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Премногу обиди. Обидете се повторно подоцна."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Премногу обиди. „Отклучувањето со лик“ е оневозможено."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Премногу обиди. Наместо тоа, користете го заклучувањето на екранот."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ликот не може да се потврди. Обидете се повторно."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Не сте поставиле „Отклучување со лик“"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"„Отклучувањето со лик“ не е поддржано на уредов"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Сензорот е привремено оневозможен."</string> <string name="face_name_template" msgid="3877037340223318119">"Лице <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Користи „Отклучување со лик“"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Користи лик или заклучување екран"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Користете го вашиот лик за да продолжите"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Користете отклучување со лик или заклучување екран за да продолжите"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Прошири отклучена област."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Отклучување со лизгање."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Отклучување со шема."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Отклучување со лик."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Отклучување со пин."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Отклучување со PIN на SIM."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Отклучување со PUK на SIM."</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 88a1417b3b27..ea833179f44e 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -610,12 +610,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ഫിംഗർപ്രിന്റ് ഐക്കൺ"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ഫെയ്സ് അൺലോക്ക്"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"നിങ്ങളുടെ മുഖം വീണ്ടും എൻറോൾ ചെയ്യൂ"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"തിരിച്ചറിയൽ മെച്ചപ്പെടുത്താൻ, നിങ്ങളുടെ മുഖം ദയവായി വീണ്ടും എൻറോൾ ചെയ്യൂ"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"ഫെയ്സ് അൺലോക്ക് സജ്ജീകരിക്കുക"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"ഫോണിലേക്ക് നോക്കി അത് അൺലോക്ക് ചെയ്യുക"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"അൺലോക്ക് ചെയ്യുന്നതിനുള്ള കൂടുതൽ വഴികൾ സജ്ജീകരിക്കുക"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ഫിംഗർപ്രിന്റ് ചേർക്കാൻ ടാപ്പ് ചെയ്യുക"</string> @@ -642,26 +640,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"മുഖം പരിശോധിക്കാൻ കഴിയില്ല. ഹാർഡ്വെയർ ലഭ്യമല്ല."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"ഫെയ്സ് അൺലോക്ക് വീണ്ടും പരീക്ഷിച്ച് നോക്കൂ"</string> <string name="face_error_no_space" msgid="5649264057026021723">"പുതിയ മുഖ ഡാറ്റ സംഭരിക്കാനാകില്ല. ആദ്യം പഴയത് ഇല്ലാതാക്കുക."</string> <string name="face_error_canceled" msgid="2164434737103802131">"മുഖത്തിന്റെ പ്രവർത്തനം റദ്ദാക്കി."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"ഉപയോക്താവ് ഫെയ്സ് അൺലോക്ക് റദ്ദാക്കി"</string> <string name="face_error_lockout" msgid="7864408714994529437">"നിരവധി തവണ ശ്രമിച്ചു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"നിരവധി ശ്രമങ്ങൾ. ഫെയ്സ് അൺലോക്ക് പ്രവർത്തനരഹിതമാക്കി."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"നിരവധി ശ്രമങ്ങൾ. പകരം സ്ക്രീൻ ലോക്ക് നൽകുക."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"മുഖം പരിശോധിക്കാൻ കഴിയില്ല. വീണ്ടും ശ്രമിക്കൂ."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"നിങ്ങൾ ഫെയ്സ് അൺലോക്ക് സജ്ജീകരിച്ചിട്ടില്ല"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"ഈ ഉപകരണത്തിൽ ഫെയ്സ് അൺലോക്കിന് പിന്തുണയില്ല"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"സെൻസർ താൽക്കാലികമായി പ്രവർത്തനരഹിതമാക്കി."</string> <string name="face_name_template" msgid="3877037340223318119">"മുഖം <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"ഫെയ്സ് അൺലോക്ക് ഉപയോഗിക്കുക"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"ഫെയ്സ് അല്ലെങ്കിൽ സ്ക്രീൻ ലോക്ക് ഉപയോഗിക്കുക"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"തുടരാൻ നിങ്ങളുടെ മുഖം ഉപയോഗിക്കുക"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"തുടരാൻ നിങ്ങളുടെ മുഖം അല്ലെങ്കിൽ സ്ക്രീൻ ലോക്ക് ഉപയോഗിക്കുക"</string> @@ -964,8 +955,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"അൺലോക്ക് ഏരിയ വിപുലീകരിക്കുക."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"സ്ലൈഡ് അൺലോക്ക്."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"പാറ്റേൺ അൺലോക്ക്."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"ഫെയ്സ് അൺലോക്ക്."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"പിൻ അൺലോക്ക്."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"സിം പിൻ അൺലോക്ക്."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"സിം Puk അൺലോക്ക്."</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index f64494c1abde..e5dca16c098f 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Хэсэгчилсэн хурууны хээ илэрлээ"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Хурууны хээ боловсруулж чадахгүй байна. Дахин оролдоно уу."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Мэдрэгчийг цэвэрлэнэ үү"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Бага зэрэг удаан дарна уу"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Хуруу хэт удаан хөдөлгөсөн байна. Дахин оролдоно уу."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Өөр хурууны хээ туршина уу"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Хэт гэрэлтэй байна"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Хурууны хээний дүрс"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Царайгаар түгжээ тайлах"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Царайгаа дахин бүртгүүлнэ үү"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Танилтыг сайжруулахын тулд царайгаа дахин бүртгүүлнэ үү"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Царайгаар түгжээ тайлахыг тохируулах"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Утас руугаа харж түгжээг нь тайлна уу"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Түгжээ тайлах илүү олон арга тохируулна уу"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Хурууны хээ нэмэхийн тулд товшино уу"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Царайг бататгаж чадсангүй. Техник хангамж боломжгүй байна."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Царайгаар түгжээ тайлахыг дахин оролдоно уу"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Царайн шинэ өгөгдлийг хадгалж чадсангүй. Эхлээд хуучин өгөгдлийг устгана уу."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Царайны үйл ажиллагааг цуцаллаа."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Хэрэглэгч Царайгаар түгжээ тайлахыг цуцалсан"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Хэт олон удаа оролдлоо. Дараа дахин оролдоно уу."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Хэт олон удаа оролдлоо. Царайгаар түгжээ тайлахыг идэвхгүй болгосон."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Хэт олон удаа оролдлоо. Оронд нь дэлгэцийн түгжээ оруулна уу."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Царайг бататгаж чадсангүй. Дахин оролдоно уу."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Та Царайгаар түгжээ тайлахыг тохируулаагүй байна"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Энэ төхөөрөмж дээр Царайгаар түгжээ тайлахыг дэмждэггүй"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Мэдрэгчийг түр хугацаанд идэвхгүй болгосон."</string> <string name="face_name_template" msgid="3877037340223318119">"Царай <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Царайгаар түгжээ тайлахыг ашиглах"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Царайгаар түгжээ тайлах эсвэл дэлгэцийн түгжээ ашиглах"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Үргэлжлүүлэхийн тулд царайгаа ашиглана уу"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Үргэлжлүүлэхийн тулд царай эсвэл дэлгэцийн түгжээгээ ашиглана уу"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Түгжээгүй хэсгийг өргөсгөх."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Тайлах гулсуулалт."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Тайлах хээ."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Царайгаар түгжээ тайлах."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Тайлах пин."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Sim-н пин кодыг тайлна уу."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Sim-н Puk кодыг тайлна уу."</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 92d10990d963..29dbebee6aa8 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"आंशिक फिंगरप्रिंट डिटेक्ट केली"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"फिंगरप्रिंटवर प्रक्रिया करणे शक्य झाले नाही. कृपया पुन्हा प्रयत्न करा."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"सेन्सर साफ करा"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"जरा जास्त वेळ धरून ठेवा"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"बोट खूप सावकाश हलविले. कृपया पुन्हा प्रयत्न करा."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"दुसरी फिंगरप्रिंट वापरून पाहा"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"खूप प्रखर"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index 67fddf6a53cf..b472c311b36f 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Cap jari separa dikesan"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Tidak dapat memproses cap jari. Sila cuba lagi."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Bersihkan penderia"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Tahan lebih lama sedikit"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Jari digerakkan terlalu perlahan. Sila cuba lagi."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Cuba cap jari lain"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Terlalu terang"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon cap jari"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Buka Kunci Wajah"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Daftarkan semula wajah anda"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Untuk meningkatkan pengecaman, sila daftarkan semula wajah anda"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Sediakan Buka Kunci Wajah"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Buka kunci telefon anda dengan melihat telefon anda"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Sediakan lebih banyak cara untuk membuka kunci"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Ketik untuk menambahkan cap jari"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Tdk dpt sahkan wajah. Perkakasan tidak tersedia."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Cuba Buka Kunci Wajah sekali lagi"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Tdk dpt menyimpan data wajah baharu. Padamkan yg lama dahulu."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Pengendalian wajah dibatalkan."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Buka Kunci Wajah dibatalkan oleh pengguna"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Terlalu banyak percubaan. Cuba sebentar lagi."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Terlalu banyak percubaan. Buka Kunci Wajah dilumpuhkan."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Terlalu banyak percubaan. Sebaliknya, masukkan kunci skrin."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Tidak dapat mengesahkan wajah. Cuba lagi."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Anda belum menyediakan Buka Kunci Wajah"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Buka Kunci Wajah tidak disokong pada peranti ini"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Penderia dilumpuhkan sementara."</string> <string name="face_name_template" msgid="3877037340223318119">"Wajah <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Gunakan Buka Kunci Wajah"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Gunakan kunci wajah atau skrin"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Gunakan wajah untuk teruskan"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Gunakan wajah atau kunci skrin anda untuk meneruskan"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Kembangkan bahagian buka kunci."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Buka kunci luncur."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Buka kunci corak."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Buka Kunci Wajah."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Buka kunci pin."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Buka kunci Pin Sim."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Buka kunci Puk Sim."</string> @@ -1541,7 +1530,7 @@ <string name="sync_do_nothing" msgid="4528734662446469646">"Jangan lakukan apa-apa sekarang"</string> <string name="choose_account_label" msgid="5557833752759831548">"Pilih akaun"</string> <string name="add_account_label" msgid="4067610644298737417">"Tambah akaun"</string> - <string name="add_account_button_label" msgid="322390749416414097">"Tambah akaun"</string> + <string name="add_account_button_label" msgid="322390749416414097">"Tambahkan akaun"</string> <string name="number_picker_increment_button" msgid="7621013714795186298">"Tingkatkan"</string> <string name="number_picker_decrement_button" msgid="5116948444762708204">"Kurangkan"</string> <string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"<xliff:g id="VALUE">%s</xliff:g> ketik & tahan."</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 7c125460e5fa..fcf76980abc7 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"လက်ဗွေတစ်စိတ်တစ်ပိုင်းကို ရှာတွေ့သည်"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"လက်ဗွေယူ၍ မရပါ။ ထပ်စမ်းကြည့်ပါ။"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"အာရုံခံကိရိယာကို သန့်ရှင်းရေးလုပ်ပါ"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"အနည်းငယ်ကြာအောင် ဖိထားပါ"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"လက်ညှိုးအလွန်နှေးကွေးစွာ ရွေ့ခဲ့သည်။ ကျေးဇူးပြု၍ ထပ်မံကြိုးစားပါ။"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"အခြားလက်ဗွေဖြင့် စမ်းကြည့်ပါ"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"အလွန် လင်းသည်"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"လက်ဗွေ သင်္ကေတ"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"သင့်မျက်နှာကို စာရင်းပြန်သွင်းပါ"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"ပိုမှတ်မိစေရန် သင့်မျက်နှာကို စာရင်းပြန်သွင်းပါ"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို ထည့်သွင်းပါ"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"သင့်ဖုန်းကိုကြည့်၍ သော့ဖွင့်ပါ"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"သော့ဖွင့်ရန် နောက်ထပ်နည်းလမ်းများကို စနစ်ထည့်သွင်းပါ"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"လက်ဗွေထည့်ရန် တို့ပါ"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"မျက်နှာကို အတည်ပြု၍ မရပါ။ ဟာ့ဒ်ဝဲ မရနိုင်ပါ။"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို ထပ်စမ်းကြည့်ပါ"</string> <string name="face_error_no_space" msgid="5649264057026021723">"မျက်နှာဒေတာအသစ် သိမ်း၍မရပါ။ အဟောင်းကို အရင်ဖျက်ပါ။"</string> <string name="face_error_canceled" msgid="2164434737103802131">"မျက်နှာ ဆောင်ရွက်ခြင်းကို ပယ်ဖျက်လိုက်ပါပြီ။"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"အသုံးပြုသူက မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို ပယ်ဖျက်ထားသည်"</string> <string name="face_error_lockout" msgid="7864408714994529437">"အကြိမ်များစွာ စမ်းပြီးပါပြီ။ နောက်မှထပ်စမ်းပါ။"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ကြိုးပမ်းမှုအကြိမ်ရေ များလွန်းသည်။ မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို ပိတ်လိုက်သည်။"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ကြိုးပမ်းမှုအကြိမ်ရေ များလွန်းသည်။ ဖန်သားပြင် လော့ခ်ကို အစားထိုးထည့်သွင်းပါ။"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"မျက်နှာကို အတည်ပြု၍ မရပါ။ ထပ်စမ်းကြည့်ပါ။"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို ထည့်သွင်းမထားပါ"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"ဤစက်တွင် မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို မပံ့ပိုးပါ"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"အာရုံခံကိရိယာကို ယာယီပိတ်ထားသည်။"</string> <string name="face_name_template" msgid="3877037340223318119">"မျက်နှာ <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"မျက်နှာပြ လော့ခ်ဖွင့်ရန်"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"မျက်နှာမှတ်သော့ဖွင့်ခြင်း (သို့) ဖန်သားပြင်လော့ခ်ချခြင်းကို သုံးခြင်း"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"ရှေ့ဆက်ရန် သင့်မျက်နှာကို သုံးပါ"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"ရှေ့ဆက်ရန် သင်၏ မျက်နှာ (သို့) ဖန်သားပြင်လော့ခ်ကို သုံးပါ"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"သော့မချထားသာ နယ်ပယ်ကို ချဲ့ပါ"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"ဘေးတိုက်ပွတ်ဆွဲ၍ သော့ဖွင့်ခြင်း"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"ပုံစံဖြင့် သော့ဖွင့်ခြင်း"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း။"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"ပင်နံပါတ်ဖြင့် သော့ဖွင့်ခြင်း"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"ဆင်းမ်ကတ် ပင်နံပါတ်လော့ခ်ဖွင့်ပါ။"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"ဆင်းမ်ကတ် Puk လော့ခ်ဖွင့်ပါ။"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 69cd9a630cdb..4a33cf08635f 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Et delvis fingeravtrykk er registrert"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Kunne ikke registrere fingeravtrykket. Prøv på nytt."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Rengjør sensoren"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Hold litt lenger"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Du flyttet fingeren for sakte. Prøv på nytt."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Prøv et annet fingeravtrykk"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"For lyst"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon for fingeravtrykk"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ansiktslås"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Registrer ansiktet ditt på nytt"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"For å forbedre gjenkjennelse, registrer ansiktet ditt på nytt"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Konfigurer ansiktslås"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Lås opp telefonen ved å se på den"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfigurer flere måter å låse opp på"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Trykk for å legge til et fingeravtrykk"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Kan ikke bekrefte ansikt. Utilgjengelig maskinvare."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Prøv ansiktslås igjen"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Kan ikke lagre nye ansiktsdata. Slett gamle data først."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Ansikt-operasjonen ble avbrutt."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Ansiktslås ble avbrutt av brukeren"</string> <string name="face_error_lockout" msgid="7864408714994529437">"For mange forsøk. Prøv igjen senere."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"For mange forsøk. Ansiktslås er slått av."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"For mange forsøk. Skriv inn skjermlås i stedet."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan ikke bekrefte ansiktet. Prøv igjen."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Du har ikke konfigurert ansiktslås"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Ansiktslås støttes ikke på denne enheten"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensoren er midlertidig slått av."</string> <string name="face_name_template" msgid="3877037340223318119">"Ansikt <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Bruk ansiktslås"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Bruk ansikts- eller skjermlås"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Bruk ansiktet for å fortsette"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Bruk ansikts- eller skjermlåsen for å fortsette"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Vis opplåsingsfeltet."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Opplåsning ved å dra med fingeren."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Mønsteropplåsning."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Ansiktslås"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN-opplåsning."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"PIN-opplåsing for SIM-kort."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"PUK-opplåsing for SIM-kort."</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index c3e176f2c157..52acecf39917 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -251,7 +251,7 @@ <string name="global_action_bug_report" msgid="5127867163044170003">"बग रिपोर्ट"</string> <string name="global_action_logout" msgid="6093581310002476511">"सत्रको अन्त्य गर्नुहोस्"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"स्क्रिनसट"</string> - <string name="bugreport_title" msgid="8549990811777373050">"बगसम्बन्धी रिपोर्ट"</string> + <string name="bugreport_title" msgid="8549990811777373050">"बग रिपोर्ट"</string> <string name="bugreport_message" msgid="5212529146119624326">"एउटा इमेल सन्देशको रूपमा पठाउनलाई यसले तपाईँको हालैको उपकरणको अवस्थाको बारेमा सूचना जम्मा गर्ने छ। बग रिपोर्ट सुरु गरेदेखि पठाउन तयार नभएसम्म यसले केही समय लिन्छ; कृपया धैर्य गर्नुहोस्।"</string> <string name="bugreport_option_interactive_title" msgid="7968287837902871289">"अन्तरक्रियामूलक रिपोर्ट"</string> <string name="bugreport_option_interactive_summary" msgid="8493795476325339542">"बढी भन्दा बढी परिस्थितिहरूमा यसको प्रयोग गर्नुहोस्। यसले तपाईँलाई रिपोर्टको प्रगति ट्र्याक गर्न, समस्याका बारे थप विवरणहरू प्रविष्ट गर्न र स्क्रिनसटहरू लिन अनुमति दिन्छ। यसले रिपोर्ट गर्न लामो समय लिने केही कम प्रयोग हुने खण्डहरूलाई समावेश नगर्न सक्छ।"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 7aaf2da0a1f8..c15c2beef85b 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Gedeeltelijke vingerafdruk gedetecteerd"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Kan vingerafdruk niet verwerken. Probeer het opnieuw."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Maak de sensor schoon"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Houd iets langer vast"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Vinger te langzaam bewogen. Probeer het opnieuw."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Probeer een andere vingerafdruk"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Te veel licht"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Vingerafdruk-icoon"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ontgrendelen via gezicht"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Je gezicht opnieuw registreren"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Registreer je gezicht opnieuw om de herkenning te verbeteren"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Ontgrendeling via gezichtsherkenning instellen"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Ontgrendel je telefoon door ernaar te kijken"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Stel meer manieren in om te ontgrendelen"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tik om een vingerafdruk toe te voegen"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Kan gezicht niet verifiëren. Hardware niet beschikbaar."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Ontgrendel opnieuw via gezichtsherkenning"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Kan nieuwe gezichten niet opslaan. Verwijder eerst een oude."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Bewerking voor gezichtsherkenning geannuleerd."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Ontgrendelen via gezichtsherkenning geannuleerd door gebruiker"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Te veel pogingen. Probeer het later opnieuw."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Te veel pogingen. Ontgrendelen via gezichtsherkenning uitgezet."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Te veel pogingen. Gebruik schermvergrendeling."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan gezicht niet verifiëren. Probeer het nog eens."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Je hebt Ontgrendelen via gezichtsherkenning niet ingesteld."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Ontgrendelen via gezichtsherkenning wordt niet ondersteund"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor staat tijdelijk uit."</string> <string name="face_name_template" msgid="3877037340223318119">"Gezicht <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Ontgren. via gezicht gebruiken"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Gezicht of schermgrendeling gebruiken"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Gebruik je gezicht om door te gaan"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Gebruik je gezicht of schermvergrendeling om door te gaan"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Ontgrendelingsgebied uitvouwen."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Ontgrendeling via schuiven."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Ontgrendeling via patroon."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Ontgrendelen via gezichtsherkenning."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Ontgrendeling via pincode."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Pincode-ontgrendeling voor simkaart."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Pukcode-ontgrendeling voor simkaart."</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index f98409ff3ab8..d13d997455a2 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"ଆଂଶିକ ଟିପଚିହ୍ନ ଚିହ୍ନଟ କରାଯାଇଛି"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"ଟିପଚିହ୍ନ ପ୍ରୋସେସ୍ କରାଯାଇପାରିଲା ନାହିଁ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"ସେନ୍ସରକୁ ସଫା କରନ୍ତୁ"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"ଟିକିଏ ଅଧିକ ସମୟ ଧରି ରଖନ୍ତୁ"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"ଆଙ୍ଗୁଠି ଖୁବ୍ ଧୀରେ ନିଆଗଲା। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"ଅନ୍ୟ ଏକ ଟିପଚିହ୍ନ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"ବହୁତ ଉଜ୍ଜ୍ୱଳ"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ଟିପଚିହ୍ନ ଆଇକନ୍"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ଫେସ୍ ଅନଲକ୍"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"ଆପଣଙ୍କର ମୁହଁ ପୁଣି-ଏନ୍ରୋଲ୍ କରନ୍ତୁ"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"ଚିହ୍ନଟକରଣକୁ ଉନ୍ନତ କରିବା ପାଇଁ, ଦୟାକରି ଆପଣଙ୍କର ମୁହଁ ପୁଣି-ଏନ୍ରୋଲ୍ କରନ୍ତୁ।"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"ଫେସ୍ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରନ୍ତୁ"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"ଫୋନକୁ ଦେଖି ଏହାକୁ ଅନଲକ୍ କରନ୍ତୁ"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ଅନଲକ୍ କରିବା ପାଇଁ ଆହୁରି ଅଧିକ ଉପାୟ ସେଟ୍ ଅପ୍ କରନ୍ତୁ"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"ଏକ ଟିପଚିହ୍ନ ଯୋଗ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"ମୁହଁ ଚିହ୍ନଟ କରିପାରିଲା ନାହିଁ। ହାର୍ଡୱେୟାର୍ ଉପଲବ୍ଧ ନାହିଁ।"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"ଫେସ୍ ଅନଲକ୍ ପୁଣି ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ"</string> <string name="face_error_no_space" msgid="5649264057026021723">"ନୂଆ ମୁହଁ ଡାଟା ଷ୍ଟୋର୍ ହେବ ନାହିଁ। ପ୍ରଥମେ ପୁରୁଣାକୁ ଡିଲିଟ୍ କରନ୍ତୁ।"</string> <string name="face_error_canceled" msgid="2164434737103802131">"ଫେସ୍ର ଅପରେଶନ୍ କ୍ୟାନ୍ସଲ୍ ହୋଇଗଲା"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ଦ୍ୱାରା ଫେସ୍ ଅନଲକ୍ ବାତିଲ୍ କରାଯାଇଛି"</string> <string name="face_error_lockout" msgid="7864408714994529437">"ବାରମ୍ବାର ଚେଷ୍ଟା। ପରେ ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ଅନେକଗୁଡ଼ିଏ ପ୍ରଚେଷ୍ଟା। ଫେସ୍ ଅନଲକ୍ ଅକ୍ଷମ କରାଯାଇଛି।"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ଅନେକଗୁଡ଼ିଏ ପ୍ରଚେଷ୍ଟା। ଏହା ପରିବର୍ତ୍ତେ ସ୍କ୍ରିନ୍ ଲକ୍ ଏଣ୍ଟର୍ କରନ୍ତୁ।"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"ମୁହଁ ଚିହ୍ନଟ କରିପାରିଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"ଆପଣ ଫେସ୍ ଅନଲକ୍ ସେଟ୍ ଅପ୍ କରିନାହାଁନ୍ତି"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"ଏହି ଡିଭାଇସରେ ଫେସ୍ ଅନଲକ୍ ସମର୍ଥିତ ନୁହେଁ"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"ସେନ୍ସରକୁ ଅସ୍ଥାୟୀ ଭାବେ ଅକ୍ଷମ କରାଯାଇଛି।"</string> <string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g>ଙ୍କ ଫେସ୍"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"ଫେସ୍ ଅନଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"ଫେସ୍ ବା ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"ଜାରି ରଖିବାକୁ ଆପଣଙ୍କ ଚେହେରା ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"ଜାରି ରଖିବାକୁ ଆପଣଙ୍କ ଚେହେରା କିମ୍ବା ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"ଅନଲକ୍ କ୍ଷେତ୍ରକୁ ବଢ଼ାନ୍ତୁ।"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"ସ୍ଲାଇଡ୍ ଅନଲକ୍।"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"ପାଟର୍ନ ଅନଲକ୍।"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"ଫେସ୍ ଅନଲକ୍।"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN ଅନଲକ୍।"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"PIN ଦ୍ଵାରା SIMକୁ ଅନଲକ୍ କରନ୍ତୁ।"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"PUK ଦ୍ଵାରା SIMକୁ ଅନଲକ୍ କରନ୍ତୁ।"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index 733d47a633a1..1704fb07ba46 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -156,7 +156,7 @@ <string name="cfTemplateRegisteredTime" msgid="5222794399642525045">"<xliff:g id="BEARER_SERVICE_CODE">{0}</xliff:g>: ਅੱਗੇ ਨਹੀਂ ਭੇਜਿਆ ਗਿਆ"</string> <string name="fcComplete" msgid="1080909484660507044">"ਵਿਸ਼ੇਸ਼ਤਾ ਕੋਡ ਪੂਰਾ।"</string> <string name="fcError" msgid="5325116502080221346">"ਕਨੈਕਸ਼ਨ ਸਮੱਸਿਆ ਜਾਂ ਅਵੈਧ ਵਿਸ਼ੇਸ਼ਤਾ ਕੋਡ।"</string> - <string name="httpErrorOk" msgid="6206751415788256357">"ਠੀਕ"</string> + <string name="httpErrorOk" msgid="6206751415788256357">"ਠੀਕ ਹੈ"</string> <string name="httpError" msgid="3406003584150566720">"ਇੱਕ ਨੈੱਟਵਰਕ ਅਸ਼ੁੱਧੀ ਹੋਈ ਸੀ।"</string> <string name="httpErrorLookup" msgid="3099834738227549349">"URL ਨਹੀਂ ਲੱਭ ਸਕਿਆ।"</string> <string name="httpErrorUnsupportedAuthScheme" msgid="3976195595501606787">"ਸਾਈਟ ਪ੍ਰਮਾਣੀਕਰਨ ਯੋਜਨਾ ਸਮਰਥਿਤ ਨਹੀਂ ਹੈ।"</string> @@ -812,7 +812,7 @@ <string name="phoneTypeTtyTdd" msgid="532038552105328779">"TTY TDD"</string> <string name="phoneTypeWorkMobile" msgid="7522314392003565121">"ਕੰਮ ਦਾ ਮੋਬਾਈਲ"</string> <string name="phoneTypeWorkPager" msgid="3748332310638505234">"ਦਫ਼ਤਰ ਦਾ ਪੇਜਰ"</string> - <string name="phoneTypeAssistant" msgid="757550783842231039">"ਸਹਾਇਕ"</string> + <string name="phoneTypeAssistant" msgid="757550783842231039">"Assistant"</string> <string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string> <string name="eventTypeCustom" msgid="3257367158986466481">"ਵਿਉਂਂਤੀ"</string> <string name="eventTypeBirthday" msgid="7770026752793912283">"ਜਨਮਦਿਨ"</string> @@ -845,7 +845,7 @@ <string name="orgTypeOther" msgid="5450675258408005553">"ਹੋਰ"</string> <string name="orgTypeCustom" msgid="1126322047677329218">"ਵਿਉਂਂਤੀ"</string> <string name="relationTypeCustom" msgid="282938315217441351">"ਵਿਉਂਂਤੀ"</string> - <string name="relationTypeAssistant" msgid="4057605157116589315">"ਸਹਾਇਕ"</string> + <string name="relationTypeAssistant" msgid="4057605157116589315">"Assistant"</string> <string name="relationTypeBrother" msgid="7141662427379247820">"ਭਰਾ"</string> <string name="relationTypeChild" msgid="9076258911292693601">"ਬੱਚਾ"</string> <string name="relationTypeDomesticPartner" msgid="7825306887697559238">"ਦੇਸੀ ਪਾਰਟਨਰ"</string> @@ -1136,7 +1136,7 @@ <string name="VideoView_error_title" msgid="5750686717225068016">"ਵੀਡੀਓ ਸਮੱਸਿਆ"</string> <string name="VideoView_error_text_invalid_progressive_playback" msgid="3782449246085134720">"ਇਹ ਵੀਡੀਓ ਇਸ ਡੀਵਾਈਸ ਤੇ ਸਟ੍ਰੀਮਿੰਗ ਲਈ ਪ੍ਰਮਾਣਕ ਨਹੀਂ ਹੈ।"</string> <string name="VideoView_error_text_unknown" msgid="7658683339707607138">"ਇਹ ਵੀਡੀਓ ਪਲੇ ਨਹੀਂ ਕਰ ਸਕਦੇ।"</string> - <string name="VideoView_error_button" msgid="5138809446603764272">"ਠੀਕ"</string> + <string name="VideoView_error_button" msgid="5138809446603764272">"ਠੀਕ ਹੈ"</string> <string name="relative_time" msgid="8572030016028033243">"<xliff:g id="DATE">%1$s</xliff:g>, <xliff:g id="TIME">%2$s</xliff:g>"</string> <string name="noon" msgid="8365974533050605886">"ਦੁਪਹਿਰ"</string> <string name="Noon" msgid="6902418443846838189">"ਦੁਪਹਿਰ"</string> @@ -1169,7 +1169,7 @@ <string name="app_running_notification_text" msgid="5120815883400228566">"ਹੋਰ ਜਾਣਕਾਰੀ ਜਾਂ ਐਪ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।"</string> <string name="ok" msgid="2646370155170753815">"ਠੀਕ ਹੈ"</string> <string name="cancel" msgid="6908697720451760115">"ਰੱਦ ਕਰੋ"</string> - <string name="yes" msgid="9069828999585032361">"ਠੀਕ"</string> + <string name="yes" msgid="9069828999585032361">"ਠੀਕ ਹੈ"</string> <string name="no" msgid="5122037903299899715">"ਰੱਦ ਕਰੋ"</string> <string name="dialog_alert_title" msgid="651856561974090712">"ਧਿਆਨ ਦਿਓ"</string> <string name="loading" msgid="3138021523725055037">"ਲੋਡ ਹੋ ਰਿਹਾ ਹੈ..."</string> @@ -1226,7 +1226,7 @@ <string name="anr_activity_process" msgid="3477362583767128667">"<xliff:g id="ACTIVITY">%1$s</xliff:g> ਪ੍ਰਤਿਕਿਰਿਆ ਨਹੀਂ ਦੇ ਰਹੀ ਹੈ"</string> <string name="anr_application_process" msgid="4978772139461676184">"<xliff:g id="APPLICATION">%1$s</xliff:g> ਪ੍ਰਤਿਕਿਰਿਆ ਨਹੀਂ ਦੇ ਰਹੀ ਹੈ"</string> <string name="anr_process" msgid="1664277165911816067">"ਪ੍ਰਕਿਰਿਆ <xliff:g id="PROCESS">%1$s</xliff:g> ਪ੍ਰਤਿਕਿਰਿਆ ਨਹੀਂ ਦੇ ਰਹੀ ਹੈ"</string> - <string name="force_close" msgid="9035203496368973803">"ਠੀਕ"</string> + <string name="force_close" msgid="9035203496368973803">"ਠੀਕ ਹੈ"</string> <string name="report" msgid="2149194372340349521">"ਰਿਪੋਰਟ ਕਰੋ"</string> <string name="wait" msgid="7765985809494033348">"ਉਡੀਕ ਕਰੋ"</string> <string name="webpage_unresponsive" msgid="7850879412195273433">"ਸਫ਼ਾ ਅਨਰਿਸਪੌਂਸਿਵ ਬਣ ਗਿਆ ਹੈ।\n\nਕੀ ਤੁਸੀਂ ਇਸਨੂੰ ਬੰਦ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?"</string> @@ -1355,7 +1355,7 @@ <string name="perms_description_app" msgid="2747752389870161996">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਵੱਲੋਂ ਮੁਹੱਈਆ ਕੀਤਾ।"</string> <string name="no_permissions" msgid="5729199278862516390">"ਕੋਈ ਅਨੁਮਤੀਆਂ ਲੁੜੀਂਦੀਆਂ ਨਹੀਂ"</string> <string name="perm_costs_money" msgid="749054595022779685">"ਇਸ ਨਾਲ ਤੁਹਾਨੂੰ ਖਰਚਾ ਪੈ ਸਕਦਾ ਹੈ"</string> - <string name="dlg_ok" msgid="5103447663504839312">"ਠੀਕ"</string> + <string name="dlg_ok" msgid="5103447663504839312">"ਠੀਕ ਹੈ"</string> <string name="usb_charging_notification_title" msgid="1674124518282666955">"ਇਹ ਡੀਵਾਈਸ USB ਰਾਹੀਂ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> <string name="usb_supplying_notification_title" msgid="5378546632408101811">"ਕਨੈਕਟ ਕੀਤਾ ਡੀਵਾਈਸ USB ਰਾਹੀਂ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> <string name="usb_mtp_notification_title" msgid="1065989144124499810">"USB ਫ਼ਾਈਲ ਟ੍ਰਾਂਸਫ਼ਰ ਚਾਲੂ ਹੈ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index b1b7f1cce052..efe8280abcc0 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Wykryto częściowy odcisk palca"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Nie udało się przetworzyć odcisku palca. Spróbuj ponownie."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Wyczyść czytnik"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Przytrzymaj trochę dłużej"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Palec został obrócony zbyt wolno. Spróbuj ponownie."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Użyj odcisku innego palca"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Zbyt jasno"</string> @@ -616,12 +615,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona odcisku palca"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Rozpoznawanie twarzy"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Zarejestruj swoją twarz ponownie"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Aby poprawić rozpoznawanie, ponownie zarejestruj swoją twarz"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Skonfiguruj rozpoznawanie twarzy"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Popatrz na ekran telefonu, aby go odblokować"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Skonfiguruj więcej sposobów odblokowywania"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Kliknij, aby dodać odcisk palca"</string> @@ -648,26 +645,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Nie można zweryfikować twarzy. Sprzęt niedostępny."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Spróbuj ponownie użyć rozpoznawania twarzy"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Nie można przechowywać nowych danych twarzy. Usuń stare."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Analiza twarzy została anulowana."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Użytkownik anulował rozpoznawanie twarzy"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Zbyt wiele prób. Spróbuj ponownie później."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Zbyt wiele prób. Rozpoznawanie twarzy zostało wyłączone."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Zbyt wiele prób. Użyj blokady ekranu."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nie można zweryfikować twarzy. Spróbuj ponownie."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Rozpoznawanie twarzy nie zostało skonfigurowane"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Rozpoznawanie twarzy nie jest obsługiwane na tym urządzeniu"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Czujnik jest tymczasowo wyłączony."</string> <string name="face_name_template" msgid="3877037340223318119">"Twarz <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Używaj rozpoznawania twarzy"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Używaj rozpoznawania twarzy lub blokady ekranu"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Użyj skanu twarzy, aby kontynuować"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Aby kontynuować, użyj rozpoznawania twarzy lub blokady ekranu"</string> @@ -970,8 +960,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Rozwiń obszar odblokowania."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Odblokowanie przesunięciem."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Odblokowanie wzorem."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Rozpoznawanie twarzy."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Odblokowanie kodem PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Odblokowanie kodu PIN karty SIM."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Odblokowanie kodu PUK karty SIM."</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index f903c1bf76af..3f80fcedbea5 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Impressão digital parcial detectada"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Não foi possível processar a impressão digital. Tente novamente."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Limpe o sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Mantenha o dedo por mais tempo"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"O movimento do dedo está muito lento. Tente novamente."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Use outra impressão digital"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Claro demais"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ícone de impressão digital"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueio facial"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Registre seu rosto novamente"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Para melhorar o reconhecimento, registre seu rosto novamente"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configurar o desbloqueio facial"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloqueie o smartphone olhando para ele"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configure mais formas de desbloquear a tela"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toque para adicionar uma impressão digital"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Impossível verificar rosto. Hardware indisponível."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Tente usar o desbloqueio facial novamente"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Não é possível salvar dados faciais. Exclua dados antigos."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Operação facial cancelada."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Desbloqueio facial cancelado pelo usuário"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Excesso de tentativas. Tente novamente mais tarde."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Muitas tentativas. Desbloqueio facial desativado."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Muitas tentativas. Como alternativa, use o bloqueio de tela."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível verificar o rosto. Tente novamente."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"O desbloqueio facial não foi configurado"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"O dispositivo não é compatível com o desbloqueio facial"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor desativado temporariamente."</string> <string name="face_name_template" msgid="3877037340223318119">"Rosto <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Usar o desbloqueio facial"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Usar reconhecimento facial ou bloqueio de tela"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Use seu rosto para continuar"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Use seu rosto ou o bloqueio de tela para continuar"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expandir a área de desbloqueio."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Desbloqueio com deslize."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Desbloqueio com padrão."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Desbloqueio facial."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Desbloqueio com PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Desbloqueio com PIN do chip."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Desbloqueio com PUK do chip."</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index b126d49a316c..ab62a9abe2e6 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Impressão digital parcial detetada"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Não foi possível processar a impressão digital. Tente novamente."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Limpe o sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Mantenha o dedo encostado durante mais algum tempo"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Moveu o dedo demasiado lentamente. Tente novamente."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Experimente outra impressão digital"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Está demasiado claro"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ícone de impressão digital"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueio facial"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Volte a inscrever o seu rosto"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Para melhorar o reconhecimento, volte a inscrever o seu rosto."</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configure o Desbloqueio facial"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloqueie o telemóvel ao olhar para ele"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configure mais formas de desbloquear"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toque para adicionar uma impressão digital"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Não pode validar o rosto. Hardware não disponível."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Experimente o Desbloqueio facial novamente"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Não pode guardar novos dados de rostos. Elimine um antigo."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Operação de rosto cancelada."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Desbloqueio facial cancelado pelo utilizador"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Demasiadas tentativas. Tente novamente mais tarde."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Demasiadas tentativas. O Desbloqueio facial foi desativado."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Demasiadas tentativas. Em alternativa, introduza o bloqueio de ecrã."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível validar o rosto. Tente novamente."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Não configurou o Desbloqueio facial"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"O Desbloqueio facial não é suportado neste dispositivo"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor temporariamente desativado."</string> <string name="face_name_template" msgid="3877037340223318119">"Rosto <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Utilizar o Desbloqueio facial"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Utilizar o bloqueio através do rosto ou de ecrã"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Utilize o rosto para continuar"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Utilize o rosto ou o bloqueio de ecrã para continuar"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expandir área de desbloqueio."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Desbloqueio através de deslize."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Desbloqueio através de sequência."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Desbloqueio facial."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Desbloqueio através de PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Desbloqueio do SIM através de PIN."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Desbloqueio do PUK do SIM."</string> @@ -1879,7 +1868,7 @@ <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> <string name="battery_saver_description_with_learn_more" msgid="4877297130366222145">"A Poupança de bateria ativa o tema escuro e limita ou desativa a atividade em segundo plano, alguns efeitos visuais, determinadas funcionalidades e algumas ligações de rede.\n\n"<annotation id="url">"Saiba mais"</annotation></string> <string name="battery_saver_description" msgid="8518809702138617167">"A Poupança de bateria ativa o tema escuro e limita ou desativa a atividade em segundo plano, alguns efeitos visuais, determinadas funcionalidades e algumas ligações de rede."</string> - <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_description" msgid="4995164271550590517">"Para ajudar a reduzir a utilização de dados, a Poupança de dados impede que algumas apps 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> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273"> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index f903c1bf76af..3f80fcedbea5 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Impressão digital parcial detectada"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Não foi possível processar a impressão digital. Tente novamente."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Limpe o sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Mantenha o dedo por mais tempo"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"O movimento do dedo está muito lento. Tente novamente."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Use outra impressão digital"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Claro demais"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ícone de impressão digital"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Desbloqueio facial"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Registre seu rosto novamente"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Para melhorar o reconhecimento, registre seu rosto novamente"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configurar o desbloqueio facial"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Desbloqueie o smartphone olhando para ele"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configure mais formas de desbloquear a tela"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Toque para adicionar uma impressão digital"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Impossível verificar rosto. Hardware indisponível."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Tente usar o desbloqueio facial novamente"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Não é possível salvar dados faciais. Exclua dados antigos."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Operação facial cancelada."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Desbloqueio facial cancelado pelo usuário"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Excesso de tentativas. Tente novamente mais tarde."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Muitas tentativas. Desbloqueio facial desativado."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Muitas tentativas. Como alternativa, use o bloqueio de tela."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível verificar o rosto. Tente novamente."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"O desbloqueio facial não foi configurado"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"O dispositivo não é compatível com o desbloqueio facial"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor desativado temporariamente."</string> <string name="face_name_template" msgid="3877037340223318119">"Rosto <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Usar o desbloqueio facial"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Usar reconhecimento facial ou bloqueio de tela"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Use seu rosto para continuar"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Use seu rosto ou o bloqueio de tela para continuar"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expandir a área de desbloqueio."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Desbloqueio com deslize."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Desbloqueio com padrão."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Desbloqueio facial."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Desbloqueio com PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Desbloqueio com PIN do chip."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Desbloqueio com PUK do chip."</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 7eb9b038e6ce..b07fce480c2b 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -583,8 +583,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"S-a detectat o amprentă parțială"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Amprenta nu a putut fi procesată. Încercați din nou."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Curățați senzorul"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Țineți degetul apăsat puțin mai mult"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Ați mișcat degetul prea lent. Încercați din nou."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Încercați altă amprentă"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Prea luminos"</string> @@ -613,12 +612,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Pictograma amprentă"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Deblocare facială"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Reînregistrați-vă chipul"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Pentru a îmbunătăți recunoașterea, reînregistrați-vă chipul"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Configurați Deblocarea facială"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Deblocați-vă telefonul uitându-vă la acesta"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Configurați mai multe moduri de deblocare"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Atingeți ca să adăugați o amprentă"</string> @@ -645,26 +642,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Nu se poate confirma fața. Hardware-ul nu este disponibil."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Încercați din nou Deblocarea facială"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Nu se pot stoca date faciale noi. Ștergeți întâi unele vechi."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Operațiunea privind chipul a fost anulată."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Deblocarea facială a fost anulată de utilizator"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Prea multe încercări. Reîncercați mai târziu."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Prea multe încercări. Deblocarea facială este dezactivată."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Prea multe încercări. Folosiți blocarea ecranului."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Nu se poate confirma fața. Încercați din nou."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nu ați configurat Deblocarea facială"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Deblocarea facială nu este acceptată pe acest dispozitiv"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzorul este dezactivat temporar."</string> <string name="face_name_template" msgid="3877037340223318119">"Chip <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Folosiți Deblocarea facială"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Folosiți deblocarea facială sau ecranul de blocare"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Folosiți-vă chipul ca să continuați"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Folosiți-vă chipul sau blocarea ecranului pentru a continua"</string> @@ -967,8 +957,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Extindeți zona de deblocare."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Deblocare prin glisare."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Deblocare cu model."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Deblocare facială."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Deblocare cu PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Deblocare PIN pentru cardul SIM."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Deblocare PUK pentru cardul SIM."</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 2f8fc7808126..e02388d9f6d4 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Отсканирована только часть отпечатка."</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Не удалось распознать отпечаток. Повторите попытку."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Очистите сканер."</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Вы слишком быстро убираете палец со сканера."</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Вы перемещали палец слишком медленно. Повторите попытку."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Попробуйте сохранить отпечаток другого пальца."</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Слишком светло."</string> @@ -616,12 +615,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Значок отпечатка пальца"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Фейсконтроль"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Зарегистрируйте лицо ещё раз"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Чтобы улучшить распознавание лица, зарегистрируйте его ещё раз"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Настройка фейсконтроля"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Вы сможете разблокировать телефон, просто посмотрев на него."</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Настройте другие способы разблокировки"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Нажмите, чтобы добавить отпечаток пальца."</string> @@ -648,26 +645,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Не удалось распознать лицо. Сканер недоступен."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Попробуйте воспользоваться фейсконтролем ещё раз."</string> <string name="face_error_no_space" msgid="5649264057026021723">"Недостаточно места. Удалите старые данные для распознавания."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Распознавание отменено"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Фейсконтроль: операция отменена пользователем."</string> <string name="face_error_lockout" msgid="7864408714994529437">"Слишком много попыток. Повторите позже."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Слишком много попыток. Фейсконтроль отключен."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Слишком много попыток. Используйте другой способ разблокировки экрана."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Не удалось распознать лицо. Повторите попытку."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Вы не настроили фейсконтроль."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Фейсконтроль не поддерживается на этом устройстве."</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Датчик временно отключен."</string> <string name="face_name_template" msgid="3877037340223318119">"Лицо <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Использовать фейсконтроль"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Использовать фейсконтроль или блокировку экрана"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Чтобы продолжить, используйте функцию фейсконтроля."</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Чтобы продолжить, посмотрите на экран или используйте данные для разблокировки."</string> @@ -970,8 +960,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Развернуть области разблокировки"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Прокрутка"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Графический ключ"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Фейсконтроль"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN-код"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Разблокировка PIN-кода SIM-карты."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Разблокировка PUK-кода SIM-карты."</string> @@ -2169,7 +2158,7 @@ <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"ОК"</string> <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"Отключить"</string> <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Подробнее"</string> - <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"В Android 12 адаптивные уведомления заменены улучшенными. Эта функция упорядочивает все ваши уведомления и подсказывает ответы и действия.\n\nЕй доступно содержимое всех уведомлений, в том числе личная информация, такая как имена контактов и сообщения. Также эта функция может закрывать уведомления и нажимать кнопки в них, например отвечать на звонки или управлять режимом \"Не беспокоить\"."</string> + <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"В Android 12 адаптивные уведомления заменены улучшенными. Эта функция упорядочивает все ваши уведомления и подсказывает ответы и действия.\n\nЕй доступно содержимое всех уведомлений, в том числе имена контактов, сообщения и другие личные данные. Также эта функция может закрывать уведомления и нажимать кнопки в них, например отвечать на звонки и управлять режимом \"Не беспокоить\"."</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Уведомление о батарее"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Батарея может разрядиться"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Чтобы увеличить время работы от батареи, был включен режим энергосбережения."</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 75933b507ea3..b6c7fc991341 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"අර්ධ ඇඟිලි සලකුණක් අනාවරණය කරන ලදි"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"ඇඟිලි සලකුණ පිරිසැකසීමට නොහැකි විය. කරුණාකර නැවත උත්සාහ කරන්න."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"සංවේදකය පිරිසිදු කරන්න"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"තව ටිකක් වැඩිපුර අල්ලාගෙන සිටින්න"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"ඇඟිල්ල වඩා සෙමෙන් ගෙන යන ලදි. කරුණාකර නැවත උත්සාහ කරන්න."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"තවත් ඇඟිලි සලකුණක් උත්සාහ කරන්න"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"දීප්තිය වැඩියි"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index c080a5be322a..f05c616f5900 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -431,7 +431,7 @@ <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Umožňuje aplikácii upravovať denník hovorov vo vašom tablete vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na vymazanie alebo úpravu vášho denníka hovorov."</string> <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Umožňuje aplikácii upravovať denník hovorov zariadenia Android TV vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na vymazanie alebo úpravu denníkov hovorov."</string> <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Umožňuje aplikácii upravovať zoznam hovorov vo vašom telefóne vrátane údajov o prichádzajúcich a odchádzajúcich hovoroch. Škodlivé aplikácie to môžu zneužiť na vymazanie alebo úpravu vášho zoznamu hovorov."</string> - <string name="permlab_bodySensors" msgid="3411035315357380862">"prístup k telesným senzorom (ako sú snímače tepu)"</string> + <string name="permlab_bodySensors" msgid="3411035315357380862">"prístup k telovým senzorom (ako sú snímače tepu)"</string> <string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Umožňuje aplikácii získať prístup k údajom senzorov monitorujúcich vašu fyzickú kondíciu (napríklad pulz)."</string> <string name="permlab_readCalendar" msgid="6408654259475396200">"Čítanie udalostí kalendára a podrobností"</string> <string name="permdesc_readCalendar" product="tablet" msgid="515452384059803326">"Táto aplikácia môže čítať všetky udalosti kalendára uložené vo vašom tablete a zdieľať alebo ukladať dáta kalendára."</string> @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Bol rozpoznaný čiastočný odtlačok prsta"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Odtlačok prsta sa nepodarilo spracovať. Skúste to znova."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Vyčistite senzor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Podržte trochu dlhšie"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Pohli ste prstom príliš pomaly. Skúste to znova."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Vyskúšajte iný odtlačok prsta"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Príliš jasno"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index ee315adb15b9..f53652dbfd69 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Zaznan je delni prstni odtis."</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Prstnega odtisa ni bilo mogoče obdelati. Poskusite znova."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Očistite tipalo."</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Pridržite malo dlje."</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Prepočasen premik prsta. Poskusite znova."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Poskusite z drugim prstnim odtisom."</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Presvetlo je."</string> @@ -616,12 +615,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona prstnih odtisov"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Odklepanje z obrazom"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Znova registrirajte obraz"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Za izboljšanje prepoznavanja znova registrirajte svoj obraz"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Nastavitev odklepanja z obrazom"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Odklenite telefon tako, da ga pogledate."</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Nastavite več načinov odklepanja"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Dotaknite se, da dodate prstni odtis."</string> @@ -648,26 +645,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Obraza ni mogoče preveriti. Str. opr. ni na voljo."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Znova izvedite odklepanje z obrazom."</string> <string name="face_error_no_space" msgid="5649264057026021723">"Novega obraza ni mogoče shraniti. Najprej izbrišite starega."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Dejanje z obrazom je bilo preklicano."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Odklepanje z obrazom je preklical uporabnik."</string> <string name="face_error_lockout" msgid="7864408714994529437">"Preveč poskusov. Poskusite znova pozneje."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Preveč poskusov. Odklepanje z obrazom je onemogočeno."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Preveč poskusov. Uporabite odklepanje zaslona s poverilnico."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Obraza ni mogoče preveriti. Poskusite znova."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Odklepanja z obrazom niste nastavili."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Odklepanje z obrazom ni podprto v tej napravi."</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Tipalo je začasno onemogočeno."</string> <string name="face_name_template" msgid="3877037340223318119">"Obraz <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Uporaba odklepanja z obrazom"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Uporaba odklepanja z obrazom ali s poverilnico"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Uporabite obraz, če želite nadaljevati."</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Za nadaljevanje uporabite obraz ali odklepanje s poverilnico."</string> @@ -970,8 +960,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Razširitev območja odklepanja."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Odklepanje s podrsanjem."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Odklepanje z vzorcem."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Odklepanje z obrazom"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Odklepanje s kodo PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Odklepanje kartice SIM s kodo PIN"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Odklepanje kartice SIM s kodo PUK"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 117f9d2d730d..d9039632544e 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"U zbulua gjurmë gishti e pjesshme"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Gjurma e gishtit nuk mund të përpunohej. Provo përsëri."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Pastro sensorin"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Mbaje dhe pak"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Gishti lëvizi shumë ngadalë. Provo përsëri."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Provo një gjurmë gishti tjetër"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Me shumë ndriçim"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikona e gjurmës së gishtit"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Shkyçja me fytyrë"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Regjistro përsëri fytyrën tënde"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Për të përmirësuar njohjen, regjistro përsëri fytyrën tënde"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Konfiguro \"Shkyçjen me fytyrë\""</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Shkyçe telefonin duke parë tek ai"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfiguri më shumë mënyra për të shkyçur"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Trokit për të shtuar një gjurmë gishti"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Fytyra s\'mund të verifikohet. Hardueri nuk ofrohet."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Provo përsëri \"Shkyçjen me fytyrë\""</string> <string name="face_error_no_space" msgid="5649264057026021723">"S\'mund të ruhen të dhëna të reja fytyre. Fshi një të vjetër në fillim."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Veprimi me fytyrën u anulua."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"\"Shkyçja me fytyrë\" u anulua nga përdoruesi"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Shumë përpjekje. Provo sërish më vonë."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Shumë përpjekje. \"Shkyçja me fytyrë\" u çaktivizua."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Shumë përpjekje. Fut më mirë kyçjen e ekranit."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Fytyra nuk mund të verifikohet. Provo përsëri."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Nuk e ke konfiguruar \"Shkyçjen me fytyrë\""</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"\"Shkyçja me fytyrë\" nuk mbështetet në këtë pajisje"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensori është çaktivizuar përkohësisht."</string> <string name="face_name_template" msgid="3877037340223318119">"Fytyra <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Përdor \"Shkyçjen me fytyrë\""</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Përdor kyçjen me fytyrë ose kyçjen e ekranit"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Përdor fytyrën tënde për të vazhduar"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Përdor fytyrën tënde ose kyçjen e ekranit për të vazhduar"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Zgjero zonën e shkyçjes."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Rrëshqit shkyçjen."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Shkyçje me motiv."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Shkyçja me fytyrë"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Shkyçje me PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Shkyçja e kartës SIM me kodin PIN"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Shkyçja e kartës SIM me kodin PUK"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 097115cfeba7..ddb1ce165824 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -583,8 +583,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Откривен је делимичан отисак прста"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Није успела обрада отиска прста. Пробајте поново."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Обришите сензор"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Задржите мало дуже"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Превише споро сте померили прст. Пробајте поново."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Пробајте са другим отиском прста"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Превише је светло"</string> @@ -613,12 +612,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Икона отиска прста"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Откључавање лицем"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Поново региструјте лице"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Да бисте побољшали препознавање, поново региструјте лице"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Подесите откључавање лицем"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Откључајте телефон тако што ћете га погледати"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Подесите још начина за откључавање"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Додирните да бисте додали отисак прста"</string> @@ -645,26 +642,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Провера лица није успела. Хардвер није доступан."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Пробајте поново откључавање лицем"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Нови подаци о лицу нису сачувани. Прво избришете претходне."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Обрада лица је отказана."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Корисник је отказао откључавање лицем"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Превише покушаја. Пробајте поново касније."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Превише покушаја. Откључавање лицем је онемогућено."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Превише покушаја. Користите закључавање екрана за то."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Провера лица није успела. Пробајте поново."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Нисте подесили откључавање лицем"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Откључавање лицем није подржано на овом уређају"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Сензор је привремено онемогућен."</string> <string name="face_name_template" msgid="3877037340223318119">"Лице <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Користите откључавање лицем"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Користите закључавање лицем или закључавање екрана"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Потврдите идентитет лицем да бисте наставили"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Користите лице или закључавање екрана да бисте наставили"</string> @@ -967,8 +957,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Прошири област откључавања."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Откључавање превлачењем."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Откључавање шаблоном."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Откључавање лицем."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Откључавање PIN-ом."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Откључава SIM картицу PIN-ом."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Откључава SIM картицу PUK-ом."</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index a7b6218833af..35ec2df9ffce 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Ofullständigt fingeravtryck upptäcktes"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Det gick inte att bearbeta fingeravtrycket. Försök igen."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Rengör sensorn"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Håll kvar fingret lite längre"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Du rörde fingret för långsamt. Försök igen."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Testa ett annat fingeravtryck"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Det är för ljust"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Ikon för fingeravtryck"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ansiktslås"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Registrera ansiktet på nytt"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Gör om registreringen av ansiktet så att ansiktsigenkänningen ska fungera bättre"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Konfigurera ansiktslås"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Lås upp telefonen genom att titta på den"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Konfigurera fler sätt att låsa upp"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Tryck för att lägga till ett fingeravtryck"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Ansiktsverifiering går ej. Otillgänglig maskinvara."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Försök att använda ansiktslåset igen"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Kan inte lagra ny ansiktsdata. Radera först gammal data."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Ansiktsåtgärden har avbrutits."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Ansiktslås avbröts av användaren"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Du har gjort för många försök. Försök igen senare."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"För många försök. Ansiktslås har inaktiverats."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"För många försök. Ange skärmlås i stället."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Det gick inte att verifiera ansiktet. Försök igen."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Du har inte konfigurerat ansiktslås"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Enheten har inget stöd för ansiktslås"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensorn har tillfälligt inaktiverats."</string> <string name="face_name_template" msgid="3877037340223318119">"Ansikte <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Använd ansiktslåset"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Använd ansiktslåset eller skärmlåset"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Fortsätt med hjälp av ditt ansikte"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Fortsätt med hjälp av ditt ansikte eller skärmlåset"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Expandera upplåsningsytan."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Lås upp genom att dra."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Lås upp med grafiskt lösenord."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Ansiktslås."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Lås upp med PIN-kod."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Lås upp med SIM-kortets pinkod."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Lås upp med SIM-kortets PUK-kod."</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index f63b939d7cd8..3e8949b019ac 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -321,8 +321,8 @@ <string name="permgroupdesc_camera" msgid="7585150538459320326">"ipige picha na kurekodi video"</string> <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Vifaa vilivyo karibu"</string> <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"kutambua na kuunganisha kwenye vifaa vilivyo karibu"</string> - <string name="permgrouplab_calllog" msgid="7926834372073550288">"Rekodi ya nambari za simu"</string> - <string name="permgroupdesc_calllog" msgid="2026996642917801803">"kusoma na kuandika rekodi ya nambari za simu"</string> + <string name="permgrouplab_calllog" msgid="7926834372073550288">"Kumbukumbu za simu"</string> + <string name="permgroupdesc_calllog" msgid="2026996642917801803">"kusoma na kuandika kumbukumbu za simu"</string> <string name="permgrouplab_phone" msgid="570318944091926620">"Simu"</string> <string name="permgroupdesc_phone" msgid="270048070781478204">"piga na udhibiti simu"</string> <string name="permgrouplab_sensors" msgid="9134046949784064495">"Vitambua shughuli za mwili"</string> @@ -423,7 +423,7 @@ <string name="permdesc_readCallLog" msgid="8964770895425873433">"Programu hii inaweza kusoma rekodi yako ya simu zilizopigwa."</string> <string name="permlab_writeCallLog" msgid="670292975137658895">"kuandika rekodi ya simu"</string> <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Huruhusu programu kurekebisha rajisi ya kompyuta kibao yako, ikiwa ni pamoja na simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kufuta au kurekebisha rajisi ya simu yako."</string> - <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Huruhusu programu irekebishe rekodi ya nambari za simu ya kifaa chako cha Android TV, ikiwa ni pamoja na data kuhusu simu zinazoingia na simu unazopiga. Huenda programu hasidi zikatumia ruhusa hii ili kufuta au kurekebisha rekodi yako ya nambari za simu."</string> + <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Huruhusu programu irekebishe kumbukumbu za simu ya kifaa chako cha Android TV, ikiwa ni pamoja na data kuhusu simu zinazoingia na simu unazopiga. Huenda programu hasidi zikatumia ruhusa hii ili kufuta au kurekebisha kumbukumbu zako za simu."</string> <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Huruhusu programu kurekebisha rajisi ya simu yako, ikiwa ni pamoja na simu zinazoingia na kutoka. Huenda programu hasidi zikatumia hii ili kufuta au kurekebisha rajisi ya simu yako."</string> <string name="permlab_bodySensors" msgid="3411035315357380862">"fikia vitambua shughuli za mwili (kama vifuatiliaji vya mapigo ya moyo)"</string> <string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Huruhusu programu kufikia data kutoka vihisi vinavyofuatilia hali yako ya kimwili, kama vile mapigo ya moyo."</string> @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Kimetambua sehemu ya alama ya kidole"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Imeshindwa kuchakata alama ya kidole. Tafadhali jaribu tena."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Safisha kitambuzi cha alama ya kidole"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Endelea kushikilia kwa muda zaidi"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Kidole kilisogezwa polepole zaidi. Tafadhali jaribu tena."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Jaribu alama nyingine ya kidole"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Inang\'aa mno"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Aikoni ya alama ya kidole"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Kufungua kwa uso"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Sajili uso wako tena"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Ili kuimarisha utambuzi, tafadhali sajili uso wako tena"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Weka mipangilio ya Kufungua kwa uso"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Fungua simu yako kwa kuiangalia"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Weka mipangilio ya mbinu zaidi za kufungua"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Gusa ili uweke alama ya kidole"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Imeshindwa kuthibitisha uso. Maunzi hayapatikani."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Jaribu Kufungua kwa uso tena"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Imeshindwa kuhifadhi data ya uso mpya. Futa wa kale kwanza."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Utendaji wa kitambulisho umeghairiwa."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Hatua ya Kufungua kwa uso imeghairiwa na mtumiaji"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Umejaribu mara nyingi mno. Jaribu tena baadaye."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Umejaribu mara nyingi mno. Umezima kipengele cha Kufungua kwa uso."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Umejaribu mara nyingi mno. Weka mbinu ya kufunga skrini badala yake."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Imeshindwa kuthibitisha uso. Jaribu tena."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Hujaweka mipangilio ya kipengele cha Kufungua kwa uso"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Kipengele cha Kufungua kwa uso hakitumiki kwenye kifaa hiki"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Kitambuzi kimezimwa kwa muda."</string> <string name="face_name_template" msgid="3877037340223318119">"Uso wa <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Tumia kipengele cha Kufungua kwa uso"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Tumia uso au mbinu ya kufunga skrini"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Tumia uso wako ili uendelee"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Tumia uso au mbinu yako ya kufunga skrini ili uendelee"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Panua eneo la kufungua."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Kufungua slaidi."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Kufungua kwa ruwaza."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Kufungua kwa uso."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Kufungua kwa PIN."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Kufungua Pin ya Sim."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Kufungua Puk ya Sim."</string> @@ -2291,10 +2280,10 @@ <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Sasa unaweza kukuza sehemu ya skrini yako"</string> <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Washa katika Mipangilio"</string> <string name="dismiss_action" msgid="1728820550388704784">"Ondoa"</string> - <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Ondoa kizuizi kwenye maikrofoni ya kifaa"</string> - <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Ondoa kizuizi kwenye kamera ya kifaa"</string> + <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Acha kuzuia maikrofoni ya kifaa"</string> + <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Acha kuzuia kamera ya kifaa"</string> <string name="sensor_privacy_start_use_notification_content_text" msgid="7595608891015777346">"Kwa ajili ya <b><xliff:g id="APP">%s</xliff:g></b> na programu na huduma zote"</string> - <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Ondoa kizuizi"</string> + <string name="sensor_privacy_start_use_dialog_turn_on_button" msgid="7089318886628390827">"Acha kuzuia"</string> <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Faragha ya Kitambuzi"</string> <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Aikoni ya programu"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Picha ya kuweka chapa kwenye programu"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index 25669afe6a67..1a4d01ccc57c 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"பகுதியளவு கைரேகை கண்டறியப்பட்டது"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"கைரேகையைச் செயலாக்க முடியவில்லை. மீண்டும் முயலவும்."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"சென்சாரைச் சுத்தம் செய்யவும்"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"இன்னும் சிறிது நேரம் விரலை வைத்திருங்கள்"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"விரலை மிகவும் மெதுவாக நகர்த்திவிட்டீர்கள். மீண்டும் முயற்சிக்கவும்."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"வேறு கைரேகையை முயலவும்"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"அதிக வெளிச்சமாக உள்ளது"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"கைரேகை ஐகான்"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"முகம் காட்டித் திறத்தல்"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"முகத்தை மீண்டும் பதிவுசெய்யவும்"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"அடையாளத்தை மேம்படுத்த முகத்தை மீண்டும் பதிவுசெய்யவும்"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"\'முகம் காட்டித் திறத்தல்\' அம்சத்தை அமைத்தல்"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"மொபைலைப் பார்ப்பதன் மூலம் அதைத் திறக்கலாம்"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"திறக்க, மேலும் பல வழிகளை அமையுங்கள்"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"கைரேகையைச் சேர்க்கத் தட்டுங்கள்"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"முகத்தைச் சரிபார்க்க இயலவில்லை. வன்பொருள் இல்லை."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"மீண்டும் \'முகம் காட்டித் திறத்தலை\' உபயோகிக்கவும்"</string> <string name="face_error_no_space" msgid="5649264057026021723">"புதிய முகங்களைச் சேர்க்க இயலவில்லை. பழையது ஒன்றை நீக்கவும்."</string> <string name="face_error_canceled" msgid="2164434737103802131">"முக அங்கீகாரச் செயல்பாடு ரத்துசெய்யப்பட்டது."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"பயனரால் \'முகம் காட்டித் திறத்தல்\' ரத்துசெய்யப்பட்டது"</string> <string name="face_error_lockout" msgid="7864408714994529437">"பலமுறை முயன்றுவிட்டீர்கள். பிறகு முயலவும்."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"பலமுறை முயன்றுவிட்டீர்கள். \'முகம் காட்டித் திறத்தல்\' அம்சம் முடக்கப்பட்டது."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"பலமுறை முயன்றுவிட்டீர்கள். இதற்குப் பதிலாக, திரைப் பூட்டைப் பயன்படுத்தவும்."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"முகத்தைச் சரிபார்க்க இயலவில்லை. மீண்டும் முயலவும்."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"\'முகம் காட்டித் திறத்தல்\' அம்சத்தை அமைக்கவில்லை."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"இந்தச் சாதனம் \'முகம் காட்டித் திறத்தல்\' அம்சத்தை ஆதரிக்காது"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"சென்சார் தற்காலிகமாக முடக்கப்பட்டுள்ளது."</string> <string name="face_name_template" msgid="3877037340223318119">"முகம் <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"முகம் காட்டித் திறத்தலை உபயோகி"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"முகம் காட்டித் திறத்தல் / திரைப் பூட்டைப் பயன்படுத்து"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"தொடர்வதற்கு உங்கள் முகத்தைப் பயன்படுத்துங்கள்"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"தொடர, உங்கள் முகத்தையோ திரைப் பூட்டையோ பயன்படுத்துங்கள்"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"திறப்பதற்கான பகுதியை விவரிக்கவும்."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"ஸ்லைடு மூலம் திறத்தல்."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"பேட்டர்ன் மூலம் திறத்தல்."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"முகம் காட்டித் திறத்தல்."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin மூலம் திறத்தல்."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"சிம்மைத் திறக்கும் பின்."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"சிம்மைத் திறக்கும் Puk."</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index b8555b498ac2..182e6c69f015 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -311,7 +311,7 @@ <string name="permgroupdesc_calendar" msgid="6762751063361489379">"మీ క్యాలెండర్ను యాక్సెస్ చేయడానికి"</string> <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string> <string name="permgroupdesc_sms" msgid="5726462398070064542">"SMS సందేశాలను పంపడం మరియు వీక్షించడం"</string> - <string name="permgrouplab_storage" msgid="1938416135375282333">"ఫైల్స్ మరియు మీడియా"</string> + <string name="permgrouplab_storage" msgid="1938416135375282333">"ఫైల్స్, మీడియా"</string> <string name="permgroupdesc_storage" msgid="6351503740613026600">"మీ పరికరంలోని ఫోటోలు, మీడియా మరియు ఫైల్లను యాక్సెస్ చేయడానికి"</string> <string name="permgrouplab_microphone" msgid="2480597427667420076">"మైక్రోఫోన్"</string> <string name="permgroupdesc_microphone" msgid="1047786732792487722">"ఆడియోను రికార్డ్ చేయడానికి"</string> @@ -610,12 +610,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"వేలిముద్ర చిహ్నం"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"ఫేస్ అన్లాక్"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"మీ ముఖాన్ని తిరిగి నమోదు చేయండి"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"గుర్తింపును మెరుగుపరచడానికి, దయచేసి మీ ముఖంను తిరిగి నమోదు చేసుకోండి"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"ఫేస్ అన్లాక్ను సెటప్ చేయండి"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"మీ ఫోన్ను చూడటం ద్వారా దాన్ని అన్లాక్ చేయండి"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"అన్లాక్ చేయడానికి మరిన్ని మార్గాలను సెటప్ చేయండి"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"వేలిముద్రను జోడించడానికి ట్యాప్ చేయండి"</string> @@ -642,26 +640,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"ముఖం ధృవీకరించలేరు. హార్డ్వేర్ అందుబాటులో లేదు."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"ఫేస్ అన్లాక్ను మళ్లీ ట్రై చేయండి"</string> <string name="face_error_no_space" msgid="5649264057026021723">"కొత్త ముఖం డేటాను నిల్వ చేయడం కాదు. మొదట పాతది తొలిగించండి."</string> <string name="face_error_canceled" msgid="2164434737103802131">"ముఖ కార్యకలాపం రద్దయింది."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"ఫేస్ అన్లాక్ను యూజర్ రద్దు చేశారు"</string> <string name="face_error_lockout" msgid="7864408714994529437">"చాలా ఎక్కువ ప్రయత్నాలు చేసారు. తర్వాత మళ్లీ ప్రయత్నించండి."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"చాలా ఎక్కువ ప్రయత్నాలు. ఫేస్ అన్లాక్ డిజేబుల్ చేయబడింది."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"చాలా ఎక్కువ ప్రయత్నాలు. బదులుగా స్క్రీన్ లాక్ను ఎంటర్ చేయండి."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"ముఖం ధృవీకరించలేకపోయింది. మళ్లీ ప్రయత్నించండి."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"మీరు ఫేస్ అన్లాక్ను సెటప్ చేయలేదు"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"ఫేస్ అన్లాక్ ఈ పరికరంలో సపోర్ట్ చేయడం లేదు"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"సెన్సార్ తాత్కాలికంగా డిజేబుల్ చేయబడింది."</string> <string name="face_name_template" msgid="3877037340223318119">"ముఖ <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"ఫేస్ అన్లాక్ను ఉపయోగించండి"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"ఫేస్ లేదా స్క్రీన్ లాక్ను ఉపయోగించండి"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"కొనసాగించడానికి మీ ముఖాన్ని ఉపయోగించండి"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"కొనసాగించడానికి మీ ముఖం లేదా స్క్రీన్ లాక్ను ఉపయోగించండి"</string> @@ -964,8 +955,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"అన్లాక్ ప్రాంతాన్ని విస్తరింపజేయండి."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"స్లయిడ్ అన్లాక్."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"ఆకృతి అన్లాక్."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"ఫేస్ అన్లాక్."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"పిన్ అన్లాక్."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Sim పిన్ అన్లాక్."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Sim Puk అన్లాక్."</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index b67e8e970665..7c61d303d52f 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"ตรวจพบลายนิ้วมือบางส่วน"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"ประมวลผลลายนิ้วมือไม่ได้ โปรดลองอีกครั้ง"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"ทำความสะอาดเซ็นเซอร์"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"วางนิ้วให้นานขึ้นอีกนิด"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"นิ้วเคลื่อนที่ช้าเกินไป โปรดลองอีกครั้ง"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"ลองลายนิ้วมืออื่น"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"สว่างเกินไป"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"ไอคอนลายนิ้วมือ"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"การปลดล็อกด้วยใบหน้า"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"ลงทะเบียนใบหน้าอีกครั้ง"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"โปรดลงทะเบียนใบหน้าอีกครั้งเพื่อปรับปรุงการจดจำ"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"ตั้งค่าการปลดล็อกด้วยใบหน้า"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"ปลดล็อกโทรศัพท์โดยมองไปที่โทรศัพท์"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"ตั้งค่าการปลดล็อกด้วยวิธีอื่น"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"แตะเพื่อเพิ่มลายนิ้วมือ"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"ยืนยันใบหน้าไม่ได้ ฮาร์ดแวร์ไม่พร้อมใช้งาน"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"ลองใช้การปลดล็อกด้วยใบหน้าอีกครั้ง"</string> <string name="face_error_no_space" msgid="5649264057026021723">"จัดเก็บข้อมูลใบหน้าใหม่ไม่ได้ ลบข้อมูลเก่าออกไปก่อน"</string> <string name="face_error_canceled" msgid="2164434737103802131">"ยกเลิกการดำเนินการกับใบหน้าแล้ว"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"ผู้ใช้ยกเลิกการใช้การปลดล็อกด้วยใบหน้า"</string> <string name="face_error_lockout" msgid="7864408714994529437">"ดำเนินการหลายครั้งเกินไป ลองอีกครั้งในภายหลัง"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"ลองหลายครั้งเกินไป ปิดใช้การปลดล็อกด้วยใบหน้าแล้ว"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"ลองหลายครั้งเกินไป ใช้การล็อกหน้าจอแทน"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"ยืนยันใบหน้าไม่ได้ ลองอีกครั้ง"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"คุณยังไม่ได้ตั้งค่าการปลดล็อกด้วยใบหน้า"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"อุปกรณ์นี้ยังไม่รองรับการปลดล็อกด้วยใบหน้า"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"ปิดใช้เซ็นเซอร์ชั่วคราวแล้ว"</string> <string name="face_name_template" msgid="3877037340223318119">"ใบหน้า <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"ใช้การปลดล็อกด้วยใบหน้า"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"ใช้การล็อกด้วยใบหน้าหรือการล็อกหน้าจอ"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"ใช้ใบหน้าของคุณเพื่อดำเนินการต่อ"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"ใช้ใบหน้าหรือการล็อกหน้าจอเพื่อดำเนินการต่อ"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"ขยายพื้นที่ปลดล็อก"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"การปลดล็อกด้วยการเลื่อน"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"การปลดล็อกด้วยรูปแบบ"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"การปลดล็อกด้วยใบหน้า"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"การปลดล็อกด้วย PIN"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"การปลดล็อก PIN ของซิม"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"การปลดล็อก PUK ของซิม"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 3f667dabb1ba..c794f4b28c33 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Hindi buo ang natukoy na fingerprint"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Hindi maproseso ang fingerprint. Pakisubukan ulit."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Linisin ang sensor"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"I-hold nang mas matagal nang kaunti"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Masyadong mabagal ang paggalaw ng daliri. Pakisubukan ulit."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Sumubok ng ibang fingerprint"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Masyadong maliwanag"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Icon ng fingerprint"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Pag-unlock Gamit ang Mukha"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"I-enroll ulit ang iyong mukha"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Para mapahusay ang pagkilala, paki-enroll ulit ang iyong mukha"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"I-set up ang Pag-unlock Gamit ang Mukha"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"I-unlock ang iyong telepono sa pamamagitan ng pagtingin dito"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Mag-set up ng higit pang paraan para mag-unlock"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"I-tap para magdagdag ng fingerprint"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Di ma-verify ang mukha. Di available ang hardware."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Subukan ulit ang Pag-unlock Gamit ang Mukha"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Hindi ma-store ang data ng mukha. Mag-delete muna ng iba."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Nakansela ang operation kaugnay ng mukha."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Kinansela ng user ang Pag-unlock Gamit ang Mukha"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Masyadong maraming pagsubok. Subukang muli mamaya."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Masyado nang maraming beses sinubukan. Na-disable ang Pag-unlock Gamit ang Mukha."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Masyado nang maraming beses sinubukan. Ilagay na lang ang lock ng screen."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Hindi ma-verify ang mukha. Subukang muli."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Hindi mo pa nase-set up ang Pag-unlock Gamit ang Mukha"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Hindi sinusuportahan ang Pag-unlock Gamit ang Mukha sa device na ito"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Pansamantalang na-disable ang sensor."</string> <string name="face_name_template" msgid="3877037340223318119">"Mukha <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Gumamit ng Pag-unlock Gamit ang Mukha"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Gumamit ng mukha o lock ng screen"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Gamitin ang iyong mukha para magpatuloy"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Gamitin ang iyong mukha o lock ng screen para magpatuloy"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Palakihin ang bahagi ng pag-unlock."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Pag-unlock ng slide."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Pag-unlock ng pattern."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Pag-unlock Gamit ang Mukha."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pag-unlock ng pin."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Pag-unlock ng Pin ng Sim."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Pag-unlock ng Puk ng Sim."</string> @@ -2103,7 +2092,7 @@ <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"OK"</string> <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"I-off"</string> <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Matuto pa"</string> - <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Pinalitan ng mga pinahusay na notification ang Mga Adaptive na Notification ng Android sa Android 12. Nagpapakita ng mga iminumungkahing pagkilos at sagot ang feature na ito, at isinasaayos nito ang iyong mga notification.\n\nMaa-access ng mga pinahusay na notification ang content ng notification, kabilang ang personal na impormasyon gaya ng mga pangalan ng contact at mensahe. Magagawa rin ng feature na ito na i-dismiss o tugunan ang mga notification, gaya ng pagsagot sa mga tawag sa telepono, at kontrolin ang Huwag Istorbohin."</string> + <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"Pinalitan ng Mga pinahusay na notification ang Mga Adaptive na Notification ng Android sa Android 12. Nagpapakita ng mga iminumungkahing pagkilos at sagot ang feature na ito, at isinasaayos nito ang iyong mga notification.\n\nMaa-access ng Mga pinahusay na notification ang content ng notification, kabilang ang personal na impormasyon gaya ng mga pangalan ng contact at mensahe. Magagawa rin ng feature na ito na i-dismiss o tugunan ang mga notification, gaya ng pagsagot sa mga tawag sa telepono, at kontrolin ang Huwag Istorbohin."</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Notification ng impormasyon ng Routine Mode"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Maaaring maubos ang baterya bago ang karaniwang pag-charge"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Na-activate ang Pantipid ng Baterya para patagalin ang buhay ng baterya"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index e274dd7846a1..8d6f476937c0 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Parmak izinin tümü algılanamadı"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Parmak izi işlenemedi. Lütfen tekrar deneyin."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Sensörü temizleyin"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Biraz daha uzun basılı tutun"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Parmak hareketi çok yavaştı. Lütfen tekrar deneyin."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Başka bir parmak izi deneyin"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Çok parlak"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Parmak izi simgesi"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Yüz Tanıma Kilidi"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Yüzünüzü yeniden kaydedin"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Daha iyi tanınmasını sağlamak için lütfen yüzünüzü yeniden kaydedin"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Yüz Tanıma Kilidi\'ni kurma"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Telefonunuza bakarak kilidini açın"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Kilidi açmak için daha fazla yöntem ayarlayın"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Parmak izi eklemek için dokunun"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Yüz doğrulanamıyor. Donanım kullanılamıyor."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Yüz Tanıma Kilidi\'ni yeniden deneyin"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Yeni yüz verisi depolanamıyor. Önce eski bir tanesini silin."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Yüz işlemi iptal edildi."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Yüz Tanıma Kilidi kullanıcı tarafından iptal edildi"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Çok fazla deneme yapıldı. Daha sonra tekrar deneyin."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Çok fazla deneme yapıldı. Yüz Tanıma Kilidi devre dışı."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Çok fazla deneme yapıldı. Bunun yerine ekran kilidini girin."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Yüz doğrulanamıyor. Tekrar deneyin."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Yüz Tanıma Kilidi ayarlamadınız"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Yüz Tanıma Kilidi bu cihazda desteklenmiyor"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensör geçici olarak devre dışı bırakıldı."</string> <string name="face_name_template" msgid="3877037340223318119">"Yüz <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Yüz Tanıma Kilidi kullan"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Yüz tanıma veya ekran kilidi kullan"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Devam etmek için yüzünüzü kullanın"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Devam etmek için yüz veya ekran kilidinizi kullanın"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Kilit açma alanını genişletin."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Kaydırarak kilit açma."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Desenle kilit açma."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Yüz Tanıma Kilidi."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Pin koduyla kilit açma."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM PIN kilidini açın."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM PUK kilidini açın."</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 7c4a4cd3a478..d1da463d95fd 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -586,8 +586,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Виявлено частковий відбиток пальця"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Не вдалось обробити відбиток пальця. Повторіть спробу."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Очистьте сканер"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Тримайте палець трохи довше"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Ви провели пальцем надто повільно. Повторіть спробу."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Спробуйте інший відбиток пальця"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Надто яскраво"</string> @@ -616,12 +615,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Значок відбитка пальця"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Фейсконтроль"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Повторно проскануйте обличчя"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Повторно проскануйте обличчя для ефективнішого розпізнавання"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Налаштування фейсконтролю"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Ви зможете розблоковувати телефон, подивившись на нього"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Налаштуйте більше способів розблокування"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Натисніть, щоб додати відбиток пальця"</string> @@ -648,26 +645,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Не вдається перевірити обличчя. Апаратне забезпечення недоступне."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Скористайтеся фейсконтролем ще раз"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Не вдається зберегти нові дані про обличчя. Видаліть старі."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Дію з обличчям скасовано."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Користувач скасував операцію фейсконтролю"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Забагато спроб. Повторіть пізніше."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Забагато спроб. Фейсконтроль вимкнено."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Забагато спроб. Розблокуйте екран іншим способом."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Не вдається перевірити обличчя. Повторіть спробу."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Ви не налаштували фейсконтроль"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Фейсконтроль не підтримується на цьому пристрої"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Датчик тимчасово вимкнено."</string> <string name="face_name_template" msgid="3877037340223318119">"Обличчя <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Доступ через фейсконтроль"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Використовувати фейсконтроль або дані для розблокування екрана"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Щоб продовжити, скористайтеся фейсконтролем"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Щоб продовжити, скористайтеся фейсконтролем або даними для розблокування екрана"</string> @@ -970,8 +960,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Розгорнути область розблокування."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Розблокування повзунком."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Розблокування ключем."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Фейсконтроль."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Розблокування PIN-кодом."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Розблокування SIM-карти PIN-кодом."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Розблокування SIM-карти PUK-кодом."</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index ff79099811d8..132bc88e4e74 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"جزوی فنگر پرنٹ کا پتہ چلا"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"فنگر پرنٹ پر کارروائی نہیں کی جا سکی۔ براہ کرم دوبارہ کوشش کریں۔"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"سینسر صاف کریں"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"تھوڑی دیر دبائے رکھیں"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"انگلی کو بہت آہستہ ہٹایا گیا۔ براہ کرم دوبارہ کوشش کریں۔"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"دوسرا فنگر پرنٹ آزمائیں"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"کافی روشنی ہے"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 3e96b68c5989..65792cc9ee50 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Barmoq izi qismi aniqlandi"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Barmoq izi aniqlanmadi. Qaytadan urining."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Sensorni tozalang"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Biroz koʻproq bosib turing"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Barmoq juda sekin harakatlandi. Qayta urinib ko‘ring."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Boshqa barmoq izi bilan urining"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Juda yorqin"</string> @@ -1657,7 +1656,7 @@ <string name="kg_invalid_sim_pin_hint" msgid="4821601451222564077">"4 tadan 8 ta raqamgacha bo‘lgan PIN kodni kiriting."</string> <string name="kg_invalid_sim_puk_hint" msgid="2539364558870734339">"PUK kod 8 ta raqam bo‘lishi shart."</string> <string name="kg_invalid_puk" msgid="4809502818518963344">"To‘g‘ri PUK kodni qayta kiriting. Qayta-qayta urinishlar SIM kartani butunlay o‘chirib qo‘yadi."</string> - <string name="kg_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"PIN-kod mos kelmadi"</string> + <string name="kg_invalid_confirm_pin_hint" product="default" msgid="4705368340409816254">"PIN kod mos kelmadi"</string> <string name="kg_login_too_many_attempts" msgid="699292728290654121">"Grafik kalit juda ko‘p marta chizildi"</string> <string name="kg_login_instructions" msgid="3619844310339066827">"Qulfni ochish uchun Google hisobingiz bilan kiring."</string> <string name="kg_login_username_hint" msgid="1765453775467133251">"Foydalanuvchi nomi (e-pochta)"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index b431d854c262..438c2ae9c929 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -267,7 +267,7 @@ <string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Âm thanh TẮT"</string> <string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Âm thanh BẬT"</string> <string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"Chế độ trên máy bay"</string> - <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"Chế độ trên máy bay BẬT"</string> + <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"Chế độ trên máy bay đang bật"</string> <string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"Chế độ trên máy bay TẮT"</string> <string name="global_action_settings" msgid="4671878836947494217">"Cài đặt"</string> <string name="global_action_assist" msgid="2517047220311505805">"Hỗ trợ"</string> @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Phát hiện thấy một phần vân tay"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Không thể xử lý vân tay. Vui lòng thử lại."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Hãy vệ sinh cảm biến"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Hãy giữ tay lâu hơn một chút"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Di chuyển ngón tay quá chậm. Vui lòng thử lại."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Hãy thử một vân tay khác"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Quá sáng"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Biểu tượng vân tay"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Mở khóa bằng khuôn mặt"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Đăng ký lại khuôn mặt của bạn"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Để cải thiện khả năng nhận dạng, hãy đăng ký lại khuôn mặt của bạn"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Thiết lập tính năng Mở khóa bằng khuôn mặt"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Mở khóa điện thoại bằng cách nhìn vào điện thoại"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Thiết lập thêm những cách mở khóa khác"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Nhấn để thêm vân tay"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Không thể xác minh khuôn mặt. Phần cứng không có sẵn."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Hãy thử lại thao tác Mở khóa bằng khuôn mặt"</string> <string name="face_error_no_space" msgid="5649264057026021723">"Không lưu được dữ liệu khuôn mặt mới. Hãy xóa dữ liệu cũ trước."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Đã hủy thao tác dùng khuôn mặt."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Người dùng đã hủy thao tác Mở khóa bằng khuôn mặt"</string> <string name="face_error_lockout" msgid="7864408714994529437">"Bạn đã thử quá nhiều lần. Hãy thử lại sau."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Bạn đã thử quá nhiều lần. Thao tác Mở khóa bằng khuôn mặt đã bị vô hiệu hóa."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Bạn đã thử quá nhiều lần. Hãy nhập phương thức khóa màn hình."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Không thể xác minh khuôn mặt. Hãy thử lại."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Bạn chưa thiết lập tính năng Mở khóa bằng khuôn mặt"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Thiết bị này không hỗ trợ tính năng Mở khóa bằng khuôn mặt"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Đã tạm thời tắt cảm biến."</string> <string name="face_name_template" msgid="3877037340223318119">"Khuôn mặt <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Dùng tính năng Mở khóa bằng khuôn mặt"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Dùng khuôn mặt hoặc phương thức khóa màn hình"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Hãy dùng khuôn mặt của bạn để tiếp tục"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Dùng khuôn mặt của bạn hoặc phương thức khóa màn hình để tiếp tục"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Mở rộng vùng khóa."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Mở khóa bằng cách trượt."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Mở khóa bằng hình."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Mở khóa bằng khuôn mặt."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Mở khóa bằng mã pin."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Mở khóa bằng mã PIN của SIM."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Mở khóa bằng mã PUK của SIM."</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index d81e4e3ad34c..ee3a1cfb2977 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"检测到局部指纹"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"无法处理指纹,请重试。"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"请将传感器擦干净"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"按久一点"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"手指移动太慢,请重试。"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"请试试其他指纹"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"光线太亮"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"指纹图标"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"人脸解锁"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"重新注册您的面孔"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"要提升识别精确度,请重新注册您的面孔"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"设置人脸解锁"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"脸部对准手机即可将其解锁"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"设置更多解锁方式"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"点按即可添加指纹"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"无法验证人脸。硬件无法使用。"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"请重新尝试人脸解锁"</string> <string name="face_error_no_space" msgid="5649264057026021723">"无法存储新的人脸数据。请先删除旧的人脸数据。"</string> <string name="face_error_canceled" msgid="2164434737103802131">"面孔处理操作已取消。"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"用户已取消人脸解锁"</string> <string name="face_error_lockout" msgid="7864408714994529437">"尝试次数过多,请稍后重试。"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"尝试次数过多,人脸解锁已停用。"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"尝试次数过多,请改为通过解除屏幕锁定来验证身份。"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"无法验证人脸,请重试。"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"您尚未设置人脸解锁"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"此设备不支持人脸解锁"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"传感器已暂时停用。"</string> <string name="face_name_template" msgid="3877037340223318119">"面孔 <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"使用人脸解锁"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"使用人脸解锁或屏幕锁定凭据"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"使用您的面孔验证身份才能继续"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"使用人脸解锁或屏幕锁定凭据验证身份,才能继续操作"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"展开解锁区域。"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"滑动解锁。"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"图案解锁。"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"人脸解锁。"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN码解锁。"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM 卡 PIN 码解锁。"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM 卡 PUK 码解锁。"</string> @@ -2103,7 +2092,7 @@ <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"确定"</string> <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"关闭"</string> <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"了解详情"</string> - <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"在 Android 12 中,增强型通知功能取代了 Android 自适应通知功能。增强型通知功能可以显示建议的操作和回复,并可将通知整理得井井有条。\n\n增强型通知功能可以访问通知内容,包括联系人名称和消息等个人信息。该功能还可以关闭或响应通知,例如接听来电以及控制勿扰模式。"</string> + <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"在 Android 12 中,增强型通知功能取代了 Android 自适应通知功能。增强型通知功能可以显示建议的操作和回复,并可将通知整理得井井有条。\n\n增强型通知功能可以读取通知内容,包括联系人名称和消息等个人信息。该功能还可以关闭通知或对通知做出回应,例如接听来电以及控制勿扰模式。"</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"日常安排模式信息通知"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"电池电量可能会在您平时的充电时间之前耗尽"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"已启用省电模式以延长电池续航时间"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index ab5ef40a9d42..350fb6d2f47f 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"只偵測到部分指紋"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"無法處理指紋。請再試一次。"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"清潔感應器"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"請按住更長時間"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"手指移動太慢,請重試。"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"改用其他指紋"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"太亮"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"指紋圖示"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"面孔解鎖"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"重新註冊臉孔"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"如要提高識別能力,請重新註冊您的臉孔"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"設定「面孔解鎖」"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"直望手機即可解鎖"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"設定更多解鎖方法"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"輕按即可新增指紋"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"無法驗證臉孔,硬件無法使用。"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"請再次嘗試「面孔解鎖」"</string> <string name="face_error_no_space" msgid="5649264057026021723">"無法儲存新的臉容資料,請先刪除舊資料。"</string> <string name="face_error_canceled" msgid="2164434737103802131">"臉孔操作已取消。"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"使用者已取消「面孔解鎖」"</string> <string name="face_error_lockout" msgid="7864408714994529437">"嘗試次數過多,請稍後再試。"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"嘗試次數過多,因此系統已停用「面孔解鎖」。"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"嘗試次數過多,請改為解除螢幕鎖定來驗證身分。"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"無法驗證臉孔。請再試一次。"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"您尚未設定「面孔解鎖」"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"此裝置不支援「面孔解鎖」"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"感應器已暫時停用。"</string> <string name="face_name_template" msgid="3877037340223318119">"臉孔 <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"使用「面孔解鎖」"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"使用臉孔或螢幕鎖定"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"如要繼續操作,請使用您的面孔驗證身分"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"請使用臉孔解鎖或螢幕鎖定功能驗證身分,才能繼續操作"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"展開解鎖區域。"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"滑動解鎖。"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"圖案解鎖。"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"面孔解鎖。"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN 解鎖。"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM 卡 PIN 碼解鎖。"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM 卡 PUK 解鎖。"</string> @@ -2103,7 +2092,7 @@ <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"確定"</string> <string name="nas_upgrade_notification_disable_action" msgid="3794833210043497982">"關閉"</string> <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"瞭解詳情"</string> - <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"在 Android 12 中,我們將 Android 自動調整通知取代成強化通知。此功能可顯示建議操作和回覆,以及整理通知。\n\n強化通知功能可讀取所有通知內容 (包括聯絡人姓名和訊息等個人資料),以及關閉或回應通知,例如接聽來電和控制「請勿騷擾」功能。"</string> + <string name="nas_upgrade_notification_learn_more_content" msgid="3735480566983530650">"強化通知在 Android 12 取代了 Android 自動調整通知。此功能會顯示建議的操作和回覆,更可為您整理通知。\n\n強化通知功能可存取您的通知內容 (包括聯絡人姓名和訊息等個人資料),亦可以關閉或回應通知,例如接聽來電和控制「請勿騷擾」功能。"</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"「日常安排模式」資料通知"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"電量可能會在日常充電前耗盡"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"「省電模式」已啟用,以便延長電池壽命"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index c917fe173b8e..c3dc66f3ecca 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"僅偵測到局部指紋"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"無法處理指紋,請再試一次。"</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"清潔感應器"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"按久一點"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"手指移動速度過慢,請再試一次。"</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"改用其他指紋"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"太亮"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"指紋圖示"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"人臉解鎖"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"請重新註冊你的臉孔"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"為提升辨識精準度,請重新註冊你的臉孔"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"設定人臉解鎖功能"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"看著手機就能解鎖"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"設定更多解鎖方式"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"輕觸即可新增指紋"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"相關硬體無法使用,因此無法驗證臉孔。"</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"請重新進行人臉解鎖"</string> <string name="face_error_no_space" msgid="5649264057026021723">"無法儲存新的臉孔資料,請先刪除舊的資料。"</string> <string name="face_error_canceled" msgid="2164434737103802131">"臉孔處理作業已取消。"</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"使用者已取消人臉解鎖作業"</string> <string name="face_error_lockout" msgid="7864408714994529437">"嘗試次數過多,請稍後再試。"</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"嘗試次數過多,因此系統已停用人臉解鎖功能。"</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"嘗試次數過多,請改用螢幕鎖定功能驗證身分。"</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"無法驗證臉孔,請再試一次。"</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"你尚未設定人臉解鎖功能"</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"這部裝置不支援人臉解鎖功能"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"感應器已暫時停用。"</string> <string name="face_name_template" msgid="3877037340223318119">"臉孔 <xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"使用人臉解鎖功能"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"使用人臉解鎖或螢幕鎖定功能"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"如要繼續操作,請透過你的臉孔驗證身分"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"請使用人臉解鎖或螢幕鎖定功能驗證身分,才能繼續操作"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"展開解鎖區域。"</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"滑動解鎖。"</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"圖案解鎖。"</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"人臉解鎖。"</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"PIN 解鎖。"</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"SIM 卡 PIN 碼解鎖。"</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"SIM 卡 PUK 解鎖。"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index e140b87b074e..7b0aec9cd3fa 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -580,8 +580,7 @@ <string name="fingerprint_acquired_partial" msgid="694598777291084823">"Kutholwe ingxenye yesigxivizo somunwe"</string> <string name="fingerprint_acquired_insufficient" msgid="2545149524031515411">"Ayikwazanga ukucubungula izigxivizo zeminwe. Sicela uzame futhi."</string> <string name="fingerprint_acquired_imager_dirty" msgid="5236744087471419479">"Hlanza inzwa"</string> - <!-- no translation found for fingerprint_acquired_too_fast (6038375140739678098) --> - <skip /> + <string name="fingerprint_acquired_too_fast" msgid="6038375140739678098">"Bamba isikhashana esingeziwe"</string> <string name="fingerprint_acquired_too_slow" msgid="6683510291554497580">"Umnwe uhanjiswe kancane kakhulu. Sicela uzame futhi."</string> <string name="fingerprint_acquired_already_enrolled" msgid="2285166003936206785">"Zama ezinye izigxivizo zeminwe"</string> <string name="fingerprint_acquired_too_bright" msgid="3863560181670915607">"Kukhanya kakhulu"</string> @@ -610,12 +609,10 @@ <string-array name="fingerprint_error_vendor"> </string-array> <string name="fingerprint_icon_content_description" msgid="4741068463175388817">"Isithonjana sezigxivizo zeminwe"</string> - <!-- no translation found for face_recalibrate_notification_name (7311163114750748686) --> - <skip /> + <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"Ukuvula ubuso"</string> <string name="face_recalibrate_notification_title" msgid="5944930528030496897">"Phinda ubhalise ubuso bakho"</string> <string name="face_recalibrate_notification_content" msgid="892757485125249962">"Ukuze uthuthukise ukubonwa, sicela uphinde ubhalise ubuso bakho"</string> - <!-- no translation found for face_setup_notification_title (8843461561970741790) --> - <skip /> + <string name="face_setup_notification_title" msgid="8843461561970741790">"Setha Ukuvula ngobuso"</string> <string name="face_setup_notification_content" msgid="5463999831057751676">"Vula ifoni yakho ngokuyibheka"</string> <string name="fingerprint_setup_notification_title" msgid="2002630611398849495">"Setha izindlela eziningi zokuvula"</string> <string name="fingerprint_setup_notification_content" msgid="205578121848324852">"Thepha ukuze ungeze izigxivizo zomunwe"</string> @@ -642,26 +639,19 @@ <string-array name="face_acquired_vendor"> </string-array> <string name="face_error_hw_not_available" msgid="5085202213036026288">"Ayikwazi ukuqinisekisa ubuso. Izingxenyekazi zekhompyutha azitholakali."</string> - <!-- no translation found for face_error_timeout (2598544068593889762) --> - <skip /> + <string name="face_error_timeout" msgid="2598544068593889762">"Zama Ukuvula ngobuso futhi."</string> <string name="face_error_no_space" msgid="5649264057026021723">"Ayikwazi ukulondoloza idatha yobuso. Susa endala."</string> <string name="face_error_canceled" msgid="2164434737103802131">"Umsebenzi wobuso ukhanselwe."</string> - <!-- no translation found for face_error_user_canceled (5766472033202928373) --> - <skip /> + <string name="face_error_user_canceled" msgid="5766472033202928373">"Ukuvula ngobuso kukhanselwe umsebenzisi."</string> <string name="face_error_lockout" msgid="7864408714994529437">"Imizamo eminingi kakhulu. Zama futhi emuva kwesikhathi."</string> - <!-- no translation found for face_error_lockout_permanent (3277134834042995260) --> - <skip /> - <!-- no translation found for face_error_lockout_screen_lock (5062609811636860928) --> - <skip /> + <string name="face_error_lockout_permanent" msgid="3277134834042995260">"Imizamo eminingi kakhulu. Ukuvula ngobuso kukhutshaziwe."</string> + <string name="face_error_lockout_screen_lock" msgid="5062609811636860928">"Imizamo eminingi kakhulu. Kunalokho faka ukukhiya isikrini."</string> <string name="face_error_unable_to_process" msgid="5723292697366130070">"Ayikwazi ukuqinisekisa ubuso. Zama futhi."</string> - <!-- no translation found for face_error_not_enrolled (1134739108536328412) --> - <skip /> - <!-- no translation found for face_error_hw_not_present (7940978724978763011) --> - <skip /> + <string name="face_error_not_enrolled" msgid="1134739108536328412">"Awukakusethi Ukuvula ngobuso."</string> + <string name="face_error_hw_not_present" msgid="7940978724978763011">"Ukuvula ngobuso akusekelwa kule divayisi"</string> <string name="face_error_security_update_required" msgid="5076017208528750161">"Inzwa ikhutshazwe okwesikhashana."</string> <string name="face_name_template" msgid="3877037340223318119">"Ubuso be-<xliff:g id="FACEID">%d</xliff:g>"</string> - <!-- no translation found for face_app_setting_name (5854024256907828015) --> - <skip /> + <string name="face_app_setting_name" msgid="5854024256907828015">"Sebenzisa Ukuvula ngobuso"</string> <string name="face_or_screen_lock_app_setting_name" msgid="1603149075605709106">"Sebenzisa i-face lock noma ukukhiya isikrini"</string> <string name="face_dialog_default_subtitle" msgid="6620492813371195429">"Sebenzisa ubuso bakho ukuze uqhubeke"</string> <string name="face_or_screen_lock_dialog_default_subtitle" msgid="5006381531158341844">"Sebenzisa ubuso bakho noma ukukhiya isikrini ukuze uqhubeke"</string> @@ -964,8 +954,7 @@ <string name="keyguard_accessibility_expand_lock_area" msgid="4215280881346033434">"Nwebisa indawo yokuvula."</string> <string name="keyguard_accessibility_slide_unlock" msgid="2968195219692413046">"Ukuvula ngokuslayida."</string> <string name="keyguard_accessibility_pattern_unlock" msgid="8669128146589233293">"Ukuvula ngephethini."</string> - <!-- no translation found for keyguard_accessibility_face_unlock (4533832120787386728) --> - <skip /> + <string name="keyguard_accessibility_face_unlock" msgid="4533832120787386728">"Ukuvula ngobuso."</string> <string name="keyguard_accessibility_pin_unlock" msgid="4020864007967340068">"Ukuvula ngephinikhodi."</string> <string name="keyguard_accessibility_sim_pin_unlock" msgid="4895939120871890557">"Ukuvulwa kwephinikhodi ye-Sim."</string> <string name="keyguard_accessibility_sim_puk_unlock" msgid="3459003464041899101">"Ukuvulwa kwe-puk ye-Sim."</string> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 1ddff3272b11..c864cd66b117 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -1792,6 +1792,9 @@ <!-- Boolean indicating if placing the phone face down will result in a screen off. --> <bool name="config_flipToScreenOffEnabled">true</bool> + <!-- Integer to set a max latency the accelerometer will batch sensor requests with. --> + <integer name="config_flipToScreenOffMaxLatencyMicros">2000000</integer> + <!-- Boolean indicating if current platform supports bluetooth SCO for off call use cases --> <bool name="config_bluetooth_sco_off_call">true</bool> diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index b33a2819b55d..766ad167e5b3 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -5020,7 +5020,7 @@ <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, certain features, and some network connections.\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.</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, certain features, and some network connections.</string> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 4da5859fa49b..f30f40a3cfc2 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -276,6 +276,7 @@ <java-symbol type="bool" name="config_avoidGfxAccel" /> <java-symbol type="bool" name="config_bluetooth_address_validation" /> <java-symbol type="bool" name="config_flipToScreenOffEnabled" /> + <java-symbol type="integer" name="config_flipToScreenOffMaxLatencyMicros" /> <java-symbol type="bool" name="config_bluetooth_sco_off_call" /> <java-symbol type="bool" name="config_bluetooth_le_peripheral_mode_supported" /> <java-symbol type="bool" name="config_bluetooth_hfp_inband_ringing_support" /> diff --git a/core/tests/coretests/src/com/android/internal/view/ScrollViewCaptureHelperTest.java b/core/tests/coretests/src/com/android/internal/view/ScrollViewCaptureHelperTest.java index ab13fd7d81e0..fc02ea9aee22 100644 --- a/core/tests/coretests/src/com/android/internal/view/ScrollViewCaptureHelperTest.java +++ b/core/tests/coretests/src/com/android/internal/view/ScrollViewCaptureHelperTest.java @@ -164,7 +164,8 @@ public class ScrollViewCaptureHelperTest { assertRectEquals(request, scrollResult.requestedArea); assertRectEquals(request, scrollResult.availableArea); assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent)); - assertEquals(CAPTURE_HEIGHT, scrollResult.scrollDelta); + assertEquals(CAPTURE_HEIGHT + (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2, + scrollResult.scrollDelta); } @Test @@ -182,7 +183,8 @@ public class ScrollViewCaptureHelperTest { assertRectEquals(request, scrollResult.requestedArea); assertRectEquals(request, scrollResult.availableArea); assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent)); - assertEquals(-CAPTURE_HEIGHT, scrollResult.scrollDelta); + assertEquals(-CAPTURE_HEIGHT - (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2, + scrollResult.scrollDelta); } @Test @@ -201,7 +203,8 @@ public class ScrollViewCaptureHelperTest { assertRectEquals(request, scrollResult.requestedArea); assertRectEquals(request, scrollResult.availableArea); assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent)); - assertEquals(CAPTURE_HEIGHT, scrollResult.scrollDelta); + assertEquals(CAPTURE_HEIGHT + (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2, + scrollResult.scrollDelta); } @@ -220,7 +223,8 @@ public class ScrollViewCaptureHelperTest { assertRectEquals(request, scrollResult.requestedArea); assertRectEquals(request, scrollResult.availableArea); assertRequestedRectCompletelyVisible(startScrollY, request, getVisibleRect(mContent)); - assertEquals(-CAPTURE_HEIGHT, scrollResult.scrollDelta); + assertEquals(-CAPTURE_HEIGHT - (WINDOW_HEIGHT - CAPTURE_HEIGHT) / 2, + scrollResult.scrollDelta); } @Test diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index 536165b4d29f..7e48a7e13920 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -938,6 +938,8 @@ public class BubbleStackView extends FrameLayout if (ev.getAction() == MotionEvent.ACTION_DOWN) { if (mShowingManage) { showManageMenu(false /* show */); + } else if (mStackEduView != null && mStackEduView.getVisibility() == VISIBLE) { + mStackEduView.hide(false); } else if (mBubbleData.isExpanded()) { mBubbleData.setExpanded(false); } @@ -1152,6 +1154,7 @@ public class BubbleStackView extends FrameLayout mStackEduView = new StackEducationView(mContext); addView(mStackEduView); } + mBubbleContainer.bringToFront(); return mStackEduView.show(mPositioner.getDefaultStartPosition()); } 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 093c272193a3..84a9ce52ffdc 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 @@ -135,7 +135,7 @@ public class SplashscreenContentDrawer { com.android.wm.shell.R.dimen.starting_surface_exit_animation_window_shift_length); } - private int getSystemBGColor() { + private static int getSystemBGColor() { final Context systemContext = ActivityThread.currentApplication(); if (systemContext == null) { Slog.e(TAG, "System context does not exist!"); @@ -145,17 +145,18 @@ public class SplashscreenContentDrawer { return res.getColor(com.android.wm.shell.R.color.splash_window_background_default); } - private Drawable createDefaultBackgroundDrawable() { + private static Drawable createDefaultBackgroundDrawable() { return new ColorDrawable(getSystemBGColor()); } - private @ColorInt int peekWindowBGColor(Context context) { + /** Extract the window background color from {@code attrs}. */ + public static int peekWindowBGColor(Context context, SplashScreenWindowAttrs attrs) { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "peekWindowBGColor"); final Drawable themeBGDrawable; - if (mTmpAttrs.mWindowBgColor != 0) { - themeBGDrawable = new ColorDrawable(mTmpAttrs.mWindowBgColor); - } else if (mTmpAttrs.mWindowBgResId != 0) { - themeBGDrawable = context.getDrawable(mTmpAttrs.mWindowBgResId); + if (attrs.mWindowBgColor != 0) { + themeBGDrawable = new ColorDrawable(attrs.mWindowBgColor); + } else if (attrs.mWindowBgResId != 0) { + themeBGDrawable = context.getDrawable(attrs.mWindowBgResId); } else { themeBGDrawable = createDefaultBackgroundDrawable(); Slog.w(TAG, "Window background does not exist, using " + themeBGDrawable); @@ -165,7 +166,7 @@ public class SplashscreenContentDrawer { return estimatedWindowBGColor; } - private int estimateWindowBGColor(Drawable themeBGDrawable) { + private static int estimateWindowBGColor(Drawable themeBGDrawable) { final DrawableColorTester themeBGTester = new DrawableColorTester(themeBGDrawable, true /* filterTransparent */); if (themeBGTester.nonTransparentRatio() == 0) { @@ -183,7 +184,7 @@ public class SplashscreenContentDrawer { getWindowAttrs(context, mTmpAttrs); final StartingWindowViewBuilder builder = new StartingWindowViewBuilder(); - final int themeBGColor = peekWindowBGColor(context); + final int themeBGColor = peekWindowBGColor(context, this.mTmpAttrs); // TODO (b/173975965) Tracking the performance on improved splash screen. return builder .setContext(context) @@ -193,7 +194,11 @@ public class SplashscreenContentDrawer { .build(); } - private static void getWindowAttrs(Context context, SplashScreenWindowAttrs attrs) { + /** + * Get the {@link SplashScreenWindowAttrs} from {@code context} and fill them into + * {@code attrs}. + */ + public static void getWindowAttrs(Context context, SplashScreenWindowAttrs attrs) { final TypedArray typedArray = context.obtainStyledAttributes( com.android.internal.R.styleable.Window); attrs.mWindowBgResId = typedArray.getResourceId(R.styleable.Window_windowBackground, 0); @@ -216,7 +221,8 @@ public class SplashscreenContentDrawer { } } - private static class SplashScreenWindowAttrs { + /** The configuration of the splash screen window. */ + public static class SplashScreenWindowAttrs { private int mWindowBgResId = 0; private int mWindowBgColor = Color.TRANSPARENT; private Drawable mReplaceIcon = null; 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 1a03ebd4caae..bdc8ff1f9882 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 @@ -347,8 +347,13 @@ public class StartingSurfaceDrawer { void makeTaskSnapshotWindow(StartingWindowInfo startingWindowInfo, IBinder appToken, TaskSnapshot snapshot) { final int taskId = startingWindowInfo.taskInfo.taskId; + // Remove any existing starting window for this task before adding. + removeWindowNoAnimate(taskId); final TaskSnapshotWindow surface = TaskSnapshotWindow.create(startingWindowInfo, appToken, snapshot, mSplashScreenExecutor, () -> removeWindowNoAnimate(taskId)); + if (surface == null) { + return; + } final StartingWindowRecord tView = new StartingWindowRecord(appToken, null/* decorView */, surface); mStartingWindowRecords.put(taskId, tView); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java index 8147b4775963..acf7f3367d71 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/TaskSnapshotWindow.java @@ -45,6 +45,7 @@ import static com.android.internal.policy.DecorView.STATUS_BAR_COLOR_VIEW_ATTRIB import static com.android.internal.policy.DecorView.getNavigationBarRect; import android.annotation.BinderThread; +import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.ActivityManager.TaskDescription; @@ -141,7 +142,8 @@ public class TaskSnapshotWindow { private final float[] mTmpFloat9 = new float[9]; static TaskSnapshotWindow create(StartingWindowInfo info, IBinder appToken, - TaskSnapshot snapshot, ShellExecutor mainExecutor, Runnable clearWindowHandler) { + TaskSnapshot snapshot, ShellExecutor splashScreenExecutor, + @NonNull Runnable clearWindowHandler) { final ActivityManager.RunningTaskInfo runningTaskInfo = info.taskInfo; final int taskId = runningTaskInfo.taskId; if (DEBUG) { @@ -208,39 +210,38 @@ public class TaskSnapshotWindow { final TaskSnapshotWindow snapshotSurface = new TaskSnapshotWindow( surfaceControl, snapshot, layoutParams.getTitle(), taskDescription, appearance, windowFlags, windowPrivateFlags, taskBounds, orientation, - topWindowInsetsState, clearWindowHandler, mainExecutor); + topWindowInsetsState, clearWindowHandler, splashScreenExecutor); final Window window = snapshotSurface.mWindow; final InsetsState mTmpInsetsState = new InsetsState(); final InputChannel tmpInputChannel = new InputChannel(); - mainExecutor.execute(() -> { - try { - Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#addToDisplay"); - final int res = session.addToDisplay(window, layoutParams, View.GONE, displayId, - mTmpInsetsState, tmpInputChannel, mTmpInsetsState, mTempControls); - Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); - if (res < 0) { - Slog.w(TAG, "Failed to add snapshot starting window res=" + res); - return; - } - } catch (RemoteException e) { - snapshotSurface.clearWindowSynced(); - } - window.setOuter(snapshotSurface); - try { - Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#relayout"); - session.relayout(window, layoutParams, -1, -1, View.VISIBLE, 0, -1, - tmpFrames, tmpMergedConfiguration, surfaceControl, mTmpInsetsState, - mTempControls, TMP_SURFACE_SIZE); - Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); - } catch (RemoteException e) { - snapshotSurface.clearWindowSynced(); + + try { + Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#addToDisplay"); + final int res = session.addToDisplay(window, layoutParams, View.GONE, displayId, + mTmpInsetsState, tmpInputChannel, mTmpInsetsState, mTempControls); + Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); + if (res < 0) { + Slog.w(TAG, "Failed to add snapshot starting window res=" + res); + return null; } + } catch (RemoteException e) { + snapshotSurface.clearWindowSynced(); + } + window.setOuter(snapshotSurface); + try { + Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "TaskSnapshot#relayout"); + session.relayout(window, layoutParams, -1, -1, View.VISIBLE, 0, -1, + tmpFrames, tmpMergedConfiguration, surfaceControl, mTmpInsetsState, + mTempControls, TMP_SURFACE_SIZE); + Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); + } catch (RemoteException e) { + snapshotSurface.clearWindowSynced(); + } - final Rect systemBarInsets = getSystemBarInsets(tmpFrames.frame, topWindowInsetsState); - snapshotSurface.setFrames(tmpFrames.frame, systemBarInsets); - snapshotSurface.drawSnapshot(); - }); + final Rect systemBarInsets = getSystemBarInsets(tmpFrames.frame, topWindowInsetsState); + snapshotSurface.setFrames(tmpFrames.frame, systemBarInsets); + snapshotSurface.drawSnapshot(); return snapshotSurface; } @@ -469,9 +470,7 @@ public class TaskSnapshotWindow { * Clear window from drawer, must be post on main executor. */ private void clearWindowSynced() { - if (mClearWindowHandler != null) { - mClearWindowHandler.run(); - } + mSplashScreenExecutor.executeDelayed(mClearWindowHandler, 0); } private void reportDrawn() { diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 14d4937d5572..b7d5c7b21175 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -7067,7 +7067,14 @@ public class AudioManager { } /** - * Set a certain surround format as enabled or not. + * Sets and persists a certain surround format as enabled or not. + * <p> + * This API is called by TvSettings surround sound menu when user enables or disables a + * surround sound format. This setting is persisted as global user setting. + * Applications should revert their changes to surround sound settings unless they intend to + * modify the global user settings across all apps. The framework does not auto-revert an + * application's settings after a lifecycle event. Audio focus is not required to apply these + * settings. * * @param enabled the required surround format state, true for enabled, false for disabled * @return true if successful, otherwise false diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml index 13740e7f1dd2..a550d372e6ba 100644 --- a/packages/InputDevices/res/values-ne/strings.xml +++ b/packages/InputDevices/res/values-ne/strings.xml @@ -1,7 +1,7 @@ <?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="app_label" msgid="8016145283189546017">"इनपुट उपकरणहरु"</string> + <string name="app_label" msgid="8016145283189546017">"इनपुट डिभाइस"</string> <string name="keyboard_layouts_label" msgid="6688773268302087545">"Android किबोर्ड"</string> <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"अङ्ग्रेजी (बेलायत)"</string> <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"अङ्ग्रेजी (अमेरिकी)"</string> diff --git a/packages/PackageInstaller/res/values-tr/strings.xml b/packages/PackageInstaller/res/values-tr/strings.xml index f86afea47882..81dc24f5f1a2 100644 --- a/packages/PackageInstaller/res/values-tr/strings.xml +++ b/packages/PackageInstaller/res/values-tr/strings.xml @@ -46,7 +46,7 @@ <string name="out_of_space_dlg_text" msgid="8727714096031856231">"<xliff:g id="APP_NAME">%1$s</xliff:g> yüklenemedi. Boş alan açın ve yeniden deneyin."</string> <string name="app_not_found_dlg_title" msgid="5107924008597470285">"Uygulama bulunamadı"</string> <string name="app_not_found_dlg_text" msgid="5219983779377811611">"Uygulama, yüklü uygulamalar listesinde bulunamadı."</string> - <string name="user_is_not_allowed_dlg_title" msgid="6915293433252210232">"İzin verilmiyor"</string> + <string name="user_is_not_allowed_dlg_title" msgid="6915293433252210232">"İzin verilmeyenler"</string> <string name="user_is_not_allowed_dlg_text" msgid="3468447791330611681">"Geçerli kullanıcının bu yüklemeyi kaldırma izni yok."</string> <string name="generic_error_dlg_title" msgid="5863195085927067752">"Hata"</string> <string name="generic_error_dlg_text" msgid="5287861443265795232">"Uygulamanın yüklemesi kaldırılamadı."</string> diff --git a/packages/PrintSpooler/res/values-or/strings.xml b/packages/PrintSpooler/res/values-or/strings.xml index 15cecd6f46cc..2054f1433328 100644 --- a/packages/PrintSpooler/res/values-or/strings.xml +++ b/packages/PrintSpooler/res/values-or/strings.xml @@ -83,7 +83,7 @@ <string name="cancelling_notification_title_template" msgid="1821759594704703197">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ବାତିଲ୍ କରାଯାଉଛି"</string> <string name="failed_notification_title_template" msgid="2256217208186530973">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ପ୍ରିଣ୍ଟର୍ ତ୍ରୁଟି"</string> <string name="blocked_notification_title_template" msgid="1175435827331588646">"ପ୍ରିଣ୍ଟର୍ ଦ୍ୱାରା ରୋକାଯାଇଥିବା <xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g>"</string> - <string name="cancel" msgid="4373674107267141885">"ବାତିଲ୍"</string> + <string name="cancel" msgid="4373674107267141885">"ବାତିଲ୍ କରନ୍ତୁ"</string> <string name="restart" msgid="2472034227037808749">"ରିଷ୍ଟାର୍ଟ କରନ୍ତୁ"</string> <string name="no_connection_to_printer" msgid="2159246915977282728">"ପ୍ରିଣ୍ଟର୍କୁ କୌଣସି ସଂଯୋଗ ନାହିଁ"</string> <string name="reason_unknown" msgid="5507940196503246139">"ଅଜଣା"</string> diff --git a/packages/SettingsLib/ActionButtonsPreference/src/com/android/settingslib/widget/ActionButtonsPreference.java b/packages/SettingsLib/ActionButtonsPreference/src/com/android/settingslib/widget/ActionButtonsPreference.java index aeda7ac5d086..9aa511d610f2 100644 --- a/packages/SettingsLib/ActionButtonsPreference/src/com/android/settingslib/widget/ActionButtonsPreference.java +++ b/packages/SettingsLib/ActionButtonsPreference/src/com/android/settingslib/widget/ActionButtonsPreference.java @@ -93,10 +93,10 @@ public class ActionButtonsPreference extends Preference { @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); - if (!BuildCompat.isAtLeastS()) { - holder.setDividerAllowedAbove(true); - holder.setDividerAllowedBelow(true); - } + + final boolean allowedDivider = !BuildCompat.isAtLeastS(); + holder.setDividerAllowedAbove(allowedDivider); + holder.setDividerAllowedBelow(allowedDivider); mButton1Info.mButton = (Button) holder.findViewById(R.id.button1); mButton2Info.mButton = (Button) holder.findViewById(R.id.button2); diff --git a/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java b/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java index 33bf590cc2bb..005c75c45a46 100644 --- a/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java +++ b/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java @@ -20,7 +20,7 @@ import android.content.Context; import android.text.SpannableString; import android.text.TextUtils; import android.text.method.LinkMovementMethod; -import android.text.style.UnderlineSpan; +import android.text.style.URLSpan; import android.util.AttributeSet; import android.view.View; import android.widget.TextView; @@ -67,9 +67,9 @@ public class FooterPreference extends Preference { TextView learnMore = holder.itemView.findViewById(R.id.settingslib_learn_more); if (learnMore != null && mLearnMoreListener != null) { learnMore.setVisibility(View.VISIBLE); - learnMore.setOnClickListener(mLearnMoreListener); SpannableString learnMoreText = new SpannableString(learnMore.getText()); - learnMoreText.setSpan(new UnderlineSpan(), 0, learnMoreText.length(), 0); + learnMoreText.setSpan(new FooterLearnMoreSpan(mLearnMoreListener), 0, + learnMoreText.length(), 0); learnMore.setText(learnMoreText); if (!TextUtils.isEmpty(mLearnMoreContentDescription)) { learnMore.setContentDescription(mLearnMoreContentDescription); @@ -271,4 +271,26 @@ public class FooterPreference extends Preference { return footerPreference; } } + + /** + * A {@link URLSpan} that opens a support page when clicked + */ + static class FooterLearnMoreSpan extends URLSpan { + + private final View.OnClickListener mClickListener; + + FooterLearnMoreSpan(View.OnClickListener clickListener) { + // sets the url to empty string so we can prevent any other span processing from + // clearing things we need in this string. + super(""); + mClickListener = clickListener; + } + + @Override + public void onClick(View widget) { + if (mClickListener != null) { + mClickListener.onClick(widget); + } + } + } } diff --git a/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml b/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml index c9bc583b209f..89e9a00513df 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v31/colors.xml @@ -15,18 +15,18 @@ limitations under the License. --> -<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> +<resources> <!-- Material next state on color--> - <color name="settingslib_state_on_color">?androidprv:attr/colorAccentPrimary</color> + <color name="settingslib_state_on_color">@android:color/system_accent1_100</color> <!-- Material next state off color--> - <color name="settingslib_state_off_color">?androidprv:attr/colorAccentSecondary</color> + <color name="settingslib_state_off_color">@android:color/system_accent2_100</color> <!-- Material next thumb off color--> <color name="settingslib_thumb_off_color">@android:color/system_neutral2_100</color> <!-- Material next track on color--> - <color name="settingslib_track_on_color">?androidprv:attr/colorAccentPrimaryVariant</color> + <color name="settingslib_track_on_color">@android:color/system_accent1_600</color> <!-- Material next track off color--> <color name="settingslib_track_off_color">@android:color/system_neutral2_600</color> diff --git a/packages/SettingsLib/TwoTargetPreference/res/layout-v31/preference_two_target.xml b/packages/SettingsLib/TwoTargetPreference/res/layout-v31/preference_two_target.xml new file mode 100644 index 000000000000..2c2756b36533 --- /dev/null +++ b/packages/SettingsLib/TwoTargetPreference/res/layout-v31/preference_two_target.xml @@ -0,0 +1,70 @@ +<?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. + --> + +<!-- Based off preference_material_settings.xml except that ripple on only on the left side. --> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:minHeight="?android:attr/listPreferredItemHeightSmall" + android:gravity="center_vertical" + android:background="?android:attr/selectableItemBackground" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" + android:clipToPadding="false"> + + <include layout="@layout/settingslib_icon_frame"/> + + <RelativeLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:paddingTop="16dp" + android:paddingBottom="16dp"> + + <TextView + android:id="@android:id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:singleLine="true" + android:textAppearance="?android:attr/textAppearanceListItem" + android:ellipsize="marquee"/> + + <TextView + android:id="@android:id/summary" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@android:id/title" + android:layout_alignStart="@android:id/title" + android:textAppearance="?android:attr/textAppearanceListItemSecondary" + android:textColor="?android:attr/textColorSecondary" + android:maxLines="10"/> + + </RelativeLayout> + + <include layout="@layout/preference_two_target_divider" /> + + <!-- Preference should place its actual preference widget here. --> + <LinearLayout + android:id="@android:id/widget_frame" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:minWidth="@dimen/two_target_min_width" + android:gravity="center" + android:orientation="vertical" /> + +</LinearLayout> diff --git a/packages/SettingsLib/TwoTargetPreference/res/layout-v31/preference_two_target_divider.xml b/packages/SettingsLib/TwoTargetPreference/res/layout-v31/preference_two_target_divider.xml new file mode 100644 index 000000000000..f21e51cf847a --- /dev/null +++ b/packages/SettingsLib/TwoTargetPreference/res/layout-v31/preference_two_target_divider.xml @@ -0,0 +1,31 @@ +<?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:id="@+id/two_target_divider" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:gravity="start|center_vertical" + android:orientation="horizontal" + android:paddingTop="16dp" + android:paddingBottom="16dp"> + <View + android:layout_width="1dp" + android:layout_height="32dp" + android:background="?android:attr/listDivider" /> +</LinearLayout>
\ No newline at end of file diff --git a/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml b/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml index 2c2756b36533..21fcedcc01b6 100644 --- a/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml +++ b/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target.xml @@ -18,43 +18,70 @@ <!-- Based off preference_material_settings.xml except that ripple on only on the left side. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:settings="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?android:attr/listPreferredItemHeightSmall" android:gravity="center_vertical" - android:background="?android:attr/selectableItemBackground" - android:paddingStart="?android:attr/listPreferredItemPaddingStart" - android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" + android:background="@android:color/transparent" android:clipToPadding="false"> - <include layout="@layout/settingslib_icon_frame"/> - - <RelativeLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" + <LinearLayout + android:layout_width="0dp" + android:layout_height="match_parent" android:layout_weight="1" - android:paddingTop="16dp" - android:paddingBottom="16dp"> + android:background="?android:attr/selectableItemBackground" + android:gravity="start|center_vertical" + android:clipToPadding="false" + android:paddingStart="?android:attr/listPreferredItemPaddingStart" + android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"> - <TextView - android:id="@android:id/title" + <LinearLayout + android:id="@+id/icon_frame" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:singleLine="true" - android:textAppearance="?android:attr/textAppearanceListItem" - android:ellipsize="marquee"/> + android:gravity="start|center_vertical" + android:minWidth="56dp" + android:orientation="horizontal" + android:clipToPadding="false" + android:paddingTop="4dp" + android:paddingBottom="4dp"> + <androidx.preference.internal.PreferenceImageView + android:id="@android:id/icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + settings:maxWidth="48dp" + settings:maxHeight="48dp" /> + </LinearLayout> - <TextView - android:id="@android:id/summary" + <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_below="@android:id/title" - android:layout_alignStart="@android:id/title" - android:textAppearance="?android:attr/textAppearanceListItemSecondary" - android:textColor="?android:attr/textColorSecondary" - android:maxLines="10"/> + android:layout_weight="1" + android:paddingTop="16dp" + android:paddingBottom="16dp"> + + <TextView + android:id="@android:id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:singleLine="true" + android:textAppearance="?android:attr/textAppearanceListItem" + android:ellipsize="marquee" /> + + <TextView + android:id="@android:id/summary" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_below="@android:id/title" + android:layout_alignStart="@android:id/title" + android:textAppearance="?android:attr/textAppearanceListItemSecondary" + android:textColor="?android:attr/textColorSecondary" + android:maxLines="10" /> + + </RelativeLayout> - </RelativeLayout> + </LinearLayout> <include layout="@layout/preference_two_target_divider" /> @@ -63,7 +90,7 @@ android:id="@android:id/widget_frame" android:layout_width="wrap_content" android:layout_height="match_parent" - android:minWidth="@dimen/two_target_min_width" + android:minWidth="64dp" android:gravity="center" android:orientation="vertical" /> diff --git a/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target_divider.xml b/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target_divider.xml index f21e51cf847a..bd477f8068ff 100644 --- a/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target_divider.xml +++ b/packages/SettingsLib/TwoTargetPreference/res/layout/preference_two_target_divider.xml @@ -26,6 +26,6 @@ android:paddingBottom="16dp"> <View android:layout_width="1dp" - android:layout_height="32dp" + android:layout_height="match_parent" android:background="?android:attr/listDivider" /> </LinearLayout>
\ No newline at end of file diff --git a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java index 782b483848e6..8e010fa1ea58 100644 --- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java +++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java @@ -156,6 +156,9 @@ public class UsageProgressBarPreference extends Preference { public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); + holder.setDividerAllowedAbove(false); + holder.setDividerAllowedBelow(false); + final TextView usageSummary = (TextView) holder.findViewById(R.id.usage_summary); usageSummary.setText(enlargeFontOfNumber(mUsageSummary)); diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml index 8e7bbaa533a0..822f8fdc4f17 100644 --- a/packages/SettingsLib/res/values-af/strings.xml +++ b/packages/SettingsLib/res/values-af/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Draadlose skermsertifisering"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Aktiveer Wi-Fi-woordryke aanmelding"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Regulering van Wi-Fi-opsporing"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑verbeterde MAC-verewekansiging"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Nie-aanhoudende MAC-verewekansiging vir wi-fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobiele data is altyd aktief"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardewareversnelling vir verbinding"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Wys Bluetooth-toestelle sonder name"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> – Laaiproses word tydelik beperk"</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> diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml index 69e2b4dbeb90..86f3993d205a 100644 --- a/packages/SettingsLib/res/values-am/strings.xml +++ b/packages/SettingsLib/res/values-am/strings.xml @@ -252,7 +252,7 @@ <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 scan throttling"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑የተሻሻለ የማክ ዘፈቀደ ማድረጊያ"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"የWi-Fi ወጥ ያልሆነ ማክ የዘፈቀደ ማድረግ"</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> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<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> diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml index 8b703f6de466..7cc907246f4e 100644 --- a/packages/SettingsLib/res/values-ar/strings.xml +++ b/packages/SettingsLib/res/values-ar/strings.xml @@ -246,13 +246,14 @@ <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_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 Verbose"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"تقييد البحث عن شبكات Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"التوزيع العشوائي لعنوان MAC الذي تدعمه شبكة Wi‑Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -319,7 +320,7 @@ <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml index cc00047c9d32..727e3b8214bb 100644 --- a/packages/SettingsLib/res/values-as/strings.xml +++ b/packages/SettingsLib/res/values-as/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml index b060dc6663b8..d2eec7144f1a 100644 --- a/packages/SettingsLib/res/values-az/strings.xml +++ b/packages/SettingsLib/res/values-az/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Simsiz displey sertifikatlaşması"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Wi‑Fi Çoxsözlü Girişə icazə verin"</string> <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobil data həmişə aktiv"</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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml index b056e3030399..c681453912cd 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Sertifikacija bežičnog ekrana"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Omogući detaljniju evidenciju za Wi‑Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Usporavanje WiFi skeniranja"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Nasumično MAC razvrstavanje po Wi‑Fi‑ju"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Nasumično razvrstavanje MAC adresa po WiFi-ju sa prekidima"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobilni podaci su uvek aktivni"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardversko ubrzanje privezivanja"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži Bluetooth uređaje bez naziva"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> – Punjenje je privremeno ograničeno"</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> diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml index 59d63c5b204c..75b1f00aa42a 100644 --- a/packages/SettingsLib/res/values-be/strings.xml +++ b/packages/SettingsLib/res/values-be/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml index 20b70cc4a009..092171945fd5 100644 --- a/packages/SettingsLib/res/values-bg/strings.xml +++ b/packages/SettingsLib/res/values-bg/strings.xml @@ -252,9 +252,10 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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">"Показване на устройствата с Bluetooth без имена"</string> <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Деактивиране на пълната сила на звука"</string> <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Активиране на Gabeldorsche"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml index 7db27d206d0b..2740ccbadfa7 100644 --- a/packages/SettingsLib/res/values-bn/strings.xml +++ b/packages/SettingsLib/res/values-bn/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml index 424d215a5863..738f9fe7044c 100644 --- a/packages/SettingsLib/res/values-bs/strings.xml +++ b/packages/SettingsLib/res/values-bs/strings.xml @@ -252,7 +252,8 @@ <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">"Usporavanje skeniranja WiFi-ja"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Nasum. odabir MAC-a poboljšan WiFi-jem"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml index 9202013641ea..73f9c1fda319 100644 --- a/packages/SettingsLib/res/values-ca/arrays.xml +++ b/packages/SettingsLib/res/values-ca/arrays.xml @@ -40,7 +40,7 @@ <item msgid="8339720953594087771">"S\'està connectant a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>..."</item> <item msgid="3028983857109369308">"S\'està autenticant amb <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> <item msgid="4287401332778341890">"S\'està obtenint l\'adreça IP de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> - <item msgid="1043944043827424501">"Connectat a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item> + <item msgid="1043944043827424501">"T\'has connectat a <xliff:g id="NETWORK_NAME">%1$s</xliff:g>"</item> <item msgid="7445993821842009653">"Suspesa"</item> <item msgid="1175040558087735707">"S\'està desconnectant de <xliff:g id="NETWORK_NAME">%1$s</xliff:g>…"</item> <item msgid="699832486578171722">"Desconnectada"</item> @@ -86,7 +86,7 @@ <item msgid="8147982633566548515">"map14"</item> </string-array> <string-array name="bluetooth_a2dp_codec_titles"> - <item msgid="2494959071796102843">"Utilitza selecció del sistema (predeterminada)"</item> + <item msgid="2494959071796102843">"Utilitza la selecció del sistema (predeterminada)"</item> <item msgid="4055460186095649420">"SBC"</item> <item msgid="720249083677397051">"AAC"</item> <item msgid="1049450003868150455">"Àudio <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">"Utilitza selecció del sistema (predeterminada)"</item> + <item msgid="8868109554557331312">"Utilitza la selecció del sistema (predeterminada)"</item> <item msgid="9024885861221697796">"SBC"</item> <item msgid="4688890470703790013">"AAC"</item> <item msgid="8627333814413492563">"Àudio <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">"Utilitza selecció del sistema (predeterminada)"</item> + <item msgid="926809261293414607">"Utilitza la selecció del sistema (predeterminada)"</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">"Utilitza selecció del sistema (predeterminada)"</item> + <item msgid="2284090879080331090">"Utilitza la selecció del sistema (predeterminada)"</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">"Utilitza selecció del sistema (predeterminada)"</item> + <item msgid="2574107108483219051">"Utilitza la selecció del sistema (predeterminada)"</item> <item msgid="4671992321419011165">"16 bits/mostra"</item> <item msgid="1933898806184763940">"24 bits/mostra"</item> <item msgid="1212577207279552119">"32 bits/mostra"</item> </string-array> <string-array name="bluetooth_a2dp_codec_bits_per_sample_summaries"> - <item msgid="9196208128729063711">"Utilitza selecció del sistema (predeterminada)"</item> + <item msgid="9196208128729063711">"Utilitza la selecció del sistema (predeterminada)"</item> <item msgid="1084497364516370912">"16 bits/mostra"</item> <item msgid="2077889391457961734">"24 bits/mostra"</item> <item msgid="3836844909491316925">"32 bits/mostra"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_titles"> - <item msgid="3014194562841654656">"Utilitza selecció del sistema (predeterminada)"</item> + <item msgid="3014194562841654656">"Utilitza la selecció del sistema (predeterminada)"</item> <item msgid="5982952342181788248">"Mono"</item> <item msgid="927546067692441494">"Estèreo"</item> </string-array> <string-array name="bluetooth_a2dp_codec_channel_mode_summaries"> - <item msgid="1997302811102880485">"Utilitza selecció del sistema (predeterminada)"</item> + <item msgid="1997302811102880485">"Utilitza la selecció del sistema (predeterminada)"</item> <item msgid="8005696114958453588">"Mono"</item> <item msgid="1333279807604675720">"Estèreo"</item> </string-array> diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml index eb1e970d33a2..46e2a2fc8809 100644 --- a/packages/SettingsLib/res/values-ca/strings.xml +++ b/packages/SettingsLib/res/values-ca/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificació de pantalla sense fil"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Activa el registre Wi‑Fi detallat"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limitació de la cerca de xarxes Wi‑Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Aleatorització de MAC millorada per Wi‑Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Dades mòbils sempre actives"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Acceleració per maquinari per a compartició de xarxa"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostra els dispositius Bluetooth sense el nom"</string> @@ -291,14 +292,14 @@ <string name="select_logd_size_dialog_title" msgid="2105401994681013578">"Selecciona la mida de la memòria intermèdia del registre"</string> <string name="dev_logpersist_clear_warning_title" msgid="8631859265777337991">"Vols esborrar l\'emmagatzematge persistent del registrador?"</string> <string name="dev_logpersist_clear_warning_message" msgid="6447590867594287413">"Quan deixem de supervisar amb el registrador persistent, hem d\'esborrar les dades del registrador que hi ha al teu dispositiu."</string> - <string name="select_logpersist_title" msgid="447071974007104196">"Desa dades registrador permanentment"</string> + <string name="select_logpersist_title" msgid="447071974007104196">"Desa dades de registre contínuament al dispositiu"</string> <string name="select_logpersist_dialog_title" msgid="7745193591195485594">"Selecciona memòries interm. de registre per emmag. de manera persistent al disp."</string> <string name="select_usb_configuration_title" msgid="6339801314922294586">"Selecciona configuració d\'USB"</string> <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"Selecciona configuració d\'USB"</string> <string name="allow_mock_location" msgid="2102650981552527884">"Ubicacions simulades"</string> <string name="allow_mock_location_summary" msgid="179780881081354579">"Permet les ubicacions simulades"</string> <string name="debug_view_attributes" msgid="3539609843984208216">"Activa la inspecció d\'atributs de visualització"</string> - <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mantén les dades mòbils sempre actives, fins i tot quan la Wi‑Fi està activada (per canviar de xarxa ràpidament)."</string> + <string name="mobile_data_always_on_summary" msgid="1112156365594371019">"Mantén les dades mòbils sempre actives, fins i tot quan la Wi‑Fi està activada (per canviar de xarxa ràpidament)"</string> <string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"Fes servir l\'acceleració per maquinari per a compartició de xarxa, si està disponible"</string> <string name="adb_warning_title" msgid="7708653449506485728">"Voleu permetre la depuració per USB?"</string> <string name="adb_warning_message" msgid="8145270656419669221">"La depuració per USB només està indicada per a activitats de desenvolupament. Fes-la servir intercanviar dades entre l\'ordinador i el dispositiu, per instal·lar aplicacions al dispositiu sense rebre notificacions i per llegir dades de registre."</string> @@ -310,8 +311,8 @@ <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Verifica aplicacions per USB"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Comprova les aplicacions instal·lades mitjançant ADB/ADT per detectar comportaments perillosos"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Es mostraran els dispositius Bluetooth sense el nom (només l\'adreça MAC)"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desactiva la funció de volum absolut del Bluetooth en cas que es produeixin problemes de volum amb dispositius remots, com ara un volum massa alt o una manca de control."</string> - <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Activa el conjunt de funcions de Bluetooth Gabeldorsche."</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desactiva la funció de volum absolut del Bluetooth en cas que es produeixin problemes de volum amb dispositius remots, com ara un volum massa alt o una manca de control"</string> + <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Activa el conjunt de funcions de Bluetooth Gabeldorsche"</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Activa la funció de connectivitat millorada."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string> <string name="enable_terminal_summary" msgid="2481074834856064500">"Activa l\'aplicació de terminal que ofereix accés al shell local"</string> @@ -342,8 +343,8 @@ <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Il·lumina visualitzacions de finestres creades"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Mostra actualitzacions de capes de maquinari"</string> <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Il·lumina capes de maquinari en verd en actualitzar-se"</string> - <string name="debug_hw_overdraw" msgid="8944851091008756796">"Depura sobredibuix de GPU"</string> - <string name="disable_overlays" msgid="4206590799671557143">"Desactiva superposicions maquinari"</string> + <string name="debug_hw_overdraw" msgid="8944851091008756796">"Depura el sobredibuix de GPU"</string> + <string name="disable_overlays" msgid="4206590799671557143">"Desactiva superposicions de maquinari"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"Utilitza sempre GPU per a la composició de pantalles"</string> <string name="simulate_color_space" msgid="1206503300335835151">"Simula l\'espai de color"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Activa traces d\'OpenGL"</string> @@ -353,7 +354,7 @@ <string name="debug_layout_summary" msgid="8825829038287321978">"Mostra els límits de clips, els marges, etc."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Força direcció dreta-esquerra"</string> <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Força direcció de pantalla dreta-esquerra en totes les llengües"</string> - <string name="force_msaa" msgid="4081288296137775550">"Força MSAA 4x"</string> + <string name="force_msaa" msgid="4081288296137775550">"Força MSAA 4x"</string> <string name="force_msaa_summary" msgid="9070437493586769500">"Activa MSAA 4x en aplicacions d\'OpenGL ES 2.0"</string> <string name="show_non_rect_clip" msgid="7499758654867881817">"Depura operacions de retall no rectangulars"</string> <string name="track_frame_time" msgid="522674651937771106">"Renderització perfil HWUI"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml index 4e57750d90ca..ef086de6d08c 100644 --- a/packages/SettingsLib/res/values-cs/strings.xml +++ b/packages/SettingsLib/res/values-cs/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobilní data jsou vždy aktivní"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardwarová akcelerace tetheringu"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Zobrazovat zařízení Bluetooth bez názvů"</string> @@ -282,7 +283,7 @@ <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> + <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> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Snižuje vyčerpávání baterie a vylepšuje výkon sítě"</string> <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> @@ -297,7 +298,7 @@ <string name="select_usb_configuration_dialog_title" msgid="3579567144722589237">"Výběr konfigurace USB"</string> <string name="allow_mock_location" msgid="2102650981552527884">"Povolit simulované polohy"</string> <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="debug_view_attributes" msgid="3539609843984208216">"Povolit kontrolu 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á akcelerace tetheringu, použít ji."</string> <string name="adb_warning_title" msgid="7708653449506485728">"Povolit ladění přes USB?"</string> @@ -307,7 +308,7 @@ <string name="adb_keys_warning_message" msgid="2968555274488101220">"Zrušit přístup k ladění přes USB ze všech počítačů, které jste v minulosti autorizovali?"</string> <string name="dev_settings_warning_title" msgid="8251234890169074553">"Povolit nastavení pro vývojáře?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"Tato nastavení jsou určena pouze pro vývojáře. Mohou způsobit rozbití nebo nesprávné fungování zařízení a nainstalovaných aplikací."</string> - <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Ověřit aplikace z USB"</string> + <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Ověřovat aplikace z USB"</string> <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Kontrolovat škodlivost aplikací nainstalovaných pomocí nástroje ADB/ADT"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Zařízení Bluetooth se budou zobrazovat bez názvů (pouze adresy MAC)"</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Zakáže funkci absolutní hlasitosti Bluetooth. Zabrání tak problémům s hlasitostí vzdálených zařízení (jako je příliš vysoká hlasitost nebo nemožnost ovládání)."</string> @@ -333,24 +334,24 @@ <string name="strict_mode" msgid="889864762140862437">"Přísný režim aktivován"</string> <string name="strict_mode_summary" msgid="1838248687233554654">"Rozblikat obrazovku při dlouhých operacích hlavního vlákna"</string> <string name="pointer_location" msgid="7516929526199520173">"Umístění ukazatele"</string> - <string name="pointer_location_summary" msgid="957120116989798464">"Zobrazit překryvnou vrstvu s aktuálními daty o dotycích"</string> + <string name="pointer_location_summary" msgid="957120116989798464">"Překryvná vrstva zobrazuje aktuální data o dotycích"</string> <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_touches_summary" msgid="3692861665994502193">"Zobrazovat vizuální zpětnou vazbu pro klepnutí"</string> <string name="show_screen_updates" msgid="2078782895825535494">"Zobrazit obnovení obsahu"</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" msgid="2021286231267747506">"Ukazovat aktualizace zobrazení"</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 aktualizace HW vrstev"</string> + <string name="show_hw_layers_updates" msgid="5268370750002509767">"Ukazovat 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> <string name="disable_overlays_summary" msgid="1954852414363338166">"Vždy použít GPU ke skládání obrazovky"</string> - <string name="simulate_color_space" msgid="1206503300335835151">"Simulovat barevný prostor"</string> + <string name="simulate_color_space" msgid="1206503300335835151">"Simulace barevného prostoru"</string> <string name="enable_opengl_traces_title" msgid="4638773318659125196">"Povolit trasování OpenGL"</string> <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Směrování zvuku do USB"</string> <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Vypnout automatické směrování zvuku do zvukových periferií USB"</string> <string name="debug_layout" msgid="1659216803043339741">"Zobrazit ohraničení"</string> - <string name="debug_layout_summary" msgid="8825829038287321978">"Zobrazit u výstřižku ohraničení, okraje atd."</string> + <string name="debug_layout_summary" msgid="8825829038287321978">"U výstřižku zobrazit ohraničení, okraje atd."</string> <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Vynutit rozvržení zprava doleva"</string> <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Vynutit ve všech jazycích rozvržení obrazovky zprava doleva"</string> <string name="force_msaa" msgid="4081288296137775550">"Vynutit 4x MSAA"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml index fc96cbf7cccf..4357275bee44 100644 --- a/packages/SettingsLib/res/values-da/strings.xml +++ b/packages/SettingsLib/res/values-da/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificering af trådløs skærm"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Aktivér detaljeret Wi-Fi-logføring"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Begrænsning af Wi-Fi-scanning"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑forbedret MAC-randomisering"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobildata er altid aktiveret"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardwareacceleration ved netdeling"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Vis Bluetooth-enheder uden navne"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"Fuldt opladet 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> – fuldt opladet 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> – Optimerer batteritilstanden"</string> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <string name="battery_info_status_unknown" msgid="268625384868401114">"Ukendt"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Oplader"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Oplader hurtigt"</string> diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml index b5b579e327fb..ded16a48e388 100644 --- a/packages/SettingsLib/res/values-de/strings.xml +++ b/packages/SettingsLib/res/values-de/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Zertifizierung für kabellose Übertragung"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Ausführliche WLAN-Protokollierung aktivieren"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Drosselung der WLAN-Suche"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"WLAN-erweiterte MAC-Adressrandomisierung"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobile Datennutzung immer aktiviert"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardwarebeschleunigung für Tethering"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth-Geräte ohne Namen anzeigen"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"voll in <xliff:g id="TIME">%1$s</xliff:g>"</string> <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – voll in <xliff:g id="TIME">%2$s</xliff:g>"</string> - <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimierung des Akkuzustands"</string> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <string name="battery_info_status_unknown" msgid="268625384868401114">"Unbekannt"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Wird aufgeladen"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Schnelles Aufladen"</string> diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml index cb76522cf3a1..a52477b605c4 100644 --- a/packages/SettingsLib/res/values-el/strings.xml +++ b/packages/SettingsLib/res/values-el/strings.xml @@ -252,7 +252,7 @@ <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="882650208573834301">"Μη σταθερή τυχαία σειρά MAC σε Wi‑Fi"</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">"Εμφάνιση συσκευών Bluetooth χωρίς ονόματα"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<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> diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml index 2fb00781b59a..fb361f7eb0f1 100644 --- a/packages/SettingsLib/res/values-en-rAU/strings.xml +++ b/packages/SettingsLib/res/values-en-rAU/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Wireless display certification"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Enable Wi‑Fi verbose logging"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi scan throttling"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑enhanced MAC randomisation"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Wi‑Fi non‑persistent MAC randomisation"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobile data always active"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Tethering hardware acceleration"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> left until full"</string> <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> left until full"</string> - <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimising for battery health"</string> + <string name="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Charging temporarily limited"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml index 450865b2f74d..27b805f9e660 100644 --- a/packages/SettingsLib/res/values-en-rCA/strings.xml +++ b/packages/SettingsLib/res/values-en-rCA/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Wireless display certification"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Enable Wi‑Fi verbose logging"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi scan throttling"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑enhanced MAC randomisation"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Wi‑Fi non‑persistent MAC randomisation"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobile data always active"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Tethering hardware acceleration"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> left until full"</string> <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> left until full"</string> - <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimising for battery health"</string> + <string name="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Charging temporarily limited"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml index 2fb00781b59a..fb361f7eb0f1 100644 --- a/packages/SettingsLib/res/values-en-rGB/strings.xml +++ b/packages/SettingsLib/res/values-en-rGB/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Wireless display certification"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Enable Wi‑Fi verbose logging"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi scan throttling"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑enhanced MAC randomisation"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Wi‑Fi non‑persistent MAC randomisation"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobile data always active"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Tethering hardware acceleration"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> left until full"</string> <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> left until full"</string> - <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimising for battery health"</string> + <string name="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Charging temporarily limited"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml index 2fb00781b59a..fb361f7eb0f1 100644 --- a/packages/SettingsLib/res/values-en-rIN/strings.xml +++ b/packages/SettingsLib/res/values-en-rIN/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Wireless display certification"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Enable Wi‑Fi verbose logging"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi scan throttling"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑enhanced MAC randomisation"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Wi‑Fi non‑persistent MAC randomisation"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobile data always active"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Tethering hardware acceleration"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> left until full"</string> <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> left until full"</string> - <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> – Optimising for battery health"</string> + <string name="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Charging temporarily limited"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml index 525d4d2e2630..a16dba6e1100 100644 --- a/packages/SettingsLib/res/values-en-rXC/strings.xml +++ b/packages/SettingsLib/res/values-en-rXC/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Wireless display certification"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Enable Wi‑Fi Verbose Logging"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi scan throttling"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑enhanced MAC randomization"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Wi‑Fi non‑persistent MAC randomization"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobile data always active"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Tethering hardware acceleration"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> left until full"</string> <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> left until full"</string> - <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Optimizing for battery health"</string> + <string name="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Charging temporarily limited"</string> <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Charging rapidly"</string> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index 38af77a8f0af..4e8fabfa7e96 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -91,7 +91,7 @@ <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"Utilizar para compartir contactos"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Compartir conexión a Internet"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Mensajes de texto"</string> - <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acceso SIM"</string> + <string name="bluetooth_profile_sap" msgid="8304170950447934386">"Acceso a SIM"</string> <string name="bluetooth_profile_a2dp_high_quality" msgid="4739440941324792775">"Audio en HD: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"Audio en HD"</string> <string name="bluetooth_profile_hearing_aid" msgid="58154575573984914">"Audífonos"</string> @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificación de pantalla inalámbrica"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Habilitar registro detallado de Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limitación de búsqueda de Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Aleatorización de MAC de Wi-Fi Enhanced"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Datos móviles siempre activados"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Aceleración de hardware de conexión mediante dispositivo móvil"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sin nombre"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> para completar"</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"</string> - <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g>: Optimizando el estado de la batería"</string> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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ápido"</string> diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml index 8634f186efe9..25b2aded7577 100644 --- a/packages/SettingsLib/res/values-es/strings.xml +++ b/packages/SettingsLib/res/values-es/strings.xml @@ -252,7 +252,8 @@ <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">"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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sin nombre"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-et/arrays.xml b/packages/SettingsLib/res/values-et/arrays.xml index ca560bf36217..13f7920faffd 100644 --- a/packages/SettingsLib/res/values-et/arrays.xml +++ b/packages/SettingsLib/res/values-et/arrays.xml @@ -185,7 +185,7 @@ </string-array> <string-array name="select_logpersist_summaries"> <item msgid="97587758561106269">"Väljas"</item> - <item msgid="7126170197336963369">"Kõik logi puhvrid"</item> + <item msgid="7126170197336963369">"Kõik logipuhvrid"</item> <item msgid="7167543126036181392">"Kõik, v.a raadiologi puhvrid"</item> <item msgid="5135340178556563979">"ainult tuuma logi puhver"</item> </string-array> diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml index fbc5ee6d7eac..87a87d684b97 100644 --- a/packages/SettingsLib/res/values-et/strings.xml +++ b/packages/SettingsLib/res/values-et/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Juhtmeta ekraaniühenduse sertifitseerimine"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Luba WiFi sõnaline logimine"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"WiFi-skannimise ahendamine"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"WiFi-põhine MAC-i juhuslikustamine"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Hoia mobiilne andmeside alati aktiivne"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Ühenduse jagamise riistvaraline kiirendus"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Kuva ilma nimedeta Bluetoothi seadmed"</string> @@ -284,7 +285,7 @@ <string name="wifi_display_certification_summary" msgid="8111151348106907513">"Juhtmeta ekraaniühenduse sertifitseerimisvalikute kuvamine"</string> <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Suurenda WiFi logimistaset, kuva WiFi valijas SSID RSSI järgi"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Aeglustab aku tühjenemist ja parandab võrgu toimivust"</string> - <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Kui see režiim on lubatud, võidakse selle seadme MAC-aadressi muuta iga kord, kui see ühendatakse võrguga, milles on juhusliku MAC-aadressi määramine lubatud."</string> + <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Kui see režiim on lubatud, võidakse selle seadme MAC-aadressi muuta iga kord, kui see ühendatakse võrguga, milles on juhuslikustatud MAC-aadressi määramine lubatud."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Mahupõhine"</string> <string name="wifi_unmetered_label" msgid="6174142840934095093">"Mittemahupõhine"</string> <string name="select_logd_size_title" msgid="1604578195914595173">"Logija puhvri suurused"</string> @@ -327,7 +328,7 @@ <string name="wait_for_debugger_summary" msgid="6846330006113363286">"Silutud rakendus ootab toimimiseks siluri lisamist"</string> <string name="debug_input_category" msgid="7349460906970849771">"Sisend"</string> <string name="debug_drawing_category" msgid="5066171112313666619">"Graafika"</string> - <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Tarkvarakiirendusega renderdamine"</string> + <string name="debug_hw_drawing_category" msgid="5830815169336975162">"Riistvarakiirendusega renderdamine"</string> <string name="media_category" msgid="8122076702526144053">"Meedia"</string> <string name="debug_monitoring_category" msgid="1597387133765424994">"Jälgimine"</string> <string name="strict_mode" msgid="889864762140862437">"Range režiim on lubatud"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml index 7a81e5f4b469..774c8f95245a 100644 --- a/packages/SettingsLib/res/values-eu/strings.xml +++ b/packages/SettingsLib/res/values-eu/strings.xml @@ -91,7 +91,7 @@ <string name="bluetooth_profile_pbap_summary" msgid="2955819694801952056">"Erabili kontaktuak partekatzeko"</string> <string name="bluetooth_profile_pan_nap" msgid="7871974753822470050">"Interneteko konexioa partekatzea"</string> <string name="bluetooth_profile_map" msgid="8907204701162107271">"Testu-mezuak"</string> - <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIM txartelerako sarbidea"</string> + <string name="bluetooth_profile_sap" msgid="8304170950447934386">"SIMerako sarbidea"</string> <string name="bluetooth_profile_a2dp_high_quality" msgid="4739440941324792775">"Kalitate handiko audioa: <xliff:g id="CODEC_NAME">%1$s</xliff:g>"</string> <string name="bluetooth_profile_a2dp_high_quality_unknown_codec" msgid="2477639096903834374">"Kalitate handiko audioa"</string> <string name="bluetooth_profile_hearing_aid" msgid="58154575573984914">"Audifonoak"</string> @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Hari gabe bistaratzeko ziurtagiria"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Gaitu wifi-sareetan saioa hasteko modu xehatua"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wifi-sareen bilaketaren muga"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wifi bidez hobetutako MAC helbideak ausaz aukeratzeko eginbidea"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Datu-konexioa beti aktibo"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Konexioa partekatzeko hardwarearen azelerazioa"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Erakutsi Bluetooth bidezko gailuak izenik gabe"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml index 7eae9471cfae..85da01552b98 100644 --- a/packages/SettingsLib/res/values-fa/strings.xml +++ b/packages/SettingsLib/res/values-fa/strings.xml @@ -252,7 +252,7 @@ <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="882650208573834301">"تصادفیسازی MAC غیرپایای Wi-Fi"</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> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<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> diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml index af97b8d22c21..6c2d8f2a80e7 100644 --- a/packages/SettingsLib/res/values-fi/strings.xml +++ b/packages/SettingsLib/res/values-fi/strings.xml @@ -246,13 +246,14 @@ <string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"Sallitaanko OEM:n lukituksen avaus?"</string> <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"VAROITUS: laitteen suojaustoiminnot eivät toimi tämän asetuksen ollessa käytössä."</string> <string name="mock_location_app" msgid="6269380172542248304">"Valitse valesijaintisovellus"</string> - <string name="mock_location_app_not_set" msgid="6972032787262831155">"Valesijaintisovellusta ei ole valittu."</string> + <string name="mock_location_app_not_set" msgid="6972032787262831155">"Valesijaintisovellusta ei ole valittu"</string> <string name="mock_location_app_set" msgid="4706722469342913843">"Valesijaintisovellus: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="debug_networking_category" msgid="6829757985772659599">"Yhteysominaisuudet"</string> <string name="wifi_display_certification" msgid="1805579519992520381">"Langattoman näytön sertifiointi"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Käytä Wi-Fin laajennettua lokikirjausta"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi-haun rajoitus"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi-Fi-paranneltu MAC-satunnaistaminen"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobiilidata aina käytössä"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Laitteistokiihdytyksen yhteyden jakaminen"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Näytä nimettömät Bluetooth-laitteet"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> @@ -531,7 +533,7 @@ <string name="storage_category" msgid="2287342585424631813">"Tallennustila"</string> <string name="shared_data_title" msgid="1017034836800864953">"Jaettu data"</string> <string name="shared_data_summary" msgid="5516326713822885652">"Katso ja muokkaa jaettua dataa"</string> - <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Tälle käyttäjälle ei löydy jaettua dataa."</string> + <string name="shared_data_no_blobs_text" msgid="3108114670341737434">"Tälle käyttäjälle ei löydy jaettua dataa"</string> <string name="shared_data_query_failure_text" msgid="3489828881998773687">"Jaettua dataa noudettaessa tapahtui virhe. Yritä uudelleen."</string> <string name="blob_id_text" msgid="8680078988996308061">"Jaetun datan tunnus: <xliff:g id="BLOB_ID">%d</xliff:g>"</string> <string name="blob_expires_text" msgid="7882727111491739331">"Vanhenee <xliff:g id="DATE">%s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml index e5aa95d568f4..194d7e07db9d 100644 --- a/packages/SettingsLib/res/values-fr-rCA/strings.xml +++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certification de l\'affichage sans fil"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Autoriser enreg. données Wi-Fi détaillées"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limiter la recherche de réseaux Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Sélect. aléatoire adr. MAC optim. par Wi‑Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Données cellulaires toujours actives"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Accélération matérielle pour le partage de connexion"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Afficher les appareils Bluetooth sans nom"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml index 0645b9e40d88..69fcee61d4db 100644 --- a/packages/SettingsLib/res/values-fr/strings.xml +++ b/packages/SettingsLib/res/values-fr/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certification affichage sans fil"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Autoriser l\'enregistrement d\'infos Wi-Fi détaillées"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limiter la recherche Wi‑Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Changement aléatoire d\'adresse MAC en Wi-Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Données mobiles toujours actives"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Accélération matérielle pour le partage de connexion"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Afficher les appareils Bluetooth sans nom"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml index c819527ff605..a95360f0ba64 100644 --- a/packages/SettingsLib/res/values-gl/strings.xml +++ b/packages/SettingsLib/res/values-gl/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificado de visualización sen fíos"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Activar rexistro detallado da wifi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limitación da busca de wifi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Selección aleatoria de enderezo MAC"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Datos móbiles sempre activados"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Aceleración de hardware para conexión compartida"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sen nomes"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml index 9583c0e387a2..6154d20fd490 100644 --- a/packages/SettingsLib/res/values-gu/arrays.xml +++ b/packages/SettingsLib/res/values-gu/arrays.xml @@ -191,29 +191,29 @@ </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="3531560925718232560">"એનિમેશન સ્કેલ 2x"</item> - <item msgid="4542853094898215187">"એનિમેશન સ્કેલ 5x"</item> - <item msgid="5643881346223901195">"એનિમેશન સ્કેલ 10x"</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> </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="4403482320438668316">"એનિમેશન સ્કેલ 5x"</item> - <item msgid="169579387974966641">"એનિમેશન સ્કેલ 10x"</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> </string-array> <string-array name="animator_duration_scale_entries"> <item msgid="6416998593844817378">"એનિમેશન બંધ"</item> - <item msgid="875345630014338616">"એનિમેશન સ્કેલ .5x"</item> + <item msgid="875345630014338616">"ઍનિમેશન સ્કેલ .5x"</item> <item msgid="2753729231187104962">"ઍનિમેશન સ્કેલ 1x"</item> - <item msgid="1368370459723665338">"એનિમેશન સ્કેલ 1.5x"</item> - <item msgid="5768005350534383389">"એનિમેશન સ્કેલ 2x"</item> - <item msgid="3728265127284005444">"એનિમેશન સ્કેલ 5x"</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"> diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml index 7fa52f5ab50d..ec4980467474 100644 --- a/packages/SettingsLib/res/values-gu/strings.xml +++ b/packages/SettingsLib/res/values-gu/strings.xml @@ -92,8 +92,8 @@ <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> - <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> @@ -204,8 +204,8 @@ <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="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">"વાઇ-ફાઇ કનેક્ટ કરેલું હોય ત્યારે ડિબગ મોડ"</string> @@ -245,33 +245,34 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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_select_avrcp_version_string" msgid="1710571610177659127">"બ્લૂટૂથ AVRCP સંસ્કરણ"</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> <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" 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> - <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> @@ -307,8 +308,8 @@ <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="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> @@ -318,13 +319,13 @@ <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="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> @@ -336,10 +337,10 @@ <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> + <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> @@ -354,7 +355,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> @@ -362,7 +363,7 @@ <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> @@ -376,11 +377,11 @@ <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="local_backup_password_title" msgid="4631017948933578709">"ડેસ્કટૉપ બેકઅપ પાસવર્ડ"</string> - <string name="local_backup_password_summary_none" msgid="7646898032616361714">"ડેસ્કટૉપ સંપૂર્ણ બેકઅપ હાલમાં સુરક્ષિત નથી"</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_toast_success" msgid="4891666204428091604">"નવો બેકઅપ પાસવર્ડ સેટ કર્યો છે"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"નવો પાસવર્ડ અને પુષ્ટિકરણ મેળ ખાતા નથી"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml index 1c3608b186e6..2c8caa7b2508 100644 --- a/packages/SettingsLib/res/values-hi/strings.xml +++ b/packages/SettingsLib/res/values-hi/strings.xml @@ -196,7 +196,7 @@ </string-array> <string name="choose_profile" msgid="343803890897657450">"प्रोफ़ाइल चुनें"</string> <string name="category_personal" msgid="6236798763159385225">"निजी"</string> - <string name="category_work" msgid="4014193632325996115">"कार्यालय"</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_summary" msgid="8718917813868735095">"ऐप्लिकेशन विकास के लिए विकल्प सेट करें"</string> @@ -252,7 +252,8 @@ <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">"बेहतर वाई-फ़ाई नेटवर्क से जुड़ने पर मैक पता बदलने की सुविधा"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml index ed4b59b7828c..ccff99d0187b 100644 --- a/packages/SettingsLib/res/values-hr/strings.xml +++ b/packages/SettingsLib/res/values-hr/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certifikacija bežičnog prikaza"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Omogući opširnu prijavu na Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Usporavanje traženja Wi-Fija"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Nasum. odabir MAC-a poboljšan Wi‑Fijem"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobilni podaci uvijek aktivni"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardversko ubrzanje za modemsko povezivanje"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži Bluetooth uređaje bez naziva"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml index 4adef4d2c8e4..bd7695ae2fea 100644 --- a/packages/SettingsLib/res/values-hu/strings.xml +++ b/packages/SettingsLib/res/values-hu/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Vezeték nélküli kijelző tanúsítványa"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Részletes Wi-Fi-naplózás engedélyezése"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi-Fi-hálózat szabályozása"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑re kiterjesztett, randomizált MAC"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"A mobilhálózati kapcsolat mindig aktív"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Internetmegosztás hardveres gyorsítása"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Név nélküli Bluetooth-eszközök megjelenítése"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml index 8abfdec6835e..90d2da1d76cf 100644 --- a/packages/SettingsLib/res/values-hy/strings.xml +++ b/packages/SettingsLib/res/values-hy/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> @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index 58b4daf4ecde..42140075d741 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Sertifikasi layar nirkabel"</string> <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="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Pengacakan MAC nonpersisten Wi‑Fi"</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> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Pengisian daya dibatasi untuk sementara"</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> diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml index d6f9be832c06..c53660745506 100644 --- a/packages/SettingsLib/res/values-is/strings.xml +++ b/packages/SettingsLib/res/values-is/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Vottun þráðlausra skjáa"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Kveikja á ítarlegri skráningu Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Hægja á Wi‑Fi leit"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Slembival MAC-vistfanga með Wi-Fi styrk"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Alltaf kveikt á farsímagögnum"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Vélbúnaðarhröðun fyrir tjóðrun"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Sýna Bluetooth-tæki án heita"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml index 85f699976719..503339f7679b 100644 --- a/packages/SettingsLib/res/values-it/strings.xml +++ b/packages/SettingsLib/res/values-it/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificazione display wireless"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Attiva logging dettagliato Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limita ricerca di reti Wi‑Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Randomizzazione MAC con Wi‑Fi migliorato"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Dati mobili sempre attivi"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Tethering accelerazione hardware"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostra dispositivi Bluetooth senza nome"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <string name="power_remaining_charging_duration_only" msgid="8085099012811384899">"<xliff:g id="TIME">%1$s</xliff:g> alla ricarica completa"</string> <string name="power_charging_duration" msgid="6127154952524919719">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> alla ricarica completa"</string> - <string name="power_charging_limited" msgid="1956874810658999681">"<xliff:g id="LEVEL">%1$s</xliff:g> - Ottimizzazione per integrità batteria"</string> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <string name="battery_info_status_unknown" msgid="268625384868401114">"Sconosciuta"</string> <string name="battery_info_status_charging" msgid="4279958015430387405">"In carica"</string> <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Ricarica veloce"</string> diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml index 93e3bcc75e40..31abe2beaf49 100644 --- a/packages/SettingsLib/res/values-iw/arrays.xml +++ b/packages/SettingsLib/res/values-iw/arrays.xml @@ -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> @@ -109,7 +109,7 @@ <item msgid="8887519571067543785">"96.0 קילו-הרץ"</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 קילו-הרץ"</item> <item msgid="8736780630001704004">"48.0 קילו-הרץ"</item> <item msgid="7698585706868856888">"88.2 קילו-הרץ"</item> @@ -122,7 +122,7 @@ <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> diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index e60d2caa0aa0..b94433702f01 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -144,9 +144,9 @@ <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">"שיתוף אינטרנט דרך Bluetooth"</string> + <string name="tether_settings_title_bluetooth" msgid="916519902721399656">"שיתוף אינטרנט ב-Bluetooth"</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> @@ -237,7 +237,7 @@ <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="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">"הפעלת Snoop Log של Bluetooth HCI"</string> <string name="bt_hci_snoop_log_summary" msgid="6808538971394092284">"איחוד חבילות Bluetooth. (יש להחליף מצב Bluetooth לאחר שינוי הגדרה זו)"</string> @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"אישור של תצוגת WiFi"</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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -376,7 +377,7 @@ <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="local_backup_password_title" msgid="4631017948933578709">"סיסמת גיבוי שולחן העבודה"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> @@ -521,7 +523,7 @@ <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_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> diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml index 3975006fb7b6..76e97e1b0961 100644 --- a/packages/SettingsLib/res/values-ja/strings.xml +++ b/packages/SettingsLib/res/values-ja/strings.xml @@ -252,7 +252,7 @@ <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-enhanced MAC ランダム化"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Wi-Fi 非永続的 MAC ランダム化"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"モバイルデータを常に ON にする"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"テザリング時のハードウェア アクセラレーション"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth デバイスを名前なしで表示"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<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> diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml index 6874824fa555..0eefc19c5836 100644 --- a/packages/SettingsLib/res/values-ka/strings.xml +++ b/packages/SettingsLib/res/values-ka/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml index f3a533ff5096..d88a135011e9 100644 --- a/packages/SettingsLib/res/values-kk/strings.xml +++ b/packages/SettingsLib/res/values-kk/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml index a74d8a504c00..0645d9e59fc4 100644 --- a/packages/SettingsLib/res/values-km/strings.xml +++ b/packages/SettingsLib/res/values-km/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml index e886de538657..136875dd03b6 100644 --- a/packages/SettingsLib/res/values-kn/strings.xml +++ b/packages/SettingsLib/res/values-kn/strings.xml @@ -252,7 +252,8 @@ <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">"ವೈ-ಫೈ ಸ್ಕ್ಯಾನ್ ನಿರ್ಬಂಧಿಸಲಾಗುತ್ತಿದೆ"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi‑ವರ್ಧಿತ MAC ಯಾದೃಚ್ಛಿಕರಣ"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml index 918250cf7f6c..38db9efefb35 100644 --- a/packages/SettingsLib/res/values-ko/strings.xml +++ b/packages/SettingsLib/res/values-ko/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml index 8efc1e4f7ab5..54c01dddaedc 100644 --- a/packages/SettingsLib/res/values-ky/strings.xml +++ b/packages/SettingsLib/res/values-ky/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml index ab829ab7142d..f944806b4471 100644 --- a/packages/SettingsLib/res/values-lo/strings.xml +++ b/packages/SettingsLib/res/values-lo/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"ສະແດງການຮັບຮອງຂອງລະບົບໄຮ້ສາຍ"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"ເປີດນຳໃຊ້ການເກັບປະຫວັດ Verbose 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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml index 6aa200f12ccc..3dc9f7720666 100644 --- a/packages/SettingsLib/res/values-lt/strings.xml +++ b/packages/SettingsLib/res/values-lt/strings.xml @@ -204,7 +204,7 @@ <string name="vpn_settings_not_available" msgid="2894137119965668920">"VPN nustatymai šiam naudotojui nepasiekiami"</string> <string name="tethering_settings_not_available" msgid="266821736434699780">"Įrenginio kaip modemo naudojimo nustatymai šiam naudotojui nepasiekiami"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Prieigos taško pavadinimo nustatymai šiam naudotojui nepasiekiami"</string> - <string name="enable_adb" msgid="8072776357237289039">"USB perkrova"</string> + <string name="enable_adb" msgid="8072776357237289039">"USB derinimas"</string> <string name="enable_adb_summary" msgid="3711526030096574316">"Derinimo režimas, kai prijungtas USB"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"Panaikinti USB derinimo prieigos teises"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Belaidžio ryšio derin."</string> @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Belaidžio rodymo sertifikavimas"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Įgal. „Wi‑Fi“ daugiaž. įraš. į žurnalą"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"„Wi‑Fi“ nuskaitymo ribojimas"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"„Wi‑Fi“ patob. atsit. MAC adr. parink."</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"MAC atsitiktinis parinkimas esant nepastoviam „Wi‑Fi“"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobiliojo ryšio duomenys visada suaktyvinti"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Įrenginio kaip modemo naudojimo aparatinės įrangos spartinimas"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Rodyti „Bluetooth“ įrenginius be pavadinimų"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> – Įkrovimas laikinai apribotas"</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> diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml index 77a5d4bf87fb..2132a5921397 100644 --- a/packages/SettingsLib/res/values-lv/strings.xml +++ b/packages/SettingsLib/res/values-lv/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Bezvadu attēlošanas sertifikācija"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Iespējot Wi‑Fi detalizēto reģistrēšanu"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi meklēšanas ierobežošana"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"MAC adrešu nejauša izveide ar Wi-Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Vienmēr aktīvs mobilo datu savienojums"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Paātrināta aparatūras darbība piesaistei"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Rādīt Bluetooth ierīces bez nosaukumiem"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> — <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml index 71a0c5c96d93..2fc659e9c8e5 100644 --- a/packages/SettingsLib/res/values-mk/strings.xml +++ b/packages/SettingsLib/res/values-mk/strings.xml @@ -252,7 +252,7 @@ <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="882650208573834301">"Непостојана MAC-рандомизација на Wi‑Fi"</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">"Прикажувај уреди со Bluetooth без имиња"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<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> @@ -520,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> diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml index 11c160d76526..ec4afe71457b 100644 --- a/packages/SettingsLib/res/values-ml/strings.xml +++ b/packages/SettingsLib/res/values-ml/strings.xml @@ -91,7 +91,7 @@ <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_sap" msgid="8304170950447934386">"സിം ആക്സസ്"</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> @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml index 2e9fa6a567b3..9344bfc98a1e 100644 --- a/packages/SettingsLib/res/values-mn/strings.xml +++ b/packages/SettingsLib/res/values-mn/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml index 16c7f3900f70..a40c156d6e6b 100644 --- a/packages/SettingsLib/res/values-mr/strings.xml +++ b/packages/SettingsLib/res/values-mr/strings.xml @@ -246,15 +246,16 @@ <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_enhanced_mac_randomization" msgid="5437378364995776979">"वाय-फाय वर्धित केलेले MAC रँडमायझेशन"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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">"गाबलडॉर्ष सुरू करा"</string> @@ -264,10 +265,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">"ब्लूटूथ ऑडिओ Codec ट्रिगर करा\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">"ब्लूटूथ ऑडिओ Codec ट्रिगर करा\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">"ब्लूटूथ ऑडिओ Codec ट्रिगर करा\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">"ब्लूटूथ ऑडिओ Codec ट्रिगर करा\nनिवड: चॅनल मोड"</string> @@ -309,7 +310,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">"ब्लूटूथ गाबलडॉर्ष वैशिष्ट्य स्टॅक सुरू करा."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"वर्धित कनेक्टिव्हिटी वैशिष्ट्य सुरू करा."</string> @@ -326,7 +327,7 @@ <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_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> @@ -372,11 +373,11 @@ <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="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">"manifest मूल्यांकडे दुर्लक्ष करून, कोणत्याही ॲपला बाह्य स्टोरेजवर लेखन केले जाण्यासाठी पात्र बनविते"</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">"manifest मूल्यांकडे दुर्लक्ष करून, एकाहून अधिक-विंडोसाठी सर्व अॅक्टिव्हिटींचा आकार बदलण्यायोग्य करा."</string> + <string name="force_resizable_activities_summary" msgid="2490382056981583062">"मॅनिफेस्ट मूल्ये काहीही असू देत, एकाहून अधिक विंडोसाठी सर्व अॅक्टिव्हिटीचा आकार बदलण्यायोग्य करा."</string> <string name="enable_freeform_support" msgid="7599125687603914253">"freeform विंडो सुरू करा"</string> <string name="enable_freeform_support_summary" msgid="1822862728719276331">"प्रायोगिक मुक्तस्वरूपाच्या विंडोसाठी सपोर्ट सुरू करा."</string> <string name="local_backup_password_title" msgid="4631017948933578709">"डेस्कटॉप बॅकअप पासवर्ड"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml index 9707c5ed0596..b143cfdc012d 100644 --- a/packages/SettingsLib/res/values-ms/strings.xml +++ b/packages/SettingsLib/res/values-ms/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Pensijilan paparan wayarles"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Dayakan Pengelogan Berjela-jela Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Pendikitan pengimbasan Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Perawakan MAC dipertingkat Wi‑Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Data mudah alih sentiasa aktif"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Pecutan perkakasan penambatan"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Tunjukkan peranti Bluetooth tanpa nama"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml index 22f585c67c2d..79321447f8a4 100644 --- a/packages/SettingsLib/res/values-my/strings.xml +++ b/packages/SettingsLib/res/values-my/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"ကြိုးမဲ့ပြသမှု အသိအမှတ်ပြုလက်မှတ်"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Wi‑Fi Verbose မှတ်တမ်းတင်ခြင်းအား ဖွင့်မည်"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi ရှာဖွေခြင်း ထိန်းချုပ်မှု"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi တိုးမြှင့် MAC ကျပန်းပြုလုပ်ခြင်း"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml index fa1837f2fffb..b78821f6f31e 100644 --- a/packages/SettingsLib/res/values-nb/strings.xml +++ b/packages/SettingsLib/res/values-nb/strings.xml @@ -252,12 +252,13 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobildata er alltid aktiv"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Maskinvareakselerasjon for internettdeling"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Vis Bluetooth-enheter uten navn"</string> - <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Slå av funksjonen for absolutt volum"</string> - <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Aktiver Gabeldorsche"</string> + <string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Slå av absolutt volum"</string> + <string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Slå på Gabeldorsche"</string> <string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP-versjon"</string> <string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Velg Bluetooth AVRCP-versjon"</string> <string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP-versjon"</string> @@ -282,7 +283,7 @@ <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> + <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"Øk nivået av Wi-Fi-logging – vis per SSID RSSI i Wi-Fi-velgeren"</string> <string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"Reduserer batteriforbruket og forbedrer nettverksytelsen"</string> <string name="wifi_enhanced_mac_randomization_summary" msgid="1210663439867489931">"Når denne modusen er slått på, kan MAC-adressen til denne enheten endres hver gang den kobler seg til et nettverk som har tilfeldiggjøring av MAC-adresse slått på."</string> <string name="wifi_metered_label" msgid="8737187690304098638">"Med datamåling"</string> @@ -360,7 +361,7 @@ <string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Slå på GPU-feilsøkingslag"</string> <string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Tillat GPU-feilsøkingslag for feilsøkingsapper"</string> <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Detaljert leverandørlogging"</string> - <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inkluder ytterligere enhetsspesifikke leverandørlogger i feilrapporter, som kan inneholde privat informasjon, bruke mer batteri og/eller bruke mer lagringsplass."</string> + <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inkluder flere enhetsspesifikke leverandørlogger i feilrapporter, som kan inneholde privat informasjon, bruke mer batteri og/eller bruke mer lagringsplass."</string> <string name="window_animation_scale_title" msgid="5236381298376812508">"Animasjonsskala for vindu"</string> <string name="transition_animation_scale_title" msgid="1278477690695439337">"Animasjonsskala for overgang"</string> <string name="animator_duration_scale_title" msgid="7082913931326085176">"Varighetsskala for animasjoner"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml index 309a06a40c9e..e5ae93c93553 100644 --- a/packages/SettingsLib/res/values-ne/strings.xml +++ b/packages/SettingsLib/res/values-ne/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> @@ -521,7 +523,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> diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml index 547278543c13..cc460f3b869a 100644 --- a/packages/SettingsLib/res/values-nl/strings.xml +++ b/packages/SettingsLib/res/values-nl/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificering van draadloze weergave"</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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobiele data altijd actief"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardwareversnelling voor tethering"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth-apparaten zonder naam tonen"</string> @@ -283,7 +284,7 @@ <string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"Kan geen verbinding maken"</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_scan_throttling_summary" msgid="2577105472017362814">"Verlaag het batterijverbruik en verbeter de netwerkprestaties"</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> @@ -310,7 +311,7 @@ <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Apps verifiëren via USB"</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_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> @@ -370,9 +371,9 @@ <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">"Toon dialoogvenster App reageert niet 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="show_notification_channel_warnings_summary" msgid="68031143745094339">"Toont een waarschuwing op het scherm 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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> @@ -520,7 +522,7 @@ <string name="alarm_template" msgid="3346777418136233330">"om <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="alarm_template_far" msgid="6382760514842998629">"op <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="zen_mode_duration_settings_title" msgid="1553451650289651489">"Duur"</string> - <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Altijd vragen"</string> + <string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Vraag altijd"</string> <string name="zen_mode_forever" msgid="3339224497605461291">"Totdat je uitzet"</string> <string name="time_unit_just_now" msgid="3006134267292728099">"Zojuist"</string> <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefoonspeaker"</string> diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml index 2fd00cb76dd7..a52685038e78 100644 --- a/packages/SettingsLib/res/values-or/strings.xml +++ b/packages/SettingsLib/res/values-or/strings.xml @@ -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> @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml index 53855a8bd0b6..7f2320062761 100644 --- a/packages/SettingsLib/res/values-pa/strings.xml +++ b/packages/SettingsLib/res/values-pa/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> @@ -502,7 +504,7 @@ <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">"ਠੀਕ ਹੈ"</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> diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml index cac4a8e8a504..022126921138 100644 --- a/packages/SettingsLib/res/values-pl/strings.xml +++ b/packages/SettingsLib/res/values-pl/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Wyświetlacz bezprzewodowy"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Szczegółowy dziennik Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Ograniczanie skanowania Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Randomizacja MAC ulepszona w zakresie Wi‑Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobilna transmisja danych zawsze aktywna"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Akceleracja sprzętowa tetheringu"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Pokaż urządzenia Bluetooth bez nazw"</string> @@ -383,7 +384,7 @@ <string name="local_backup_password_summary_none" msgid="7646898032616361714">"Pełne kopie zapasowe na komputerze nie są obecnie chronione"</string> <string name="local_backup_password_summary_change" msgid="1707357670383995567">"Dotknij, by zmienić lub usunąć hasło pełnych kopii zapasowych na komputerze."</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"Nowe hasło kopii zapasowej zostało ustawione"</string> - <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Nowe hasła nie pasują do siebie"</string> + <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"Nowe hasła nie są takie same"</string> <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"Nie udało się ustawić hasła kopii zapasowej"</string> <string name="loading_injected_setting_summary" msgid="8394446285689070348">"Ładuję…"</string> <string-array name="color_mode_names"> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml index ff8b5e179939..62ea068517a6 100644 --- a/packages/SettingsLib/res/values-pt-rBR/strings.xml +++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificação de Display sem fio"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Ativar registro detalhado de Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limitar busca por Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"MAC aleatório melhorado por Wi-Fi"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Ordem aleatória de MAC não persistente no Wi-Fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Dados móveis sempre ativos"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Aceleração de hardware de tethering"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sem nomes"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> (carregamento temporariamente limitado)"</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> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index f5e2240dfca6..618a3d3291b0 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificação de display sem fios"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Ativar o registo verboso de Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Controlo da procura de Wi‑Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Seleção aleatória do MAC otimizado Wi-Fi"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Seleção aleatória do MAC não persistente Wi-Fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Dados móveis sempre ativos"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Aceleração de hardware para ligação (à Internet) via telemóvel"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sem nomes"</string> @@ -308,9 +308,9 @@ <string name="dev_settings_warning_title" msgid="8251234890169074553">"Permitir definições de programação?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"Estas definições destinam-se apenas a programação. Podem fazer com que o seu aparelho e as aplicações nele existentes falhem ou funcionem mal."</string> <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Verificar aplicações de USB"</string> - <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Verificar as aplicações instaladas via ADB/ADT para detetar comportamento perigoso."</string> + <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Verificar as aplicações instaladas via ADB/ADT para detetar comportamento perigoso"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"São apresentados os dispositivos Bluetooth sem nomes (apenas endereços MAC)"</string> - <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desativa a funcionalidade de volume absoluto do Bluetooth caso existam problemas de volume com dispositivos remotos, como um volume insuportavelmente alto ou a ausência de controlo."</string> + <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desativa a funcionalidade de volume absoluto do Bluetooth caso existam problemas de volume com dispositivos remotos, como um volume insuportavelmente alto ou a ausência de controlo"</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Ativa a pilha de funcionalidades Bluetooth Gabeldorche."</string> <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Ativa a funcionalidade Conetividade melhorada."</string> <string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string> @@ -341,7 +341,7 @@ <string name="show_hw_screen_updates" msgid="2021286231267747506">"Ver atualizações de vistas"</string> <string name="show_hw_screen_updates_summary" msgid="3539770072741435691">"Destacar vistas em janelas quando desenhadas"</string> <string name="show_hw_layers_updates" msgid="5268370750002509767">"Atualizações de camadas de hardware"</string> - <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Camadas de hard. flash verdes quando estão atuali."</string> + <string name="show_hw_layers_updates_summary" msgid="5850955890493054618">"Piscar camadas de hardware em verde ao atualizar"</string> <string name="debug_hw_overdraw" msgid="8944851091008756796">"Depurar sobreposição GPU"</string> <string name="disable_overlays" msgid="4206590799671557143">"Desativar sobreposições HW"</string> <string name="disable_overlays_summary" msgid="1954852414363338166">"Utilizar sempre GPU para a composição do ecrã"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> – Carregamento limitado temporariamente"</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> diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml index ff8b5e179939..62ea068517a6 100644 --- a/packages/SettingsLib/res/values-pt/strings.xml +++ b/packages/SettingsLib/res/values-pt/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificação de Display sem fio"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Ativar registro detalhado de Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limitar busca por Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"MAC aleatório melhorado por Wi-Fi"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Ordem aleatória de MAC não persistente no Wi-Fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Dados móveis sempre ativos"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Aceleração de hardware de tethering"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sem nomes"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> (carregamento temporariamente limitado)"</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> diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml index ed0b47011f52..86721bbe6ec2 100644 --- a/packages/SettingsLib/res/values-ro/strings.xml +++ b/packages/SettingsLib/res/values-ro/strings.xml @@ -205,7 +205,7 @@ <string name="tethering_settings_not_available" msgid="266821736434699780">"Setările pentru tethering nu sunt disponibile pentru acest utilizator"</string> <string name="apn_settings_not_available" msgid="1147111671403342300">"Setările pentru „Nume puncte de acces” nu sunt disponibile pentru acest utilizator"</string> <string name="enable_adb" msgid="8072776357237289039">"Remedierea erorilor prin USB"</string> - <string name="enable_adb_summary" msgid="3711526030096574316">"Mod de depanare când este conectat USB"</string> + <string name="enable_adb_summary" msgid="3711526030096574316">"Mod de remediere a erorilor când este conectat USB"</string> <string name="clear_adb_keys" msgid="3010148733140369917">"Revoc autorizații remediere a erorilor prin USB"</string> <string name="enable_adb_wireless" msgid="6973226350963971018">"Remedierea erorilor wireless"</string> <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"Modul de remediere a erorilor când rețeaua Wi-Fi este conectată"</string> @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certificare Ecran wireless"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Înregistrare prin Wi-Fi de volume mari de date"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Limitare căutare de rețele Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Randomizare MAC îmbunătățită prin Wi-Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Date mobile permanent active"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Accelerare hardware pentru tethering"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Afișați dispozitivele Bluetooth fără nume"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml index 5bbb9f49940c..ae9fb362c65c 100644 --- a/packages/SettingsLib/res/values-ru/strings.xml +++ b/packages/SettingsLib/res/values-ru/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> @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -380,7 +381,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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml index 16cb85a7d32b..de40cef58a84 100644 --- a/packages/SettingsLib/res/values-si/strings.xml +++ b/packages/SettingsLib/res/values-si/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml index 018ee861cb81..62a03d05c00c 100644 --- a/packages/SettingsLib/res/values-sk/strings.xml +++ b/packages/SettingsLib/res/values-sk/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certifikácia bezdrôtového zobrazenia"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Podrobné denníky Wi‑Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Pribrzdenie vyhľadávania sietí Wi‑Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Zlepš. randomizácia adr. MAC prip. Wi‑Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobilné dáta ponechať vždy aktívne"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardvérová akcelerácia tetheringu"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Zobrazovať zariadenia Bluetooth bez názvov"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml index 0ad339eb458f..8776b8b3d6bc 100644 --- a/packages/SettingsLib/res/values-sl/strings.xml +++ b/packages/SettingsLib/res/values-sl/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Potrdilo brezžičnega zaslona"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Omogoči podrobno zapisovanje dnevnika za Wi-Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Omejevanje iskanja omrežij Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Naključen naslov MAC s podporo Wi‑Fi‑ja"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml index 3bdb7a1309bd..b095d40d3653 100644 --- a/packages/SettingsLib/res/values-sq/strings.xml +++ b/packages/SettingsLib/res/values-sq/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Të dhënat celulare gjithmonë aktive"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Përshpejtimi i harduerit për ndarjen e lidhjes (internet)"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Shfaq pajisjet me Bluetooth pa emra"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml index 5e7022df04cc..9f2d27b7d2e0 100644 --- a/packages/SettingsLib/res/values-sr/strings.xml +++ b/packages/SettingsLib/res/values-sr/strings.xml @@ -252,7 +252,7 @@ <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">"Успоравање WiFi скенирања"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Насумично MAC разврставање по Wi‑Fi‑ју"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Насумично разврставање MAC адреса по WiFi-ју са прекидима"</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">"Прикажи Bluetooth уређаје без назива"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<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> diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml index ced30cf548e8..e07240a33990 100644 --- a/packages/SettingsLib/res/values-sv/strings.xml +++ b/packages/SettingsLib/res/values-sv/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobildata alltid aktiverad"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Maskinvaruacceleration för internetdelning"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Visa namnlösa Bluetooth-enheter"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml index 29c6a4fa7ff5..c762fab3a42b 100644 --- a/packages/SettingsLib/res/values-sw/strings.xml +++ b/packages/SettingsLib/res/values-sw/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Chaguo za cheti cha kuonyesha pasiwaya"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Washa Uwekaji kumbukumbu za WiFi kutumia Sauti"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Kudhibiti utafutaji wa Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Kuweka nasibu kwenye MAC iliyoimarishwa na Wi-Fi"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Kuweka kwa unasibu anwani za MAC zisizo na muunganisho endelevu wa Wi-Fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Iendelee kutumia data ya simu"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Kuongeza kasi kwa kutumia maunzi ili kusambaza mtandao"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Onyesha vifaa vya Bluetooth visivyo na majina"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Hali ya kuchaji kwa muda imedhibitiwa"</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> diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml index 2ac38301f142..4c49bc5b92c6 100644 --- a/packages/SettingsLib/res/values-ta/strings.xml +++ b/packages/SettingsLib/res/values-ta/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml index 2cd1bec94c15..37023d732010 100644 --- a/packages/SettingsLib/res/values-te/strings.xml +++ b/packages/SettingsLib/res/values-te/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -279,7 +280,7 @@ <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_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 ఎంపికలో SSID RSSI ప్రకారం చూపబడే Wi‑Fi లాగింగ్ స్థాయిని పెంచండి"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml index 7f26fc58ad17..ccb13f612992 100644 --- a/packages/SettingsLib/res/values-th/strings.xml +++ b/packages/SettingsLib/res/values-th/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml index 0962f932c08a..6043cb5f2813 100644 --- a/packages/SettingsLib/res/values-tl/strings.xml +++ b/packages/SettingsLib/res/values-tl/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Certification ng wireless display"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"I-enable ang Pagla-log sa Wi‑Fi Verbose"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Pag-throttle ng pag-scan ng Wi‑Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"MAC randomization na pinahusay ng Wi‑Fi"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <string name="mobile_data_always_on" msgid="8275958101875563572">"Palaging aktibo ang mobile data"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Hardware acceleration para sa pag-tether"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Ipakita ang mga Bluetooth device na walang pangalan"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml index 727dee883e37..5ab5278e0072 100644 --- a/packages/SettingsLib/res/values-tr/strings.xml +++ b/packages/SettingsLib/res/values-tr/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Kablosuz ekran sertifikası"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Kablosuz Ayrıntılı Günlük Kaydını etkinleştir"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Kablosuz ağ taramasını kısma"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Kablosuz için geliştirilmiş MAC rastgele seçimi"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Kablosuz kalıcı olmayan MAC rastgele hale getirme süreci"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobil veri her zaman etkin"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Tethering donanım hızlandırıcısı"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Adsız Bluetooth cihazlarını göster"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Şarj etme geçici olarak sınırlı"</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> diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml index dffc3d8f7d73..f264e6c8d05b 100644 --- a/packages/SettingsLib/res/values-uk/strings.xml +++ b/packages/SettingsLib/res/values-uk/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml index 90b3e7dc130b..b8a89313993a 100644 --- a/packages/SettingsLib/res/values-ur/strings.xml +++ b/packages/SettingsLib/res/values-ur/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml index dc005a438a62..05348fec031f 100644 --- a/packages/SettingsLib/res/values-uz/strings.xml +++ b/packages/SettingsLib/res/values-uz/strings.xml @@ -118,7 +118,7 @@ <string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Bekor qilish"</string> <string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Agar ulanishga ruxsat bersangiz, ulangan vaqtda kontakt va qo‘ng‘iroqlaringiz tarixiga kirishi mumkin."</string> <string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> bilan biriktirib bo‘lmadi."</string> - <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasiga ulanib bo‘lmadi, chunki PIN-kod yoki parol noto‘g‘ri kiritildi."</string> + <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qurilmasiga ulanilmadi, chunki PIN kod yoki parol xato kiritildi."</string> <string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"“<xliff:g id="DEVICE_NAME">%1$s</xliff:g>” qurilmasi bilan aloqa o‘rnatib bo‘lmayapti."</string> <string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> biriktirish so‘rovini rad qildi."</string> <string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Kompyuter"</string> @@ -156,7 +156,7 @@ <string name="launch_defaults_some" msgid="3631650616557252926">"Ba’zi birlamchi sozlamalar o‘rnatilgan"</string> <string name="launch_defaults_none" msgid="8049374306261262709">"Birlamchi sozlamalar belgilanmagan"</string> <string name="tts_settings" msgid="8130616705989351312">"Matnni nutqqa aylantirish sozlamalari"</string> - <string name="tts_settings_title" msgid="7602210956640483039">"Nutq sintezi"</string> + <string name="tts_settings_title" msgid="7602210956640483039">"Matnni nutqqa aylantirish"</string> <string name="tts_default_rate_title" msgid="3964187817364304022">"Nutq tezligi"</string> <string name="tts_default_rate_summary" msgid="3781937042151716987">"Matnni o‘qish tezligi"</string> <string name="tts_default_pitch_title" msgid="6988592215554485479">"Ohang"</string> @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Simsiz monitor sertifikatlari"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Batafsil Wi-Fi jurnali"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Wi‑Fi tarmoqni taqsimlab skanlash"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Wi‑Fi tarmoqdagi tasodifiy MAC manzil"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Wi‑Fi MAC manzilini muddatli tasodiflash"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Mobil internet doim yoniq tursin"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"Modem rejimida apparatli tezlashtirish"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth qurilmalarini nomlarisiz ko‘rsatish"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> – Quvvatlash vaqtincha cheklangan"</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> diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml index d0c0fa24e0f0..c7f93386fac6 100644 --- a/packages/SettingsLib/res/values-vi/strings.xml +++ b/packages/SettingsLib/res/values-vi/strings.xml @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Chứng nhận hiển thị không dây"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Bật ghi nhật ký chi tiết Wi‑Fi"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"Hạn chế quét tìm Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Sử dụng địa chỉ MAC Wi‑Fi ngẫu nhiên"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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 các thiết bị Bluetooth không có tên"</string> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml index 2dc05f45d625..bab2079840ca 100644 --- a/packages/SettingsLib/res/values-zh-rCN/strings.xml +++ b/packages/SettingsLib/res/values-zh-rCN/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">"PIN码或配对密钥不正确,无法与<xliff:g id="DEVICE_NAME">%1$s</xliff:g>配对。"</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> @@ -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">"文字转语音 (TTS) 输出"</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> @@ -252,7 +252,8 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"无线显示认证"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"启用 WLAN 详细日志记录功能"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"WLAN 扫描调节"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"WLAN 增强型随机分配 MAC 地址功能"</string> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml index 56249053f245..ea19bd910357 100644 --- a/packages/SettingsLib/res/values-zh-rHK/strings.xml +++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml index 1215eb168ea7..0690a8ad8d26 100644 --- a/packages/SettingsLib/res/values-zh-rTW/strings.xml +++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml @@ -252,7 +252,8 @@ <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> + <!-- no translation found for wifi_enhanced_mac_randomization (882650208573834301) --> + <skip /> <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> @@ -453,7 +454,8 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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> + <!-- no translation found for power_charging_limited (7956120998372505295) --> + <skip /> <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> diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml index 825f173dd5eb..3a98feb62ef1 100644 --- a/packages/SettingsLib/res/values-zu/strings.xml +++ b/packages/SettingsLib/res/values-zu/strings.xml @@ -252,7 +252,7 @@ <string name="wifi_display_certification" msgid="1805579519992520381">"Ukunikezwa isitifiketi sokubukeka okungenantambo"</string> <string name="wifi_verbose_logging" msgid="1785910450009679371">"Nika amandlaukungena kwe-Wi-Fi Verbose"</string> <string name="wifi_scan_throttling" msgid="2985624788509913617">"I-throttling yokuskena kwe-Wi-Fi"</string> - <string name="wifi_enhanced_mac_randomization" msgid="5437378364995776979">"Okungahleliwe kwe-Wi-Fi ethuthukisiwe ye-MAC"</string> + <string name="wifi_enhanced_mac_randomization" msgid="882650208573834301">"Okungahleliwe kwe-MAC engaphikeleli ye-Wi‑Fi"</string> <string name="mobile_data_always_on" msgid="8275958101875563572">"Idatha yeselula ihlala isebenza"</string> <string name="tethering_hardware_offload" msgid="4116053719006939161">"I-Tethering hardware acceleration"</string> <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bonisa amadivayisi e-Bluetooth ngaphandle kwamagama"</string> @@ -453,7 +453,7 @@ <string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string> <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="power_charging_limited" msgid="7956120998372505295">"<xliff:g id="LEVEL">%1$s</xliff:g> - Ukushaja kukhawulelwe okwesikhashana"</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> diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminController.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminController.java index 6d7f8df8aeb0..a5373944474c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminController.java +++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminController.java @@ -16,6 +16,7 @@ package com.android.settingslib.enterprise; +import android.annotation.UserIdInt; import android.content.Context; import androidx.annotation.Nullable; @@ -28,10 +29,15 @@ import com.android.settingslib.RestrictedLockUtils; public interface ActionDisabledByAdminController { /** + * Sets the {@link ActionDisabledLearnMoreButtonLauncher}. + */ + void initialize(ActionDisabledLearnMoreButtonLauncher launcher); + + /** * Handles the adding and setting up of the learn more button. If button is not needed, then * this method can be left empty. */ - void setupLearnMoreButton(Context context, Object alertDialogBuilder); + void setupLearnMoreButton(Context context); /** * Returns the admin support dialog's title resource id. @@ -41,11 +47,11 @@ public interface ActionDisabledByAdminController { /** * Returns the admin support dialog's content string. */ - CharSequence getAdminSupportContentString( - Context context, @Nullable CharSequence supportMessage); + CharSequence getAdminSupportContentString(Context context, + @Nullable CharSequence supportMessage); /** * Updates the enforced admin */ - void updateEnforcedAdmin(RestrictedLockUtils.EnforcedAdmin admin, int adminUserId); + void updateEnforcedAdmin(RestrictedLockUtils.EnforcedAdmin admin, @UserIdInt int adminUserId); } diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerFactory.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerFactory.java index 7eecd1994d0d..da42e330b8b4 100644 --- a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerFactory.java +++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerFactory.java @@ -19,29 +19,30 @@ package com.android.settingslib.enterprise; import static android.app.admin.DevicePolicyManager.DEVICE_OWNER_TYPE_FINANCED; import android.app.admin.DevicePolicyManager; +import android.content.Context; /** * A factory that returns the relevant instance of {@link ActionDisabledByAdminController}. */ -public class ActionDisabledByAdminControllerFactory { +public final class ActionDisabledByAdminControllerFactory { /** * Returns the relevant instance of {@link ActionDisabledByAdminController}. */ - public static ActionDisabledByAdminController createInstance( - DevicePolicyManager dpm, - ActionDisabledLearnMoreButtonLauncher helper, - DeviceAdminStringProvider deviceAdminStringProvider) { - if (isFinancedDevice(dpm)) { - return new FinancedDeviceActionDisabledByAdminController( - helper, deviceAdminStringProvider); - } - return new ManagedDeviceActionDisabledByAdminController( - helper, deviceAdminStringProvider); + public static ActionDisabledByAdminController createInstance(Context context, + DeviceAdminStringProvider stringProvider) { + return isFinancedDevice(context) + ? new FinancedDeviceActionDisabledByAdminController(stringProvider) + : new ManagedDeviceActionDisabledByAdminController(stringProvider); } - private static boolean isFinancedDevice(DevicePolicyManager dpm) { + private static boolean isFinancedDevice(Context context) { + DevicePolicyManager dpm = context.getSystemService(DevicePolicyManager.class); return dpm.isDeviceManaged() && dpm.getDeviceOwnerType( dpm.getDeviceOwnerComponentOnAnyUser()) == DEVICE_OWNER_TYPE_FINANCED; } + + private ActionDisabledByAdminControllerFactory() { + throw new UnsupportedOperationException("provides only static methods"); + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncher.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncher.java index 65b91f129c95..78a42bef2d7b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncher.java +++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncher.java @@ -16,29 +16,100 @@ package com.android.settingslib.enterprise; +import static java.util.Objects.requireNonNull; + +import android.content.ComponentName; import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.UserHandle; +import android.os.UserManager; -import com.android.settingslib.RestrictedLockUtils; +import com.android.internal.annotations.VisibleForTesting; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; /** - * Helper interface meant to set up the "Learn more" button in the action disabled dialog. + * Helper class meant to set up the "Learn more" button in the action disabled dialog. */ -public interface ActionDisabledLearnMoreButtonLauncher { +public abstract class ActionDisabledLearnMoreButtonLauncher { /** * Sets up a "learn more" button which shows a screen with device policy settings */ - void setupLearnMoreButtonToShowAdminPolicies( - Context context, - Object alertDialogBuilder, - int enforcementAdminUserId, - RestrictedLockUtils.EnforcedAdmin enforcedAdmin); + public final void setupLearnMoreButtonToShowAdminPolicies(Context context, + int enforcementAdminUserId, EnforcedAdmin enforcedAdmin) { + requireNonNull(context, "context cannot be null"); + requireNonNull(enforcedAdmin, "enforcedAdmin cannot be null"); + + // The "Learn more" button appears only if the restriction is enforced by an admin in the + // same profile group. Otherwise the admin package and its policies are not accessible to + // the current user. + if (isSameProfileGroup(context, enforcementAdminUserId)) { + setLearnMoreButton(() -> showAdminPolicies(context, enforcedAdmin)); + } + } /** * Sets up a "learn more" button which launches a help page */ - void setupLearnMoreButtonToLaunchHelpPage( - Context context, - Object alertDialogBuilder, - String url); + public final void setupLearnMoreButtonToLaunchHelpPage(Context context, String url) { + requireNonNull(context, "context cannot be null"); + requireNonNull(url, "url cannot be null"); + + setLearnMoreButton(() -> showHelpPage(context, url)); + } + + /** + * Sets the "learning more" button. + * + * @param action action to be run when the button is tapped. + */ + public abstract void setLearnMoreButton(Runnable action); + + /** + * Launches the settings page with info about the given admin. + */ + protected abstract void launchShowAdminPolicies(Context context, UserHandle user, + ComponentName admin); + + /** + * Launches the settings page that shows all admins. + */ + protected abstract void launchShowAdminSettings(Context context); + + /** + * Callback to finish the activity associated with the launcher. + */ + protected void finishSelf() { + } + + @VisibleForTesting + protected boolean isSameProfileGroup(Context context, int enforcementAdminUserId) { + UserManager um = context.getSystemService(UserManager.class); + + return um.isSameProfileGroup(enforcementAdminUserId, um.getUserHandle()); + } + + /** + * Shows the help page using the given {@code url}. + */ + @VisibleForTesting + public void showHelpPage(Context context, String url) { + context.startActivityAsUser(createLearnMoreIntent(url), UserHandle.of(context.getUserId())); + finishSelf(); + } + + private void showAdminPolicies(Context context, EnforcedAdmin enforcedAdmin) { + if (enforcedAdmin.component != null) { + launchShowAdminPolicies(context, enforcedAdmin.user, enforcedAdmin.component); + } else { + launchShowAdminSettings(context); + } + finishSelf(); + } + + private static Intent createLearnMoreIntent(String url) { + return new Intent(Intent.ACTION_VIEW, Uri.parse(url)).setFlags( + Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + } } diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/BaseActionDisabledByAdminController.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/BaseActionDisabledByAdminController.java new file mode 100644 index 000000000000..dd71557ef148 --- /dev/null +++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/BaseActionDisabledByAdminController.java @@ -0,0 +1,56 @@ +/* + * 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.enterprise; + +import static java.util.Objects.requireNonNull; + +import android.annotation.UserIdInt; + +import com.android.internal.util.Preconditions; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + +/** + * Base class for {@link ActionDisabledByAdminController} implementations. + */ +abstract class BaseActionDisabledByAdminController + implements ActionDisabledByAdminController { + + protected @UserIdInt int mEnforcementAdminUserId; + protected EnforcedAdmin mEnforcedAdmin; + protected ActionDisabledLearnMoreButtonLauncher mLauncher; + protected final DeviceAdminStringProvider mStringProvider; + + BaseActionDisabledByAdminController(DeviceAdminStringProvider stringProvider) { + mStringProvider = stringProvider; + } + + @Override + public final void initialize(ActionDisabledLearnMoreButtonLauncher launcher) { + mLauncher = requireNonNull(launcher, "launcher cannot be null"); + } + + @Override + public final void updateEnforcedAdmin(EnforcedAdmin admin, int adminUserId) { + assertInitialized(); + mEnforcementAdminUserId = adminUserId; + mEnforcedAdmin = requireNonNull(admin, "admin cannot be null"); + } + + protected final void assertInitialized() { + Preconditions.checkState(mLauncher != null, "must call initialize() first"); + } +} diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/FinancedDeviceActionDisabledByAdminController.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/FinancedDeviceActionDisabledByAdminController.java index cd816e88f080..2ed0dc46b340 100644 --- a/packages/SettingsLib/src/com/android/settingslib/enterprise/FinancedDeviceActionDisabledByAdminController.java +++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/FinancedDeviceActionDisabledByAdminController.java @@ -16,52 +16,31 @@ package com.android.settingslib.enterprise; -import static java.util.Objects.requireNonNull; - -import android.annotation.UserIdInt; import android.content.Context; import androidx.annotation.Nullable; -import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; - /** * An {@link ActionDisabledByAdminController} to be used with financed devices. */ -public class FinancedDeviceActionDisabledByAdminController - implements ActionDisabledByAdminController { - - private @UserIdInt int mEnforcementAdminUserId; - private EnforcedAdmin mEnforcedAdmin; - private final ActionDisabledLearnMoreButtonLauncher mHelper; - private final DeviceAdminStringProvider mDeviceAdminStringProvider; +final class FinancedDeviceActionDisabledByAdminController + extends BaseActionDisabledByAdminController { - FinancedDeviceActionDisabledByAdminController( - ActionDisabledLearnMoreButtonLauncher helper, - DeviceAdminStringProvider deviceAdminStringProvider) { - mHelper = requireNonNull(helper, "helper cannot be null"); - mDeviceAdminStringProvider = requireNonNull(deviceAdminStringProvider, - "deviceAdminStringProvider cannot be null"); + FinancedDeviceActionDisabledByAdminController(DeviceAdminStringProvider stringProvider) { + super(stringProvider); } @Override - public void updateEnforcedAdmin(EnforcedAdmin admin, int adminUserId) { - mEnforcementAdminUserId = adminUserId; - mEnforcedAdmin = requireNonNull(admin, "admin cannot be null"); - } + public void setupLearnMoreButton(Context context) { + assertInitialized(); - @Override - public void setupLearnMoreButton(Context context, Object alertDialogBuilder) { - mHelper.setupLearnMoreButtonToShowAdminPolicies( - context, - alertDialogBuilder, - mEnforcementAdminUserId, + mLauncher.setupLearnMoreButtonToShowAdminPolicies(context, mEnforcementAdminUserId, mEnforcedAdmin); } @Override public String getAdminSupportTitle(@Nullable String restriction) { - return mDeviceAdminStringProvider.getDisabledByPolicyTitleForFinancedDevice(); + return mStringProvider.getDisabledByPolicyTitleForFinancedDevice(); } @Override diff --git a/packages/SettingsLib/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminController.java b/packages/SettingsLib/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminController.java index 70e19f97028b..df6bab74e014 100644 --- a/packages/SettingsLib/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminController.java +++ b/packages/SettingsLib/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminController.java @@ -16,55 +16,39 @@ package com.android.settingslib.enterprise; -import static java.util.Objects.requireNonNull; - -import android.annotation.UserIdInt; import android.app.admin.DevicePolicyManager; import android.content.Context; import android.os.UserManager; import android.text.TextUtils; -import com.android.settingslib.RestrictedLockUtils; +import androidx.annotation.Nullable; + /** * An {@link ActionDisabledByAdminController} to be used with managed devices. */ -class ManagedDeviceActionDisabledByAdminController implements - ActionDisabledByAdminController { - private @UserIdInt int mEnforcementAdminUserId; - private RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin; - private final ActionDisabledLearnMoreButtonLauncher mHelper; - private final DeviceAdminStringProvider mStringProvider; +final class ManagedDeviceActionDisabledByAdminController + extends BaseActionDisabledByAdminController { - ManagedDeviceActionDisabledByAdminController( - ActionDisabledLearnMoreButtonLauncher helper, - DeviceAdminStringProvider stringProvider) { - mHelper = requireNonNull(helper); - mStringProvider = requireNonNull(stringProvider); + ManagedDeviceActionDisabledByAdminController(DeviceAdminStringProvider stringProvider) { + super(stringProvider); } @Override - public void updateEnforcedAdmin(RestrictedLockUtils.EnforcedAdmin admin, int adminUserId) { - mEnforcementAdminUserId = adminUserId; - mEnforcedAdmin = requireNonNull(admin, "admin cannot be null"); - } + public void setupLearnMoreButton(Context context) { + assertInitialized(); - @Override - public void setupLearnMoreButton(Context context, Object alertDialogBuilder) { String url = mStringProvider.getLearnMoreHelpPageUrl(); if (TextUtils.isEmpty(url)) { - mHelper.setupLearnMoreButtonToShowAdminPolicies( - context, - alertDialogBuilder, - mEnforcementAdminUserId, + mLauncher.setupLearnMoreButtonToShowAdminPolicies(context, mEnforcementAdminUserId, mEnforcedAdmin); } else { - mHelper.setupLearnMoreButtonToLaunchHelpPage(context, alertDialogBuilder, url); + mLauncher.setupLearnMoreButtonToLaunchHelpPage(context, url); } } @Override - public String getAdminSupportTitle(String restriction) { + public String getAdminSupportTitle(@Nullable String restriction) { if (restriction == null) { return mStringProvider.getDefaultDisabledByPolicyTitle(); } @@ -88,9 +72,8 @@ class ManagedDeviceActionDisabledByAdminController implements @Override public CharSequence getAdminSupportContentString(Context context, CharSequence supportMessage) { - if (supportMessage != null) { - return supportMessage; - } - return mStringProvider.getDefaultDisabledByPolicyContent(); + return supportMessage != null + ? supportMessage + : mStringProvider.getDefaultDisabledByPolicyContent(); } } diff --git a/packages/SettingsLib/tests/robotests/Android.bp b/packages/SettingsLib/tests/robotests/Android.bp index 63cfe59a1051..2d1a516f4f11 100644 --- a/packages/SettingsLib/tests/robotests/Android.bp +++ b/packages/SettingsLib/tests/robotests/Android.bp @@ -45,6 +45,7 @@ android_robolectric_test { "SettingsLib-robo-testutils", "androidx.test.core", "androidx.core_core", + "testng", // TODO: remove once JUnit on Android provides assertThrows ], java_resource_dirs: ["config"], instrumentation_for: "SettingsLibShell", diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java index f52335489415..d8f4d7f31e55 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java @@ -30,6 +30,7 @@ import static org.mockito.Mockito.when; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; +import android.bluetooth.BluetoothStatusCodes; import android.content.Context; import android.graphics.drawable.BitmapDrawable; import android.media.AudioManager; @@ -738,7 +739,7 @@ public class CachedBluetoothDeviceTest { doAnswer(invocation -> alias[0]).when(mDevice).getAlias(); doAnswer(invocation -> { alias[0] = (String) invocation.getArguments()[0]; - return true; + return BluetoothStatusCodes.SUCCESS; }).when(mDevice).setAlias(anyString()); when(mDevice.getName()).thenReturn(DEVICE_NAME); CachedBluetoothDevice cachedBluetoothDevice = diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerTestUtils.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerTestUtils.java index 4b517906aaa7..e57335fbd3c5 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerTestUtils.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledByAdminControllerTestUtils.java @@ -16,51 +16,81 @@ package com.android.settingslib.enterprise; -import static com.google.common.truth.Truth.assertThat; +import static com.google.common.truth.Truth.assertWithMessage; -import android.app.Activity; +import android.content.ComponentName; import android.content.Context; +import android.os.UserHandle; +import android.util.DebugUtils; -import androidx.appcompat.app.AlertDialog; - -import com.android.settingslib.RestrictedLockUtils; +import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; /** * Utils related to the action disabled by admin dialogs. */ -class ActionDisabledByAdminControllerTestUtils { - static final int LEARN_MORE_ACTION_NONE = 0; - static final int LEARN_MORE_ACTION_SHOW_ADMIN_POLICIES = 1; - static final int LEARN_MORE_ACTION_LAUNCH_HELP_PAGE = 2; +// NOTE: must be public because of DebugUtils.constantToString() call +public final class ActionDisabledByAdminControllerTestUtils { + + static final int ENFORCEMENT_ADMIN_USER_ID = 123; + static final UserHandle ENFORCEMENT_ADMIN_USER = UserHandle.of(ENFORCEMENT_ADMIN_USER_ID); + + static final String SUPPORT_MESSAGE = "support message"; + + static final ComponentName ADMIN_COMPONENT = + new ComponentName("some.package.name", "some.package.name.SomeClass"); + static final EnforcedAdmin ENFORCED_ADMIN = new EnforcedAdmin( + ADMIN_COMPONENT, UserHandle.of(ENFORCEMENT_ADMIN_USER_ID)); + static final EnforcedAdmin ENFORCED_ADMIN_WITHOUT_COMPONENT = new EnforcedAdmin( + /* component= */ null, UserHandle.of(ENFORCEMENT_ADMIN_USER_ID)); + + static final String URL = "https://testexample.com"; + + // NOTE: fields below must be public because of DebugUtils.constantToString() call + public static final int LEARN_MORE_ACTION_NONE = 0; + public static final int LEARN_MORE_ACTION_SHOW_ADMIN_POLICIES = 1; + public static final int LEARN_MORE_ACTION_SHOW_ADMIN_SETTINGS = 2; + public static final int LEARN_MORE_ACTION_LAUNCH_HELP_PAGE = 3; private int mLearnMoreButtonAction = LEARN_MORE_ACTION_NONE; ActionDisabledLearnMoreButtonLauncher createLearnMoreButtonLauncher() { return new ActionDisabledLearnMoreButtonLauncher() { + + @Override + public void setLearnMoreButton(Runnable action) { + action.run(); + } + @Override - public void setupLearnMoreButtonToShowAdminPolicies(Context context, - Object alertDialogBuilder, int enforcementAdminUserId, - RestrictedLockUtils.EnforcedAdmin enforcedAdmin) { + protected void launchShowAdminPolicies(Context context, UserHandle user, + ComponentName admin) { mLearnMoreButtonAction = LEARN_MORE_ACTION_SHOW_ADMIN_POLICIES; } @Override - public void setupLearnMoreButtonToLaunchHelpPage(Context context, - Object alertDialogBuilder, String url) { + protected void launchShowAdminSettings(Context context) { + mLearnMoreButtonAction = LEARN_MORE_ACTION_SHOW_ADMIN_SETTINGS; + } + + @Override + public void showHelpPage(Context context, String url) { mLearnMoreButtonAction = LEARN_MORE_ACTION_LAUNCH_HELP_PAGE; } + + @Override + protected boolean isSameProfileGroup(Context context, int enforcementAdminUserId) { + return true; + } }; } void assertLearnMoreAction(int learnMoreActionShowAdminPolicies) { - assertThat(learnMoreActionShowAdminPolicies).isEqualTo(mLearnMoreButtonAction); + assertWithMessage("action").that(actionToString(mLearnMoreButtonAction)) + .isEqualTo(actionToString(learnMoreActionShowAdminPolicies)); } - AlertDialog createAlertDialog(ActionDisabledByAdminController mController, Activity activity) { - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - mController.setupLearnMoreButton(activity, builder); - AlertDialog alertDialog = builder.create(); - alertDialog.show(); - return alertDialog; + private static String actionToString(int action) { + return DebugUtils.constantToString(ActionDisabledByAdminControllerTestUtils.class, + "LEARN_MORE_ACTION_", action); } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncherTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncherTest.java new file mode 100644 index 000000000000..7014da0df0bf --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ActionDisabledLearnMoreButtonLauncherTest.java @@ -0,0 +1,175 @@ +/* + * 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.enterprise; + +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ADMIN_COMPONENT; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ENFORCED_ADMIN; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ENFORCED_ADMIN_WITHOUT_COMPONENT; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ENFORCEMENT_ADMIN_USER; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ENFORCEMENT_ADMIN_USER_ID; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.URL; + +import static com.google.common.truth.Truth.assertWithMessage; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.testng.Assert.assertThrows; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.UserHandle; +import android.os.UserManager; + +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.Spy; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; +import org.robolectric.RobolectricTestRunner; + +@RunWith(RobolectricTestRunner.class)// NOTE: this test doesn't need RoboElectric... +public final class ActionDisabledLearnMoreButtonLauncherTest { + + private static final int CONTEXT_USER_ID = -ENFORCEMENT_ADMIN_USER_ID; + private static final UserHandle CONTEXT_USER = UserHandle.of(CONTEXT_USER_ID); + + @Rule + public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + + @Mock + private Context mContext; + + @Mock + private UserManager mUserManager; + + @Spy + private ActionDisabledLearnMoreButtonLauncher mLauncher; + + @Captor + private ArgumentCaptor<Runnable> mLearnMoreActionCaptor; + + @Captor + private ArgumentCaptor<Intent> mIntentCaptor; + + @Before + public void setUp() { + when(mContext.getUserId()).thenReturn(CONTEXT_USER_ID); + when(mUserManager.getUserHandle()).thenReturn(CONTEXT_USER_ID); + when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager); + } + + @Test + public void testSetupLearnMoreButtonToShowAdminPolicies_nullContext() { + assertThrows(NullPointerException.class, + () -> mLauncher.setupLearnMoreButtonToShowAdminPolicies(/* context= */ null, + ENFORCEMENT_ADMIN_USER_ID, ENFORCED_ADMIN)); + } + + @Test + public void testSetupLearnMoreButtonToShowAdminPolicies_nullEnforcedAdmin() { + assertThrows(NullPointerException.class, + () -> mLauncher.setupLearnMoreButtonToShowAdminPolicies(/* context= */ null, + ENFORCEMENT_ADMIN_USER_ID, /* enforcedAdmin= */ null)); + } + + @Test + public void testSetupLearnMoreButtonToShowAdminPolicies_differentProfileGroup() { + mockDifferentProfileGroup(); + + mLauncher.setupLearnMoreButtonToShowAdminPolicies(mContext, ENFORCEMENT_ADMIN_USER_ID, + ENFORCED_ADMIN); + + verify(mLauncher, never()).setLearnMoreButton(any()); + } + + @Test + public void testSetupLearnMoreButtonToShowAdminPolicies_sameProfileGroup_noComponent() { + mockSameProfileGroup(); + + mLauncher.setupLearnMoreButtonToShowAdminPolicies(mContext, ENFORCEMENT_ADMIN_USER_ID, + ENFORCED_ADMIN_WITHOUT_COMPONENT); + tapLearnMore(); + + verify(mLauncher, never()).launchShowAdminPolicies(any(), any(), any()); + verify(mLauncher).launchShowAdminSettings(mContext); + verifyFinishSelf(); + } + + @Test + public void testSetupLearnMoreButtonToShowAdminPolicies_sameProfileGroup_withComponent() { + mockSameProfileGroup(); + + mLauncher.setupLearnMoreButtonToShowAdminPolicies(mContext, ENFORCEMENT_ADMIN_USER_ID, + ENFORCED_ADMIN); + tapLearnMore(); + + verify(mLauncher).launchShowAdminPolicies(mContext, ENFORCEMENT_ADMIN_USER, + ADMIN_COMPONENT); + verify(mLauncher, never()).launchShowAdminSettings(any()); + verifyFinishSelf(); + } + + @Test + public void testSetupLearnMoreButtonToLaunchHelpPage_nullContext() { + assertThrows(NullPointerException.class, + () -> mLauncher.setupLearnMoreButtonToLaunchHelpPage(/* context= */ null, URL)); + } + + @Test + public void testSetupLearnMoreButtonToLaunchHelpPage_nullUrl() { + assertThrows(NullPointerException.class, + () -> mLauncher.setupLearnMoreButtonToLaunchHelpPage(mContext, /* url= */ null)); + } + + @Test + public void testSetupLearnMoreButtonToLaunchHelpPage() { + mLauncher.setupLearnMoreButtonToLaunchHelpPage(mContext, URL); + tapLearnMore(); + + verify(mContext).startActivityAsUser(mIntentCaptor.capture(), eq(CONTEXT_USER)); + Intent intent = mIntentCaptor.getValue(); + assertWithMessage("wrong url on intent %s", intent).that(intent.getData()) + .isEqualTo(Uri.parse(URL)); + verifyFinishSelf(); + } + + private void mockDifferentProfileGroup() { + // No need to mock anything - isSameProfileGroup() will return false by default + } + + private void mockSameProfileGroup() { + when(mUserManager.isSameProfileGroup(ENFORCEMENT_ADMIN_USER_ID, CONTEXT_USER_ID)) + .thenReturn(true); + } + + private void tapLearnMore() { + verify(mLauncher).setLearnMoreButton(mLearnMoreActionCaptor.capture()); + mLearnMoreActionCaptor.getValue().run(); + } + + private void verifyFinishSelf() { + verify(mLauncher).finishSelf(); + } +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/FakeDeviceAdminStringProvider.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/FakeDeviceAdminStringProvider.java index 8c07d7535810..be3e9fcf45ea 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/FakeDeviceAdminStringProvider.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/FakeDeviceAdminStringProvider.java @@ -30,6 +30,8 @@ class FakeDeviceAdminStringProvider implements DeviceAdminStringProvider { static final String DEFAULT_DISABLED_BY_POLICY_CONTENT = "default_disabled_by_policy_content"; static final String DEFAULT_DISABLED_BY_POLICY_TITLE_FINANCED_DEVICE = "default_disabled_by_policy_title_financed_device"; + static final DeviceAdminStringProvider DEFAULT_DEVICE_ADMIN_STRING_PROVIDER = + new FakeDeviceAdminStringProvider(/* url = */ null); private final String mUrl; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/FinancedDeviceActionDisabledByAdminControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/FinancedDeviceActionDisabledByAdminControllerTest.java index 2fe2262edd2c..7b08fee9ac91 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/FinancedDeviceActionDisabledByAdminControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/FinancedDeviceActionDisabledByAdminControllerTest.java @@ -16,22 +16,21 @@ package com.android.settingslib.enterprise; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ENFORCED_ADMIN; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ENFORCEMENT_ADMIN_USER_ID; import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.LEARN_MORE_ACTION_SHOW_ADMIN_POLICIES; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.SUPPORT_MESSAGE; +import static com.android.settingslib.enterprise.FakeDeviceAdminStringProvider.DEFAULT_DEVICE_ADMIN_STRING_PROVIDER; import static com.android.settingslib.enterprise.FakeDeviceAdminStringProvider.DEFAULT_DISABLED_BY_POLICY_TITLE_FINANCED_DEVICE; import static com.google.common.truth.Truth.assertThat; import android.app.Activity; -import android.app.Dialog; -import android.content.ComponentName; import android.content.Context; -import android.os.UserHandle; -import androidx.appcompat.app.AlertDialog; import androidx.test.core.app.ApplicationProvider; import com.android.settingslib.R; -import com.android.settingslib.RestrictedLockUtils; import org.junit.Before; import org.junit.Test; @@ -41,73 +40,46 @@ import org.robolectric.android.controller.ActivityController; @RunWith(RobolectricTestRunner.class) public class FinancedDeviceActionDisabledByAdminControllerTest { - private static final int ENFORCEMENT_ADMIN_USER_ID = 123; - private static final ComponentName ADMIN_COMPONENT = - new ComponentName("some.package.name", "some.package.name.SomeClass"); - private static final String SUPPORT_MESSAGE = "support message"; - private static final DeviceAdminStringProvider DEVICE_ADMIN_STRING_PROVIDER = - new FakeDeviceAdminStringProvider(/* url = */ null); - private static final RestrictedLockUtils.EnforcedAdmin ENFORCED_ADMIN = - new RestrictedLockUtils.EnforcedAdmin( - ADMIN_COMPONENT, UserHandle.of(ENFORCEMENT_ADMIN_USER_ID)); private final Context mContext = ApplicationProvider.getApplicationContext(); private final Activity mActivity = ActivityController.of(new Activity()).get(); private final ActionDisabledByAdminControllerTestUtils mTestUtils = new ActionDisabledByAdminControllerTestUtils(); - private final ActionDisabledLearnMoreButtonLauncher mLauncher = - mTestUtils.createLearnMoreButtonLauncher(); + private final FinancedDeviceActionDisabledByAdminController mController = + new FinancedDeviceActionDisabledByAdminController( + DEFAULT_DEVICE_ADMIN_STRING_PROVIDER); @Before public void setUp() { mActivity.setTheme(R.style.Theme_AppCompat_DayNight); + + mController.initialize(mTestUtils.createLearnMoreButtonLauncher()); + mController.updateEnforcedAdmin(ENFORCED_ADMIN, ENFORCEMENT_ADMIN_USER_ID); + } @Test public void setupLearnMoreButton_negativeButtonSet() { - FinancedDeviceActionDisabledByAdminController mController = createController(mLauncher); - AlertDialog alertDialog = mTestUtils.createAlertDialog(mController, mActivity); - - alertDialog.getButton(Dialog.BUTTON_NEUTRAL).performClick(); + mController.setupLearnMoreButton(mContext); mTestUtils.assertLearnMoreAction(LEARN_MORE_ACTION_SHOW_ADMIN_POLICIES); } @Test public void getAdminSupportTitleResource_works() { - FinancedDeviceActionDisabledByAdminController mController = createController(); - assertThat(mController.getAdminSupportTitle(null)) .isEqualTo(DEFAULT_DISABLED_BY_POLICY_TITLE_FINANCED_DEVICE); } @Test public void getAdminSupportContentString_withSupportMessage_returnsSupportMessage() { - FinancedDeviceActionDisabledByAdminController mController = createController(); - assertThat(mController.getAdminSupportContentString(mContext, SUPPORT_MESSAGE)) .isEqualTo(SUPPORT_MESSAGE); } @Test public void getAdminSupportContentString_noSupportMessage_returnsNull() { - FinancedDeviceActionDisabledByAdminController mController = createController(); - assertThat(mController.getAdminSupportContentString(mContext, /* supportMessage= */ null)) .isNull(); } - - private FinancedDeviceActionDisabledByAdminController createController() { - return createController(mLauncher); - } - - private FinancedDeviceActionDisabledByAdminController createController( - ActionDisabledLearnMoreButtonLauncher buttonHelper) { - FinancedDeviceActionDisabledByAdminController controller = - new FinancedDeviceActionDisabledByAdminController( - buttonHelper, - DEVICE_ADMIN_STRING_PROVIDER); - controller.updateEnforcedAdmin(ENFORCED_ADMIN, ENFORCEMENT_ADMIN_USER_ID); - return controller; - } } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminControllerTest.java index eb1dc963f62f..19f6aa1d55a6 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/enterprise/ManagedDeviceActionDisabledByAdminControllerTest.java @@ -16,8 +16,12 @@ package com.android.settingslib.enterprise; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ENFORCED_ADMIN; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.ENFORCEMENT_ADMIN_USER_ID; import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.LEARN_MORE_ACTION_LAUNCH_HELP_PAGE; import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.LEARN_MORE_ACTION_SHOW_ADMIN_POLICIES; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.SUPPORT_MESSAGE; +import static com.android.settingslib.enterprise.ActionDisabledByAdminControllerTestUtils.URL; import static com.android.settingslib.enterprise.FakeDeviceAdminStringProvider.DEFAULT_DISABLED_BY_POLICY_CONTENT; import static com.android.settingslib.enterprise.FakeDeviceAdminStringProvider.DEFAULT_DISABLED_BY_POLICY_TITLE; import static com.android.settingslib.enterprise.FakeDeviceAdminStringProvider.DISALLOW_ADJUST_VOLUME_TITLE; @@ -25,15 +29,12 @@ import static com.android.settingslib.enterprise.FakeDeviceAdminStringProvider.D import static com.google.common.truth.Truth.assertThat; import android.app.Activity; -import android.app.Dialog; -import android.content.ComponentName; -import android.os.UserHandle; +import android.content.Context; import android.os.UserManager; -import androidx.appcompat.app.AlertDialog; +import androidx.test.core.app.ApplicationProvider; import com.android.settingslib.R; -import com.android.settingslib.RestrictedLockUtils; import org.junit.Before; import org.junit.Test; @@ -43,23 +44,15 @@ import org.robolectric.android.controller.ActivityController; @RunWith(RobolectricTestRunner.class) public class ManagedDeviceActionDisabledByAdminControllerTest { - private static final int ENFORCEMENT_ADMIN_USER_ID = 123; - private static final ComponentName ADMIN_COMPONENT = - new ComponentName("some.package.name", "some.package.name.SomeClass"); - private static final String SUPPORT_MESSAGE = "support message"; + private static final String RESTRICTION = UserManager.DISALLOW_ADJUST_VOLUME; - private static final String URL = "https://testexample.com"; private static final String EMPTY_URL = ""; - private static final RestrictedLockUtils.EnforcedAdmin ENFORCED_ADMIN = - new RestrictedLockUtils.EnforcedAdmin( - ADMIN_COMPONENT, UserHandle.of(ENFORCEMENT_ADMIN_USER_ID)); private static final String SUPPORT_TITLE_FOR_RESTRICTION = DISALLOW_ADJUST_VOLUME_TITLE; + private final Context mContext = ApplicationProvider.getApplicationContext(); private final Activity mActivity = ActivityController.of(new Activity()).get(); private final ActionDisabledByAdminControllerTestUtils mTestUtils = new ActionDisabledByAdminControllerTestUtils(); - private final ActionDisabledLearnMoreButtonLauncher mLauncher = - mTestUtils.createLearnMoreButtonLauncher(); @Before public void setUp() { @@ -68,68 +61,63 @@ public class ManagedDeviceActionDisabledByAdminControllerTest { @Test public void setupLearnMoreButton_validUrl_negativeButtonSet() { - ManagedDeviceActionDisabledByAdminController mController = - createController(mLauncher, URL); - AlertDialog alertDialog = mTestUtils.createAlertDialog(mController, mActivity); + ManagedDeviceActionDisabledByAdminController controller = createController(URL); - alertDialog.getButton(Dialog.BUTTON_NEUTRAL).performClick(); + controller.setupLearnMoreButton(mContext); mTestUtils.assertLearnMoreAction(LEARN_MORE_ACTION_LAUNCH_HELP_PAGE); } @Test public void setupLearnMoreButton_noUrl_negativeButtonSet() { - ManagedDeviceActionDisabledByAdminController mController = - createController(mLauncher, EMPTY_URL); - AlertDialog alertDialog = mTestUtils.createAlertDialog(mController, mActivity); + ManagedDeviceActionDisabledByAdminController controller = createController(EMPTY_URL); - alertDialog.getButton(Dialog.BUTTON_NEUTRAL).performClick(); + controller.setupLearnMoreButton(mContext); mTestUtils.assertLearnMoreAction(LEARN_MORE_ACTION_SHOW_ADMIN_POLICIES); } @Test public void getAdminSupportTitleResource_noRestriction_works() { - ManagedDeviceActionDisabledByAdminController mController = createController(); + ManagedDeviceActionDisabledByAdminController controller = createController(); - assertThat(mController.getAdminSupportTitle(null)) + assertThat(controller.getAdminSupportTitle(null)) .isEqualTo(DEFAULT_DISABLED_BY_POLICY_TITLE); } @Test public void getAdminSupportTitleResource_withRestriction_works() { - ManagedDeviceActionDisabledByAdminController mController = createController(); + ManagedDeviceActionDisabledByAdminController controller = createController(); - assertThat(mController.getAdminSupportTitle(RESTRICTION)) + assertThat(controller.getAdminSupportTitle(RESTRICTION)) .isEqualTo(SUPPORT_TITLE_FOR_RESTRICTION); } @Test public void getAdminSupportContentString_withSupportMessage_returnsSupportMessage() { - ManagedDeviceActionDisabledByAdminController mController = createController(); + ManagedDeviceActionDisabledByAdminController controller = createController(); - assertThat(mController.getAdminSupportContentString(mActivity, SUPPORT_MESSAGE)) + assertThat(controller.getAdminSupportContentString(mActivity, SUPPORT_MESSAGE)) .isEqualTo(SUPPORT_MESSAGE); } @Test public void getAdminSupportContentString_noSupportMessage_returnsDefault() { - ManagedDeviceActionDisabledByAdminController mController = createController(); + ManagedDeviceActionDisabledByAdminController controller = createController(); - assertThat(mController.getAdminSupportContentString(mActivity, /* supportMessage= */ null)) + assertThat(controller.getAdminSupportContentString(mActivity, /* supportMessage= */ null)) .isEqualTo(DEFAULT_DISABLED_BY_POLICY_CONTENT); } private ManagedDeviceActionDisabledByAdminController createController() { - return createController(mLauncher, /* url= */ null); + return createController(/* url= */ null); } - private ManagedDeviceActionDisabledByAdminController createController( - ActionDisabledLearnMoreButtonLauncher buttonHelper, String url) { + private ManagedDeviceActionDisabledByAdminController createController(String url) { ManagedDeviceActionDisabledByAdminController controller = new ManagedDeviceActionDisabledByAdminController( - buttonHelper, new FakeDeviceAdminStringProvider(url)); + controller.initialize(mTestUtils.createLearnMoreButtonLauncher()); controller.updateEnforcedAdmin(ENFORCED_ADMIN, ENFORCEMENT_ADMIN_USER_ID); return controller; } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index bce576d1e1d8..dd9a6eee7327 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -310,20 +310,29 @@ public class SettingsProvider extends ContentProvider { private static final Set<String> sAllSecureSettings = new ArraySet<>(); private static final Set<String> sReadableSecureSettings = new ArraySet<>(); + private static final ArrayMap<String, Integer> sReadableSecureSettingsWithMaxTargetSdk = + new ArrayMap<>(); static { - Settings.Secure.getPublicSettings(sAllSecureSettings, sReadableSecureSettings); + Settings.Secure.getPublicSettings(sAllSecureSettings, sReadableSecureSettings, + sReadableSecureSettingsWithMaxTargetSdk); } private static final Set<String> sAllSystemSettings = new ArraySet<>(); private static final Set<String> sReadableSystemSettings = new ArraySet<>(); + private static final ArrayMap<String, Integer> sReadableSystemSettingsWithMaxTargetSdk = + new ArrayMap<>(); static { - Settings.System.getPublicSettings(sAllSystemSettings, sReadableSystemSettings); + Settings.System.getPublicSettings(sAllSystemSettings, sReadableSystemSettings, + sReadableSystemSettingsWithMaxTargetSdk); } private static final Set<String> sAllGlobalSettings = new ArraySet<>(); private static final Set<String> sReadableGlobalSettings = new ArraySet<>(); + private static final ArrayMap<String, Integer> sReadableGlobalSettingsWithMaxTargetSdk = + new ArrayMap<>(); static { - Settings.Global.getPublicSettings(sAllGlobalSettings, sReadableGlobalSettings); + Settings.Global.getPublicSettings(sAllGlobalSettings, sReadableGlobalSettings, + sReadableGlobalSettingsWithMaxTargetSdk); } private final Object mLock = new Object(); @@ -2065,7 +2074,7 @@ public class SettingsProvider extends ContentProvider { } if ((ai.flags & ApplicationInfo.FLAG_TEST_ONLY) == 0) { // Skip checking readable annotations for test_only apps - checkReadableAnnotation(settingsType, settingName); + checkReadableAnnotation(settingsType, settingName, ai.targetSandboxVersion); } /** * some settings need additional permission check, this is to have a matching security @@ -2101,35 +2110,55 @@ public class SettingsProvider extends ContentProvider { /** * Check if the target settings key is readable. Reject if the caller app is trying to access a * settings key defined in the Settings.Secure, Settings.System or Settings.Global and is not - * annotated as @Readable. + * annotated as @Readable. Reject if the caller app is targeting an SDK level that is higher + * than the maxTargetSdk specified in the @Readable annotation. * Notice that a key string that is not defined in any of the Settings.* classes will still be * regarded as readable. */ - private void checkReadableAnnotation(int settingsType, String settingName) { + private void checkReadableAnnotation(int settingsType, String settingName, + int targetSdkVersion) { final Set<String> allFields; final Set<String> readableFields; + final ArrayMap<String, Integer> readableFieldsWithMaxTargetSdk; switch (settingsType) { case SETTINGS_TYPE_GLOBAL: allFields = sAllGlobalSettings; readableFields = sReadableGlobalSettings; + readableFieldsWithMaxTargetSdk = sReadableGlobalSettingsWithMaxTargetSdk; break; case SETTINGS_TYPE_SYSTEM: allFields = sAllSystemSettings; readableFields = sReadableSystemSettings; + readableFieldsWithMaxTargetSdk = sReadableSystemSettingsWithMaxTargetSdk; break; case SETTINGS_TYPE_SECURE: allFields = sAllSecureSettings; readableFields = sReadableSecureSettings; + readableFieldsWithMaxTargetSdk = sReadableSecureSettingsWithMaxTargetSdk; break; default: throw new IllegalArgumentException("Invalid settings type: " + settingsType); } - if (allFields.contains(settingName) && !readableFields.contains(settingName)) { - throw new SecurityException( - "Settings key: <" + settingName + "> is not readable. From S+, settings keys " - + "annotated with @hide are restricted to system_server and system " - + "apps only, unless they are annotated with @Readable."); + if (allFields.contains(settingName)) { + if (!readableFields.contains(settingName)) { + throw new SecurityException( + "Settings key: <" + settingName + "> is not readable. From S+, settings " + + "keys annotated with @hide are restricted to system_server and " + + "system apps only, unless they are annotated with @Readable." + ); + } else { + if (readableFieldsWithMaxTargetSdk.containsKey(settingName)) { + final int maxTargetSdk = readableFieldsWithMaxTargetSdk.get(settingName); + if (targetSdkVersion > maxTargetSdk) { + throw new SecurityException( + "Settings key: <" + settingName + "> is only readable to apps with " + + "targetSdkVersion lower than or equal to: " + + maxTargetSdk + ); + } + } + } } } diff --git a/packages/SoundPicker/res/values-fa/strings.xml b/packages/SoundPicker/res/values-fa/strings.xml index dc7c214977f2..769d5d53b657 100644 --- a/packages/SoundPicker/res/values-fa/strings.xml +++ b/packages/SoundPicker/res/values-fa/strings.xml @@ -18,7 +18,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="ringtone_default" msgid="798836092118824500">"آهنگ زنگ پیشفرض"</string> <string name="notification_sound_default" msgid="8133121186242636840">"صدای اعلان پیشفرض"</string> - <string name="alarm_sound_default" msgid="4787646764557462649">"صدای زنگ پیشفرض"</string> + <string name="alarm_sound_default" msgid="4787646764557462649">"صدای زنگ ساعت پیشفرض"</string> <string name="add_ringtone_text" msgid="6642389991738337529">"افزودن آهنگ زنگ"</string> <string name="add_alarm_text" msgid="3545497316166999225">"افزودن زنگ"</string> <string name="add_notification_text" msgid="4431129543300614788">"افزودن اعلان"</string> diff --git a/packages/SystemUI/animation/Android.bp b/packages/SystemUI/animation/Android.bp index 1b15d20d2c52..761b1f460bb5 100644 --- a/packages/SystemUI/animation/Android.bp +++ b/packages/SystemUI/animation/Android.bp @@ -36,6 +36,7 @@ android_library { static_libs: [ "PluginCoreLib", + "WindowManager-Shell", ], manifest: "AndroidManifest.xml", diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt index 2b8773783048..d185ba3615a9 100644 --- a/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt +++ b/packages/SystemUI/animation/src/com/android/systemui/animation/ActivityLaunchAnimator.kt @@ -5,13 +5,18 @@ import android.animation.AnimatorListenerAdapter import android.animation.ValueAnimator import android.app.ActivityManager import android.app.ActivityTaskManager +import android.app.AppGlobals import android.app.PendingIntent import android.content.Context import android.graphics.Matrix +import android.graphics.PorterDuff +import android.graphics.PorterDuffXfermode import android.graphics.Rect import android.graphics.RectF +import android.graphics.drawable.GradientDrawable import android.os.Looper import android.os.RemoteException +import android.os.UserHandle import android.util.Log import android.util.MathUtils import android.view.IRemoteAnimationFinishedCallback @@ -26,20 +31,25 @@ import android.view.animation.AnimationUtils import android.view.animation.PathInterpolator import com.android.internal.annotations.VisibleForTesting import com.android.internal.policy.ScreenDecorationsUtils +import com.android.wm.shell.startingsurface.SplashscreenContentDrawer +import com.android.wm.shell.startingsurface.SplashscreenContentDrawer.SplashScreenWindowAttrs import kotlin.math.roundToInt /** * A class that allows activities to be started in a seamless way from a view that is transforming * nicely into the starting window. */ -class ActivityLaunchAnimator(context: Context) { +class ActivityLaunchAnimator( + private val keyguardHandler: KeyguardHandler, + context: Context +) { private val TAG = this::class.java.simpleName companion object { const val ANIMATION_DURATION = 500L - const val ANIMATION_DURATION_FADE_OUT_CONTENT = 183L - const val ANIMATION_DURATION_FADE_IN_WINDOW = 217L - const val ANIMATION_DELAY_FADE_IN_WINDOW = 167L + private const val ANIMATION_DURATION_FADE_OUT_CONTENT = 150L + private const val ANIMATION_DURATION_FADE_IN_WINDOW = 183L + private const val ANIMATION_DELAY_FADE_IN_WINDOW = ANIMATION_DURATION_FADE_OUT_CONTENT private const val ANIMATION_DURATION_NAV_FADE_IN = 266L private const val ANIMATION_DURATION_NAV_FADE_OUT = 133L private const val ANIMATION_DELAY_NAV_FADE_IN = @@ -51,6 +61,8 @@ class ActivityLaunchAnimator(context: Context) { private val NAV_FADE_IN_INTERPOLATOR = PathInterpolator(0f, 0f, 0f, 1f) private val NAV_FADE_OUT_INTERPOLATOR = PathInterpolator(0.2f, 0f, 1f, 1f) + private val SRC_MODE = PorterDuffXfermode(PorterDuff.Mode.SRC) + /** * Given the [linearProgress] of a launch animation, return the linear progress of the * sub-animation starting [delay] ms after the launch animation and that lasts [duration]. @@ -65,6 +77,8 @@ class ActivityLaunchAnimator(context: Context) { } } + private val packageManager = AppGlobals.getPackageManager() + /** The interpolator used for the width, height, Y position and corner radius. */ private val animationInterpolator = AnimationUtils.loadInterpolator(context, R.interpolator.launch_animation_interpolator_y) @@ -73,6 +87,8 @@ class ActivityLaunchAnimator(context: Context) { private val animationInterpolatorX = AnimationUtils.loadInterpolator(context, R.interpolator.launch_animation_interpolator_x) + private val cornerRadii = FloatArray(8) + /** * Start an intent and animate the opening window. The intent will be started by running * [intentStarter], which should use the provided [RemoteAnimationAdapter] and return the launch @@ -104,15 +120,22 @@ class ActivityLaunchAnimator(context: Context) { Log.d(TAG, "Starting intent with a launch animation") val runner = Runner(controller) - val animationAdapter = RemoteAnimationAdapter( - runner, - ANIMATION_DURATION, - ANIMATION_DURATION - 150 /* statusBarTransitionDelay */ - ) + val isOnKeyguard = keyguardHandler.isOnKeyguard() + + // Pass the RemoteAnimationAdapter to the intent starter only if we are not on the keyguard. + val animationAdapter = if (!isOnKeyguard) { + RemoteAnimationAdapter( + runner, + ANIMATION_DURATION, + ANIMATION_DURATION - 150 /* statusBarTransitionDelay */ + ) + } else { + null + } // Register the remote animation for the given package to also animate trampoline // activity launches. - if (packageName != null) { + if (packageName != null && animationAdapter != null) { try { ActivityTaskManager.getService().registerRemoteAnimationForNextActivityStart( packageName, animationAdapter) @@ -122,20 +145,30 @@ class ActivityLaunchAnimator(context: Context) { } val launchResult = intentStarter(animationAdapter) - val willAnimate = launchResult == ActivityManager.START_TASK_TO_FRONT || - launchResult == ActivityManager.START_SUCCESS - Log.d(TAG, "launchResult=$launchResult willAnimate=$willAnimate") + // Only animate if the app is not already on top and will be opened, unless we are on the + // keyguard. + val willAnimate = + launchResult == ActivityManager.START_TASK_TO_FRONT || + launchResult == ActivityManager.START_SUCCESS || + (launchResult == ActivityManager.START_DELIVERED_TO_TOP && isOnKeyguard) + + Log.d(TAG, "launchResult=$launchResult willAnimate=$willAnimate isOnKeyguard=$isOnKeyguard") controller.callOnIntentStartedOnMainThread(willAnimate) // If we expect an animation, post a timeout to cancel it in case the remote animation is // never started. if (willAnimate) { runner.postTimeout() + + // Hide the keyguard using the launch animation instead of the default unlock animation. + if (isOnKeyguard) { + keyguardHandler.hideKeyguardWithAnimation(runner) + } } } - internal fun Controller.callOnIntentStartedOnMainThread(willAnimate: Boolean) { + private fun Controller.callOnIntentStartedOnMainThread(willAnimate: Boolean) { if (Looper.myLooper() != Looper.getMainLooper()) { this.launchContainer.context.mainExecutor.execute { this.onIntentStarted(willAnimate) @@ -179,6 +212,14 @@ class ActivityLaunchAnimator(context: Context) { fun startPendingIntent(animationAdapter: RemoteAnimationAdapter?): Int } + interface KeyguardHandler { + /** Whether we are currently on the keyguard or not. */ + fun isOnKeyguard(): Boolean + + /** Hide the keyguard and animate using [runner]. */ + fun hideKeyguardWithAnimation(runner: IRemoteAnimationRunner) + } + /** * A controller that takes care of applying the animation to an expanding view. * @@ -260,10 +301,7 @@ class ActivityLaunchAnimator(context: Context) { var right: Int, var topCornerRadius: Float = 0f, - var bottomCornerRadius: Float = 0f, - - var contentAlpha: Float = 1f, - var backgroundAlpha: Float = 1f + var bottomCornerRadius: Float = 0f ) { private val startTop = top private val startBottom = bottom @@ -303,6 +341,9 @@ class ActivityLaunchAnimator(context: Context) { val centerY: Float get() = top + height / 2f + + /** Whether the expanded view should be visible or hidden. */ + var visible: Boolean = true } @VisibleForTesting @@ -337,17 +378,17 @@ class ActivityLaunchAnimator(context: Context) { override fun onAnimationStart( @WindowManager.TransitionOldType transit: Int, - remoteAnimationTargets: Array<out RemoteAnimationTarget>, - remoteAnimationWallpaperTargets: Array<out RemoteAnimationTarget>, - remoteAnimationNonAppTargets: Array<out RemoteAnimationTarget>, - iRemoteAnimationFinishedCallback: IRemoteAnimationFinishedCallback + apps: Array<out RemoteAnimationTarget>?, + wallpapers: Array<out RemoteAnimationTarget>?, + nonApps: Array<out RemoteAnimationTarget>?, + iCallback: IRemoteAnimationFinishedCallback? ) { removeTimeout() // The animation was started too late and we already notified the controller that it // timed out. if (timedOut) { - invokeCallback(iRemoteAnimationFinishedCallback) + iCallback?.invoke() return } @@ -358,30 +399,29 @@ class ActivityLaunchAnimator(context: Context) { } context.mainExecutor.execute { - startAnimation(remoteAnimationTargets, remoteAnimationNonAppTargets, - iRemoteAnimationFinishedCallback) + startAnimation(apps, nonApps, iCallback) } } private fun startAnimation( - remoteAnimationTargets: Array<out RemoteAnimationTarget>, - remoteAnimationNonAppTargets: Array<out RemoteAnimationTarget>, - iCallback: IRemoteAnimationFinishedCallback + apps: Array<out RemoteAnimationTarget>?, + nonApps: Array<out RemoteAnimationTarget>?, + iCallback: IRemoteAnimationFinishedCallback? ) { Log.d(TAG, "Remote animation started") - val window = remoteAnimationTargets.firstOrNull { + val window = apps?.firstOrNull { it.mode == RemoteAnimationTarget.MODE_OPENING } if (window == null) { Log.d(TAG, "Aborting the animation as no window is opening") removeTimeout() - invokeCallback(iCallback) + iCallback?.invoke() controller.onLaunchAnimationCancelled() return } - val navigationBar = remoteAnimationNonAppTargets.firstOrNull { + val navigationBar = nonApps?.firstOrNull { it.windowType == WindowManager.LayoutParams.TYPE_NAVIGATION_BAR } @@ -425,22 +465,39 @@ class ActivityLaunchAnimator(context: Context) { 0f } + // We add an extra layer with the same color as the app splash screen background color, + // which is usually the same color of the app background. We first fade in this layer + // to hide the expanding view, then we fade it out with SRC mode to draw a hole in the + // launch container and reveal the opening window. + val windowBackgroundColor = extractSplashScreenBackgroundColor(window) + val windowBackgroundLayer = GradientDrawable().apply { + setColor(windowBackgroundColor) + alpha = 0 + } + // Update state. val animator = ValueAnimator.ofFloat(0f, 1f) this.animator = animator animator.duration = ANIMATION_DURATION animator.interpolator = Interpolators.LINEAR + val launchContainerOverlay = launchContainer.overlay animator.addListener(object : AnimatorListenerAdapter() { override fun onAnimationStart(animation: Animator?, isReverse: Boolean) { Log.d(TAG, "Animation started") controller.onLaunchAnimationStart(isExpandingFullyAbove) + + // Add the drawable to the launch container overlay. Overlays always draw + // drawables after views, so we know that it will be drawn above any view added + // by the controller. + launchContainerOverlay.add(windowBackgroundLayer) } override fun onAnimationEnd(animation: Animator?) { Log.d(TAG, "Animation ended") - invokeCallback(iCallback) + iCallback?.invoke() controller.onLaunchAnimationEnd(isExpandingFullyAbove) + launchContainerOverlay.remove(windowBackgroundLayer) } }) @@ -464,24 +521,61 @@ class ActivityLaunchAnimator(context: Context) { state.bottomCornerRadius = MathUtils.lerp(startBottomCornerRadius, endRadius, progress) - val contentAlphaProgress = getProgress(linearProgress, 0, - ANIMATION_DURATION_FADE_OUT_CONTENT) - state.contentAlpha = - 1 - CONTENT_FADE_OUT_INTERPOLATOR.getInterpolation(contentAlphaProgress) - - val backgroundAlphaProgress = getProgress(linearProgress, - ANIMATION_DELAY_FADE_IN_WINDOW, ANIMATION_DURATION_FADE_IN_WINDOW) - state.backgroundAlpha = - 1 - WINDOW_FADE_IN_INTERPOLATOR.getInterpolation(backgroundAlphaProgress) + // The expanding view can/should be hidden once it is completely coverred by the + // windowBackgroundLayer. + state.visible = + getProgress(linearProgress, 0, ANIMATION_DURATION_FADE_OUT_CONTENT) < 1 applyStateToWindow(window, state) + applyStateToWindowBackgroundLayer(windowBackgroundLayer, state, linearProgress) navigationBar?.let { applyStateToNavigationBar(it, state, linearProgress) } + + // If we started expanding the view, we make it 1 pixel smaller on all sides to + // avoid artefacts on the corners caused by anti-aliasing of the view background and + // the window background layer. + if (state.top != startTop && state.left != startLeft && + state.bottom != startBottom && state.right != startRight) { + state.top += 1 + state.left += 1 + state.right -= 1 + state.bottom -= 1 + } controller.onLaunchAnimationProgress(state, progress, linearProgress) } animator.start() } + /** Extract the background color of the app splash screen. */ + private fun extractSplashScreenBackgroundColor(window: RemoteAnimationTarget): Int { + val taskInfo = window.taskInfo + val windowPackage = taskInfo.topActivity.packageName + val userId = taskInfo.userId + val windowContext = context.createPackageContextAsUser( + windowPackage, Context.CONTEXT_RESTRICTED, UserHandle.of(userId)) + val activityInfo = taskInfo.topActivityInfo + val splashScreenThemeName = packageManager.getSplashScreenTheme(windowPackage, userId) + val splashScreenThemeId = if (splashScreenThemeName != null) { + windowContext.resources.getIdentifier(splashScreenThemeName, null, null) + } else { + 0 + } + + val themeResId = when { + splashScreenThemeId != 0 -> splashScreenThemeId + activityInfo.themeResource != 0 -> activityInfo.themeResource + else -> com.android.internal.R.style.Theme_DeviceDefault_DayNight + } + + if (themeResId != windowContext.themeResId) { + windowContext.setTheme(themeResId) + } + + val windowAttrs = SplashScreenWindowAttrs() + SplashscreenContentDrawer.getWindowAttrs(windowContext, windowAttrs) + return SplashscreenContentDrawer.peekWindowBGColor(windowContext, windowAttrs) + } + private fun applyStateToWindow(window: RemoteAnimationTarget, state: State) { val screenBounds = window.screenSpaceBounds val centerX = (screenBounds.left + screenBounds.right) / 2f @@ -519,8 +613,11 @@ class ActivityLaunchAnimator(context: Context) { ) // The scale will also be applied to the corner radius, so we divide by the scale to - // keep the original radius. - val cornerRadius = minOf(state.topCornerRadius, state.bottomCornerRadius) / scale + // keep the original radius. We use the max of (topCornerRadius, bottomCornerRadius) to + // make sure that the window does not draw itself behind the expanding view. This is + // especially important for lock screen animations, where the window is not clipped by + // the shade. + val cornerRadius = maxOf(state.topCornerRadius, state.bottomCornerRadius) / scale val params = SyncRtSurfaceTransactionApplier.SurfaceParams.Builder(window.leash) .withAlpha(1f) .withMatrix(matrix) @@ -533,6 +630,41 @@ class ActivityLaunchAnimator(context: Context) { transactionApplier.scheduleApply(params) } + private fun applyStateToWindowBackgroundLayer( + drawable: GradientDrawable, + state: State, + linearProgress: Float + ) { + // Update position. + drawable.setBounds(state.left, state.top, state.right, state.bottom) + + // Update radius. + cornerRadii[0] = state.topCornerRadius + cornerRadii[1] = state.topCornerRadius + cornerRadii[2] = state.topCornerRadius + cornerRadii[3] = state.topCornerRadius + cornerRadii[4] = state.bottomCornerRadius + cornerRadii[5] = state.bottomCornerRadius + cornerRadii[6] = state.bottomCornerRadius + cornerRadii[7] = state.bottomCornerRadius + drawable.cornerRadii = cornerRadii + + // We first fade in the background layer to hide the expanding view, then fade it out + // with SRC mode to draw a hole punch in the status bar and reveal the opening window. + val fadeInProgress = getProgress(linearProgress, 0, ANIMATION_DURATION_FADE_OUT_CONTENT) + if (fadeInProgress < 1) { + val alpha = CONTENT_FADE_OUT_INTERPOLATOR.getInterpolation(fadeInProgress) + drawable.alpha = (alpha * 0xFF).roundToInt() + drawable.setXfermode(null) + } else { + val fadeOutProgress = getProgress(linearProgress, + ANIMATION_DELAY_FADE_IN_WINDOW, ANIMATION_DURATION_FADE_IN_WINDOW) + val alpha = 1 - WINDOW_FADE_IN_INTERPOLATOR.getInterpolation(fadeOutProgress) + drawable.alpha = (alpha * 0xFF).roundToInt() + drawable.setXfermode(SRC_MODE) + } + } + private fun applyStateToNavigationBar( navigationBar: RemoteAnimationTarget, state: State, @@ -585,9 +717,9 @@ class ActivityLaunchAnimator(context: Context) { } } - private fun invokeCallback(iCallback: IRemoteAnimationFinishedCallback) { + private fun IRemoteAnimationFinishedCallback.invoke() { try { - iCallback.onAnimationFinished() + onAnimationFinished() } catch (e: RemoteException) { e.printStackTrace() } diff --git a/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt b/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt index ce9feede8759..4b655a1a1b02 100644 --- a/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt +++ b/packages/SystemUI/animation/src/com/android/systemui/animation/GhostedViewLaunchAnimatorController.kt @@ -4,8 +4,6 @@ import android.graphics.Canvas import android.graphics.ColorFilter import android.graphics.Matrix import android.graphics.PixelFormat -import android.graphics.PorterDuff -import android.graphics.PorterDuffXfermode import android.graphics.Rect import android.graphics.drawable.Drawable import android.graphics.drawable.GradientDrawable @@ -111,9 +109,7 @@ open class GhostedViewLaunchAnimatorController( } override fun onLaunchAnimationStart(isExpandingFullyAbove: Boolean) { - backgroundView = FrameLayout(launchContainer.context).apply { - forceHasOverlappingRendering(false) - } + backgroundView = FrameLayout(launchContainer.context) launchContainerOverlay.add(backgroundView) // We wrap the ghosted view background and use it to draw the expandable background. Its @@ -125,9 +121,7 @@ open class GhostedViewLaunchAnimatorController( // Create a ghost of the view that will be moving and fading out. This allows to fade out // the content before fading out the background. - ghostView = GhostView.addGhost(ghostedView, launchContainer).apply { - setLayerType(View.LAYER_TYPE_HARDWARE, null) - } + ghostView = GhostView.addGhost(ghostedView, launchContainer) val matrix = ghostView?.animationMatrix ?: Matrix.IDENTITY_MATRIX matrix.getValues(initialGhostViewMatrixValues) @@ -139,7 +133,18 @@ open class GhostedViewLaunchAnimatorController( linearProgress: Float ) { val ghostView = this.ghostView!! - ghostView.alpha = state.contentAlpha + val backgroundView = this.backgroundView!! + + if (!state.visible) { + if (ghostView.visibility == View.VISIBLE) { + // Making the ghost view invisible will make the ghosted view visible, so order is + // important here. + ghostView.visibility = View.INVISIBLE + ghostedView.visibility = View.INVISIBLE + backgroundView.visibility = View.INVISIBLE + } + return + } val scale = min(state.widthRatio, state.heightRatio) ghostViewMatrix.setValues(initialGhostViewMatrixValues) @@ -150,14 +155,12 @@ open class GhostedViewLaunchAnimatorController( ) ghostView.animationMatrix = ghostViewMatrix - val backgroundView = this.backgroundView!! backgroundView.top = state.top backgroundView.bottom = state.bottom backgroundView.left = state.left backgroundView.right = state.right val backgroundDrawable = backgroundDrawable!! - backgroundDrawable.alpha = (0xFF * state.backgroundAlpha).toInt() backgroundDrawable.wrapped?.let { setBackgroundCornerRadius(it, state.topCornerRadius, state.bottomCornerRadius) } @@ -168,6 +171,7 @@ open class GhostedViewLaunchAnimatorController( GhostView.removeGhost(ghostedView) launchContainerOverlay.remove(backgroundView) + ghostedView.visibility = View.VISIBLE ghostedView.invalidate() } @@ -203,10 +207,6 @@ open class GhostedViewLaunchAnimatorController( } private class WrappedDrawable(val wrapped: Drawable?) : Drawable() { - companion object { - private val SRC_MODE = PorterDuffXfermode(PorterDuff.Mode.SRC) - } - private var currentAlpha = 0xFF private var previousBounds = Rect() @@ -220,7 +220,6 @@ open class GhostedViewLaunchAnimatorController( wrapped.alpha = currentAlpha wrapped.bounds = bounds - setXfermode(wrapped, SRC_MODE) applyBackgroundRadii() wrapped.draw(canvas) @@ -230,7 +229,6 @@ open class GhostedViewLaunchAnimatorController( // background. wrapped.alpha = 0 wrapped.bounds = previousBounds - setXfermode(wrapped, null) restoreBackgroundRadii() } @@ -257,27 +255,6 @@ open class GhostedViewLaunchAnimatorController( wrapped?.colorFilter = filter } - private fun setXfermode(background: Drawable, mode: PorterDuffXfermode?) { - if (background is InsetDrawable) { - background.drawable?.let { setXfermode(it, mode) } - return - } - - if (background !is LayerDrawable) { - background.setXfermode(mode) - return - } - - // We set the xfermode on the first layer that is not a mask. Most of the time it will - // be the "background layer". - for (i in 0 until background.numberOfLayers) { - if (background.getId(i) != android.R.id.mask) { - background.getDrawable(i).setXfermode(mode) - break - } - } - } - fun setBackgroundRadius(topCornerRadius: Float, bottomCornerRadius: Float) { updateRadii(cornerRadii, topCornerRadius, bottomCornerRadius) invalidateSelf() diff --git a/packages/SystemUI/docs/qs-tiles.md b/packages/SystemUI/docs/qs-tiles.md index 521620935ddc..89c28a074c76 100644 --- a/packages/SystemUI/docs/qs-tiles.md +++ b/packages/SystemUI/docs/qs-tiles.md @@ -305,6 +305,7 @@ This section describes necessary and recommended steps when implementing a Quick * Inject a `Provider` for the tile created before. * Add a case to the `switch` with a unique String spec for the chosen tile. 5. In [SystemUI/res/values/config.xml](/packages/SystemUI/res/values/config.xml), modify `quick_settings_tiles_stock` and add the spec defined in the previous step. If necessary, add it also to `quick_settings_tiles_default`. The first one contains a list of all the tiles that SystemUI knows how to create (to show to the user in the customization screen). The second one contains only the default tiles that the user will experience on a fresh boot or after they reset their tiles. +6. In [SystemUI/res/values/tiles_states_strings.xml](/packages/SystemUI/res/values/tiles_states_strings.xml), add a new array for your tile. The name has to be `tile_states_<spec>`. Use a good description to help the translators. #### Abstract methods in QSTileImpl 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 f1c1477c5b0a..77018d736163 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 @@ -166,11 +166,13 @@ public interface QSTile { public boolean handlesLongClick = true; public boolean showRippleEffect = true; public Drawable sideViewCustomDrawable; + public String spec; public boolean copyTo(State other) { if (other == null) throw new IllegalArgumentException(); if (!other.getClass().equals(getClass())) throw new IllegalArgumentException(); - final boolean changed = !Objects.equals(other.icon, icon) + final boolean changed = !Objects.equals(other.spec, spec) + || !Objects.equals(other.icon, icon) || !Objects.equals(other.iconSupplier, iconSupplier) || !Objects.equals(other.label, label) || !Objects.equals(other.secondaryLabel, secondaryLabel) @@ -188,6 +190,7 @@ public interface QSTile { || !Objects.equals(other.handlesLongClick, handlesLongClick) || !Objects.equals(other.showRippleEffect, showRippleEffect) || !Objects.equals(other.sideViewCustomDrawable, sideViewCustomDrawable); + other.spec = spec; other.icon = icon; other.iconSupplier = iconSupplier; other.label = label; @@ -216,6 +219,7 @@ public interface QSTile { // This string may be used for CTS testing of tiles, so removing elements is discouraged. protected StringBuilder toStringBuilder() { final StringBuilder sb = new StringBuilder(getClass().getSimpleName()).append('['); + sb.append("spec=").append(spec); sb.append(",icon=").append(icon); sb.append(",iconSupplier=").append(iconSupplier); sb.append(",label=").append(label); diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml index 6f23f8c0b2b8..5346fb6c101a 100644 --- a/packages/SystemUI/res-keyguard/values-af/strings.xml +++ b/packages/SystemUI/res-keyguard/values-af/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans vinnig"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laai tans stadig"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimeer tans vir batterygesondheid"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laaiproses word tydelik beperk"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Koppel jou laaier."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Druk Kieslys om te ontsluit."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Netwerk is gesluit"</string> diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml index 62f955438e44..80486ba5225f 100644 --- a/packages/SystemUI/res-keyguard/values-am/strings.xml +++ b/packages/SystemUI/res-keyguard/values-am/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ኃይል በመሙላት ላይ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • በፍጥነት ኃይልን በመሙላት ላይ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • በዝግታ ኃይልን በመሙላት ላይ"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ለባትሪ ጤና ማመቻቸት"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ኃይል መሙላት ለጊዜው ተገድቧል"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"ኃይል መሙያዎን ያያይዙ።"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ለመክፈት ምናሌ ተጫን።"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"አውታረ መረብ ተቆልፏል"</string> diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml index c027f8df1f66..f1ae7d48a444 100644 --- a/packages/SystemUI/res-keyguard/values-ar/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن سريعًا"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • جارٍ الشحن ببطء"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • التحسين للحفاظ على سلامة البطارية"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • الشحن محدود مؤقتًا"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"توصيل جهاز الشحن."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"اضغط على \"القائمة\" لإلغاء التأمين."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"الشبكة مؤمّنة"</string> diff --git a/packages/SystemUI/res-keyguard/values-as/strings.xml b/packages/SystemUI/res-keyguard/values-as/strings.xml index 84a8afa04286..7bd41652f8f6 100644 --- a/packages/SystemUI/res-keyguard/values-as/strings.xml +++ b/packages/SystemUI/res-keyguard/values-as/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • চ্চার্জ কৰি থকা হৈছে"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • দ্ৰুত গতিৰে চ্চাৰ্জ কৰি থকা হৈছে"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • লাহে লাহে চ্চাৰ্জ কৰি থকা হৈছে"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • বেটাৰীৰ অৱস্থা অপ্টিমাইজ কৰি থকা হৈছে"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • চাৰ্জ কৰাটো সাময়িকভাৱে সীমিত কৰা হৈছে"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"আপোনাৰ চ্চার্জাৰ সংযোগ কৰক।"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"আনলক কৰিবলৈ মেনু টিপক।"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"নেটৱর্ক লক কৰা অৱস্থাত আছে"</string> diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml index e1846796dc2f..91c201402dc3 100644 --- a/packages/SystemUI/res-keyguard/values-az/strings.xml +++ b/packages/SystemUI/res-keyguard/values-az/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Enerji yığır"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sürətlə enerji yığır"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Yavaş enerji yığır"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Enerjiyə qənaət üçün optimallaşdırma"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Şarj müvəqqəti olaraq məhdudlaşdırılıb"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Adapteri qoşun."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Kilidi açmaq üçün Menyu düyməsinə basın."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Şəbəkə kilidlidir"</string> diff --git a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml index 4220526635f7..aa66e49c5136 100644 --- a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Puni se"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Brzo se puni"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sporo se puni"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimizuje se radi boljeg stanja baterije"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje je privremeno ograničeno"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Priključite punjač."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pritisnite Meni da biste otključali."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Mreža je zaključana"</string> diff --git a/packages/SystemUI/res-keyguard/values-be/strings.xml b/packages/SystemUI/res-keyguard/values-be/strings.xml index 4f8ce16e9106..3ddf19dff4b4 100644 --- a/packages/SystemUI/res-keyguard/values-be/strings.xml +++ b/packages/SystemUI/res-keyguard/values-be/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе зарадка"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе хуткая зарадка"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ідзе павольная зарадка"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Аптымізацыя стану акумулятара"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарадка часова абмежавана"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Падключыце зарадную прыладу."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Націсніце кнопку \"Меню\", каб разблакіраваць."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Сетка заблакіравана"</string> diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml index dc4ee693d89c..6bb98df334a5 100644 --- a/packages/SystemUI/res-keyguard/values-bg/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се бързо"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарежда се бавно"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Оптимизиране с цел състоянието на батерията"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зареждането временно е ограничено"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Свържете зарядното си устройство."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Натиснете „Меню“, за да отключите."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Мрежата е заключена"</string> diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml index 0c878b6e0175..6937fee2862f 100644 --- a/packages/SystemUI/res-keyguard/values-bn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml @@ -38,7 +38,8 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • চার্জ হচ্ছে"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • দ্রুত চার্জ হচ্ছে"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ধীরে চার্জ হচ্ছে"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ব্যাটারির চার্জ অপটিমাইজ করা হচ্ছে"</string> + <!-- no translation found for keyguard_plugged_in_charging_limited (6091488837901216962) --> + <skip /> <string name="keyguard_low_battery" msgid="1868012396800230904">"আপনার চার্জার সংযুক্ত করুন।"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"আনলক করতে মেনুতে টিপুন।"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"নেটওয়ার্ক লক করা আছে"</string> diff --git a/packages/SystemUI/res-keyguard/values-bs/strings.xml b/packages/SystemUI/res-keyguard/values-bs/strings.xml index 83ad38c74598..ab907be79666 100644 --- a/packages/SystemUI/res-keyguard/values-bs/strings.xml +++ b/packages/SystemUI/res-keyguard/values-bs/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Brzo punjenje"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sporo punjenje"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimiziranje radi očuvanja baterije"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje je privremeno ograničeno"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Priključite punjač."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pritisnite meni da otključate."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Mreža je zaključana"</string> diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml index 2e3b4af4a68f..90b7a34188e8 100644 --- a/packages/SystemUI/res-keyguard/values-ca/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant ràpidament"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està carregant lentament"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • S\'està optimitzant per preservar l\'estat de la bateria"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Càrrega limitada temporalment"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Connecta el carregador."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Prem Menú per desbloquejar."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"La xarxa està bloquejada"</string> diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml index 855d3f0eb968..ddfbeaf621a4 100644 --- a/packages/SystemUI/res-keyguard/values-cs/strings.xml +++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíjení"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Rychlé nabíjení"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pomalé nabíjení"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimalizace pro výdrž baterie"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíjení je dočasně omezeno"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Připojte dobíjecí zařízení."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Klávesy odemknete stisknutím tlačítka nabídky."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Síť je blokována"</string> diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml index b5955c7d61e1..8b686d7918ca 100644 --- a/packages/SystemUI/res-keyguard/values-da/strings.xml +++ b/packages/SystemUI/res-keyguard/values-da/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader hurtigt"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Oplader langsomt"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimerer batteritilstanden"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladningen er midlertidigt begrænset"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Tilslut din oplader."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Tryk på menuen for at låse op."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Netværket er låst"</string> diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml index d700df382ea9..a01e22a82e67 100644 --- a/packages/SystemUI/res-keyguard/values-de/strings.xml +++ b/packages/SystemUI/res-keyguard/values-de/strings.xml @@ -38,7 +38,8 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird geladen"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird schnell geladen"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wird langsam geladen"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimierung des Akkuzustands"</string> + <!-- no translation found for keyguard_plugged_in_charging_limited (6091488837901216962) --> + <skip /> <string name="keyguard_low_battery" msgid="1868012396800230904">"Ladegerät anschließen."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Zum Entsperren die Menütaste drücken."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Netzwerk gesperrt"</string> diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml index b3056981caaa..4e8250fbd502 100644 --- a/packages/SystemUI/res-keyguard/values-el/strings.xml +++ b/packages/SystemUI/res-keyguard/values-el/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Φόρτιση"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Γρήγορη φόρτιση"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Αργή φόρτιση"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Βελτιστοποίηση για τη διατήρηση της καλής κατάστασης της μπαταρίας"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Προσωρινός περιορισμός φόρτισης"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Συνδέστε τον φορτιστή."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Πατήστε \"Μενού\" για ξεκλείδωμα."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Κλειδωμένο δίκτυο"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml index 54c1a2b039a3..1abd3931ce7b 100644 --- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimising for battery health"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging temporarily limited"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Connect your charger."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml index d8591e260d0b..c3e8e61cf81d 100644 --- a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimising for battery health"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging temporarily limited"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Connect your charger."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml index 54c1a2b039a3..1abd3931ce7b 100644 --- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimising for battery health"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging temporarily limited"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Connect your charger."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml index 54c1a2b039a3..1abd3931ce7b 100644 --- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimising for battery health"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging temporarily limited"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Connect your charger."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string> diff --git a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml index 30f47d21b178..a2d0bb73d2e9 100644 --- a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml +++ b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging rapidly"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging slowly"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimizing for battery health"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Charging temporarily limited"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Connect your charger."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Press Menu to unlock."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Network locked"</string> diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml index 4ea99ccdd419..71c72a11fcd9 100644 --- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rápidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se está optimizando el estado de la batería"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga limitada temporalmente"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Conecta tu cargador."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Presiona Menú para desbloquear."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Bloqueada para la red"</string> diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml index b7384c5e3893..44e613cb650b 100644 --- a/packages/SystemUI/res-keyguard/values-es/strings.xml +++ b/packages/SystemUI/res-keyguard/values-es/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rápidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimizando para preservar el estado de la batería"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga limitada temporalmente"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Conecta el cargador."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pulsa el menú para desbloquear la pantalla."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Bloqueada para la red"</string> diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml index a01d30db30db..e1c4c156b55b 100644 --- a/packages/SystemUI/res-keyguard/values-et/strings.xml +++ b/packages/SystemUI/res-keyguard/values-et/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laadimine"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kiirlaadimine"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Aeglane laadimine"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimeerimine aku seisukorra põhjal"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laadimine on ajutiselt piiratud"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Ühendage laadija."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Vajutage avamiseks menüüklahvi."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Võrk on lukus"</string> diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml index 2742ac3de7a7..d51fa556ca6c 100644 --- a/packages/SystemUI/res-keyguard/values-eu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kargatzen"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Bizkor kargatzen"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mantso kargatzen"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimizatzen, bateria egoera onean mantentzeko"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Kargatzeko aukera mugatuta dago aldi baterako"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Konektatu kargagailua."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Desblokeatzeko, sakatu Menua."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Sarea blokeatuta dago"</string> diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml index 61e2e1fc78db..149b31323ab3 100644 --- a/packages/SystemUI/res-keyguard/values-fa/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • درحال شارژ شدن"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • درحال شارژ سریع"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • آهستهآهسته شارژ میشود"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • بهینهسازی برای سلامت باتری"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • شارژ موقتاً محدود شده است"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"شارژر را وصل کنید."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"برای باز کردن قفل روی «منو» فشار دهید."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"شبکه قفل شد"</string> diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml index 021de770f2c1..543235824346 100644 --- a/packages/SystemUI/res-keyguard/values-fi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan nopeasti"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ladataan hitaasti"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Akun kunnon optimointi"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lataamista rajoitettu väliaikaisesti"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Kytke laturi."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Poista lukitus painamalla Valikkoa."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Verkko lukittu"</string> diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml index d18690103c96..47bf4374dfeb 100644 --- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml @@ -38,7 +38,8 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"En recharge : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"En recharge rapide : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"En recharge lente : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimisation pour préserver la pile"</string> + <!-- no translation found for keyguard_plugged_in_charging_limited (6091488837901216962) --> + <skip /> <string name="keyguard_low_battery" msgid="1868012396800230904">"Branchez votre chargeur."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Appuyez sur la touche Menu pour déverrouiller l\'appareil."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Réseau verrouillé"</string> diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml index 3e52f5057f01..c1657cdbe4b1 100644 --- a/packages/SystemUI/res-keyguard/values-fr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge…"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge rapide…"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge lente…"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimisation pour préserver la batterie"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Recharge momentanément limitée"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Branchez votre chargeur."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Appuyez sur \"Menu\" pour déverrouiller le clavier."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Réseau verrouillé"</string> diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml index f8c5ebac9517..60a2ea40931d 100644 --- a/packages/SystemUI/res-keyguard/values-gl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando rapidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Cargando lentamente"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimizando a preservación da batería"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carga limitada temporalmente"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Conecta o cargador."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Preme Menú para desbloquear."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Bloqueada pola rede"</string> diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml index 8ec7ba595837..6a81b02688f7 100644 --- a/packages/SystemUI/res-keyguard/values-gu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml @@ -38,7 +38,8 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ચાર્જિંગ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ઝડપથી ચાર્જિંગ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ધીમેથી ચાર્જિંગ"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • બૅટરીની ક્ષમતા વધારવા ઑપ્ટિમાઇઝ કરી રહ્યાં છીએ"</string> + <!-- no translation found for keyguard_plugged_in_charging_limited (6091488837901216962) --> + <skip /> <string name="keyguard_low_battery" msgid="1868012396800230904">"તમારું ચાર્જર કનેક્ટ કરો."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"અનલૉક કરવા માટે મેનૂ દબાવો."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"નેટવર્ક લૉક થયું"</string> diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml index 5869078dc598..d0218f6bfb3e 100644 --- a/packages/SystemUI/res-keyguard/values-hi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज हो रहा है"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • तेज़ चार्ज हो रहा है"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • धीरे चार्ज हो रहा है"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • बैटरी की परफ़ॉर्मेंस बेहतर करने के लिए, ऑप्टिमाइज़ किया जा रहा है"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्जिंग कुछ समय के लिए रोकी गई"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"अपना चार्जर कनेक्ट करें."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"लॉक खोलने के लिए मेन्यू दबाएं."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"नेटवर्क लॉक किया हुआ है"</string> diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml index 7e0697337481..3f49d9696a79 100644 --- a/packages/SystemUI/res-keyguard/values-hr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • punjenje"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • brzo punjenje"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • sporo punjenje"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimiziranje radi zdravlja baterije"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Punjenje je privremeno ograničeno"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Priključite punjač."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pritisnite Izbornik da biste otključali."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Mreža je zaključana"</string> diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml index e6c10d821cdb..8f66c0879516 100644 --- a/packages/SystemUI/res-keyguard/values-hu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Töltés"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Gyors töltés"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lassú töltés"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Az akkumulátor élettartamának optimalizálása…"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Töltés ideiglenesen korlátozva"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Csatlakoztassa a töltőt."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"A feloldáshoz nyomja meg a Menü gombot."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Hálózat zárolva"</string> diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml index 43c6f2e88d0e..f91a0647043c 100644 --- a/packages/SystemUI/res-keyguard/values-hy/strings.xml +++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Լիցքավորում"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Արագ լիցքավորում"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Դանդաղ լիցքավորում"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Օպտիմալացվում է մարտկոցի պահպանման համար"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Լիցքավորումը ժամանակավորապես սահմանափակված է"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Միացրեք լիցքավորիչը:"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Ապակողպելու համար սեղմեք Ընտրացանկը:"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Ցանցը կողպված է"</string> diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml index 33aa228bd2a9..62370756e606 100644 --- a/packages/SystemUI/res-keyguard/values-in/strings.xml +++ b/packages/SystemUI/res-keyguard/values-in/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya dengan cepat"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengisi daya dengan lambat"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengoptimalkan untuk kesehatan baterai"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pengisian daya dibatasi untuk sementara"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Hubungkan pengisi daya."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Tekan Menu untuk membuka kunci."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Jaringan terkunci"</string> diff --git a/packages/SystemUI/res-keyguard/values-is/strings.xml b/packages/SystemUI/res-keyguard/values-is/strings.xml index bb8a908d20f7..d1436b926b7a 100644 --- a/packages/SystemUI/res-keyguard/values-is/strings.xml +++ b/packages/SystemUI/res-keyguard/values-is/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Í hleðslu"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hröð hleðsla"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hæg hleðsla"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Fínstillir fyrir rafhlöðuendingu"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hleðsla takmörkuð tímabundið"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Tengdu hleðslutækið."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Ýttu á valmyndarhnappinn til að taka úr lás."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Net læst"</string> diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml index c1baadf47de0..0497c4161367 100644 --- a/packages/SystemUI/res-keyguard/values-it/strings.xml +++ b/packages/SystemUI/res-keyguard/values-it/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • In carica"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica veloce"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica lenta"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ottimizzazione per integrità batteria"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ricarica momentaneamente limitata"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Collega il caricabatterie."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Premi Menu per sbloccare."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Rete bloccata"</string> diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml index 6ba69976ffbb..4e7ac49a25d1 100644 --- a/packages/SystemUI/res-keyguard/values-iw/strings.xml +++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה מהירה"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • בטעינה איטית"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • מופעלת אופטימיזציה לשמירה על תקינות הסוללה"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • הטעינה מוגבלת זמנית"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"כדאי לחבר את המטען."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"יש ללחוץ על \'תפריט\' כדי לבטל את הנעילה."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"הרשת נעולה"</string> diff --git a/packages/SystemUI/res-keyguard/values-ja/strings.xml b/packages/SystemUI/res-keyguard/values-ja/strings.xml index b4aea6182e65..a1d58b789712 100644 --- a/packages/SystemUI/res-keyguard/values-ja/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ja/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電中"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 急速充電中"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 低速充電中"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 電池の状態を最適化"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電は一時的に制限されています"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"充電してください。"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"メニューからロックを解除できます。"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"ネットワークがロックされました"</string> diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml index 7e1e59b9f445..509c2197722f 100644 --- a/packages/SystemUI/res-keyguard/values-ka/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • იტენება"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • სწრაფად იტენება"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ნელა იტენება"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ოპტიმიზაცია ბატარეის გამართულობისთვის"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • დატენვა დროებით შეზღუდულია"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"შეაერთეთ დამტენი."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"განსაბლოკად დააჭირეთ მენიუს."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"ქსელი ჩაკეტილია"</string> diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml index 8e701fe86430..2993425628c6 100644 --- a/packages/SystemUI/res-keyguard/values-kk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядталуда"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Жылдам зарядталуда"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Баяу зарядталуда"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батарея жұмысын оңтайландыру"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядтау уақытша шектелген"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Зарядтағышты қосыңыз."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Ашу үшін \"Мәзір\" пернесін басыңыз."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Желі құлыптаулы"</string> diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml index fb38bfd88bd4..e4a218f74195 100644 --- a/packages/SystemUI/res-keyguard/values-km/strings.xml +++ b/packages/SystemUI/res-keyguard/values-km/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្ម"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្មយ៉ាងឆាប់រហ័ស"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងសាកថ្មយឺត"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • កំពុងបង្កើនប្រសិទ្ធភាពគុណភាពថ្ម"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • បានដាក់កម្រិតការសាកថ្មជាបណ្ដោះអាសន្ន"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"សូមសាកថ្មរបស់អ្នក។"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ចុចម៉ឺនុយ ដើម្បីដោះសោ។"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"បណ្ដាញជាប់សោ"</string> diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml index 96865419cbf7..98b1af6b8710 100644 --- a/packages/SystemUI/res-keyguard/values-kn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ವೇಗವಾಗಿ ಚಾರ್ಜ್ಮಾಡಲಾಗುತ್ತಿದೆ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ನಿಧಾನವಾಗಿ ಚಾರ್ಜ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ಬ್ಯಾಟರಿಯ ಸುಸ್ಥಿತಿಗಾಗಿ ಆಪ್ಟಿಮೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ಚಾರ್ಜಿಂಗ್ ತಾತ್ಕಾಲಿಕವಾಗಿ ಸೀಮಿತವಾಗಿದೆ"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"ನಿಮ್ಮ ಚಾರ್ಜರ್ ಸಂಪರ್ಕಗೊಳಿಸಿ."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ಅನ್ಲಾಕ್ ಮಾಡಲು ಮೆನು ಒತ್ತಿರಿ."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"ನೆಟ್ವರ್ಕ್ ಲಾಕ್ ಆಗಿದೆ"</string> diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml index 7149cdf787b2..4afde2820679 100644 --- a/packages/SystemUI/res-keyguard/values-ko/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 충전 중"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 고속 충전 중"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 저속 충전 중"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 배터리 상태 최적화 중"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 충전이 일시적으로 제한됨"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"충전기를 연결하세요."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"잠금 해제하려면 메뉴를 누르세요."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"네트워크 잠김"</string> diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml index 5327c01e5471..c7a482909fec 100644 --- a/packages/SystemUI/res-keyguard/values-ky/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Кубатталууда"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Тез кубатталууда"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Жай кубатталууда"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батареянын кубатын үнөмдөө иштетилди"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Кубаттоо убактылуу чектелген"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Кубаттагычка туташтырыңыз."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Кулпуну ачуу үчүн Менюну басыңыз."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Тармак кулпуланган"</string> diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml index 0f662c3c7f38..65b0409ecb6a 100644 --- a/packages/SystemUI/res-keyguard/values-lo/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກແບບດ່ວນ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງສາກແບບຊ້າ"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ກຳລັງເພີ່ມປະສິດທິພາບເພື່ອສຸຂະພາບແບັດເຕີຣີ"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ຈຳກັດການສາກໄຟຊົ່ວຄາວ"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"ເຊື່ອມຕໍ່ສາຍສາກຂອງທ່ານ."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ກົດ \"ເມນູ\" ເພື່ອປົດລັອກ."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"ເຄືອຂ່າຍຖືກລັອກ"</string> diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml index cc8cdfd4ac1f..057eb450a4db 100644 --- a/packages/SystemUI/res-keyguard/values-lt/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Įkraunama"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Greitai įkraunama"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lėtai įkraunama"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimizuojama siekiant apsaugoti akumuliatorių"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Įkrovimas laikinai apribotas"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Prijunkite kroviklį."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Paspauskite meniu, jei norite atrakinti."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Tinklas užrakintas"</string> diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml index 88c52d9be8f7..6b474bd81920 100644 --- a/packages/SystemUI/res-keyguard/values-lv/strings.xml +++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek uzlāde"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek ātrā uzlāde"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Notiek lēnā uzlāde"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Akumulatora darbības optimizēšana"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Uzlāde īslaicīgi ierobežota"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Pievienojiet lādētāju."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Lai atbloķētu, nospiediet izvēlnes ikonu."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Tīkls ir bloķēts."</string> diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml index 66744e797b9c..95b0bc57a6f1 100644 --- a/packages/SystemUI/res-keyguard/values-mk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Се полни"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Брзо полнење"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Бавно полнење"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Се оптимизира за состојба на батерија"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Полнењето е привремено ограничено"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Поврзете го полначот."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Притиснете „Мени“ за отклучување."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Мрежата е заклучена"</string> diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml index 80761591e0bf..76ee66b82cce 100644 --- a/packages/SystemUI/res-keyguard/values-ml/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ചാർജ് ചെയ്യുന്നു"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • വേഗത്തിൽ ചാർജ് ചെയ്യുന്നു"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • പതുക്കെ ചാർജ് ചെയ്യുന്നു"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ബാറ്ററിയുടെ ആയുസിനായി ഒപ്റ്റിമൈസ് ചെയ്യുന്നു"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ചാർജ് ചെയ്യൽ താൽക്കാലികമായി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"നിങ്ങളുടെ ചാർജർ കണക്റ്റുചെയ്യുക."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"അൺലോക്കുചെയ്യാൻ മെനു അമർത്തുക."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"നെറ്റ്വർക്ക് ലോക്കുചെയ്തു"</string> diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml index 13c152f8f38b..110b711faa4a 100644 --- a/packages/SystemUI/res-keyguard/values-mn/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Цэнэглэж байна"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Хурдан цэнэглэж байна"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Удаан цэнэглэж байна"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Батарейн барилтыг оновчилж байна"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Цэнэглэхийг түр зуур хязгаарласан"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Цэнэглэгчээ холбоно уу."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Түгжээг тайлах бол цэсийг дарна уу."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Сүлжээ түгжигдсэн"</string> diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml index 1985127d4bda..3079010b3d11 100644 --- a/packages/SystemUI/res-keyguard/values-mr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज होत आहे"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • वेगाने चार्ज होत आहे"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • सावकाश चार्ज होत आहे"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • बॅटरीची क्षमता वाढवण्यासाठी ऑप्टिमाइझ करत आहे"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्जिंग तात्पुरते मर्यादित आहे"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"तुमचा चार्जर कनेक्ट करा."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"अनलॉक करण्यासाठी मेनू दाबा."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"नेटवर्क लॉक केले"</string> diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml index dcd460bf6c7a..82579d437806 100644 --- a/packages/SystemUI/res-keyguard/values-ms/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas dengan cepat"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mengecas dengan perlahan"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pengoptimuman untuk kesihatan bateri"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pengecasan terhad buat sementara waktu"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Sambungkan pengecas anda."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Tekan Menu untuk membuka kunci."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Rangkaian dikunci"</string> diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml index a31cccf18ceb..71729cf34447 100644 --- a/packages/SystemUI/res-keyguard/values-my/strings.xml +++ b/packages/SystemUI/res-keyguard/values-my/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • အားသွင်းနေသည်"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • အမြန်အားသွင်းနေသည်"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • နှေးကွေးစွာ အားသွင်းနေသည်"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ဘက်ထရီအခြေအနေကို အကောင်းဆုံးဖြစ်အောင် လုပ်နေသည်"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • အားသွင်းခြင်းကို လောလောဆယ် ကန့်သတ်ထားသည်"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"အားသွင်းကိရိယာကို ချိတ်ဆက်ပါ။"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"မီနူးကို နှိပ်၍ လော့ခ်ဖွင့်ပါ။"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"ကွန်ရက်ကို လော့ခ်ချထားသည်"</string> diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml index 8a3045aa656e..edc849a4bc69 100644 --- a/packages/SystemUI/res-keyguard/values-nb/strings.xml +++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader raskt"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lader sakte"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimaliserer batteritilstanden"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Lading er midlertidig begrenset"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Koble til en batterilader."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Trykk på menyknappen for å låse opp."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Nettverket er låst"</string> diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml index 707488df7c5b..48db0d964e1e 100644 --- a/packages/SystemUI/res-keyguard/values-ne/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml @@ -38,7 +38,8 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • चार्ज गरिँदै"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • द्रुत गतिमा चार्ज गरिँदै"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • मन्द गतिमा चार्ज गरिँदै"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ब्याट्री लामो समयसम्म टिक्ने बनाउन अप्टिमाइज गरिँदै छ"</string> + <!-- no translation found for keyguard_plugged_in_charging_limited (6091488837901216962) --> + <skip /> <string name="keyguard_low_battery" msgid="1868012396800230904">"तपाईंको चार्जर जोड्नुहोस्।"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"अनलक गर्न मेनु थिच्नुहोस्।"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"नेटवर्क लक भएको छ"</string> diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml index ed1ea379e5b2..45343ed0eb1b 100644 --- a/packages/SystemUI/res-keyguard/values-nl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladen"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Snel opladen"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Langzaam opladen"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimaliseren voor batterijduur"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Opladen tijdelijk beperkt"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Sluit de oplader aan."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Druk op Menu om te ontgrendelen."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Netwerk vergrendeld"</string> diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml index 385c13b4bc0e..33fd58c528e9 100644 --- a/packages/SystemUI/res-keyguard/values-or/strings.xml +++ b/packages/SystemUI/res-keyguard/values-or/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଚାର୍ଜ ହେଉଛି"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଦ୍ରୁତ ଭାବେ ଚାର୍ଜ ହେଉଛି"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଧୀରେ ଚାର୍ଜ ହେଉଛି"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ବ୍ୟାଟେରୀ ହେଲ୍ଥ ପାଇଁ ଅପ୍ଟିମାଇଜ୍ ହେଉଛି"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ଚାର୍ଜିଂ ଅସ୍ଥାୟୀ ଭାବେ ସୀମିତ କରାଯାଇଛି"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"ଆପଣଙ୍କ ଚାର୍ଜର୍ ସଂଯୋଗ କରନ୍ତୁ।"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ଅନଲକ୍ କରିବା ପାଇଁ ମେନୁକୁ ଦବାନ୍ତୁ।"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"ନେଟୱର୍କକୁ ଲକ୍ କରାଯାଇଛି"</string> diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml index 47b2881e11f6..3d2b518dc1c4 100644 --- a/packages/SystemUI/res-keyguard/values-pa/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml @@ -38,7 +38,8 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਤੇਜ਼ੀ ਨਾਲ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਹੌਲੀ-ਹੌਲੀ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ਬੈਟਰੀ ਦੀ ਸਥਿਤੀ ਲਈ ਅਨੁਕੂਲ ਬਣਾਇਆ ਜਾ ਰਿਹਾ ਹੈ"</string> + <!-- no translation found for keyguard_plugged_in_charging_limited (6091488837901216962) --> + <skip /> <string name="keyguard_low_battery" msgid="1868012396800230904">"ਆਪਣਾ ਚਾਰਜਰ ਕਨੈਕਟ ਕਰੋ।"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"ਅਣਲਾਕ ਕਰਨ ਲਈ \"ਮੀਨੂ\" ਦਬਾਓ।"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"ਨੈੱਟਵਰਕ ਲਾਕ ਕੀਤਾ ਗਿਆ"</string> diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml index 01427be041ad..57f17e79b352 100644 --- a/packages/SystemUI/res-keyguard/values-pl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ładowanie"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Szybkie ładowanie"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Wolne ładowanie"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optymalizuję, aby utrzymać baterię w dobrym stanie"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ładowanie tymczasowo ograniczone"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Podłącz ładowarkę."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Naciśnij Menu, aby odblokować."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Sieć zablokowana"</string> diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml index 29c46f8a592d..c17b987b2266 100644 --- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando lentamente"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Otimizando para integridade da bateria"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento temporariamente limitado"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Conecte o seu carregador."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pressione Menu para desbloquear."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Rede bloqueada"</string> diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml index b15c9dc20772..2bc5dbb79592 100644 --- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar…"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar rapidamente…"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A carregar lentamente…"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • A otimizar o estado da bateria"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento limitado temporariamente"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Ligue o carregador."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Prima Menu para desbloquear."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Rede bloqueada"</string> diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml index 29c46f8a592d..c17b987b2266 100644 --- a/packages/SystemUI/res-keyguard/values-pt/strings.xml +++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando rapidamente"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregando lentamente"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Otimizando para integridade da bateria"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Carregamento temporariamente limitado"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Conecte o seu carregador."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pressione Menu para desbloquear."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Rede bloqueada"</string> diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml index 868d9f770980..fac6d7dd9259 100644 --- a/packages/SystemUI/res-keyguard/values-ro/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă rapid"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se încarcă lent"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Se fac optimizări pentru buna funcționare a bateriei"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Încărcare limitată temporar"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Conectați încărcătorul."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Apăsați pe Meniu pentru a debloca."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Rețea blocată"</string> diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml index 24d762d00f5e..eb9d75100fe7 100644 --- a/packages/SystemUI/res-keyguard/values-ru/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"Идет зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"Идет быстрая зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"Идет медленная зарядка (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Оптимизация для увеличения срока службы батареи"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Зарядка временно ограничена"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Подключите зарядное устройство."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Для разблокировки нажмите \"Меню\"."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Сеть заблокирована"</string> diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml index 64609b302069..22670072efd0 100644 --- a/packages/SystemUI/res-keyguard/values-si/strings.xml +++ b/packages/SystemUI/res-keyguard/values-si/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ආරෝපණය වෙමින්"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • වේගයෙන් ආරෝපණය වෙමින්"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • සෙමින් ආරෝපණය වෙමින්"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • බැටරි ආයු කාලය වැඩි දියුණු කරමින්"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ආරෝපණය කිරීම තාවකාලිකව සීමා කර ඇත"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"ඔබගේ ආරෝපකයට සම්බන්ධ කරන්න."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"අගුලු හැරීමට මෙනුව ඔබන්න."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"ජාලය අගුළු දමා ඇත"</string> diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml index 98aa79a206f8..795eaba4820e 100644 --- a/packages/SystemUI/res-keyguard/values-sk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa rýchlo"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíja sa pomaly"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimalizuje sa na zaistenie dobrého stavu batérie"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nabíjanie je dočasne obmedzené"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Pripojte nabíjačku."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Odomknete stlačením tlačidla ponuky."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Sieť je zablokovaná"</string> diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml index cd41d9b76ebb..371d993d3a47 100644 --- a/packages/SystemUI/res-keyguard/values-sl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • polnjenje"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • hitro polnjenje"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • počasno polnjenje"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimizacija za ohranjanje zmogljivosti baterije"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Začasno omejeno polnjenje"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Priključite napajalnik."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Če želite odkleniti, pritisnite meni."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Omrežje je zaklenjeno"</string> diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml index 0ad97a490a26..2aaeecf814d9 100644 --- a/packages/SystemUI/res-keyguard/values-sq/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet me shpejtësi"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po karikohet ngadalë"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Po optimizohet për integritetin e baterisë"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Karikimi përkohësisht i kufizuar"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Lidh karikuesin."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Shtyp \"Meny\" për të shkyçur."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Rrjeti është i kyçur"</string> diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml index 7ca04ce8198a..757f630db8c5 100644 --- a/packages/SystemUI/res-keyguard/values-sr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуни се"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Брзо се пуни"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Споро се пуни"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Оптимизује се ради бољег стања батерије"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Пуњење је привремено ограничено"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Прикључите пуњач."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Притисните Мени да бисте откључали."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Мрежа је закључана"</string> diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml index 80323e6e381d..0b1efa84e369 100644 --- a/packages/SystemUI/res-keyguard/values-sv/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas snabbt"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddas långsamt"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Optimerar batteriets livslängd"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Laddning har begränsats tillfälligt"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Anslut laddaren."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Lås upp genom att trycka på Meny."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Nätverk låst"</string> diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml index da352620aace..fcf8edc34e49 100644 --- a/packages/SystemUI/res-keyguard/values-sw/strings.xml +++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji kwa kasi"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inachaji pole pole"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Inaboresha muda wa kutumia betri"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hali ya kuchaji kwa muda imedhibitiwa"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Unganisha chaja yako."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Bonyeza Menyu ili kufungua."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Mtandao umefungwa"</string> diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml index ca9257707b69..e5031c8213a3 100644 --- a/packages/SystemUI/res-keyguard/values-ta/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • சார்ஜாகிறது"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • வேகமாகச் சார்ஜாகிறது"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • மெதுவாகச் சார்ஜாகிறது"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • பேட்டரியின் ஆயுளை மேம்படுத்துகிறது"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • சார்ஜாவது தற்காலிகமாக வரம்பிடப்பட்டுள்ளது"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"சார்ஜரை இணைக்கவும்."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"திறக்க, மெனுவை அழுத்தவும்."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"நெட்வொர்க் பூட்டப்பட்டது"</string> diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml index 990253a7862f..217bc502f232 100644 --- a/packages/SystemUI/res-keyguard/values-te/strings.xml +++ b/packages/SystemUI/res-keyguard/values-te/strings.xml @@ -38,7 +38,8 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • ఛార్జ్ అవుతోంది"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • వేగంగా ఛార్జ్ అవుతోంది"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • నెమ్మదిగా ఛార్జ్ అవుతోంది"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • బ్యాటరీ జీవితకాలాన్ని పెంచడం కోసం ఆప్టిమైజ్ చేస్తోంది"</string> + <!-- no translation found for keyguard_plugged_in_charging_limited (6091488837901216962) --> + <skip /> <string name="keyguard_low_battery" msgid="1868012396800230904">"మీ ఛార్జర్ను కనెక్ట్ చేయండి."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"అన్లాక్ చేయడానికి మెనుని నొక్కండి."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"నెట్వర్క్ లాక్ చేయబడింది"</string> diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml index 4fd3dd177469..b0774c28935c 100644 --- a/packages/SystemUI/res-keyguard/values-th/strings.xml +++ b/packages/SystemUI/res-keyguard/values-th/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จ"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จอย่างเร็ว"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังชาร์จอย่างช้าๆ"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • กำลังเพิ่มประสิทธิภาพแบตเตอรี่"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • จำกัดการชาร์จชั่วคราว"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"เสียบที่ชาร์จของคุณ"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"กด \"เมนู\" เพื่อปลดล็อก"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"เครือข่ายถูกล็อก"</string> diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml index 8f26ea97bb61..a342e9c66739 100644 --- a/packages/SystemUI/res-keyguard/values-tl/strings.xml +++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Nagcha-charge"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mabilis na nagcha-charge"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mabagal na nagcha-charge"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ino-optimize para sa tagal ng baterya"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pansamantalang limitado ang pag-charge"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Ikonekta ang iyong charger."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Pindutin ang Menu upang i-unlock."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Naka-lock ang network"</string> diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml index 53a1cc7f8608..c10400b96bbb 100644 --- a/packages/SystemUI/res-keyguard/values-tr/strings.xml +++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Şarj oluyor"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Hızlı şarj oluyor"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Yavaş şarj oluyor"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Pil sağlığı için optimize ediliyor"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Şarj etme geçici olarak sınırlı"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Şarj cihazınızı takın."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Kilidi açmak için Menü\'ye basın."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Ağ kilitli"</string> diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml index 62950e29c70e..88a4d02423ae 100644 --- a/packages/SystemUI/res-keyguard/values-uk/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Заряджання"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Швидке заряджання"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Повільне заряджання"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Оптимізація для збереження заряду акумулятора"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Заряджання тимчасово обмежено"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Підключіть зарядний пристрій."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Натисніть меню, щоб розблокувати."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Мережу заблоковано"</string> diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml index 4ca6338ee9fa..96c7c1a24969 100644 --- a/packages/SystemUI/res-keyguard/values-ur/strings.xml +++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • چارج ہو رہا ہے"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • تیزی سے چارج ہو رہا ہے"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • آہستہ چارج ہو رہا ہے"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • بیٹری کی صحت کے لیے بہتر بنایا جا رہا ہے"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • چارجنگ عارضی طور پر محدود ہے"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"اپنا چارجر منسلک کریں۔"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"غیر مقفل کرنے کیلئے مینو دبائیں۔"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"نیٹ ورک مقفل ہو گیا"</string> diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml index f2ca159bff0d..87452ddd414a 100644 --- a/packages/SystemUI/res-keyguard/values-uz/strings.xml +++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Quvvat olmoqda"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Tezkor quvvat olmoqda"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Sekin quvvat olmoqda"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Batareya uchun optimizatsiya"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Quvvatlash vaqtincha cheklangan"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Quvvatlash moslamasini ulang."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Qulfdan chiqarish uchun Menyu tugmasini bosing."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Tarmoq qulflangan"</string> diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml index 32210664d383..6052f40822dc 100644 --- a/packages/SystemUI/res-keyguard/values-vi/strings.xml +++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc nhanh"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang sạc chậm"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Đang tối ưu hóa để cải thiện độ bền của pin"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Mức sạc tạm thời bị giới hạn"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Kết nối bộ sạc của bạn."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Nhấn vào Menu để mở khóa."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Mạng đã bị khóa"</string> diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml index a3921d0a5657..c8e5efc6b9b7 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml @@ -38,7 +38,8 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在充电"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在快速充电"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在慢速充电"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在针对电池状况进行优化"</string> + <!-- no translation found for keyguard_plugged_in_charging_limited (6091488837901216962) --> + <skip /> <string name="keyguard_low_battery" msgid="1868012396800230904">"请连接充电器。"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"按“菜单”即可解锁。"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"网络已锁定"</string> diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml index b4006e8b7341..ec0500ffea5d 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在充電"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 正在快速充電"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> •正在慢速充電"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 優化電池效能"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電暫時受限"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"請連接充電器。"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"按下 [選單] 即可解鎖。"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"網絡已鎖定"</string> diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml index 757bf56f3050..d950d4013455 100644 --- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電中"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 快速充電中"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 慢速充電中"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 最佳化調整電池狀態"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • 充電功能暫時受到限制"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"請連接充電器。"</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"按選單鍵解鎖。"</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"網路已鎖定"</string> diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml index d87622af27bf..aefd7448d40e 100644 --- a/packages/SystemUI/res-keyguard/values-zu/strings.xml +++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml @@ -38,7 +38,7 @@ <string name="keyguard_plugged_in" msgid="8169926454348380863">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Iyashaja"</string> <string name="keyguard_plugged_in_charging_fast" msgid="4386594091107340426">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ishaja kaningi"</string> <string name="keyguard_plugged_in_charging_slowly" msgid="217655355424210">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ishaja kancane"</string> - <string name="keyguard_plugged_in_charging_limited" msgid="1158086783302116604">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ilungiselela impilo yebhethri"</string> + <string name="keyguard_plugged_in_charging_limited" msgid="6091488837901216962">"<xliff:g id="PERCENTAGE">%s</xliff:g> • Ukushaja kukhawulelwe okwesikhashana"</string> <string name="keyguard_low_battery" msgid="1868012396800230904">"Xhuma ishaja yakho."</string> <string name="keyguard_instructions_when_pattern_disabled" msgid="8448804180089936954">"Chofoza Menyu ukuvula."</string> <string name="keyguard_network_locked_message" msgid="407096292844868608">"Inethiwekhi ivaliwe"</string> diff --git a/packages/SystemUI/res-keyguard/values/strings.xml b/packages/SystemUI/res-keyguard/values/strings.xml index caa216688cbc..20ff424068b7 100644 --- a/packages/SystemUI/res-keyguard/values/strings.xml +++ b/packages/SystemUI/res-keyguard/values/strings.xml @@ -79,7 +79,7 @@ is not fully charged, and it's plugged into a slow charger, say that it's charging slowly. --> <string name="keyguard_plugged_in_charging_slowly"><xliff:g id="percentage">%s</xliff:g> • Charging slowly</string> - <!-- When the lock screen is showing and the phone plugged in, and the defend mode is triggered, say that it's charging temporarily limited. --> + <!-- When the lock screen is showing and the phone plugged in, and the defend mode is triggered, say that charging is temporarily limited. --> <string name="keyguard_plugged_in_charging_limited"><xliff:g id="percentage">%s</xliff:g> • Charging temporarily limited</string> <!-- When the lock screen is showing and the battery is low, warn user to plug diff --git a/packages/SystemUI/res-product/values-ne/strings.xml b/packages/SystemUI/res-product/values-ne/strings.xml index 1d368f46ec62..315024438e0e 100644 --- a/packages/SystemUI/res-product/values-ne/strings.xml +++ b/packages/SystemUI/res-product/values-ne/strings.xml @@ -42,5 +42,5 @@ <string name="kg_failed_attempts_almost_at_login" product="default" msgid="44112553371516141">"तपाईंले <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक आफ्नो अनलक गर्ने ढाँचा गलत रूपमा कोर्नुभयो। थप <xliff:g id="NUMBER_1">%2$d</xliff:g> पटक असफल प्रयास गरेपछि, तपाईंलाई एउटा इमेल खाता प्रयोग गरेर आफ्नो फोन अनलक गर्न आग्रह गरिने छ।\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> सेकेन्डमा फेरि प्रयास गर्नुहोस्।"</string> <string name="global_action_lock_message" product="default" msgid="7092460751050168771">"थप विकल्पहरू हेर्न आफ्नो फोन अनलक गर्नुहोस्"</string> <string name="global_action_lock_message" product="tablet" msgid="1024230056230539493">"थप विकल्पहरू हेर्न आफ्नो ट्याब्लेट अनलक गर्नुहोस्"</string> - <string name="global_action_lock_message" product="device" msgid="3165224897120346096">"थप विकल्पहरू हेर्न आफ्नो यन्त्र अनलक गर्नुहोस्"</string> + <string name="global_action_lock_message" product="device" msgid="3165224897120346096">"थप विकल्पहरू हेर्न आफ्नो डिभाइस अनलक गर्नुहोस्"</string> </resources> diff --git a/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml b/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml index f7357b27af5f..2067f85249a2 100644 --- a/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml +++ b/packages/SystemUI/res/layout/accessibility_floating_menu_item.xml @@ -19,8 +19,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingStart="@dimen/accessibility_floating_menu_padding" - android:paddingEnd="@dimen/accessibility_floating_menu_padding" + android:paddingStart="@dimen/accessibility_floating_menu_small_padding" + android:paddingEnd="@dimen/accessibility_floating_menu_small_padding" android:orientation="vertical" android:gravity="center"> @@ -29,9 +29,4 @@ android:layout_width="@dimen/accessibility_floating_menu_small_width_height" android:layout_height="@dimen/accessibility_floating_menu_small_width_height"/> - <View - android:id="@+id/transparent_divider" - android:layout_width="match_parent" - android:layout_height="@dimen/accessibility_floating_menu_padding"/> - </LinearLayout>
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml index 0dc147324008..80b7d1f8970f 100644 --- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml +++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml @@ -53,6 +53,7 @@ android:paddingEnd="@dimen/keyguard_indication_text_padding" android:textAppearance="@style/TextAppearance.Keyguard.BottomArea" android:alpha=".8" + android:accessibilityLiveRegion="polite" android:visibility="gone"/> </LinearLayout> diff --git a/packages/SystemUI/res/layout/privacy_dialog.xml b/packages/SystemUI/res/layout/privacy_dialog.xml index 720ae8dbf4d8..459fb6611fd7 100644 --- a/packages/SystemUI/res/layout/privacy_dialog.xml +++ b/packages/SystemUI/res/layout/privacy_dialog.xml @@ -24,8 +24,6 @@ android:layout_marginEnd="@dimen/ongoing_appops_dialog_side_margins" android:layout_marginTop="8dp" android:orientation="vertical" - android:paddingLeft="@dimen/ongoing_appops_dialog_side_padding" - android:paddingRight="@dimen/ongoing_appops_dialog_side_padding" android:paddingBottom="12dp" android:paddingTop="8dp" android:background="@drawable/qs_dialog_bg" diff --git a/packages/SystemUI/res/layout/privacy_dialog_item.xml b/packages/SystemUI/res/layout/privacy_dialog_item.xml index b91fb29c6f51..7c8945eddc70 100644 --- a/packages/SystemUI/res/layout/privacy_dialog_item.xml +++ b/packages/SystemUI/res/layout/privacy_dialog_item.xml @@ -23,6 +23,9 @@ android:orientation="horizontal" android:layout_marginTop="4dp" android:importantForAccessibility="yes" + android:background="?android:attr/selectableItemBackground" + android:paddingLeft="@dimen/ongoing_appops_dialog_side_padding" + android:paddingRight="@dimen/ongoing_appops_dialog_side_padding" android:focusable="true" > <!-- 4dp marginTop makes 20dp minimum between icons --> diff --git a/packages/SystemUI/res/layout/qs_tile_side_icon.xml b/packages/SystemUI/res/layout/qs_tile_side_icon.xml index 1ae0a1c7c5a8..f1b7259f4c1d 100644 --- a/packages/SystemUI/res/layout/qs_tile_side_icon.xml +++ b/packages/SystemUI/res/layout/qs_tile_side_icon.xml @@ -23,7 +23,7 @@ <ImageView android:id="@+id/customDrawable" android:layout_width="wrap_content" - android:layout_height="@dimen/qs_icon_size" + android:layout_height="@dimen/qs_side_view_size" android:layout_marginEnd="@dimen/qs_drawable_end_margin" android:adjustViewBounds="true" android:scaleType="fitCenter" @@ -39,4 +39,4 @@ android:visibility="gone" android:importantForAccessibility="no" /> -</FrameLayout>
\ No newline at end of file +</FrameLayout> diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml index fb39d3e4027d..dbbf641e4bf7 100644 --- a/packages/SystemUI/res/layout/status_bar_expanded.xml +++ b/packages/SystemUI/res/layout/status_bar_expanded.xml @@ -64,18 +64,6 @@ android:clipToPadding="false" android:clipChildren="false"> - <com.android.systemui.scrim.ScrimView - android:id="@+id/scrim_notifications" - android:layout_width="0dp" - android:layout_height="0dp" - android:importantForAccessibility="no" - systemui:ignoreRightInset="true" - systemui:layout_constraintStart_toStartOf="parent" - systemui:layout_constraintEnd_toEndOf="parent" - systemui:layout_constraintTop_toTopOf="parent" - systemui:layout_constraintBottom_toBottomOf="parent" - /> - <include layout="@layout/keyguard_status_view" android:visibility="gone"/> diff --git a/packages/SystemUI/res/layout/super_notification_shade.xml b/packages/SystemUI/res/layout/super_notification_shade.xml index 08284a0a2e3a..bea50e87a29a 100644 --- a/packages/SystemUI/res/layout/super_notification_shade.xml +++ b/packages/SystemUI/res/layout/super_notification_shade.xml @@ -51,6 +51,14 @@ sysui:ignoreRightInset="true" /> + <com.android.systemui.scrim.ScrimView + android:id="@+id/scrim_notifications" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:importantForAccessibility="no" + sysui:ignoreRightInset="true" + /> + <com.android.systemui.statusbar.LightRevealScrim android:id="@+id/light_reveal_scrim" android:layout_width="match_parent" diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 45ac16479d42..aa997440d102 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Minder dringende kennisgewings hieronder"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tik weer om oop te maak"</string> + <string name="tap_again" msgid="1315420114387908655">"Tik weer"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Swiep op om oop te maak"</string> <string name="keyguard_retry" msgid="886802522584053523">"Swiep op om weer te probeer"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ontsluit om NFC te gebruik"</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index 217005507d7a..3d2e6b2520c5 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"በጣም አስቸካይ ያልሆኑ ማሳወቂያዎች ከታች"</string> <string name="notification_tap_again" msgid="4477318164947497249">"ለመክፈት ዳግም መታ ያድርጉ"</string> + <string name="tap_again" msgid="1315420114387908655">"እንደገና መታ ያድርጉ"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"ለመክፈት በጣት ወደ ላይ ጠረግ ያድርጉ"</string> <string name="keyguard_retry" msgid="886802522584053523">"እንደገና ለመሞከር ወደ ላይ ይጥረጉ"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFCን ለመጠቀም ይክፈቱ"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 31ff9c66b847..7af867fe5219 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -460,6 +460,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"الإشعارات الأقل إلحاحًا أدناه"</string> <string name="notification_tap_again" msgid="4477318164947497249">"انقر مرة أخرى للفتح"</string> + <string name="tap_again" msgid="1315420114387908655">"انقر مرة أخرى"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"يمكنك الفتح بالتمرير سريعًا لأعلى."</string> <string name="keyguard_retry" msgid="886802522584053523">"مرِّر سريعًا للأعلى لإعادة المحاولة."</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"افتح قفل الشاشة لاستخدام تقنية NFC"</string> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index a288d6fe5274..f0437aa9a043 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"কম জৰুৰী জাননীসমূহ তলত"</string> <string name="notification_tap_again" msgid="4477318164947497249">"খুলিবলৈ পুনৰাই টিপক"</string> + <string name="tap_again" msgid="1315420114387908655">"পুনৰ টিপক"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"খুলিবলৈ ওপৰলৈ ছোৱাইপ কৰক"</string> <string name="keyguard_retry" msgid="886802522584053523">"পুনৰ চেষ্টা কৰিবলৈ ওপৰলৈ ছোৱাইপ কৰক"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ব্যৱহাৰ কৰিবলৈ আনলক কৰক"</string> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 15f5c8eafe45..808ef3b40574 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Daha az təcili bildirişlər aşağıdadır"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Açmaq üçün yenidən tıklayın"</string> + <string name="tap_again" msgid="1315420114387908655">"Yenidən toxunun"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Açmaq üçün yuxarı sürüşdürün"</string> <string name="keyguard_retry" msgid="886802522584053523">"Yenidən cəhd etmək üçün yuxarı sürüşdürün"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC istifadə etmək üçün kiliddən çıxarı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 9e0b148a2853..ef524b841273 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -454,6 +454,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Manje hitna obaveštenja su u nastavku"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Dodirnite ponovo da biste otvorili"</string> + <string name="tap_again" msgid="1315420114387908655">"Dodirnite ponovo"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Prevucite nagore da biste otvorili"</string> <string name="keyguard_retry" msgid="886802522584053523">"Prevucite nagore da biste probali ponovo"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Otključajte da biste koristili NFC"</string> @@ -521,7 +522,7 @@ <string name="notification_section_header_conversations" msgid="821834744538345661">"Konverzacije"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Obrišite sva nečujna obaveštenja"</string> <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Obaveštenja su pauzirana režimom Ne uznemiravaj"</string> - <string name="media_projection_action_text" msgid="3634906766918186440">"Započni odmah"</string> + <string name="media_projection_action_text" msgid="3634906766918186440">"Započni"</string> <string name="empty_shade_text" msgid="8935967157319717412">"Nema obaveštenja"</string> <string name="profile_owned_footer" msgid="2756770645766113964">"Profil se možda nadgleda"</string> <string name="vpn_footer" msgid="3457155078010607471">"Mreža se možda nadgleda"</string> @@ -1010,7 +1011,7 @@ <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" i "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"Koristi <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Nedavno koristila aplikacija <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Nedavno koristio <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(posao)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"Telefonski poziv"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(preko: <xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>)"</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 63ec9264961e..5d70016eb77c 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Менш тэрміновыя апавяшчэнні ніжэй"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Дакраніцеся яшчэ раз, каб адкрыць"</string> + <string name="tap_again" msgid="1315420114387908655">"Націсніце яшчэ раз"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Каб адкрыць, прагарніце ўверх"</string> <string name="keyguard_retry" msgid="886802522584053523">"Прагартайце ўверх, каб паўтарыць спробу"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Разблакіруйце, каб выкарыстоўваць NFC"</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index a064d108e5b6..a86532d18226 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Ппоказване на по-малко спешните известия по-долу"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Докоснете отново, за да отворите"</string> + <string name="tap_again" msgid="1315420114387908655">"Докоснете отново"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Прекарайте пръст нагоре, за да отключите"</string> <string name="keyguard_retry" msgid="886802522584053523">"Плъзнете бързо нагоре, за да опитате отново"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Отключете, за да използвате NFC"</string> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index ee489fdaa3c0..2fe012768310 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -452,6 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"নিচে অপেক্ষাকৃত কম জরুরী বিজ্ঞপ্তিগুলি"</string> <string name="notification_tap_again" msgid="4477318164947497249">"খোলার জন্য আবার আলতো চাপুন"</string> + <!-- no translation found for tap_again (1315420114387908655) --> + <skip /> <string name="keyguard_unlock" msgid="8031975796351361601">"খোলার জন্য উপরে সোয়াইপ করুন"</string> <string name="keyguard_retry" msgid="886802522584053523">"আবার চেষ্টা করতে উপরের দিকে সোয়াইপ করুন"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ব্যবহার করতে আনলক করুন"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index b0b012b0278b..d21b8327ebfa 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -454,6 +454,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Prikaži manje važna obavještenja ispod"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Dodirnite ponovo da otvorite"</string> + <string name="tap_again" msgid="1315420114387908655">"Ponovo dodirnite"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Prevucite da otvorite"</string> <string name="keyguard_retry" msgid="886802522584053523">"Prevucite prema gore da pokušate ponovo"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Otključajte da koristite NFC"</string> @@ -769,7 +770,7 @@ <string name="feedback_demoted" msgid="951884763467110604">"Ovo obavještenje je automatski <b>rangirano niže</b> u pozadini."</string> <string name="feedback_prompt" msgid="3656728972307896379">"Pošaljite programeru svoje povratne informacije. Je li ovo bilo tačno?"</string> <string name="feedback_response" msgid="4671729244976641339">"Hvala na povratnim informacijama!"</string> - <string name="feedback_ok" msgid="6481426753298857144">"UREDU"</string> + <string name="feedback_ok" msgid="6481426753298857144">"Uredu"</string> <string name="notification_channel_controls_opened_accessibility" msgid="6111817750774381094">"Otvorene su kontrole obavještenja za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="notification_channel_controls_closed_accessibility" msgid="1561909368876911701">"Zatvorene su kontrole obavještenja za aplikaciju <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> <string name="notification_channel_switch_accessibility" msgid="8979885820432540252">"Dozvoli obavještenja s ovog kanala"</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 21cfd91b2c7e..9a9db81242f8 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notificacions menys urgents a continuació"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Torna a tocar per obrir-la."</string> + <string name="tap_again" msgid="1315420114387908655">"Torna a tocar"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Llisca cap amunt per obrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Llisca cap a dalt per tornar-ho a provar"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloqueja per utilitzar l\'NFC"</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 06c25422b461..d18895ea7d18 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Méně urgentní oznámení níže"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Oznámení otevřete opětovným klepnutím"</string> + <string name="tap_again" msgid="1315420114387908655">"Znovu klepněte"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Otevřete přejetím prstem nahoru"</string> <string name="keyguard_retry" msgid="886802522584053523">"Přejetím nahoru to zkusíte znovu"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC vyžaduje odemknutou obrazovku"</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 385119216134..4301f88d73dc 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Mindre presserende notifikationer nedenfor"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tryk igen for at åbne"</string> + <string name="tap_again" msgid="1315420114387908655">"Tryk igen"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Stryg opad for at åbne"</string> <string name="keyguard_retry" msgid="886802522584053523">"Stryg opad for at prøve igen"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Lås op for at bruge NFC"</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 6220a48e664a..b56d76692b05 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -452,6 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Weniger dringende Benachrichtigungen unten"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Erneut tippen, um Benachrichtigung zu öffnen"</string> + <!-- no translation found for tap_again (1315420114387908655) --> + <skip /> <string name="keyguard_unlock" msgid="8031975796351361601">"Zum Öffnen nach oben wischen"</string> <string name="keyguard_retry" msgid="886802522584053523">"Zum Wiederholen nach oben wischen"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Zur Verwendung von NFC entsperren"</string> @@ -833,7 +835,7 @@ <string name="keyboard_shortcut_group_system_recents" msgid="8628108256824616927">"Letzte"</string> <string name="keyboard_shortcut_group_system_back" msgid="1055709713218453863">"Zurück"</string> <string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Benachrichtigungen"</string> - <string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Tastenkombinationen"</string> + <string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Tastenkürzel"</string> <string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Tastaturlayout wechseln"</string> <string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"Apps"</string> <string name="keyboard_shortcut_group_applications_assist" msgid="771606231466098742">"Assistent"</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index bc58a7846123..3b23c35118a3 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Λιγότερο επείγουσες ειδοποιήσεις παρακάτω"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Πατήστε ξανά για να ανοίξετε"</string> + <string name="tap_again" msgid="1315420114387908655">"Πατήστε ξανά"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Σύρετε προς τα επάνω για άνοιγμα"</string> <string name="keyguard_retry" msgid="886802522584053523">"Σύρετε προς τα πάνω για να δοκιμάσετε ξανά"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ξεκλείδωμα για χρήση του NFC"</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 63b54f99d70d..8f5bf75bac6c 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Less urgent notifications below"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string> + <string name="tap_again" msgid="1315420114387908655">"Tap again"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string> <string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 845ee5b3cc58..d47a4e93795e 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Less urgent notifications below"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string> + <string name="tap_again" msgid="1315420114387908655">"Tap again"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string> <string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 63b54f99d70d..8f5bf75bac6c 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Less urgent notifications below"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string> + <string name="tap_again" msgid="1315420114387908655">"Tap again"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string> <string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 63b54f99d70d..8f5bf75bac6c 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Less urgent notifications below"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string> + <string name="tap_again" msgid="1315420114387908655">"Tap again"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string> <string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string> diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index 7f99a798c4e8..79400fe90082 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Less urgent notifications below"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tap again to open"</string> + <string name="tap_again" msgid="1315420114387908655">"Tap again"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Swipe up to open"</string> <string name="keyguard_retry" msgid="886802522584053523">"Swipe up to try again"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Unlock to use NFC"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 29c938b6a5ba..a71b1df5719d 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notificaciones menos urgentes abajo"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Presiona de nuevo para abrir"</string> + <string name="tap_again" msgid="1315420114387908655">"Presiona otra vez"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Desliza el dedo hacia arriba para abrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Desliza el dedo hacia arriba para volver a intentarlo"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloquea el dispositivo para usar NFC"</string> @@ -1004,8 +1005,8 @@ <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"Hay aplicaciones que están usando tu <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" y "</string> - <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"En uso en la app de <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Uso reciente en app de <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"En uso en <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Uso reciente en <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(trabajo)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"Llamada telefónica"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(a través de <xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>)"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index b31e55f7f539..a2db1f1562a1 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notificaciones menos urgente abajo"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Toca de nuevo para abrir"</string> + <string name="tap_again" msgid="1315420114387908655">"Toca de nuevo"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Desliza el dedo hacia arriba para abrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Desliza el dedo hacia arriba para volverlo a intentar"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloquea para usar el NFC"</string> @@ -1004,9 +1005,9 @@ <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"Hay aplicaciones que usan tu <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" y "</string> - <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"En uso por <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"En uso en <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Uso reciente en <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> - <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(de trabajo)"</string> + <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(trabajo)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"Llamada telefónica"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(a través de <xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>)"</string> <string name="privacy_type_camera" msgid="7974051382167078332">"cámara"</string> @@ -1031,7 +1032,7 @@ <string name="magnification_mode_switch_state_full_screen" msgid="5229653514979530561">"Ampliar pantalla completa"</string> <string name="magnification_mode_switch_state_window" msgid="8597100249594076965">"Ampliar parte de la pantalla"</string> <string name="magnification_mode_switch_click_label" msgid="2786203505805898199">"Cambiar"</string> - <string name="accessibility_floating_button_migration_tooltip" msgid="4431046858918714564">"El botón Accesibilidad ha reemplazado al gesto de accesibilidad\n\nVer configuración"<annotation id="link"></annotation></string> + <string name="accessibility_floating_button_migration_tooltip" msgid="4431046858918714564">"El botón Accesibilidad ha reemplazado el gesto de accesibilidad\n\nVer ajustes"<annotation id="link"></annotation></string> <string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Mueve el botón hacia el borde para ocultarlo temporalmente"</string> <string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Mover arriba a la izquierda"</string> <string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Mover arriba a la derecha"</string> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 38a97a6559a3..a3482c580f5a 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Vähem kiireloomulised märguanded on allpool"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Avamiseks puudutage uuesti"</string> + <string name="tap_again" msgid="1315420114387908655">"Puudutage uuesti"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Pühkige avamiseks üles"</string> <string name="keyguard_retry" msgid="886802522584053523">"Uuesti proovimiseks pühkige üles"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC kasutamiseks avage."</string> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index 04abe9dc3ac2..a264a0efd666 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -60,13 +60,13 @@ <string name="usb_debugging_title" msgid="8274884945238642726">"USB bidezko arazketa onartu?"</string> <string name="usb_debugging_message" msgid="5794616114463921773">"Ordenagailuaren RSA gakoaren erreferentzia-gako digitala hau da:\n<xliff:g id="FINGERPRINT">%1$s</xliff:g>"</string> <string name="usb_debugging_always" msgid="4003121804294739548">"Eman beti ordenagailu honetatik arazteko baimena"</string> - <string name="usb_debugging_allow" msgid="1722643858015321328">"Baimendu"</string> + <string name="usb_debugging_allow" msgid="1722643858015321328">"Eman baimena"</string> <string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Ez da onartzen USB bidezko arazketa"</string> <string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Gailu honetan saioa hasita daukan erabiltzaileak ezin du aktibatu USB bidezko arazketa. Eginbide hori erabiltzeko, aldatu erabiltzaile nagusira."</string> <string name="wifi_debugging_title" msgid="7300007687492186076">"Hari gabeko arazketa onartu nahi duzu sare honetan?"</string> <string name="wifi_debugging_message" msgid="5461204211731802995">"Sarearen izena (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWifi-helbidea (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string> <string name="wifi_debugging_always" msgid="2968383799517975155">"Baimendu beti sare honetan"</string> - <string name="wifi_debugging_allow" msgid="4573224609684957886">"Baimendu"</string> + <string name="wifi_debugging_allow" msgid="4573224609684957886">"Eman baimena"</string> <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Ez da onartzen hari gabeko arazketa"</string> <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Gailu honetan saioa hasita daukan erabiltzaileak ezin du aktibatu hari gabeko arazketa. Eginbide hori erabiltzeko, aldatu erabiltzaile nagusira."</string> <string name="usb_contaminant_title" msgid="894052515034594113">"Desgaitu egin da USB ataka"</string> @@ -351,8 +351,8 @@ <string name="quick_settings_ime_label" msgid="3351174938144332051">"Idazketa-metodoa"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Kokapena"</string> <string name="quick_settings_location_off_label" msgid="7923929131443915919">"Kokapena desaktibatuta"</string> - <string name="quick_settings_camera_label" msgid="5612076679385269339">"Kamera atzitzeko baimena"</string> - <string name="quick_settings_mic_label" msgid="8392773746295266375">"Mikrofonoa atzitzeko baimena"</string> + <string name="quick_settings_camera_label" msgid="5612076679385269339">"Kamera"</string> + <string name="quick_settings_mic_label" msgid="8392773746295266375">"Mikrofonoa"</string> <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Baimenduta"</string> <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Blokeatuta"</string> <string name="quick_settings_media_device_label" msgid="8034019242363789941">"Multimedia-gailua"</string> @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Horren premiazkoak ez diren jakinarazpenak daude behean"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Irekitzeko, ukitu berriro"</string> + <string name="tap_again" msgid="1315420114387908655">"Sakatu berriro"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Pasatu hatza gora irekitzeko"</string> <string name="keyguard_retry" msgid="886802522584053523">"Berriro saiatzeko, pasatu hatza gora"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desblokea ezazu NFC erabiltzeko"</string> @@ -549,7 +550,7 @@ <string name="monitoring_subtitle_network_logging" msgid="2444199331891219596">"Sarearen erregistroak"</string> <string name="monitoring_subtitle_ca_certificate" msgid="8588092029755175800">"CA ziurtagiriak"</string> <string name="disable_vpn" msgid="482685974985502922">"Desgaitu VPN konexioa"</string> - <string name="disconnect_vpn" msgid="26286850045344557">"Deskonektatu VPN sarea"</string> + <string name="disconnect_vpn" msgid="26286850045344557">"Deskonektatu VPNa"</string> <string name="monitoring_button_view_policies" msgid="3869724835853502410">"Ikusi gidalerroak"</string> <string name="monitoring_button_view_controls" msgid="8316440345340701117">"Ikusi kontrolatzeko aukerak"</string> <string name="monitoring_description_named_management" msgid="505833016545056036">"Gailu hau <xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> erakundearena da.\n\nIKT saileko administratzaileak gainbegiratu eta kudeatu egin ditzake ezarpenak, enpresa-sarbidea, aplikazioak, gailuarekin erlazionatutako datuak eta gailuaren kokapen-informazioa.\n\nInformazio gehiago lortzeko, jarri IKT saileko administratzailearekin harremanetan."</string> @@ -990,7 +991,7 @@ <string name="slice_permission_text_1" msgid="6675965177075443714">"- <xliff:g id="APP">%1$s</xliff:g> aplikazioaren informazioa irakur dezake."</string> <string name="slice_permission_text_2" msgid="6758906940360746983">"- <xliff:g id="APP">%1$s</xliff:g> aplikazioan ekintzak gauza ditzake."</string> <string name="slice_permission_checkbox" msgid="4242888137592298523">"Eman aplikazio guztien zatiak erakusteko baimena <xliff:g id="APP">%1$s</xliff:g> aplikazioari"</string> - <string name="slice_permission_allow" msgid="6340449521277951123">"Baimendu"</string> + <string name="slice_permission_allow" msgid="6340449521277951123">"Eman baimena"</string> <string name="slice_permission_deny" msgid="6870256451658176895">"Ukatu"</string> <string name="auto_saver_title" msgid="6873691178754086596">"Sakatu bateria-aurrezlea noiz aktibatu programatzeko"</string> <string name="auto_saver_text" msgid="3214960308353838764">"Aktibatu aurrezlea bateria agortzeko arriskua dagoenean"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 0fb93ccaca56..476f6d2ffc6c 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"اعلانهای کمتر فوری در زیر"</string> <string name="notification_tap_again" msgid="4477318164947497249">"دوباره ضربه بزنید تا باز شود"</string> + <string name="tap_again" msgid="1315420114387908655">"دوباره ضربه بزنید"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"برای باز کردن، انگشتتان را تند بهبالا بکشید"</string> <string name="keyguard_retry" msgid="886802522584053523">"برای امتحان مجدد، انگشتتان را تند بهبالا بکشید"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"برای استفاده از NFC، قفل را باز کنید"</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 18e33e5d375a..faf8f8fd3132 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Vähemmän kiireelliset ilmoitukset ovat alla"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Avaa napauttamalla uudelleen"</string> + <string name="tap_again" msgid="1315420114387908655">"Napauta uudelleen"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Avaa pyyhkäisemällä ylös"</string> <string name="keyguard_retry" msgid="886802522584053523">"Yritä uudelleen pyyhkäisemällä ylös"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Avaa lukitus, jotta voit käyttää NFC:tä"</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 8b6ba7ed7980..2b76ac40e0cd 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -452,6 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notifications moins urgentes affichées ci-dessous"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Touchez à nouveau pour ouvrir"</string> + <!-- no translation found for tap_again (1315420114387908655) --> + <skip /> <string name="keyguard_unlock" msgid="8031975796351361601">"Balayez l\'écran vers le haut pour ouvrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Balayez l\'écran vers le haut pour réessayer"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Déverrouillez l\'écran pour utiliser la NFC"</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index aa33b3052c2f..f279268a4ab8 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -429,9 +429,9 @@ <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Débloquer le micro de l\'appareil ?"</string> <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Débloquer l\'appareil photo de l\'appareil ?"</string> <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Débloquer l\'appareil photo et le micro de l\'appareil ?"</string> - <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Cela débloque l\'accès à tous les services et applis autorisés à utiliser votre micro."</string> - <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Cela débloque l\'accès à tous les services et applis autorisés à utiliser votre appareil photo."</string> - <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Cela débloque l\'accès à tous les services et applis autorisés à utiliser votre appareil photo ou votre micro."</string> + <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Cette action débloque l\'accès à tous les services et applis autorisés à utiliser votre micro."</string> + <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Cette action débloque l\'accès à tous les services et applis autorisés à utiliser votre appareil photo."</string> + <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Cette action débloque l\'accès à tous les services et applis autorisés à utiliser votre appareil photo ou votre micro."</string> <string name="media_seamless_remote_device" msgid="177033467332920464">"Appareil"</string> <string name="recents_swipe_up_onboarding" msgid="2820265886420993995">"Balayer l\'écran vers le haut pour changer d\'application"</string> <string name="recents_quick_scrub_onboarding" msgid="765934300283514912">"Déplacer vers la droite pour changer rapidement d\'application"</string> @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notifications moins urgentes ci-dessous"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Appuyer à nouveau pour ouvrir"</string> + <string name="tap_again" msgid="1315420114387908655">"Appuyer à nouveau"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Balayer vers le haut pour ouvrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Balayez l\'écran vers le haut pour réessayer"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Déverrouillez l\'écran pour pouvoir utiliser NFC"</string> @@ -1005,7 +1006,7 @@ <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" et "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"En cours d\'utilisation par <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Récemment utilisé(e) par <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Récemment utilisé par <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(travail)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"Appel téléphonique"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(via <xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>)"</string> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 045143ef0d65..07a691cfea81 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notificacións menos urxentes abaixo"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Toca de novo para abrir"</string> + <string name="tap_again" msgid="1315420114387908655">"Toca de novo"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Pasa o dedo cara arriba para abrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Pasa o dedo cara arriba para tentalo de novo"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloquea o dispositivo para utilizar a NFC"</string> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 32ea6d12a1e1..bac2cf7536eb 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -452,6 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"નીચે ઓછી તાકીદની સૂચનાઓ"</string> <string name="notification_tap_again" msgid="4477318164947497249">"ખોલવા માટે ફરીથી ટૅપ કરો"</string> + <!-- no translation found for tap_again (1315420114387908655) --> + <skip /> <string name="keyguard_unlock" msgid="8031975796351361601">"ખોલવા માટે ઉપરની તરફ સ્વાઇપ કરો"</string> <string name="keyguard_retry" msgid="886802522584053523">"ફરી પ્રયાસ કરવા માટે ઉપરની તરફ સ્વાઇપ કરો"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFCનો ઉપયોગ કરવા માટે અનલૉક કરો"</string> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index f77db5c7d53f..d73be920fbec 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"कम अत्यावश्यक सूचनाएं नीचे दी गई हैं"</string> <string name="notification_tap_again" msgid="4477318164947497249">"खोलने के लिए फिर से टैप करें"</string> + <string name="tap_again" msgid="1315420114387908655">"फिर से टैप करें"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"खोलने के लिए ऊपर स्वाइप करें"</string> <string name="keyguard_retry" msgid="886802522584053523">"फिर से कोशिश करने के लिए ऊपर की ओर स्वाइप करें"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"एनएफ़सी इस्तेमाल करने के लिए स्क्रीन को अनलॉक करें"</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 66618b6b8b73..fd1592d13d18 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -454,6 +454,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Manje hitne obavijesti pri dnu"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Dodirnite opet za otvaranje"</string> + <string name="tap_again" msgid="1315420114387908655">"Dodirnite ponovo"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Prijeđite prstom prema gore da biste otvorili"</string> <string name="keyguard_retry" msgid="886802522584053523">"Prijeđite prstom prema gore za ponovni pokušaj"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Otključajte da biste upotrijebili NFC"</string> @@ -565,7 +566,7 @@ <string name="monitoring_description_managed_profile_network_logging" msgid="6932303843097006037">"Administrator je uključio mrežni zapisnik koji prati promet na vašem poslovnom profilu, ali ne i na osobnom profilu."</string> <string name="monitoring_description_named_vpn" msgid="5749932930634037027">"Povezani ste s aplikacijom <xliff:g id="VPN_APP">%1$s</xliff:g> koja može nadzirati vašu aktivnost na mreži, uključujući e-poštu, aplikacije i web-lokacije."</string> <string name="monitoring_description_two_named_vpns" msgid="3516830755681229463">"Povezani ste s aplikacijama <xliff:g id="VPN_APP_0">%1$s</xliff:g> i <xliff:g id="VPN_APP_1">%2$s</xliff:g> koje mogu nadzirati vašu aktivnost na mreži, uključujući e-poruke, aplikacije i web-lokacije."</string> - <string name="monitoring_description_managed_profile_named_vpn" msgid="368812367182387320">"Vaš je radni profil povezan s aplikacijom <xliff:g id="VPN_APP">%1$s</xliff:g> koja može nadzirati vašu aktivnost na mreži, uključujući e-poruke, aplikacije i web-lokacije."</string> + <string name="monitoring_description_managed_profile_named_vpn" msgid="368812367182387320">"Vaš je poslovni profil povezan s aplikacijom <xliff:g id="VPN_APP">%1$s</xliff:g> koja može nadzirati vašu aktivnost na mreži, uključujući e-poruke, aplikacije i web-lokacije."</string> <string name="monitoring_description_personal_profile_named_vpn" msgid="8179722332380953673">"Vaš je osobni profil povezan s aplikacijom <xliff:g id="VPN_APP">%1$s</xliff:g> koja može nadzirati vašu aktivnost na mreži, uključujući e-poruke, aplikacije i web-lokacije."</string> <string name="monitoring_description_do_header_generic" msgid="6130190408164834986">"Vašim uređajem upravlja aplikacija <xliff:g id="DEVICE_OWNER_APP">%1$s</xliff:g>."</string> <string name="monitoring_description_do_header_with_name" msgid="2696255132542779511">"<xliff:g id="ORGANIZATION_NAME">%1$s</xliff:g> upotrebljava aplikaciju <xliff:g id="DEVICE_OWNER_APP">%2$s</xliff:g> za upravljanje vašim uređajem."</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index c789d5c53242..0fe63af5fa2a 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"A kevésbé sürgős értesítések lentebb vannak"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Koppintson ismét a megnyitáshoz"</string> + <string name="tap_again" msgid="1315420114387908655">"Koppintson újra"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Csúsztasson felfelé a megnyitáshoz"</string> <string name="keyguard_retry" msgid="886802522584053523">"Az újrapróbálkozáshoz csúsztassa felfelé az ujját"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Az NFC használatához oldja fel a képernyőzárat"</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 4f4afd6b801d..73a32d301836 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Պակաս հրատապ ծանուցումները ստորև"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Կրկին հպեք՝ բացելու համար"</string> + <string name="tap_again" msgid="1315420114387908655">"Նորից հպեք"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Բացելու համար սահեցրեք վերև"</string> <string name="keyguard_retry" msgid="886802522584053523">"Սահեցրեք վերև՝ նորից փորձելու համար"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ապակողպեք՝ NFC-ն օգտագործելու համար"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index bec98bfa825c..1bae009986f7 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notifikasi kurang darurat di bawah"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Ketuk lagi untuk membuka"</string> + <string name="tap_again" msgid="1315420114387908655">"Ketuk lagi"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Geser ke atas untuk membuka"</string> <string name="keyguard_retry" msgid="886802522584053523">"Geser ke atas untuk mencoba lagi"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Buka kunci untuk menggunakan NFC"</string> @@ -1006,7 +1007,7 @@ <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" dan "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"Sedang digunakan oleh <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Baru-baru ini digunakan oleh <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> - <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(kantor)"</string> + <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(kerja)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"Panggilan telepon"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(melalui <xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>)"</string> <string name="privacy_type_camera" msgid="7974051382167078332">"kamera"</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index adaa7a73ae61..34fdd06014d0 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Minna áríðandi tilkynningar fyrir neðan"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Ýttu aftur til að opna"</string> + <string name="tap_again" msgid="1315420114387908655">"Ýttu aftur"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Strjúktu upp til að opna"</string> <string name="keyguard_retry" msgid="886802522584053523">"Strjúktu upp til að reyna aftur"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Taktu úr lás til að nota NFC"</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 31de7b2b049f..c838ca08a6f5 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notifiche meno urgenti in basso"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tocca ancora per aprire"</string> + <string name="tap_again" msgid="1315420114387908655">"Tocca di nuovo"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Scorri verso l\'alto per aprire"</string> <string name="keyguard_retry" msgid="886802522584053523">"Scorri verso l\'alto per riprovare"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Sblocca per usare NFC"</string> @@ -1005,7 +1006,7 @@ <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" e "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"Attualmente in uso per <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Usato di recente da <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Recentemente in uso per <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(lavoro)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"Telefonata"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(tramite <xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>)"</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 12e4dc7b03be..8c58bb583b01 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"התראות בדחיפות נמוכה יותר מופיעות בהמשך"</string> <string name="notification_tap_again" msgid="4477318164947497249">"יש להקיש שוב כדי לפתוח את ההתראה"</string> + <string name="tap_again" msgid="1315420114387908655">"צריך להקיש פעם נוספת"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"צריך להחליק כדי לפתוח"</string> <string name="keyguard_retry" msgid="886802522584053523">"יש להחליק למעלה כדי לנסות שוב"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"יש לבטל את הנעילה כדי להשתמש ב-NFC"</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index f093cadbba61..4e881d1f1d0d 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"緊急度の低い通知を下に表示"</string> <string name="notification_tap_again" msgid="4477318164947497249">"開くにはもう一度タップしてください"</string> + <string name="tap_again" msgid="1315420114387908655">"もう一度タップしてください"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"開くには上にスワイプします"</string> <string name="keyguard_retry" msgid="886802522584053523">"上にスワイプしてもう一度お試しください"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC を使用するには、ロックを解除してください"</string> @@ -1006,7 +1007,7 @@ <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" 、 "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"<xliff:g id="APPLICATION_NAME">%1$s</xliff:g> が使用中"</string> <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"<xliff:g id="APPLICATION_NAME">%1$s</xliff:g> が最近使用"</string> - <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(仕事)"</string> + <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(業務用)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"通話"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(<xliff:g id="APPLICATION_NAME_S_">%s</xliff:g> 経由)"</string> <string name="privacy_type_camera" msgid="7974051382167078332">"カメラ"</string> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 06a56bc52c84..fae5977ddf29 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"ქვემოთ მითითებულია ნაკლებად სასწრაფო შეტყობინებები"</string> <string name="notification_tap_again" msgid="4477318164947497249">"შეეხეთ ისევ გასახსნელად"</string> + <string name="tap_again" msgid="1315420114387908655">"შეეხეთ ხელახლა"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"გასახსნელად გადაფურცლეთ ზემოთ"</string> <string name="keyguard_retry" msgid="886802522584053523">"ხელახლა საცდელად გადაფურცლეთ ზემოთ"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"განბლოკეთ NFC-ის გამოსაყენებლად"</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index e53e061bbfe7..f76b96b3c617 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -351,7 +351,7 @@ <string name="quick_settings_ime_label" msgid="3351174938144332051">"Енгізу әдісі"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Локация"</string> <string name="quick_settings_location_off_label" msgid="7923929131443915919">"Орын өшірулі"</string> - <string name="quick_settings_camera_label" msgid="5612076679385269339">"Камера пайдалану"</string> + <string name="quick_settings_camera_label" msgid="5612076679385269339">"Камераны пайдалану"</string> <string name="quick_settings_mic_label" msgid="8392773746295266375">"Микрофон пайдалану"</string> <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Қолжетімді"</string> <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Бөгелген"</string> @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Шұғылдығы азырақ хабарландырулар төменде"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Ашу үшін қайта түртіңіз"</string> + <string name="tap_again" msgid="1315420114387908655">"Қайта түртіңіз."</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Ашу үшін жоғары қарай сырғытыңыз."</string> <string name="keyguard_retry" msgid="886802522584053523">"Әрекетті қайталау үшін жоғары сырғытыңыз."</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC пайдалану үшін құлыпты ашыңыз."</string> @@ -833,7 +834,7 @@ <string name="keyboard_shortcut_group_system_recents" msgid="8628108256824616927">"Жақындағылар"</string> <string name="keyboard_shortcut_group_system_back" msgid="1055709713218453863">"Артқа"</string> <string name="keyboard_shortcut_group_system_notifications" msgid="3615971650562485878">"Хабарландырулар"</string> - <string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Пернелер тіркесімдері"</string> + <string name="keyboard_shortcut_group_system_shortcuts_helper" msgid="4856808328618265589">"Перне тіркесімдері"</string> <string name="keyboard_shortcut_group_system_switch_input" msgid="952555530383268166">"Пернетақта форматын ауыстыру"</string> <string name="keyboard_shortcut_group_applications" msgid="7386239431100651266">"Қолданбалар"</string> <string name="keyboard_shortcut_group_applications_assist" msgid="771606231466098742">"Көмекші"</string> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 08045e32a31f..03899e1630a3 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"ការជូនដំណឹងមិនសូវបន្ទាន់ខាងក្រោម"</string> <string name="notification_tap_again" msgid="4477318164947497249">"ប៉ះម្ដងទៀត ដើម្បីបើក"</string> + <string name="tap_again" msgid="1315420114387908655">"ចុចម្ដងទៀត"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"អូសឡើងលើដើម្បីបើក"</string> <string name="keyguard_retry" msgid="886802522584053523">"អូសឡើងលើ ដើម្បីព្យាយាមម្ដងទៀត"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"ដោះសោ ដើម្បីប្រើ NFC"</string> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index d0a5555dcd2d..90508511702f 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"ಕೆಳಗೆ ಕಡಿಮೆ ಅವಸರದ ಅಧಿಸೂಚನೆಗಳು"</string> <string name="notification_tap_again" msgid="4477318164947497249">"ತೆರೆಯಲು ಮತ್ತೆ ಟ್ಯಾಪ್ ಮಾಡಿ"</string> + <string name="tap_again" msgid="1315420114387908655">"ಪುನಃ ಟ್ಯಾಪ್ ಮಾಡಿ"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"ತೆರೆಯಲು ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string> <string name="keyguard_retry" msgid="886802522584053523">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲು ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ಬಳಸಲು ಅನ್ಲಾಕ್ ಮಾಡಿ"</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index bcf0493455f7..908eaf5cf4a8 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"아래에 덜 급한 알림 표시"</string> <string name="notification_tap_again" msgid="4477318164947497249">"다시 탭하여 열기"</string> + <string name="tap_again" msgid="1315420114387908655">"다시 탭하세요."</string> <string name="keyguard_unlock" msgid="8031975796351361601">"위로 스와이프하여 열기"</string> <string name="keyguard_retry" msgid="886802522584053523">"위로 스와이프하여 다시 시도해 주세요"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"잠금 해제하여 NFC 사용"</string> @@ -1005,7 +1006,7 @@ <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" 및 "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"<xliff:g id="APPLICATION_NAME">%1$s</xliff:g>에서 사용 중"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"최근 <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>에서 사용"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"최근 <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>에서 사용됨"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(직장)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"전화 통화"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(<xliff:g id="APPLICATION_NAME_S_">%s</xliff:g> 사용)"</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index d997a7b68d47..a2dbc7d4b8da 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Анчейин шашылыш эмес билдирмелер төмөндө"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Ачуу үчүн кайра таптап коюңуз"</string> + <string name="tap_again" msgid="1315420114387908655">"Кайра таптап коюңуз"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Ачуу үчүн өйдө сүрүңүз"</string> <string name="keyguard_retry" msgid="886802522584053523">"Кайталоо үчүн экранды өйдө сүрүңүз"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC колдонуу үчүн түзмөктүн кулпусун ачыңыз"</string> @@ -711,10 +712,10 @@ <string name="notification_channel_minimized" msgid="6892672757877552959">"Бул билдирмелер кичирейтилет"</string> <string name="notification_channel_silenced" msgid="1995937493874511359">"Бул билдирмелер үнсүз көрсөтүлөт"</string> <string name="notification_channel_unsilenced" msgid="94878840742161152">"Бул билдирмелер тууралуу кабарлап турабыз"</string> - <string name="inline_blocking_helper" msgid="2891486013649543452">"Адатта мындай билдирмелерди өткөрүп жибересиз. \nАлар көрсөтүлө берсинби?"</string> + <string name="inline_blocking_helper" msgid="2891486013649543452">"Адатта мындай билдирмелерди өткөрүп жибересиз. \nАлар көрүнө берсинби?"</string> <string name="inline_done_button" msgid="6043094985588909584">"Бүттү"</string> <string name="inline_ok_button" msgid="603075490581280343">"Колдонуу"</string> - <string name="inline_keep_showing" msgid="8736001253507073497">"Бул билдирмелер көрсөтүлө берсинби?"</string> + <string name="inline_keep_showing" msgid="8736001253507073497">"Бул билдирмелер көрүнө берсинби?"</string> <string name="inline_stop_button" msgid="2453460935438696090">"Эскертмелерди токтотуу"</string> <string name="inline_deliver_silently_button" msgid="2714314213321223286">"Үнсүз жеткирүү"</string> <string name="inline_block_button" msgid="479892866568378793">"Бөгөттөө"</string> @@ -725,7 +726,7 @@ <string name="inline_silent_button_alert" msgid="5705343216858250354">"Билдирүү"</string> <string name="inline_silent_button_keep_alerting" msgid="6577845442184724992">"Кабар бериле берсин"</string> <string name="inline_turn_off_notifications" msgid="8543989584403106071">"Билдирмелерди өчүрүү"</string> - <string name="inline_keep_showing_app" msgid="4393429060390649757">"Бул колдонмонун билдирмелери көрсөтүлө берсинби?"</string> + <string name="inline_keep_showing_app" msgid="4393429060390649757">"Бул колдонмонун билдирмелери көрүнө берсинби?"</string> <string name="notification_silence_title" msgid="8608090968400832335">"Үнсүз"</string> <string name="notification_alert_title" msgid="3656229781017543655">"Демейки"</string> <string name="notification_automatic_title" msgid="3745465364578762652">"Автоматтык"</string> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 6a1953264d45..2c42d8f76992 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"ການແຈ້ງເຕືອນທີ່ສຳຄັນໜ້ອຍກວ່າຢູ່ດ້ານລຸ່ມ"</string> <string name="notification_tap_again" msgid="4477318164947497249">"ແຕະອີກຄັ້ງເພື່ອເປີດ"</string> + <string name="tap_again" msgid="1315420114387908655">"ແຕະອີກເທື່ອໜຶ່ງ"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"ປັດຂຶ້ນເພື່ອເປີດ"</string> <string name="keyguard_retry" msgid="886802522584053523">"ປັດຂຶ້ນເພື່ອລອງໃໝ່"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"ປົດລັອກເພື່ອໃຊ້ NFC"</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index ae4fd14c78aa..6447a3fef7a2 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Mažiau skubūs pranešimai toliau"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Palieskite dar kartą, kad atidarytumėte"</string> + <string name="tap_again" msgid="1315420114387908655">"Palieskite dar kartą"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Perbraukite aukštyn, kad atidarytumėte"</string> <string name="keyguard_retry" msgid="886802522584053523">"Jei norite bandyti dar kartą, perbraukite aukštyn"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Norėdami naudoti NFC, atrakinkite"</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 635baa0c1a33..4157862b9655 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -352,8 +352,8 @@ <string name="quick_settings_ime_label" msgid="3351174938144332051">"Ievades metode"</string> <string name="quick_settings_location_label" msgid="2621868789013389163">"Atrašanās vieta"</string> <string name="quick_settings_location_off_label" msgid="7923929131443915919">"Atrašanās vieta izslēgta"</string> - <string name="quick_settings_camera_label" msgid="5612076679385269339">"Piekļuve kamerai"</string> - <string name="quick_settings_mic_label" msgid="8392773746295266375">"Piekļuve mikrofonam"</string> + <string name="quick_settings_camera_label" msgid="5612076679385269339">"Kamera"</string> + <string name="quick_settings_mic_label" msgid="8392773746295266375">"Mikrofons"</string> <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"Piekļuve atļauta"</string> <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"Piekļuve bloķēta"</string> <string name="quick_settings_media_device_label" msgid="8034019242363789941">"Multivides ierīce"</string> @@ -428,12 +428,12 @@ <string name="quick_settings_screen_record_label" msgid="8650355346742003694">"Ekrāna ierakstīšana"</string> <string name="quick_settings_screen_record_start" msgid="1574725369331638985">"Sākt"</string> <string name="quick_settings_screen_record_stop" msgid="8087348522976412119">"Apturēt"</string> - <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vai vēlaties atbloķēt ierīces mikrofonu?"</string> + <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"Vai atbloķēt ierīces mikrofonu?"</string> <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"Vai vēlaties atbloķēt ierīces kameru?"</string> - <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vai vēlaties atbloķēt ierīces kameru un mikrofonu?"</string> - <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Visas lietotnes un pakalpojumi, kas drīkst izmantot mikrofonu, varēs tam piekļūt."</string> - <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Visas lietotnes un pakalpojumi, kas drīkst izmantot kameru, varēs tai piekļūt."</string> - <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Visas lietotnes un pakalpojumi, kas drīkst izmantot kameru vai mikrofonu, varēs piekļūt kamerai vai mikrofonam."</string> + <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"Vai atbloķēt ierīces kameru un mikrofonu?"</string> + <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"Visas lietotnes un pakalpojumi, kurām ir atļauts izmantot mikrofonu, varēs tam piekļūt."</string> + <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"Visas lietotnes un pakalpojumi, kurām ir atļauts izmantot kameru, varēs tai piekļūt."</string> + <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"Visas lietotnes un pakalpojumi, kurām ir atļauts izmantot kameru vai mikrofonu, varēs tiem piekļūt."</string> <string name="media_seamless_remote_device" msgid="177033467332920464">"Ierīce"</string> <string name="recents_swipe_up_onboarding" msgid="2820265886420993995">"Velciet augšup, lai pārslēgtu lietotnes"</string> <string name="recents_quick_scrub_onboarding" msgid="765934300283514912">"Lai ātri pārslēgtu lietotnes, velciet pa labi"</string> @@ -454,6 +454,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Mazāk steidzami paziņojumi tiek rādīti tālāk"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Pieskarieties vēlreiz, lai atvērtu"</string> + <string name="tap_again" msgid="1315420114387908655">"Pieskarieties vēlreiz"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Velciet augšup, lai atvērtu"</string> <string name="keyguard_retry" msgid="886802522584053523">"Velciet augšup, lai mēģinātu vēlreiz"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Atbloķējiet ierīci, lai izmantotu NFC."</string> @@ -1009,8 +1010,8 @@ <string name="ongoing_privacy_chip_content_multiple_apps" msgid="8341216022442383954">"Lietojumprogrammas izmanto šādas funkcijas: <xliff:g id="TYPES_LIST">%s</xliff:g>."</string> <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" un "</string> - <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"Tiek izmantots lietotnē <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Nesen tika izmantots lietotnē <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"To izmanto lietotne <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Nesen to izmantoja lietotne <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(darbs)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"Tālruņa zvans"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(izmantojot: <xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>)"</string> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index 6a092d6de9b7..b7862d9887f5 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Долу се помалку итни известувања"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Допрете повторно за да се отвори"</string> + <string name="tap_again" msgid="1315420114387908655">"Допрете повторно"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Повлечете за да отворите"</string> <string name="keyguard_retry" msgid="886802522584053523">"Повлечете нагоре за да се обидете повторно"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Отклучете за да користите NFC"</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 292e1e19a482..f0afa9faeb79 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"ആവശ്യം കുറഞ്ഞ അറിയിപ്പുകൾ ചുവടെ നൽകിയിരിക്കുന്നു"</string> <string name="notification_tap_again" msgid="4477318164947497249">"തുറക്കുന്നതിന് വീണ്ടും ടാപ്പുചെയ്യുക"</string> + <string name="tap_again" msgid="1315420114387908655">"വീണ്ടും ടാപ്പ് ചെയ്യുക"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"തുറക്കാൻ മുകളിലോട്ട് സ്വൈപ്പ് ചെയ്യുക"</string> <string name="keyguard_retry" msgid="886802522584053523">"വീണ്ടും ശ്രമിക്കാൻ മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ഉപയോഗിക്കാൻ അൺലോക്ക് ചെയ്യുക"</string> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 2bcca675924b..34e80db4afb8 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Яаралтай биш мэдэгдлүүдийг доор"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Нээхийн тулд дахин товшино уу"</string> + <string name="tap_again" msgid="1315420114387908655">"Дaхин товшино уу"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Нээхийн тулд дээш шударна уу"</string> <string name="keyguard_retry" msgid="886802522584053523">"Дахин оролдохын тулд дээш шударна уу"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC-г ашиглахын тулд түгжээг тайлна уу"</string> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index c69992b1199d..2a1506f9b2a7 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"खाली कमी तातडीच्या सूचना"</string> <string name="notification_tap_again" msgid="4477318164947497249">"उघडण्यासाठी पुन्हा टॅप करा"</string> + <string name="tap_again" msgid="1315420114387908655">"पुन्हा टॅप करा"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"उघडण्यासाठी वर स्वाइप करा"</string> <string name="keyguard_retry" msgid="886802522584053523">"पुन्हा प्रयत्न करण्यासाठी वर स्वाइप करा"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC वापरण्यासाठी स्क्रीन अनलॉक करा"</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index d2780b9870f3..24bafa8eefef 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Pemberitahuan kurang penting di bawah"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Ketik lagi untuk membuka"</string> + <string name="tap_again" msgid="1315420114387908655">"Ketik sekali lagi"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Leret ke atas untuk buka"</string> <string name="keyguard_retry" msgid="886802522584053523">"Leret ke atas untuk mencuba lagi"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Buka kunci untuk menggunakan NFC"</string> @@ -1032,7 +1033,7 @@ <string name="magnification_mode_switch_state_window" msgid="8597100249594076965">"Besarkan sebahagian skrin"</string> <string name="magnification_mode_switch_click_label" msgid="2786203505805898199">"Tukar"</string> <string name="accessibility_floating_button_migration_tooltip" msgid="4431046858918714564">"Butang kebolehaksesan menggantikan gerak isyarat kebolehaksesan\n\n"<annotation id="link">"Lihat tetapan"</annotation></string> - <string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Gerakkan butang ke tepi untuk menyembunyikannya buat sementara waktu"</string> + <string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"Gerakkan butang ke tepi untuk disembunyikan buat sementara waktu"</string> <string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"Alihkan ke atas sebelah kiri"</string> <string name="accessibility_floating_button_action_move_top_right" msgid="6106225581993479711">"Alihkan ke atas sebelah kanan"</string> <string name="accessibility_floating_button_action_move_bottom_left" msgid="8063394111137429725">"Alihkan ke bawah sebelah kiri"</string> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 163a6bf9b229..992bedc3d600 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"အရေးပါမှု နည်းသည့် အကြောင်းကြားချက်များ အောက်မှာ"</string> <string name="notification_tap_again" msgid="4477318164947497249">"ဖွင့်ရန် ထပ်ပြီး ပုတ်ပါ"</string> + <string name="tap_again" msgid="1315420114387908655">"ထပ်တို့ပါ"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"ဖွင့်ရန် အပေါ်သို့ပွတ်ဆွဲပါ"</string> <string name="keyguard_retry" msgid="886802522584053523">"ထပ်စမ်းကြည့်ရန် အပေါ်သို့ပွတ်ဆွဲပါ"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ကို အသုံးပြုရန် လော့ခ်ဖွင့်ပါ"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index c7507c9db654..6a5e787606c7 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Mindre presserende varsler nedenfor"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Trykk på nytt for å åpne"</string> + <string name="tap_again" msgid="1315420114387908655">"Trykk igjen"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Sveip opp for å åpne"</string> <string name="keyguard_retry" msgid="886802522584053523">"Sveip opp for å prøve igjen"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Lås opp for å bruke NFC"</string> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index c36dcd6d3492..3b6538fdb9b0 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -452,6 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"तल कम जरुरी सूचनाहरू"</string> <string name="notification_tap_again" msgid="4477318164947497249">"खोल्न पुनः ट्याप गर्नुहोस्"</string> + <!-- no translation found for tap_again (1315420114387908655) --> + <skip /> <string name="keyguard_unlock" msgid="8031975796351361601">"खोल्न माथितिर स्वाइप गर्नुहोस्"</string> <string name="keyguard_retry" msgid="886802522584053523">"फेरि प्रयास गर्न माथितिर स्वाइप गर्नुहोस्"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC प्रयोग गर्न स्क्रिन अनलक गर्नुहोस्"</string> @@ -592,7 +594,7 @@ <string name="hidden_notifications_cancel" msgid="4805370226181001278">"धन्यवाद पर्दैन"</string> <string name="hidden_notifications_setup" msgid="2064795578526982467">"सेटअप गर्नुहोस्"</string> <string name="zen_mode_and_condition" msgid="5043165189511223718">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string> - <string name="volume_zen_end_now" msgid="5901885672973736563">"अहिले नै अफ गर्नुहोस्"</string> + <string name="volume_zen_end_now" msgid="5901885672973736563">"अहिले नै अफ गरियोस्"</string> <string name="accessibility_volume_settings" msgid="1458961116951564784">"ध्वनिसम्बन्धी सेटिङहरू"</string> <string name="accessibility_volume_expand" msgid="7653070939304433603">"विस्तार गर्नुहोस्"</string> <string name="accessibility_volume_collapse" msgid="2746845391013829996">"संक्षिप्त पार्नुहोस्"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index b0df16e59963..37c365742d08 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Minder urgente meldingen onderaan"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tik nog eens om te openen"</string> + <string name="tap_again" msgid="1315420114387908655">"Tik nog een keer"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Swipe omhoog om te openen"</string> <string name="keyguard_retry" msgid="886802522584053523">"Swipe omhoog om het opnieuw te proberen"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ontgrendel het apparaat om NFC te gebruiken"</string> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index 95d3671002d9..640c22fa512c 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"ନିମ୍ନରେ କମ୍ ଜରୁରୀ ବିଜ୍ଞପ୍ତି"</string> <string name="notification_tap_again" msgid="4477318164947497249">"ଖୋଲିବା ପାଇଁ ପୁଣି ଟାପ୍ କରନ୍ତୁ"</string> + <string name="tap_again" msgid="1315420114387908655">"ପୁଣି ଟାପ୍ କରନ୍ତୁ"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"ଖୋଲିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string> <string name="keyguard_retry" msgid="886802522584053523">"ପୁଣି ଚେଷ୍ଟା କରିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ବ୍ୟବହାର କରିବାକୁ ଅନଲକ୍ କରନ୍ତୁ"</string> @@ -797,7 +798,7 @@ <item quantity="other">%d ମିନିଟ୍</item> <item quantity="one">%d ମିନିଟ୍</item> </plurals> - <string name="battery_panel_title" msgid="5931157246673665963">"ବ୍ୟାଟେରୀ ବ୍ୟବହାର"</string> + <string name="battery_panel_title" msgid="5931157246673665963">"ବ୍ୟାଟେରୀର ବ୍ୟବହାର"</string> <string name="battery_detail_charging_summary" msgid="8821202155297559706">"ଚାର୍ଜ କରାଯିବାବେଳେ ବ୍ୟାଟେରୀ ସେଭର୍ ଉପଲବ୍ଧ ନଥାଏ"</string> <string name="battery_detail_switch_title" msgid="6940976502957380405">"ବ୍ୟାଟେରୀ ସେଭର୍"</string> <string name="battery_detail_switch_summary" msgid="3668748557848025990">"କାର୍ଯ୍ୟଦକ୍ଷତା ଓ ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ ଡାଟା କମ୍ କରେ"</string> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index c9e7ecf49444..512a2280f23d 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -452,6 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"ਹੇਠਾਂ ਘੱਟ ਲਾਜ਼ਮੀ ਸੂਚਨਾਵਾਂ"</string> <string name="notification_tap_again" msgid="4477318164947497249">"ਖੋਲ੍ਹਣ ਲਈ ਦੁਬਾਰਾ ਟੈਪ ਕਰੋ"</string> + <!-- no translation found for tap_again (1315420114387908655) --> + <skip /> <string name="keyguard_unlock" msgid="8031975796351361601">"ਖੋਲ੍ਹਣ ਲਈ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string> <string name="keyguard_retry" msgid="886802522584053523">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਉੱਤੇ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ਵਰਤਣ ਲਈ ਅਣਲਾਕ ਕਰੋ"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 458bf0a142db..57747d4c5ebb 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Poniżej widać mniej pilne powiadomienia"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Kliknij ponownie, by otworzyć"</string> + <string name="tap_again" msgid="1315420114387908655">"Kliknij jeszcze raz"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Przesuń w górę, by otworzyć"</string> <string name="keyguard_retry" msgid="886802522584053523">"Przesuń w górę, by spróbować ponownie"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Odblokuj, by użyć komunikacji NFC"</string> @@ -867,8 +868,8 @@ <string name="data_saver" msgid="3484013368530820763">"Oszczędzanie danych"</string> <string name="accessibility_data_saver_on" msgid="5394743820189757731">"Oszczędzanie danych jest włączone"</string> <string name="accessibility_data_saver_off" msgid="58339669022107171">"Oszczędzanie danych jest wyłączone"</string> - <string name="switch_bar_on" msgid="1770868129120096114">"Wł."</string> - <string name="switch_bar_off" msgid="5669805115416379556">"Wył."</string> + <string name="switch_bar_on" msgid="1770868129120096114">"Włączono"</string> + <string name="switch_bar_off" msgid="5669805115416379556">"Wyłączono"</string> <string name="tile_unavailable" msgid="3095879009136616920">"Niedostępne"</string> <string name="tile_disabled" msgid="373212051546573069">"Wyłączono"</string> <string name="nav_bar" msgid="4642708685386136807">"Pasek nawigacji"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index b51a912fde89..662f0deb99dd 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notificações menos urgentes abaixo"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Toque novamente para abrir"</string> + <string name="tap_again" msgid="1315420114387908655">"Toque novamente"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Deslize para cima para abrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Deslize para cima para tentar novamente"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloqueie para usar a NFC"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 0c6e6813b078..12132a78e429 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notificações menos urgentes abaixo"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Toque novamente para abrir"</string> + <string name="tap_again" msgid="1315420114387908655">"Toque novamente"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Deslize rapidamente para cima para abrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Deslize rapidamente para cima para tentar novamente."</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloquear para utilizar o NFC"</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index b51a912fde89..662f0deb99dd 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notificações menos urgentes abaixo"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Toque novamente para abrir"</string> + <string name="tap_again" msgid="1315420114387908655">"Toque novamente"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Deslize para cima para abrir"</string> <string name="keyguard_retry" msgid="886802522584053523">"Deslize para cima para tentar novamente"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Desbloqueie para usar a NFC"</string> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index bbe3cc01b2a6..267c308549e6 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -454,6 +454,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Notificările mai puțin urgente mai jos"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Atingeți din nou pentru a deschide"</string> + <string name="tap_again" msgid="1315420114387908655">"Atingeți din nou"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Glisați în sus pentru a deschide"</string> <string name="keyguard_retry" msgid="886802522584053523">"Glisați pentru a încerca din nou"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Deblocați pentru a folosi NFC"</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 4c588b6df597..6f970ef09595 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Показать менее важные уведомления"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Нажмите ещё раз, чтобы открыть"</string> + <string name="tap_again" msgid="1315420114387908655">"Нажмите ещё раз"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Проведите вверх, чтобы открыть"</string> <string name="keyguard_retry" msgid="886802522584053523">"Чтобы повторить попытку, проведите вверх"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Чтобы использовать NFC, разблокируйте устройство."</string> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 89127274b84c..a719c920eb6f 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"හදිසිය අඩු දැනුම් දීම් පහත"</string> <string name="notification_tap_again" msgid="4477318164947497249">"විවෘත කිරීමට නැවත තට්ටු කරන්න"</string> + <string name="tap_again" msgid="1315420114387908655">"නැවත තට්ටු කරන්න"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"විවෘත කිරීමට ස්වයිප් කරන්න"</string> <string name="keyguard_retry" msgid="886802522584053523">"නැවත උත්සාහ කිරීමට ඉහළට ස්වයිප් කරන්න"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC භාවිත කිරීමට අගුලු හරින්න"</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index dd36b29ff569..f006722f58dd 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Menej naliehavé upozornenia sa nachádzajú nižšie"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Upozornenie otvoríte opätovným klepnutím"</string> + <string name="tap_again" msgid="1315420114387908655">"Klepnite znova"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Otvorte potiahnutím prstom nahor"</string> <string name="keyguard_retry" msgid="886802522584053523">"Potiahnutím nahor to skúste znova"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Ak chcete použiť NFC, odomknite"</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 8ba5d797b6aa..4aea246b1254 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Manj nujna obvestila spodaj"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Znova se dotaknite, da odprete"</string> + <string name="tap_again" msgid="1315420114387908655">"Znova se dotaknite možnosti"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Povlecite navzgor, da odprete"</string> <string name="keyguard_retry" msgid="886802522584053523">"Povlecite navzgor za vnovičen poskus"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Odklenite napravo, če želite uporabljati NFC."</string> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index e17d51779653..844abad8493a 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Njoftimet më pak urgjente, më poshtë!"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Trokit përsëri për ta hapur"</string> + <string name="tap_again" msgid="1315420114387908655">"Trokit sërish"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Rrëshqit lart për ta hapur"</string> <string name="keyguard_retry" msgid="886802522584053523">"Rrëshqit lart për të provuar përsëri"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Shkyçe për të përdorur NFC-në"</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 9fd546ed3c36..9409e706b5c4 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -454,6 +454,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Мање хитна обавештења су у наставку"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Додирните поново да бисте отворили"</string> + <string name="tap_again" msgid="1315420114387908655">"Додирните поново"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Превуците нагоре да бисте отворили"</string> <string name="keyguard_retry" msgid="886802522584053523">"Превуците нагоре да бисте пробали поново"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Откључајте да бисте користили NFC"</string> @@ -521,7 +522,7 @@ <string name="notification_section_header_conversations" msgid="821834744538345661">"Конверзације"</string> <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Обришите сва нечујна обавештења"</string> <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Обавештења су паузирана режимом Не узнемиравај"</string> - <string name="media_projection_action_text" msgid="3634906766918186440">"Започни одмах"</string> + <string name="media_projection_action_text" msgid="3634906766918186440">"Започни"</string> <string name="empty_shade_text" msgid="8935967157319717412">"Нема обавештења"</string> <string name="profile_owned_footer" msgid="2756770645766113964">"Профил се можда надгледа"</string> <string name="vpn_footer" msgid="3457155078010607471">"Мрежа се можда надгледа"</string> @@ -1010,7 +1011,7 @@ <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" и "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"Користи <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Недавно користила апликација <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"Недавно користио <xliff:g id="APPLICATION_NAME">%1$s</xliff:g>"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(посао)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"Телефонски позив"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(преко: <xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>)"</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index e7f6fe54f404..30864a802b6e 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -306,7 +306,7 @@ <string name="data_usage_disabled_dialog_enable" msgid="2796648546086408937">"Återuppta"</string> <string name="gps_notification_searching_text" msgid="231304732649348313">"Sökning efter GPS pågår"</string> <string name="gps_notification_found_text" msgid="3145873880174658526">"Platsen har identifierats av GPS"</string> - <string name="accessibility_location_active" msgid="2845747916764660369">"Det finns aktiva platsbegäranden"</string> + <string name="accessibility_location_active" msgid="2845747916764660369">"Det finns aktiva platsförfrågningar"</string> <string name="accessibility_sensors_off_active" msgid="2619725434618911551">"Sensorer har inaktiverats"</string> <string name="accessibility_clear_all" msgid="970525598287244592">"Ta bort alla meddelanden."</string> <string name="notification_group_overflow_indicator" msgid="7605120293801012648">"<xliff:g id="NUMBER">%s</xliff:g> till"</string> @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Mindre brådskande aviseringar nedan"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Tryck igen för att öppna"</string> + <string name="tap_again" msgid="1315420114387908655">"Tryck igen"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Öppna genom att svepa uppåt"</string> <string name="keyguard_retry" msgid="886802522584053523">"Svep uppåt om du vill försöka igen"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Lås upp om du vill använda NFC"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 5c4005114da0..fa6952c9e117 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>+"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Arifa zisizo za dharura sana ziko hapo chini"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Gusa tena ili ufungue"</string> + <string name="tap_again" msgid="1315420114387908655">"Gusa tena"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Telezesha kidole juu ili ufungue"</string> <string name="keyguard_retry" msgid="886802522584053523">"Telezesha kidole juu ili ujaribu tena"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Fungua ili utumie NFC"</string> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index 8c2649ef5a04..c93bdd6f43b1 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"அவசர நிலைக் குறைவான அறிவிப்புகள் கீழே உள்ளன"</string> <string name="notification_tap_again" msgid="4477318164947497249">"திறக்க, மீண்டும் தட்டவும்"</string> + <string name="tap_again" msgid="1315420114387908655">"மீண்டும் தட்டவும்"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"திறப்பதற்கு மேல் நோக்கி ஸ்வைப் செய்யவும்"</string> <string name="keyguard_retry" msgid="886802522584053523">"மீண்டும் முயல மேல்நோக்கி ஸ்வைப் செய்யவும்"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFCயைப் பயன்படுத்த அன்லாக் செய்யவும்"</string> @@ -511,7 +512,7 @@ <string name="media_projection_remember_text" msgid="6896767327140422951">"மீண்டும் காட்டாதே"</string> <string name="clear_all_notifications_text" msgid="348312370303046130">"எல்லாவற்றையும் அழி"</string> <string name="manage_notifications_text" msgid="6885645344647733116">"அறிவிப்புகளை நிர்வகி"</string> - <string name="manage_notifications_history_text" msgid="57055985396576230">"வரலாறு"</string> + <string name="manage_notifications_history_text" msgid="57055985396576230">"இதுவரை வந்த அறிவிப்புகள்"</string> <string name="notification_section_header_incoming" msgid="850925217908095197">"புதிது"</string> <string name="notification_section_header_gentle" msgid="6804099527336337197">"சைலன்ட்"</string> <string name="notification_section_header_alerting" msgid="5581175033680477651">"அறிவிப்புகள்"</string> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 407ab00d994b..e7169c1a783b 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -452,6 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"తక్కువ అత్యవసర నోటిఫికేషన్లు దిగువన"</string> <string name="notification_tap_again" msgid="4477318164947497249">"తెరవడానికి మళ్లీ నొక్కండి"</string> + <!-- no translation found for tap_again (1315420114387908655) --> + <skip /> <string name="keyguard_unlock" msgid="8031975796351361601">"తెరవడానికి, పైకి స్వైప్ చేయండి"</string> <string name="keyguard_retry" msgid="886802522584053523">"మళ్ళీ ప్రయత్నించడానికి పైకి స్వైప్ చేయండి"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFCని ఉపయోగించడానికి అన్లాక్ చేయండి"</string> @@ -505,7 +507,7 @@ <string name="battery_saver_notification_text" msgid="2617841636449016951">"పనితీరుని మరియు నేపథ్య డేటాను తగ్గిస్తుంది"</string> <string name="battery_saver_notification_action_text" msgid="6022091913807026887">"బ్యాటరీ సేవర్ను ఆఫ్ చేయండి"</string> <string name="media_projection_dialog_text" msgid="1755705274910034772">"రికార్డ్ చేస్తున్నప్పుడు లేదా ప్రసారం చేస్తున్నప్పుడు, మీ స్క్రీన్పై ప్రదర్శించబడిన లేదా మీ పరికరం నుండి ప్లే చేయబడిన సమాచారం మొత్తాన్ని, <xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g> యాక్సెస్ చేయగలుగుతుంది. ఈ సమాచారంలో, పాస్వర్డ్లు, చెల్లింపు వివరాలు, ఫోటోలు, సందేశాలు, మీరు ప్లే చేసే ఆడియో వంటివి ఉంటాయి."</string> - <string name="media_projection_dialog_service_text" msgid="958000992162214611">"రికార్డ్ చేస్తున్నప్పుడు లేదా ప్రసారం చేస్తున్నప్పుడు మీ స్క్రీన్పై ప్రదర్శించబడిన లేదా మీ పరికరం నుండి ప్లే చేయబడిన సమాచారం మొత్తాన్ని, ఈ ఫంక్షన్ను అందిస్తున్న సర్వీసు యాక్సెస్ చేయగలదు. ఈ సమాచారంలో, పాస్వర్డ్లు, పేమెంట్ వివరాలు, ఫోటోలు, మెసేజ్లు, మీరు ప్లే చేసే ఆడియో వంటివి ఉంటాయి."</string> + <string name="media_projection_dialog_service_text" msgid="958000992162214611">"రికార్డ్ చేస్తున్నప్పుడు లేదా ప్రసారం చేస్తున్నప్పుడు మీ స్క్రీన్పై ప్రదర్శించబడిన లేదా మీ పరికరం నుండి ప్లే చేయబడిన సమాచారం మొత్తాన్ని, ఈ ఫంక్షన్ను అందిస్తున్న సర్వీస్ యాక్సెస్ చేయగలదు. ఈ సమాచారంలో, పాస్వర్డ్లు, పేమెంట్ వివరాలు, ఫోటోలు, మెసేజ్లు, మీరు ప్లే చేసే ఆడియో వంటివి ఉంటాయి."</string> <string name="media_projection_dialog_service_title" msgid="2888507074107884040">"రికార్డ్ చేయడం లేదా ప్రసారం చేయడం ప్రారంభించాలా?"</string> <string name="media_projection_dialog_title" msgid="3316063622495360646">"<xliff:g id="APP_SEEKING_PERMISSION">%s</xliff:g>తో రికార్డ్ చేయడం లేదా ప్రసారం చేయడం ప్రారంభించాలా?"</string> <string name="media_projection_remember_text" msgid="6896767327140422951">"మళ్లీ చూపవద్దు"</string> @@ -1005,7 +1007,7 @@ <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">", "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" మరియు "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"<xliff:g id="APPLICATION_NAME">%1$s</xliff:g> ద్వారా ఉపయోగించబడుతోంది"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"ఇటీవల <xliff:g id="APPLICATION_NAME">%1$s</xliff:g> ద్వారా ఉపయోగించారు"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"ఇటీవలే, <xliff:g id="APPLICATION_NAME">%1$s</xliff:g> ద్వారా ఉపయోగించబడింది"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(ఆఫీస్)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"ఫోన్ కాల్"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(<xliff:g id="APPLICATION_NAME_S_">%s</xliff:g> ద్వారా)"</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 1536d9a78a21..b7a0cc95cbc1 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"การแจ้งเตือนที่เร่งด่วนน้อยด้านล่าง"</string> <string name="notification_tap_again" msgid="4477318164947497249">"แตะอีกครั้งเพื่อเปิด"</string> + <string name="tap_again" msgid="1315420114387908655">"แตะอีกครั้ง"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"เลื่อนขึ้นเพื่อเปิด"</string> <string name="keyguard_retry" msgid="886802522584053523">"เลื่อนขึ้นเพื่อลองอีกครั้ง"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"ปลดล็อกเพื่อใช้ NFC"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 0ece0cb44788..f15e377491c5 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Nasa ibaba ang mga notification na hindi masyadong mahalaga"</string> <string name="notification_tap_again" msgid="4477318164947497249">"I-tap ulit upang buksan"</string> + <string name="tap_again" msgid="1315420114387908655">"I-tap ulit"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Mag-swipe pataas para buksan"</string> <string name="keyguard_retry" msgid="886802522584053523">"Mag-swipe pataas para subukan ulit"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"I-unlock para magamit ang NFC"</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index c0702e9523cd..4fd84a1f9ce5 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Daha az acil bildirimler aşağıdadır"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Açmak için tekrar dokunun"</string> + <string name="tap_again" msgid="1315420114387908655">"Tekrar dokunun"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Açmak için yukarı kaydırın"</string> <string name="keyguard_retry" msgid="886802522584053523">"Tekrar denemek için yukarı kaydırın"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC\'yi kullanmak için kilidi açın"</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 2b6183d5b25c..ff6d391cc5ac 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -456,6 +456,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Менше термінових сповіщень нижче"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Торкніться знову, щоб відкрити"</string> + <string name="tap_again" msgid="1315420114387908655">"Натисніть знову"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Проведіть пальцем угору, щоб відкрити"</string> <string name="keyguard_retry" msgid="886802522584053523">"Проведіть пальцем угору, щоб повторити спробу"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Розблокуйте екран, щоб скористатись NFC"</string> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index f27f81317c7e..4ca003d8ada6 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"کم اہم اطلاعات ذیل میں ہیں"</string> <string name="notification_tap_again" msgid="4477318164947497249">"کھولنے کیلئے دوبارہ تھپتھپائیں"</string> + <string name="tap_again" msgid="1315420114387908655">"دوبارہ تھپتھپائیں"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"کھولنے کے لیے اوپر سوائپ کريں"</string> <string name="keyguard_retry" msgid="886802522584053523">"دوبارہ کوشش کرنے کے لیے اوپر سوائپ کريں"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC استعمال کرنے کیلئے غیر مقفل کریں"</string> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 6a9d46f69e40..6f22dc226ae9 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Kam ahamiyatli bildirishnomalarni pastda ko‘rsatish"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Ochish uchun yana bosing"</string> + <string name="tap_again" msgid="1315420114387908655">"Yana bosing"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Ochish uchun tepaga suring"</string> <string name="keyguard_retry" msgid="886802522584053523">"Qayta urinish uchun tepaga suring"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"NFC ishlatish uchun qurilma qulfini oching"</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 86ee67a82818..8d90382d702d 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Thông báo ít khẩn cấp hơn bên dưới"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Nhấn lại để mở"</string> + <string name="tap_again" msgid="1315420114387908655">"Nhấn lại"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Vuốt lên để mở"</string> <string name="keyguard_retry" msgid="886802522584053523">"Vuốt lên để thử lại"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Mở khóa để sử dụng NFC"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 928510bebbb8..0c3bc2510f7d 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -452,6 +452,8 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"不太紧急的通知会显示在下方"</string> <string name="notification_tap_again" msgid="4477318164947497249">"再次点按即可打开"</string> + <!-- no translation found for tap_again (1315420114387908655) --> + <skip /> <string name="keyguard_unlock" msgid="8031975796351361601">"向上滑动即可打开"</string> <string name="keyguard_retry" msgid="886802522584053523">"向上滑动即可重试"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"需要解锁才能使用 NFC"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index a80896f3cc73..4c4c245df95c 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -353,7 +353,7 @@ <string name="quick_settings_location_off_label" msgid="7923929131443915919">"位置資訊已關閉"</string> <string name="quick_settings_camera_label" msgid="5612076679385269339">"相機存取權"</string> <string name="quick_settings_mic_label" msgid="8392773746295266375">"麥克風存取權"</string> - <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"可用"</string> + <string name="quick_settings_camera_mic_available" msgid="1453719768420394314">"允許"</string> <string name="quick_settings_camera_mic_blocked" msgid="4710884905006788281">"已禁用"</string> <string name="quick_settings_media_device_label" msgid="8034019242363789941">"媒體裝置"</string> <string name="quick_settings_rssi_label" msgid="3397615415140356701">"RSSI"</string> @@ -429,9 +429,9 @@ <string name="sensor_privacy_start_use_mic_dialog_title" msgid="563796653825944944">"要解除封鎖裝置麥克風嗎?"</string> <string name="sensor_privacy_start_use_camera_dialog_title" msgid="8807639852654305227">"要解除封鎖裝置相機嗎?"</string> <string name="sensor_privacy_start_use_mic_camera_dialog_title" msgid="4316471859905020023">"要解除封鎖裝置相機和麥克風嗎?"</string> - <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"這麼做可允許所有應用程式和服務使用麥克風。"</string> - <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"這麼做可允許所有應用程式和服務使用相機。"</string> - <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"這麼做可允許所有應用程式和服務使用相機或麥克風。"</string> + <string name="sensor_privacy_start_use_mic_dialog_content" msgid="1624701280680913717">"解除封鎖後,凡有存取權的應用程式和服務都可使用您的麥克風。"</string> + <string name="sensor_privacy_start_use_camera_dialog_content" msgid="4704948062372435963">"解除封鎖後,凡有存取權的應用程式和服務都可使用您的相機。"</string> + <string name="sensor_privacy_start_use_mic_camera_dialog_content" msgid="3577642558418404919">"解除封鎖後,凡有存取權的應用程式和服務都可使用您的相機或麥克風。"</string> <string name="media_seamless_remote_device" msgid="177033467332920464">"裝置"</string> <string name="recents_swipe_up_onboarding" msgid="2820265886420993995">"向上滑動即可切換應用程式"</string> <string name="recents_quick_scrub_onboarding" msgid="765934300283514912">"向右拖曳即可快速切換應用程式"</string> @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"還有 <xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g> 則通知"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"不太緊急的通知會在下方顯示"</string> <string name="notification_tap_again" msgid="4477318164947497249">"再次輕按即可開啟"</string> + <string name="tap_again" msgid="1315420114387908655">"再次輕按"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"向上滑動即可開啟"</string> <string name="keyguard_retry" msgid="886802522584053523">"請向上滑動以再試一次"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"解鎖方可使用 NFC"</string> @@ -1005,7 +1006,7 @@ <string name="ongoing_privacy_dialog_separator" msgid="1866222499727706187">"、 "</string> <string name="ongoing_privacy_dialog_last_separator" msgid="5615876114268009767">" 和 "</string> <string name="ongoing_privacy_dialog_using_op" msgid="426635338010011796">"「<xliff:g id="APPLICATION_NAME">%1$s</xliff:g>」正在使用"</string> - <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"「<xliff:g id="APPLICATION_NAME">%1$s</xliff:g>」最近曾使用過"</string> + <string name="ongoing_privacy_dialog_recent_op" msgid="2736290123662790026">"「<xliff:g id="APPLICATION_NAME">%1$s</xliff:g>」最近使用過"</string> <string name="ongoing_privacy_dialog_enterprise" msgid="3003314125311966061">"(公司)"</string> <string name="ongoing_privacy_dialog_phonecall" msgid="4487370562589839298">"電話"</string> <string name="ongoing_privacy_dialog_attribution_text" msgid="4738795925380373994">"(透過「<xliff:g id="APPLICATION_NAME_S_">%s</xliff:g>」)"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 7584d230a774..58d9231ba96a 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"還有 <xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g> 則通知"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"較不緊急的通知會顯示在下方"</string> <string name="notification_tap_again" msgid="4477318164947497249">"再次輕觸即可開啟"</string> + <string name="tap_again" msgid="1315420114387908655">"再輕觸一次"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"向上滑動即可開啟"</string> <string name="keyguard_retry" msgid="886802522584053523">"向上滑動即可重試"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"如要使用 NFC,請先解鎖"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index 021afbb3efc0..e4ac66a98b2f 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -452,6 +452,7 @@ <string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string> <string name="speed_bump_explanation" msgid="7248696377626341060">"Izaziso ezingasheshi kakhulu ezingezansi"</string> <string name="notification_tap_again" msgid="4477318164947497249">"Thepha futhi ukuze uvule"</string> + <string name="tap_again" msgid="1315420114387908655">"Thepha futhi"</string> <string name="keyguard_unlock" msgid="8031975796351361601">"Swayiphela phezulu ukuze uvule"</string> <string name="keyguard_retry" msgid="886802522584053523">"Swayiphela phezulu ukuze uzame futhi"</string> <string name="require_unlock_for_nfc" msgid="1305686454823018831">"Vula ukuze usebenzise i-NFC"</string> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index ab606babe804..0be648f1b9bd 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -561,6 +561,7 @@ <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_side_view_size">28dp</dimen> <dimen name="qs_label_container_margin">10dp</dimen> <dimen name="qs_quick_tile_size">60dp</dimen> <dimen name="qs_tile_padding">12dp</dimen> @@ -1467,16 +1468,17 @@ <dimen name="medium_content_padding_above_name">4dp</dimen> <!-- Accessibility floating menu --> - <dimen name="accessibility_floating_menu_elevation">5dp</dimen> + <dimen name="accessibility_floating_menu_elevation">3dp</dimen> <dimen name="accessibility_floating_menu_stroke_width">1dp</dimen> <dimen name="accessibility_floating_menu_stroke_inset">-2dp</dimen> <dimen name="accessibility_floating_menu_margin">16dp</dimen> - <dimen name="accessibility_floating_menu_padding">6dp</dimen> + <dimen name="accessibility_floating_menu_small_padding">6dp</dimen> <dimen name="accessibility_floating_menu_small_width_height">36dp</dimen> <dimen name="accessibility_floating_menu_small_single_radius">25dp</dimen> <dimen name="accessibility_floating_menu_small_multiple_radius">20dp</dimen> + <dimen name="accessibility_floating_menu_large_padding">8dp</dimen> <dimen name="accessibility_floating_menu_large_width_height">56dp</dimen> - <dimen name="accessibility_floating_menu_large_single_radius">33dp</dimen> + <dimen name="accessibility_floating_menu_large_single_radius">35dp</dimen> <dimen name="accessibility_floating_menu_large_multiple_radius">35dp</dimen> <dimen name="accessibility_floating_tooltip_arrow_width">8dp</dimen> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index aadcaba09402..6a848fbd2a26 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -199,11 +199,11 @@ <item name="android:textSize">@dimen/qs_tile_text_size</item> <item name="android:letterSpacing">0.01</item> <item name="android:lineHeight">20sp</item> - <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item> + <item name="android:fontFamily">@*android:string/config_bodyFontFamilyMedium</item> </style> <style name="TextAppearance.QS.TileLabel.Secondary"> - <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item> + <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item> </style> <style name="TextAppearance.QS.UserSwitcher"> @@ -223,7 +223,7 @@ </style> <style name="TextAppearance.QS.Status"> - <item name="android:fontFamily">@*android:string/config_headlineFontFamilyMedium</item> + <item name="android:fontFamily">@*android:string/config_bodyFontFamilyMedium</item> <item name="android:textColor">?android:attr/textColorPrimary</item> <item name="android:textSize">14sp</item> <item name="android:letterSpacing">0.01</item> @@ -231,20 +231,19 @@ </style> <style name="TextAppearance.QS.SecurityFooter" parent="@style/TextAppearance.QS.Status"> - <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item> + <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item> <item name="android:textColor">?android:attr/textColorSecondary</item> </style> - <style name="TextAppearance.QS.Status.Carriers"> - <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item> - </style> + <style name="TextAppearance.QS.Status.Carriers" /> <style name="TextAppearance.QS.Status.Carriers.NoCarrierText"> + <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item> <item name="android:textColor">?android:attr/textColorSecondary</item> </style> <style name="TextAppearance.QS.Status.Build"> - <item name="android:fontFamily">@*android:string/config_headlineFontFamily</item> + <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item> <item name="android:textColor">?android:attr/textColorSecondary</item> </style> diff --git a/packages/SystemUI/res/values/tiles_states_strings.xml b/packages/SystemUI/res/values/tiles_states_strings.xml new file mode 100644 index 000000000000..5ac7c1d3c65b --- /dev/null +++ b/packages/SystemUI/res/values/tiles_states_strings.xml @@ -0,0 +1,284 @@ +<!-- + ~ 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. + --> + +<!-- This resources set the default subtitle for tiles. This way, each tile can be translated + separately. + The indices in the array correspond to the state values in QSTile: + * STATE_UNAVAILABLE + * STATE_INACTIVE + * STATE_ACTIVE + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as if + they could appear. +--> +<resources> + <!-- Default names for tiles states: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_default"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for internet tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_internet"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for wifi tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_wifi"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for cell (data) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear.[CHAR LIMIT=32] --> + <string-array name="tile_states_cell"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for battery (saver) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_battery"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for dnd (Do not disturb) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_dnd"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for flashlight tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_flashlight"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for rotation (lock) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_rotation"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for bt (bluetooth) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_bt"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for airplane tile: unavailable, off, on [CHAR LIMIT=32] --> + <string-array name="tile_states_airplane"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for location tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_location"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for hotspot tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_hotspot"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for (color) inversion tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_inversion"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for (data) saver tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_saver"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for dark (mode) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_dark"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for work (mode) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_work"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for cast tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_cast"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for night (light) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_night"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for screenrecord tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_screenrecord"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for reverse (charging) tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_reverse"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for reduce_brightness tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_reduce_brightness"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for cameratoggle tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear.[CHAR LIMIT=32] --> + <string-array name="tile_states_cameratoggle"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for mictoggle tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_mictoggle"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for (home) controls tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_controls"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for (quick access) wallet tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_wallet"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> + + <!-- State names for alarm tile: unavailable, off, on. + This subtitle is shown when the tile is in that particular state but does not set its own + subtitle, so some of these may never appear on screen. They should still be translated as + if they could appear. [CHAR LIMIT=32] --> + <string-array name="tile_states_alarm"> + <item>@string/tile_unavailable</item> + <item>@string/switch_bar_off</item> + <item>@string/switch_bar_on</item> + </string-array> +</resources>
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/keyguard/AnimatableClockController.java b/packages/SystemUI/src/com/android/keyguard/AnimatableClockController.java index 7cb4846cf7e7..92af58eb9af4 100644 --- a/packages/SystemUI/src/com/android/keyguard/AnimatableClockController.java +++ b/packages/SystemUI/src/com/android/keyguard/AnimatableClockController.java @@ -107,6 +107,21 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie } }; + private final StatusBarStateController.StateListener mStatusBarStatePersistentListener = + new StatusBarStateController.StateListener() { + @Override + public void onDozeAmountChanged(float linear, float eased) { + boolean noAnimation = (mDozeAmount == 0f && linear == 1f) + || (mDozeAmount == 1f && linear == 0f); + boolean isDozing = linear > mDozeAmount; + mDozeAmount = linear; + if (mIsDozing != isDozing) { + mIsDozing = isDozing; + mView.animateDoze(mIsDozing, !noAnimation); + } + } + }; + private final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override @@ -133,14 +148,15 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie updateLocale(); mBroadcastDispatcher.registerReceiver(mLocaleBroadcastReceiver, new IntentFilter(Intent.ACTION_LOCALE_CHANGED)); - mStatusBarStateController.addCallback(mStatusBarStateListener); - mIsDozing = mStatusBarStateController.isDozing(); mDozeAmount = mStatusBarStateController.getDozeAmount(); mBatteryController.addCallback(mBatteryCallback); mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback); mKeyguardShowing = true; + mStatusBarStateController.removeCallback(mStatusBarStatePersistentListener); + mStatusBarStateController.addCallback(mStatusBarStatePersistentListener); + refreshTime(); initColors(); mView.animateDoze(mIsDozing, false); @@ -149,9 +165,11 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie @Override protected void onViewDetached() { mBroadcastDispatcher.unregisterReceiver(mLocaleBroadcastReceiver); - mStatusBarStateController.removeCallback(mStatusBarStateListener); mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateMonitorCallback); mBatteryController.removeCallback(mBatteryCallback); + if (!mView.isAttachedToWindow()) { + mStatusBarStateController.removeCallback(mStatusBarStatePersistentListener); + } } /** Animate the clock appearance */ @@ -199,19 +217,4 @@ public class AnimatableClockController extends ViewController<AnimatableClockVie mView.setColors(mDozingColor, mLockScreenColor); mView.animateDoze(mIsDozing, false); } - - private final StatusBarStateController.StateListener mStatusBarStateListener = - new StatusBarStateController.StateListener() { - @Override - public void onDozeAmountChanged(float linear, float eased) { - boolean noAnimation = (mDozeAmount == 0f && linear == 1f) - || (mDozeAmount == 1f && linear == 0f); - boolean isDozing = linear > mDozeAmount; - mDozeAmount = linear; - if (mIsDozing != isDozing) { - mIsDozing = isDozing; - mView.animateDoze(mIsDozing, !noAnimation); - } - } - }; } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java index 3e084b7d692a..fbea1e9a594d 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java @@ -305,10 +305,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS // know that it should re-position our SmartSpace. if (mKeyguardUnlockAnimationController.isUnlockingWithSmartSpaceTransition()) { mKeyguardUnlockAnimationController.updateLockscreenSmartSpacePosition(); - } else { - // Otherwise, reset Y translation in case it's still offset from a previous shared - // element transition. - ((View) mSmartspaceView).setTranslationY(0f); } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java index 7b6514a63195..e8cc5c8a49f3 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusViewController.java @@ -27,6 +27,7 @@ import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.phone.DozeParameters; +import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.ViewController; @@ -66,7 +67,8 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV ConfigurationController configurationController, DozeParameters dozeParameters, KeyguardUnlockAnimationController keyguardUnlockAnimationController, - SmartspaceTransitionController smartspaceTransitionController) { + SmartspaceTransitionController smartspaceTransitionController, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { super(keyguardStatusView); mKeyguardSliceViewController = keyguardSliceViewController; mKeyguardClockSwitchController = keyguardClockSwitchController; @@ -75,7 +77,7 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV mDozeParameters = dozeParameters; mKeyguardStateController = keyguardStateController; mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, keyguardStateController, - dozeParameters); + dozeParameters, unlockedScreenOffAnimationController); mKeyguardUnlockAnimationController = keyguardUnlockAnimationController; mSmartspaceTransitionController = smartspaceTransitionController; @@ -87,7 +89,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV // element transition. if (keyguardStateController.isShowing()) { mView.setChildrenAlphaExcludingClockView(1f); - mKeyguardClockSwitchController.setChildrenAlphaExcludingSmartspace(1f); } } }); @@ -238,13 +239,6 @@ public class KeyguardStatusViewController extends ViewController<KeyguardStatusV } /** - * @return {@code true} if we are currently animating the screen off from unlock - */ - public boolean isAnimatingScreenOffFromUnlocked() { - return mKeyguardVisibilityHelper.isAnimatingScreenOffFromUnlocked(); - } - - /** * Set the visibility of the keyguard status view based on some new state. */ public void setKeyguardStatusViewVisibility( diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java b/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java index b6a58dc7cb91..7edecc80a27e 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardVisibilityHelper.java @@ -27,6 +27,7 @@ import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.phone.DozeParameters; +import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.KeyguardStateController; /** @@ -38,16 +39,19 @@ public class KeyguardVisibilityHelper { private View mView; private final KeyguardStateController mKeyguardStateController; private final DozeParameters mDozeParameters; + private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private boolean mKeyguardViewVisibilityAnimating; private boolean mLastOccludedState = false; - private boolean mAnimatingScreenOff; private final AnimationProperties mAnimationProperties = new AnimationProperties(); - public KeyguardVisibilityHelper(View view, KeyguardStateController keyguardStateController, - DozeParameters dozeParameters) { + public KeyguardVisibilityHelper(View view, + KeyguardStateController keyguardStateController, + DozeParameters dozeParameters, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { mView = view; mKeyguardStateController = keyguardStateController; mDozeParameters = dozeParameters; + mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; } public boolean isVisibilityAnimating() { @@ -122,32 +126,14 @@ public class KeyguardVisibilityHelper { .alpha(1f) .withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable) .start(); - } else if (mDozeParameters.shouldControlUnlockedScreenOff()) { + } else if (mUnlockedScreenOffAnimationController + .isScreenOffLightRevealAnimationPlaying()) { mKeyguardViewVisibilityAnimating = true; - mAnimatingScreenOff = true; - - mView.setVisibility(View.VISIBLE); - mView.setAlpha(0f); - float currentY = mView.getY(); - mView.setY(currentY - mView.getHeight() * 0.1f); - int duration = StackStateAnimator.ANIMATION_DURATION_WAKEUP; - int delay = (int) (duration * .6f); - // We animate the Y properly separately using the PropertyAnimator, as the panel - // view als needs to update the end position. - mAnimationProperties.setDuration(duration).setDelay(delay); - PropertyAnimator.cancelAnimation(mView, AnimatableProperty.Y); - PropertyAnimator.setProperty(mView, AnimatableProperty.Y, currentY, - mAnimationProperties, - true /* animate */); - - mView.animate() - .setStartDelay(delay) - .setDuration(duration) - .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) - .alpha(1f) - .withEndAction(mAnimateKeyguardStatusViewVisibleEndRunnable) - .start(); + // Ask the screen off animation controller to animate the keyguard visibility for us + // since it may need to be cancelled due to keyguard lifecycle events. + mUnlockedScreenOffAnimationController.animateInKeyguard( + mView, mAnimateKeyguardStatusViewVisibleEndRunnable); } else { mView.setVisibility(View.VISIBLE); mView.setAlpha(1f); @@ -172,13 +158,5 @@ public class KeyguardVisibilityHelper { private final Runnable mAnimateKeyguardStatusViewVisibleEndRunnable = () -> { mKeyguardViewVisibilityAnimating = false; - mAnimatingScreenOff = false; }; - - /** - * @return {@code true} if we are currently animating the screen off from unlock - */ - public boolean isAnimatingScreenOffFromUnlocked() { - return mAnimatingScreenOff; - } } diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconView.java b/packages/SystemUI/src/com/android/keyguard/LockIconView.java index 2167876d9cb6..eff412e49836 100644 --- a/packages/SystemUI/src/com/android/keyguard/LockIconView.java +++ b/packages/SystemUI/src/com/android/keyguard/LockIconView.java @@ -87,6 +87,11 @@ public class LockIconView extends ImageView { updateSensorRect(h, w); } + @Override + public boolean hasOverlappingRendering() { + return false; + } + float getLocationTop() { return mLockIconCenter.y - mRadius; } diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java index 6b85ba8420fc..ccc487925fe4 100644 --- a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java @@ -451,4 +451,11 @@ public class LockIconViewController extends ViewController<LockIconView> impleme private final AccessibilityManager.TouchExplorationStateChangeListener mTouchExplorationStateChangeListener = enabled -> updateClickListener(); + + /** + * Set the alpha of this view. + */ + public void setAlpha(float alpha) { + mView.setAlpha(alpha); + } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuView.java index e85bd885c88a..259a9f7c6f3b 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuView.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuView.java @@ -18,6 +18,8 @@ package com.android.systemui.accessibility.floatingmenu; import static android.util.MathUtils.constrain; import static android.util.MathUtils.sq; +import static android.view.WindowInsets.Type.ime; +import static android.view.WindowInsets.Type.navigationBars; import static java.util.Objects.requireNonNull; @@ -29,6 +31,7 @@ import android.content.Context; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.content.res.Resources; +import android.graphics.Insets; import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.drawable.Drawable; @@ -42,7 +45,9 @@ import android.view.Gravity; import android.view.MotionEvent; import android.view.ViewConfiguration; import android.view.ViewGroup; +import android.view.WindowInsets; import android.view.WindowManager; +import android.view.WindowMetrics; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.view.animation.Animation; @@ -90,6 +95,7 @@ public class AccessibilityFloatingMenuView extends FrameLayout private boolean mIsShowing; private boolean mIsDownInEnlargedTouchArea; private boolean mIsDragging = false; + private boolean mImeVisibility; @Alignment private int mAlignment = Alignment.RIGHT; @SizeType @@ -369,6 +375,8 @@ public class AccessibilityFloatingMenuView extends FrameLayout mIsShowing = true; mWindowManager.addView(this, mCurrentLayoutParams); + + setOnApplyWindowInsetsListener((view, insets) -> onWindowInsetsApplied(insets)); setSystemGestureExclusion(); } @@ -379,6 +387,8 @@ public class AccessibilityFloatingMenuView extends FrameLayout mIsShowing = false; mWindowManager.removeView(this); + + setOnApplyWindowInsetsListener(null); setSystemGestureExclusion(); } @@ -409,11 +419,13 @@ public class AccessibilityFloatingMenuView extends FrameLayout mSizeType = newSizeType; - updateIconSizeWith(newSizeType); + updateItemViewWith(newSizeType); updateRadiusWith(newSizeType, mRadiusType, mTargets.size()); // When the icon sized changed, the menu size and location will be impacted. updateLocationWith(mAlignment, mPercentageY); + updateScrollModeWith(hasExceededMaxLayoutHeight()); + updateOffsetWith(mShapeType, mAlignment); setSystemGestureExclusion(); fadeOut(); @@ -565,6 +577,16 @@ public class AccessibilityFloatingMenuView extends FrameLayout return mListView.dispatchTouchEvent(event); } + private WindowInsets onWindowInsetsApplied(WindowInsets insets) { + final boolean currentImeVisibility = insets.isVisible(ime()); + if (currentImeVisibility != mImeVisibility) { + mImeVisibility = currentImeVisibility; + updateLocationWith(mAlignment, mPercentageY); + } + + return insets; + } + private boolean isMovingTowardsScreenEdge(@Alignment int side, int currentRawX, int downX) { return (side == Alignment.RIGHT && currentRawX > downX) || (side == Alignment.LEFT && downX > currentRawX); @@ -601,24 +623,35 @@ public class AccessibilityFloatingMenuView extends FrameLayout mScreenHeight = dm.heightPixels; mMargin = res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_margin); - mPadding = - res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_padding); mInset = res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_stroke_inset); mSquareScaledTouchSlop = sq(ViewConfiguration.get(getContext()).getScaledTouchSlop()); + + updateItemViewDimensionsWith(mSizeType); } - private void updateIconSizeWith(@SizeType int sizeType) { + private void updateItemViewDimensionsWith(@SizeType int sizeType) { final Resources res = getResources(); + final int paddingResId = + sizeType == SizeType.SMALL + ? R.dimen.accessibility_floating_menu_small_padding + : R.dimen.accessibility_floating_menu_large_padding; + mPadding = res.getDimensionPixelSize(paddingResId); + final int iconResId = sizeType == SizeType.SMALL ? R.dimen.accessibility_floating_menu_small_width_height : R.dimen.accessibility_floating_menu_large_width_height; mIconWidth = res.getDimensionPixelSize(iconResId); mIconHeight = mIconWidth; + } + + private void updateItemViewWith(@SizeType int sizeType) { + updateItemViewDimensionsWith(sizeType); + mAdapter.setItemPadding(mPadding); mAdapter.setIconWidthHeight(mIconWidth); mAdapter.notifyDataSetChanged(); } @@ -630,7 +663,6 @@ public class AccessibilityFloatingMenuView extends FrameLayout final LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); - layoutParams.setMargins(mMargin, mMargin, mMargin, mMargin); mListView.setLayoutParams(layoutParams); final InstantInsetLayerDrawable layerDrawable = new InstantInsetLayerDrawable(new Drawable[]{background}); @@ -645,6 +677,10 @@ public class AccessibilityFloatingMenuView extends FrameLayout } private void updateListView() { + final LayoutParams layoutParams = (FrameLayout.LayoutParams) mListView.getLayoutParams(); + layoutParams.setMargins(mMargin, mMargin, mMargin, mMargin); + mListView.setLayoutParams(layoutParams); + final int elevation = getResources().getDimensionPixelSize(R.dimen.accessibility_floating_menu_elevation); mListView.setElevation(elevation); @@ -658,6 +694,7 @@ public class AccessibilityFloatingMenuView extends FrameLayout WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, PixelFormat.TRANSLUCENT); + params.receiveInsetsIgnoringZOrder = true; params.windowAnimations = android.R.style.Animation_Translucent; params.gravity = Gravity.START | Gravity.TOP; params.x = getMaxWindowX(); @@ -676,11 +713,13 @@ public class AccessibilityFloatingMenuView extends FrameLayout updateDimensions(); updateListView(); - updateIconSizeWith(mSizeType); + updateItemViewWith(mSizeType); updateColor(); updateStrokeWith(newConfig.uiMode, mAlignment); updateLocationWith(mAlignment, mPercentageY); + updateRadiusWith(mSizeType, mRadiusType, mTargets.size()); updateScrollModeWith(hasExceededMaxLayoutHeight()); + setSystemGestureExclusion(); mLastConfiguration.setTo(newConfig); } @@ -728,10 +767,30 @@ public class AccessibilityFloatingMenuView extends FrameLayout */ private void updateLocationWith(@Alignment int side, float percentageCurrentY) { mCurrentLayoutParams.x = (side == Alignment.RIGHT) ? getMaxWindowX() : getMinWindowX(); - mCurrentLayoutParams.y = (int) (percentageCurrentY * getMaxWindowY()); + final int currentLayoutY = (int) (percentageCurrentY * getMaxWindowY()); + mCurrentLayoutParams.y = Math.max(MIN_WINDOW_Y, currentLayoutY - getInterval()); mWindowManager.updateViewLayout(this, mCurrentLayoutParams); } + /** + * Gets the moving interval to not overlap between the keyboard and menu view. + * + * @return the moving interval if they overlap each other, otherwise 0. + */ + private int getInterval() { + if (!mImeVisibility) { + return 0; + } + + final WindowMetrics windowMetrics = mWindowManager.getCurrentWindowMetrics(); + final Insets imeInsets = windowMetrics.getWindowInsets().getInsets( + ime() | navigationBars()); + final int imeY = mScreenHeight - imeInsets.bottom; + final int layoutBottomY = mCurrentLayoutParams.y + getWindowHeight(); + + return layoutBottomY > imeY ? (layoutBottomY - imeY) : 0; + } + private void updateOffsetWith(@ShapeType int shapeType, @Alignment int side) { final float halfWidth = getLayoutWidth() / 2.0f; final float offset = (shapeType == ShapeType.OVAL) ? 0 : halfWidth; diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapter.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapter.java index 76106e7c2cf1..63cfd5123c96 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/AccessibilityTargetAdapter.java @@ -16,8 +16,6 @@ package com.android.systemui.accessibility.floatingmenu; -import static android.view.View.GONE; - import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -43,6 +41,7 @@ import java.util.List; */ public class AccessibilityTargetAdapter extends Adapter<ViewHolder> { private int mIconWidthHeight; + private int mItemPadding; private final List<AccessibilityTarget> mTargets; @IntDef({ @@ -84,6 +83,7 @@ public class AccessibilityTargetAdapter extends Adapter<ViewHolder> { final AccessibilityTarget target = mTargets.get(position); holder.mIconView.setBackground(target.getIcon()); holder.updateIconWidthHeight(mIconWidthHeight); + holder.updateItemPadding(mItemPadding, getItemCount()); holder.itemView.setOnClickListener((v) -> target.onSelected()); holder.itemView.setStateDescription(target.getStateDescription()); holder.itemView.setContentDescription(target.getLabel()); @@ -120,14 +120,16 @@ public class AccessibilityTargetAdapter extends Adapter<ViewHolder> { mIconWidthHeight = iconWidthHeight; } + public void setItemPadding(int itemPadding) { + mItemPadding = itemPadding; + } + static class ViewHolder extends RecyclerView.ViewHolder { final View mIconView; - final View mDivider; ViewHolder(View itemView) { super(itemView); mIconView = itemView.findViewById(R.id.icon_view); - mDivider = itemView.findViewById(R.id.transparent_divider); } void updateIconWidthHeight(int newValue) { @@ -139,21 +141,31 @@ public class AccessibilityTargetAdapter extends Adapter<ViewHolder> { layoutParams.height = newValue; mIconView.setLayoutParams(layoutParams); } + + void updateItemPadding(int padding, int size) { + itemView.setPaddingRelative(padding, padding, padding, padding); + } } static class TopViewHolder extends ViewHolder { TopViewHolder(View itemView) { super(itemView); - final int padding = itemView.getPaddingStart(); - itemView.setPaddingRelative(padding, padding, padding, 0); + } + + @Override + void updateItemPadding(int padding, int size) { + final int paddingBottom = size <= 2 ? padding : 0; + itemView.setPaddingRelative(padding, padding, padding, paddingBottom); } } static class BottomViewHolder extends ViewHolder { BottomViewHolder(View itemView) { super(itemView); - mDivider.setVisibility(GONE); - final int padding = itemView.getPaddingStart(); + } + + @Override + void updateItemPadding(int padding, int size) { itemView.setPaddingRelative(padding, 0, padding, padding); } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/BaseTooltipView.java b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/BaseTooltipView.java index 308585491aef..61fc7edcd9a0 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/BaseTooltipView.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/floatingmenu/BaseTooltipView.java @@ -214,6 +214,8 @@ class BaseTooltipView extends FrameLayout { final GradientDrawable gradientDrawable = (GradientDrawable) mTextView.getBackground(); gradientDrawable.setCornerRadius(mTextViewCornerRadius); + gradientDrawable.setColor(Utils.getColorAttrDefaultColor(getContext(), + com.android.internal.R.attr.colorAccentPrimary)); } private void updateArrowWith(Rect anchorViewLocation) { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java index 1ac1df148000..29cd76da23a3 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java @@ -596,10 +596,6 @@ public abstract class AuthBiometricView extends LinearLayout { Utils.notifyAccessibilityContentChanged(mAccessibilityManager, this); } - private void setText(TextView view, CharSequence charSequence) { - view.setText(charSequence); - } - // Remove all pending icon and text animations private void removePendingAnimations() { mHandler.removeCallbacks(mResetHelpRunnable); @@ -688,7 +684,7 @@ public abstract class AuthBiometricView extends LinearLayout { */ @VisibleForTesting void onAttachedToWindowInternal() { - setText(mTitleView, mPromptInfo.getTitle()); + mTitleView.setText(mPromptInfo.getTitle()); if (isDeviceCredentialAllowed()) { final CharSequence credentialButtonText; @@ -718,7 +714,7 @@ public abstract class AuthBiometricView extends LinearLayout { mUseCredentialButton.setText(credentialButtonText); mUseCredentialButton.setVisibility(View.VISIBLE); } else { - setText(mNegativeButton, mPromptInfo.getNegativeButtonText()); + mNegativeButton.setText(mPromptInfo.getNegativeButtonText()); } setTextOrHide(mSubtitleView, mPromptInfo.getSubtitle()); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java index 6f1a387db496..9ec7bd0c1549 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java @@ -575,7 +575,7 @@ public class AuthContainerView extends LinearLayout if (mBiometricView != null) { mBiometricView.restoreState(savedState); } - wm.addView(this, getLayoutParams(mWindowToken)); + wm.addView(this, getLayoutParams(mWindowToken, mConfig.mPromptInfo.getTitle())); } @Override @@ -728,11 +728,9 @@ public class AuthContainerView extends LinearLayout } } - /** - * @param windowToken token for the window - * @return - */ - public static WindowManager.LayoutParams getLayoutParams(IBinder windowToken) { + @VisibleForTesting + static WindowManager.LayoutParams getLayoutParams(IBinder windowToken, + CharSequence title) { final int windowFlags = WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED | WindowManager.LayoutParams.FLAG_SECURE; final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( @@ -744,15 +742,11 @@ public class AuthContainerView extends LinearLayout lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS; lp.setFitInsetsTypes(lp.getFitInsetsTypes() & ~WindowInsets.Type.ime()); lp.setTitle("BiometricPrompt"); + lp.accessibilityTitle = title; lp.token = windowToken; return lp; } - private boolean hasFaceAndFingerprintSensors() { - final int[] ids = findFaceAndFingerprintSensors(); - return ids[0] >= 0 && ids[1] >= 0; - } - // returns [face, fingerprint] sensor ids (id is -1 if not present) private int[] findFaceAndFingerprintSensors() { int faceSensorId = -1; diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java index 2b4c1aba59b6..9a32412ba241 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java @@ -108,6 +108,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud mStatusBarStateController.addCallback(mStateListener); mUdfpsRequested = false; + mStatusBarState = mStatusBarStateController.getState(); mQsExpanded = mKeyguardViewManager.isQsExpanded(); mInputBouncerHiddenAmount = KeyguardBouncer.EXPANSION_HIDDEN; @@ -125,7 +126,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud mFaceDetectRunning = false; mStatusBarStateController.removeCallback(mStateListener); - mKeyguardViewManager.setAlternateAuthInterceptor(null); + mKeyguardViewManager.removeAlternateAuthInterceptor(mAlternateAuthInterceptor); mTransitioningFromHome = false; mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/Utils.java b/packages/SystemUI/src/com/android/systemui/biometrics/Utils.java index 076c7cbe3937..4d4e4dd0ad06 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/Utils.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/Utils.java @@ -29,7 +29,6 @@ import android.content.pm.PackageManager; import android.hardware.biometrics.PromptInfo; import android.hardware.biometrics.SensorPropertiesInternal; import android.os.UserManager; -import android.util.DisplayMetrics; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityManager; @@ -50,17 +49,6 @@ public class Utils { @IntDef({CREDENTIAL_PIN, CREDENTIAL_PATTERN, CREDENTIAL_PASSWORD}) @interface CredentialType {} - - static float dpToPixels(Context context, float dp) { - return dp * ((float) context.getResources().getDisplayMetrics().densityDpi - / DisplayMetrics.DENSITY_DEFAULT); - } - - static float pixelsToDp(Context context, float pixels) { - return pixels / ((float) context.getResources().getDisplayMetrics().densityDpi - / DisplayMetrics.DENSITY_DEFAULT); - } - static void notifyAccessibilityContentChanged(AccessibilityManager am, ViewGroup view) { if (!am.isEnabled()) { return; diff --git a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java index f01ac68ed5a2..508262d4ddec 100644 --- a/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java +++ b/packages/SystemUI/src/com/android/systemui/charging/WirelessChargingAnimation.java @@ -28,6 +28,9 @@ import android.util.Slog; import android.view.Gravity; import android.view.WindowManager; +import com.android.internal.logging.UiEvent; +import com.android.internal.logging.UiEventLogger; + /** * A WirelessChargingAnimation is a view containing view + animation for wireless charging. * @hide @@ -54,9 +57,10 @@ public class WirelessChargingAnimation { * @hide */ public WirelessChargingAnimation(@NonNull Context context, @Nullable Looper looper, - int transmittingBatteryLevel, int batteryLevel, Callback callback, boolean isDozing) { + int transmittingBatteryLevel, int batteryLevel, Callback callback, boolean isDozing, + UiEventLogger uiEventLogger) { mCurrentWirelessChargingView = new WirelessChargingView(context, looper, - transmittingBatteryLevel, batteryLevel, callback, isDozing); + transmittingBatteryLevel, batteryLevel, callback, isDozing, uiEventLogger); } /** @@ -66,9 +70,9 @@ public class WirelessChargingAnimation { */ public static WirelessChargingAnimation makeWirelessChargingAnimation(@NonNull Context context, @Nullable Looper looper, int transmittingBatteryLevel, int batteryLevel, - Callback callback, boolean isDozing) { + Callback callback, boolean isDozing, UiEventLogger uiEventLogger) { return new WirelessChargingAnimation(context, looper, transmittingBatteryLevel, - batteryLevel, callback, isDozing); + batteryLevel, callback, isDozing, uiEventLogger); } /** @@ -95,6 +99,7 @@ public class WirelessChargingAnimation { private final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(); private final Handler mHandler; + private final UiEventLogger mUiEventLogger; private int mGravity; private WirelessChargingLayout mView; @@ -104,11 +109,12 @@ public class WirelessChargingAnimation { public WirelessChargingView(Context context, @Nullable Looper looper, int transmittingBatteryLevel, int batteryLevel, Callback callback, - boolean isDozing) { + boolean isDozing, UiEventLogger uiEventLogger) { mCallback = callback; mNextView = new WirelessChargingLayout(context, transmittingBatteryLevel, batteryLevel, isDozing); mGravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER; + mUiEventLogger = uiEventLogger; final WindowManager.LayoutParams params = mParams; params.height = WindowManager.LayoutParams.MATCH_PARENT; @@ -195,6 +201,7 @@ public class WirelessChargingAnimation { mCallback.onAnimationStarting(); } mWM.addView(mView, mParams); + mUiEventLogger.log(WirelessChargingRippleEvent.WIRELESS_RIPPLE_PLAYED); } catch (WindowManager.BadTokenException e) { Slog.d(TAG, "Unable to add wireless charging view. " + e); } @@ -215,5 +222,19 @@ public class WirelessChargingAnimation { mView = null; } } + + enum WirelessChargingRippleEvent implements UiEventLogger.UiEventEnum { + @UiEvent(doc = "Wireless charging ripple effect played") + WIRELESS_RIPPLE_PLAYED(830); + + private final int mInt; + WirelessChargingRippleEvent(int id) { + mInt = id; + } + + @Override public int getId() { + return mInt; + } + } } } diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt index 06fbf734d1c4..8a47a36de8c4 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt @@ -102,6 +102,10 @@ class DetailDialog( override fun onReleased() { removeDetailTask() } + + override fun onBackPressedOnTaskRoot(taskId: Int) { + dismiss() + } } init { diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java index 666afed41c35..5a5cce8f5093 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardService.java @@ -70,7 +70,7 @@ public class KeyguardService extends Service { /** * @see #ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY */ - static boolean sEnableRemoteKeyguardAnimation = + public static boolean sEnableRemoteKeyguardAnimation = SystemProperties.getBoolean(ENABLE_REMOTE_KEYGUARD_ANIMATION_PROPERTY, false); private final KeyguardViewMediator mKeyguardViewMediator; @@ -232,10 +232,11 @@ public class KeyguardService extends Service { } @Override // Binder interface - public void onStartedWakingUp(@PowerManager.WakeReason int pmWakeReason) { + public void onStartedWakingUp( + @PowerManager.WakeReason int pmWakeReason, boolean cameraGestureTriggered) { Trace.beginSection("KeyguardService.mBinder#onStartedWakingUp"); checkPermission(); - mKeyguardViewMediator.onStartedWakingUp(); + mKeyguardViewMediator.onStartedWakingUp(cameraGestureTriggered); mKeyguardLifecyclesDispatcher.dispatch( KeyguardLifecyclesDispatcher.STARTED_WAKING_UP, pmWakeReason); Trace.endSection(); diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index 36a0acc6fb4c..da8a3b9a7b6d 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -52,6 +52,7 @@ import android.media.SoundPool; import android.os.Bundle; import android.os.DeadObjectException; import android.os.Handler; +import android.os.IBinder; import android.os.Looper; import android.os.Message; import android.os.PowerManager; @@ -71,6 +72,7 @@ import android.util.Slog; import android.util.SparseBooleanArray; import android.util.SparseIntArray; import android.view.IRemoteAnimationFinishedCallback; +import android.view.IRemoteAnimationRunner; import android.view.RemoteAnimationTarget; import android.view.SyncRtSurfaceTransactionApplier; import android.view.View; @@ -104,12 +106,14 @@ 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.CommandQueue; 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; import com.android.systemui.statusbar.phone.NotificationPanelViewController; import com.android.systemui.statusbar.phone.StatusBar; +import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.DeviceConfigProxy; @@ -232,6 +236,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, private StatusBarManager mStatusBarManager; private final SysuiStatusBarStateController mStatusBarStateController; private final Executor mUiBgExecutor; + private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private boolean mSystemReady; private boolean mBootCompleted; @@ -385,6 +390,19 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, private boolean mPendingLock; /** + * Whether a power button gesture (such as double tap for camera) has been detected. This is + * delivered directly from {@link KeyguardService}, immediately upon the gesture being detected. + * This is used in {@link #onStartedWakingUp} to decide whether to execute the pending lock, or + * ignore and reset it because we are actually launching an activity. + * + * This needs to be delivered directly to us, rather than waiting for + * {@link CommandQueue#onCameraLaunchGestureDetected}, because that call is asynchronous and is + * often delivered after the call to {@link #onStartedWakingUp}, which results in us locking the + * keyguard and then launching the activity behind it. + */ + private boolean mPowerGestureIntercepted = false; + + /** * Controller for showing individual "work challenge" lock screen windows inside managed profile * tasks when the current user has been unlocked but the profile is still locked. */ @@ -426,6 +444,11 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, */ private IRemoteAnimationFinishedCallback mSurfaceBehindRemoteAnimationFinishedCallback; + /** + * The animation runner to use for the next exit animation. + */ + private IRemoteAnimationRunner mKeyguardExitAnimationRunner; + private final DeviceConfig.OnPropertiesChangedListener mOnPropertiesChangedListener = new DeviceConfig.OnPropertiesChangedListener() { @Override @@ -783,7 +806,8 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, DozeParameters dozeParameters, SysuiStatusBarStateController statusBarStateController, KeyguardStateController keyguardStateController, - Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationControllerLazy) { + Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationControllerLazy, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { super(context); mFalsingCollector = falsingCollector; mLockPatternUtils = lockPatternUtils; @@ -815,6 +839,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mKeyguardStateController = keyguardStateController; mKeyguardUnlockAnimationControllerLazy = keyguardUnlockAnimationControllerLazy; + mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; } public void userActivity() { @@ -934,6 +959,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (DEBUG) Log.d(TAG, "onStartedGoingToSleep(" + offReason + ")"); synchronized (this) { mDeviceInteractive = false; + mPowerGestureIntercepted = false; mGoingToSleep = true; // Reset keyguard going away state so we can start listening for fingerprint. We @@ -1003,7 +1029,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, notifyFinishedGoingToSleep(); if (cameraGestureTriggered) { - Log.i(TAG, "Camera gesture was triggered, preventing Keyguard locking."); // Just to make sure, make sure the device is awake. mContext.getSystemService(PowerManager.class).wakeUp(SystemClock.uptimeMillis(), @@ -1018,10 +1043,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mPendingReset = false; } - if (mPendingLock) { - doKeyguardLocked(null); - mPendingLock = false; - } + maybeHandlePendingLock(); // We do not have timeout and power button instant lock setting for profile lock. // So we use the personal setting if there is any. But if there is no device @@ -1034,6 +1056,20 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mUpdateMonitor.dispatchFinishedGoingToSleep(offReason); } + /** + * Locks the keyguard if {@link #mPendingLock} is true, unless we're playing the screen off + * animation. + * + * If we are, we will lock the keyguard either when the screen off animation ends, or in + * {@link #onStartedWakingUp} if the animation is cancelled. + */ + public void maybeHandlePendingLock() { + if (mPendingLock && !mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying()) { + doKeyguardLocked(null); + mPendingLock = false; + } + } + private boolean isKeyguardServiceEnabled() { try { return mContext.getPackageManager().getServiceInfo( @@ -1142,12 +1178,15 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, /** * Let's us know when the device is waking up. */ - public void onStartedWakingUp() { + public void onStartedWakingUp(boolean cameraGestureTriggered) { Trace.beginSection("KeyguardViewMediator#onStartedWakingUp"); // TODO: Rename all screen off/on references to interactive/sleeping synchronized (this) { mDeviceInteractive = true; + if (mPendingLock && !cameraGestureTriggered) { + doKeyguardLocked(null); + } mAnimatingScreenOff = false; cancelDoKeyguardLaterLocked(); cancelDoKeyguardForChildProfilesLocked(); @@ -1605,6 +1644,16 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, Trace.endSection(); } + /** Hide the keyguard and let {@code runner} handle the animation. */ + public void hideWithAnimation(IRemoteAnimationRunner runner) { + if (!mShowing) { + return; + } + + mKeyguardExitAnimationRunner = runner; + hideLocked(); + } + public boolean isSecure() { return isSecure(KeyguardUpdateMonitor.getCurrentUser()); } @@ -1954,6 +2003,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mHiding = false; mWakeAndUnlocking = false; + mPendingLock = false; setShowingLocked(true); mKeyguardViewControllerLazy.get().show(options); resetKeyguardDonePendingLocked(); @@ -2050,6 +2100,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, // TODO: We should stop it early by disabling the swipe up flow. Right now swipe up // still completes and makes the screen blank. if (DEBUG) Log.d(TAG, "Split system user, quit unlocking."); + mKeyguardExitAnimationRunner = null; return; } mHiding = true; @@ -2103,9 +2154,37 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, playSounds(false); } + IRemoteAnimationRunner runner = mKeyguardExitAnimationRunner; + mKeyguardExitAnimationRunner = null; + + if (KeyguardService.sEnableRemoteKeyguardAnimation && runner != null + && finishedCallback != null) { + // Wrap finishedCallback to clean up the keyguard state once the animation is done. + IRemoteAnimationFinishedCallback callback = + new IRemoteAnimationFinishedCallback() { + @Override + public void onAnimationFinished() throws RemoteException { + finishedCallback.onAnimationFinished(); + onKeyguardExitFinished(); + mKeyguardViewControllerLazy.get().hide(0 /* startTime */, + 0 /* fadeoutDuration */); + } + + @Override + public IBinder asBinder() { + return finishedCallback.asBinder(); + } + }; + try { + runner.onAnimationStart(WindowManager.TRANSIT_KEYGUARD_GOING_AWAY, apps, + wallpapers, nonApps, callback); + } catch (RemoteException e) { + Slog.w(TAG, "Failed to call onAnimationStart", e); + } + // 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 + } else if (KeyguardService.sEnableRemoteKeyguardAnimation && !mStatusBarStateController.leaveOpenOnKeyguardHide() && apps != null && apps.length > 0) { mSurfaceBehindRemoteAnimationFinishedCallback = finishedCallback; @@ -2115,9 +2194,6 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mKeyguardUnlockAnimationControllerLazy.get().notifyStartKeyguardExitAnimation( apps[0], startTime, mSurfaceBehindRemoteAnimationRequested); } else { - setShowingLocked(false); - mWakeAndUnlocking = false; - mDismissCallbackRegistry.notifyDismissSucceeded(); mKeyguardViewControllerLazy.get().hide(startTime, fadeoutDuration); // TODO(bc-animation): When remote animation is enabled for keyguard exit animation, @@ -2140,8 +2216,8 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, SyncRtSurfaceTransactionApplier.SurfaceParams params = new SyncRtSurfaceTransactionApplier.SurfaceParams.Builder( primary.leash) - .withAlpha(animation.getAnimatedFraction()) - .build(); + .withAlpha(animation.getAnimatedFraction()) + .build(); applier.scheduleApply(params); }); anim.addListener(new AnimatorListenerAdapter() { @@ -2165,16 +2241,24 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, }); anim.start(); }); - resetKeyguardDonePendingLocked(); - mHideAnimationRun = false; - adjustStatusBarLocked(); - sendUserPresentBroadcast(); + + onKeyguardExitFinished(); } } Trace.endSection(); } + private void onKeyguardExitFinished() { + setShowingLocked(false); + mWakeAndUnlocking = false; + mDismissCallbackRegistry.notifyDismissSucceeded(); + resetKeyguardDonePendingLocked(); + mHideAnimationRun = false; + adjustStatusBarLocked(); + sendUserPresentBroadcast(); + } + /** * Whether we're currently animating between the keyguard and the app/launcher surface behind * it, or will be shortly (which happens if we started a fling to dismiss the keyguard). @@ -2211,21 +2295,13 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, // Block the panel from expanding, in case we were doing a swipe to dismiss gesture. mKeyguardViewControllerLazy.get().blockPanelExpansionFromCurrentTouch(); final boolean wasShowing = mShowing; - setShowingLocked(false); - - mWakeAndUnlocking = false; - mDismissCallbackRegistry.notifyDismissSucceeded(); + onKeyguardExitFinished(); if (mKeyguardStateController.isDismissingFromSwipe() || !wasShowing) { mKeyguardUnlockAnimationControllerLazy.get().hideKeyguardViewAfterRemoteAnimation(); } finishSurfaceBehindRemoteAnimation(); - - resetKeyguardDonePendingLocked(); - mHideAnimationRun = false; - adjustStatusBarLocked(); - sendUserPresentBroadcast(); mSurfaceBehindRemoteAnimationRequested = false; mKeyguardUnlockAnimationControllerLazy.get().notifyFinishedKeyguardExitAnimation(); } @@ -2577,7 +2653,12 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, if (!dozing) { mAnimatingScreenOff = false; } - setShowingLocked(mShowing); + + // Don't hide the keyguard due to a doze change if there's a lock pending, because we're + // just going to show it again. + if (mShowing || !mPendingLock) { + setShowingLocked(mShowing); + } } @Override @@ -2634,14 +2715,7 @@ public class KeyguardViewMediator extends SystemUI implements Dumpable, mAodShowing = aodShowing; if (notifyDefaultDisplayCallbacks) { notifyDefaultDisplayCallbacks(showing); - - if (!showing || !mAnimatingScreenOff) { - // Update the activity lock screen state unless we're animating in the keyguard - // for a screen off animation. In that case, we want the activity to remain visible - // until the animation completes. setShowingLocked is called again when the - // animation ends, so the activity lock screen will be shown at that time. - updateActivityLockScreenState(showing, aodShowing); - } + updateActivityLockScreenState(showing, aodShowing); } } 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 119e9c433f67..b071b943d8f0 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java @@ -51,6 +51,7 @@ 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; +import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.sensors.AsyncSensorManager; @@ -97,7 +98,8 @@ public class KeyguardModule { DozeParameters dozeParameters, SysuiStatusBarStateController statusBarStateController, KeyguardStateController keyguardStateController, - Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController) { + Lazy<KeyguardUnlockAnimationController> keyguardUnlockAnimationController, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { return new KeyguardViewMediator( context, falsingCollector, @@ -116,7 +118,8 @@ public class KeyguardModule { dozeParameters, statusBarStateController, keyguardStateController, - keyguardUnlockAnimationController + keyguardUnlockAnimationController, + unlockedScreenOffAnimationController ); } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt index a1c06fcec1cd..09da9d207f64 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselController.kt @@ -1,6 +1,5 @@ package com.android.systemui.media -import android.app.smartspace.SmartspaceTarget import android.content.Context import android.content.Intent import android.content.res.ColorStateList @@ -184,7 +183,12 @@ class MediaCarouselController @Inject constructor( visualStabilityManager.addReorderingAllowedCallback(visualStabilityCallback, true /* persistent */) mediaManager.addListener(object : MediaDataManager.Listener { - override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { + override fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean + ) { if (addOrUpdatePlayer(key, oldKey, data)) { MediaPlayerData.getMediaPlayer(key, null)?.let { logSmartspaceCardReported(759, // SMARTSPACE_CARD_RECEIVED @@ -210,19 +214,23 @@ class MediaCarouselController @Inject constructor( override fun onSmartspaceMediaDataLoaded( key: String, - data: SmartspaceTarget, + data: SmartspaceMediaData, shouldPrioritize: Boolean ) { Log.d(TAG, "My Smartspace media update is here") - addSmartspaceMediaRecommendations(key, data, shouldPrioritize) - MediaPlayerData.getMediaPlayer(key, null)?.let { - logSmartspaceCardReported(759, // SMARTSPACE_CARD_RECEIVED - it.mInstanceId, - /* isRecommendationCard */ true, - it.surfaceForSmartspaceLogging) - } - if (mediaCarouselScrollHandler.visibleToUser) { - logSmartspaceImpression() + if (data.isActive) { + addSmartspaceMediaRecommendations(key, data, shouldPrioritize) + MediaPlayerData.getMediaPlayer(key, null)?.let { + logSmartspaceCardReported(759, // SMARTSPACE_CARD_RECEIVED + it.mInstanceId, + /* isRecommendationCard */ true, + it.surfaceForSmartspaceLogging) + } + if (mediaCarouselScrollHandler.visibleToUser) { + logSmartspaceImpression() + } + } else { + onSmartspaceMediaDataRemoved(data.targetId, immediately = true) } } @@ -230,9 +238,13 @@ class MediaCarouselController @Inject constructor( removePlayer(key) } - override fun onSmartspaceMediaDataRemoved(key: String) { + override fun onSmartspaceMediaDataRemoved(key: String, immediately: Boolean) { Log.d(TAG, "My Smartspace media removal request is received") - removePlayer(key) + if (immediately || visualStabilityManager.isReorderingAllowed) { + onMediaDataRemoved(key) + } else { + keysNeedRemoval.add(key) + } } }) mediaFrame.addOnLayoutChangeListener { _, _, _, _, _, _, _, _, _ -> @@ -287,7 +299,7 @@ class MediaCarouselController @Inject constructor( // Automatically scroll to the active player if needed if (shouldScrollToActivePlayer) { shouldScrollToActivePlayer = false - val activeMediaIndex = MediaPlayerData.getActiveMediaIndex() + val activeMediaIndex = MediaPlayerData.activeMediaIndex() if (activeMediaIndex != -1) { mediaCarouselScrollHandler.scrollToActivePlayer(activeMediaIndex) } @@ -333,7 +345,7 @@ class MediaCarouselController @Inject constructor( private fun addSmartspaceMediaRecommendations( key: String, - data: SmartspaceTarget, + data: SmartspaceMediaData, shouldPrioritize: Boolean ) { Log.d(TAG, "Updating smartspace target in carousel") @@ -342,6 +354,11 @@ class MediaCarouselController @Inject constructor( return } + val existingSmartspaceMediaKey = MediaPlayerData.smartspaceMediaKey() + existingSmartspaceMediaKey?.let { + MediaPlayerData.removeMediaPlayer(existingSmartspaceMediaKey) + } + var newRecs = mediaControlPanelFactory.get() newRecs.attachRecommendation( RecommendationViewHolder.create(LayoutInflater.from(context), mediaContent)) @@ -349,7 +366,7 @@ 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) + newRecs.bindRecommendation(data.copy(backgroundColor = bgColor)) MediaPlayerData.addMediaRecommendation(key, newRecs, shouldPrioritize) updatePlayerToState(newRecs, noAnimation = true) reorderAllPlayers() @@ -378,11 +395,11 @@ class MediaCarouselController @Inject constructor( if (dismissMediaData) { // Inform the media manager of a potentially late dismissal - mediaManager.dismissMediaData(key, 0L /* delaye */) + mediaManager.dismissMediaData(key, delay = 0L) } if (dismissRecommendation) { // Inform the media manager of a potentially late dismissal - mediaManager.dismissSmartspaceRecommendation(0L /* delay */) + mediaManager.dismissSmartspaceRecommendation(key, delay = 0L) } } } @@ -392,7 +409,7 @@ class MediaCarouselController @Inject constructor( pageIndicator.tintList = ColorStateList.valueOf(getForegroundColor()) MediaPlayerData.mediaData().forEach { (key, data) -> - removePlayer(key, dismissMediaData = false) + removePlayer(key, dismissMediaData = false, dismissRecommendation = false) addOrUpdatePlayer(key = key, oldKey = null, data = data) } } @@ -732,7 +749,7 @@ internal object MediaPlayerData { fun players() = mediaPlayers.values /** Returns the index of the first non-timeout media. */ - fun getActiveMediaIndex(): Int { + fun activeMediaIndex(): Int { mediaPlayers.entries.forEachIndexed { index, e -> if (!e.key.isSsMediaRec && e.key.data.active) { return index @@ -741,6 +758,16 @@ internal object MediaPlayerData { return -1 } + /** Returns the existing Smartspace target id. */ + fun smartspaceMediaKey(): String? { + mediaData.entries.forEach { e -> + if (e.value.isSsMediaRec) { + return e.key + } + } + return null + } + fun playerKeys() = mediaPlayers.keys @VisibleForTesting diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselScrollHandler.kt b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselScrollHandler.kt index c806bcfed345..45ceceba5cba 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaCarouselScrollHandler.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaCarouselScrollHandler.kt @@ -560,12 +560,10 @@ class MediaCarouselScrollHandler( } fun scrollToActivePlayer(activePlayerIndex: Int) { - var destIndex = activePlayerIndex - destIndex = Math.min(mediaContent.getChildCount() - 1, destIndex) + val destIndex = Math.min(mediaContent.getChildCount() - 1, activePlayerIndex) 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) } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java index 27a4e93db4ad..55feea970e84 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java +++ b/packages/SystemUI/src/com/android/systemui/media/MediaControlPanel.java @@ -20,7 +20,6 @@ import static android.provider.Settings.ACTION_MEDIA_CONTROLS_SETTINGS; import android.app.PendingIntent; import android.app.smartspace.SmartspaceAction; -import android.app.smartspace.SmartspaceTarget; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; @@ -34,7 +33,6 @@ import android.graphics.drawable.Icon; import android.media.session.MediaController; import android.media.session.MediaSession; import android.media.session.PlaybackState; -import android.os.Bundle; import android.text.Layout; import android.util.Log; import android.view.View; @@ -74,7 +72,6 @@ import kotlin.Unit; public class MediaControlPanel { private static final String TAG = "MediaControlPanel"; private static final float DISABLED_ALPHA = 0.38f; - private static final String EXTRAS_MEDIA_SOURCE_PACKAGE_NAME = "package_name"; private static final String EXTRAS_SMARTSPACE_INTENT = "com.google.android.apps.gsa.smartspace.extra.SMARTSPACE_INTENT"; private static final String KEY_SMARTSPACE_OPEN_IN_FOREGROUND = "KEY_OPEN_IN_FOREGROUND"; @@ -493,27 +490,30 @@ public class MediaControlPanel { }; } - /** Bind this recommendation view based on the data given. */ - public void bindRecommendation(@NonNull SmartspaceTarget target, @NonNull int backgroundColor) { + /** Bind this recommendation view based on the given data. */ + public void bindRecommendation(@NonNull SmartspaceMediaData data) { if (mRecommendationViewHolder == null) { return; } - mInstanceId = target.getSmartspaceTargetId().hashCode(); + mInstanceId = data.getTargetId().hashCode(); + mBackgroundColor = data.getBackgroundColor(); mRecommendationViewHolder.getRecommendations() - .setBackgroundTintList(ColorStateList.valueOf(backgroundColor)); - mBackgroundColor = backgroundColor; + .setBackgroundTintList(ColorStateList.valueOf(mBackgroundColor)); - List<SmartspaceAction> mediaRecommendationList = target.getIconGrid(); + List<SmartspaceAction> mediaRecommendationList = data.getRecommendations(); if (mediaRecommendationList == null || mediaRecommendationList.isEmpty()) { Log.w(TAG, "Empty media recommendations"); return; } // Set up recommendation card's header. - ApplicationInfo applicationInfo = getApplicationInfo(target); - if (applicationInfo == null) { - Log.w(TAG, "No valid application info is found for media recommendations"); + ApplicationInfo applicationInfo = null; + try { + applicationInfo = mContext.getPackageManager() + .getApplicationInfo(data.getPackageName(), 0 /* flags */); + } catch (PackageManager.NameNotFoundException e) { + Log.w(TAG, "Fail to get media recommendation's app info", e); return; } @@ -531,7 +531,7 @@ public class MediaControlPanel { } // Set up media card's tap action if applicable. setSmartspaceRecItemOnClickListener( - mRecommendationViewHolder.getRecommendations(), target.getBaseAction()); + mRecommendationViewHolder.getRecommendations(), data.getCardAction()); List<ImageView> mediaCoverItems = mRecommendationViewHolder.getMediaCoverItems(); List<Integer> mediaCoverItemsResIds = mRecommendationViewHolder.getMediaCoverItemsResIds(); @@ -574,7 +574,7 @@ public class MediaControlPanel { /* isRecommendationCard */ true); closeGuts(); mMediaDataManagerLazy.get().dismissSmartspaceRecommendation( - MediaViewController.GUTS_ANIMATION_DURATION + 100L); + data.getTargetId(), MediaViewController.GUTS_ANIMATION_DURATION + 100L); }); mController = null; @@ -753,38 +753,6 @@ public class MediaControlPanel { } /** - * Returns the application info for the media recommendation's source app. - * - * @param target Smartspace target contains a list of media recommendations. Each item should - * contain the same source app's info. - * - * @return The source app's application info. This value can be null if no valid application - * info can be obtained. - */ - private ApplicationInfo getApplicationInfo(@NonNull SmartspaceTarget target) { - List<SmartspaceAction> mediaRecommendationList = target.getIconGrid(); - if (mediaRecommendationList == null || mediaRecommendationList.isEmpty()) { - return null; - } - - for (SmartspaceAction recommendation: mediaRecommendationList) { - Bundle extras = recommendation.getExtras(); - if (extras != null && extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME) != null) { - // Get the logo from app's package name when applicable. - String packageName = extras.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME); - try { - return mContext.getPackageManager() - .getApplicationInfo(packageName, 0 /* flags */); - } catch (PackageManager.NameNotFoundException e) { - Log.w(TAG, "Fail to get media recommendation's app info", e); - } - } - } - - return null; - } - - /** * Get the surface given the current end location for MediaViewController * @return surface used for Smartspace logging */ diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataCombineLatest.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataCombineLatest.kt index 87af9e08bd71..ee1d3ea87da8 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDataCombineLatest.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataCombineLatest.kt @@ -16,7 +16,6 @@ package com.android.systemui.media -import android.app.smartspace.SmartspaceTarget import javax.inject.Inject /** @@ -28,7 +27,12 @@ class MediaDataCombineLatest @Inject constructor() : MediaDataManager.Listener, private val listeners: MutableSet<MediaDataManager.Listener> = mutableSetOf() private val entries: MutableMap<String, Pair<MediaData?, MediaDeviceData?>> = mutableMapOf() - override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { + override fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean + ) { if (oldKey != null && oldKey != key && entries.contains(oldKey)) { entries[key] = data to entries.remove(oldKey)?.second update(key, oldKey) @@ -40,7 +44,7 @@ class MediaDataCombineLatest @Inject constructor() : MediaDataManager.Listener, override fun onSmartspaceMediaDataLoaded( key: String, - data: SmartspaceTarget, + data: SmartspaceMediaData, shouldPrioritize: Boolean ) { listeners.toSet().forEach { it.onSmartspaceMediaDataLoaded(key, data) } @@ -50,8 +54,8 @@ class MediaDataCombineLatest @Inject constructor() : MediaDataManager.Listener, remove(key) } - override fun onSmartspaceMediaDataRemoved(key: String) { - listeners.toSet().forEach { it.onSmartspaceMediaDataRemoved(key) } + override fun onSmartspaceMediaDataRemoved(key: String, immediately: Boolean) { + listeners.toSet().forEach { it.onSmartspaceMediaDataRemoved(key, immediately) } } override fun onMediaDeviceChanged( diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataFilter.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataFilter.kt index 3deb5d13a27f..a611b600f47f 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDataFilter.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataFilter.kt @@ -16,8 +16,6 @@ package com.android.systemui.media -import android.app.smartspace.SmartspaceAction -import android.app.smartspace.SmartspaceTarget import android.os.SystemProperties import android.util.Log import com.android.internal.annotations.VisibleForTesting @@ -34,6 +32,7 @@ import kotlin.collections.LinkedHashMap private const val TAG = "MediaDataFilter" private const val DEBUG = true +private const val RESUMABLE_MEDIA_MAX_AGE_SECONDS_KEY = "resumable_media_max_age_seconds" /** * Maximum age of a media control to re-activate on smartspace signal. If there is no media control @@ -67,8 +66,7 @@ class MediaDataFilter @Inject constructor( private val allEntries: LinkedHashMap<String, MediaData> = LinkedHashMap() // The filtered userEntries, which will be a subset of all userEntries in MediaDataManager private val userEntries: LinkedHashMap<String, MediaData> = LinkedHashMap() - var hasSmartspace: Boolean = false - private set + private var smartspaceMediaData: SmartspaceMediaData = EMPTY_SMARTSPACE_MEDIA_DATA private var reactivatedKey: String? = null init { @@ -81,7 +79,12 @@ class MediaDataFilter @Inject constructor( userTracker.startTracking() } - override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { + override fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean + ) { if (oldKey != null && oldKey != key) { allEntries.remove(oldKey) } @@ -104,18 +107,32 @@ class MediaDataFilter @Inject constructor( override fun onSmartspaceMediaDataLoaded( key: String, - data: SmartspaceTarget, + data: SmartspaceMediaData, shouldPrioritize: Boolean ) { - var shouldPrioritizeMutable = shouldPrioritize - hasSmartspace = true + if (!data.isActive) { + Log.d(TAG, "Inactive recommendation data. Skip triggering.") + return + } + + // Override the pass-in value here, as the order of Smartspace card is only determined here. + var shouldPrioritizeMutable = false + smartspaceMediaData = data // Before forwarding the smartspace target, first check if we have recently inactive media val sorted = userEntries.toSortedMap(compareBy { userEntries.get(it)?.lastActive ?: -1 }) val timeSinceActive = timeSinceActiveForMostRecentMedia(sorted) - if (timeSinceActive < SMARTSPACE_MAX_AGE) { + var smartspaceMaxAgeMillis = SMARTSPACE_MAX_AGE + data.cardAction?.let { + val smartspaceMaxAgeSeconds = + it.extras.getLong(RESUMABLE_MEDIA_MAX_AGE_SECONDS_KEY, 0) + if (smartspaceMaxAgeSeconds > 0) { + smartspaceMaxAgeMillis = TimeUnit.SECONDS.toMillis(smartspaceMaxAgeSeconds) + } + } + if (timeSinceActive < smartspaceMaxAgeMillis) { val lastActiveKey = sorted.lastKey() // most recently active // Notify listeners to consider this media active Log.d(TAG, "reactivating $lastActiveKey instead of smartspace") @@ -129,9 +146,8 @@ class MediaDataFilter @Inject constructor( shouldPrioritizeMutable = true } - // Only proceed with the Smartspace update if the recommendation is not empty. - if (isMediaRecommendationEmpty(data)) { - Log.d(TAG, "Empty media recommendations. Skip showing the card") + if (!data.isValid) { + Log.d(TAG, "Invalid recommendation data. Skip showing the rec card") return } listeners.forEach { it.onSmartspaceMediaDataLoaded(key, data, shouldPrioritizeMutable) } @@ -147,9 +163,7 @@ class MediaDataFilter @Inject constructor( } } - override fun onSmartspaceMediaDataRemoved(key: String) { - hasSmartspace = false - + override fun onSmartspaceMediaDataRemoved(key: String, immediately: Boolean) { // First check if we had reactivated media instead of forwarding smartspace reactivatedKey?.let { val lastActiveKey = it @@ -158,12 +172,17 @@ class MediaDataFilter @Inject constructor( // Notify listeners to update with actual active value userEntries.get(lastActiveKey)?.let { mediaData -> listeners.forEach { - it.onMediaDataLoaded(lastActiveKey, lastActiveKey, mediaData) + it.onMediaDataLoaded( + lastActiveKey, lastActiveKey, mediaData, immediately) } } } - listeners.forEach { it.onSmartspaceMediaDataRemoved(key) } + if (smartspaceMediaData.isActive) { + smartspaceMediaData = EMPTY_SMARTSPACE_MEDIA_DATA.copy( + targetId = smartspaceMediaData.targetId, isValid = smartspaceMediaData.isValid) + } + listeners.forEach { it.onSmartspaceMediaDataRemoved(key, immediately) } } @VisibleForTesting @@ -202,20 +221,22 @@ class MediaDataFilter @Inject constructor( // Force updates to listeners, needed for re-activated card mediaDataManager.setTimedOut(it, timedOut = true, forceUpdate = true) } - if (hasSmartspace) { - mediaDataManager.dismissSmartspaceRecommendation(0L /* delay */) + if (smartspaceMediaData.isActive) { + smartspaceMediaData = EMPTY_SMARTSPACE_MEDIA_DATA.copy( + targetId = smartspaceMediaData.targetId, isValid = smartspaceMediaData.isValid) } + mediaDataManager.dismissSmartspaceRecommendation(smartspaceMediaData.targetId, delay = 0L) } /** * Are there any media notifications active? */ - fun hasActiveMedia() = userEntries.any { it.value.active } || hasSmartspace + fun hasActiveMedia() = userEntries.any { it.value.active } || smartspaceMediaData.isActive /** * Are there any media entries we should display? */ - fun hasAnyMedia() = userEntries.isNotEmpty() || hasSmartspace + fun hasAnyMedia() = userEntries.isNotEmpty() || smartspaceMediaData.isActive /** * Add a listener for filtered [MediaData] changes @@ -227,12 +248,6 @@ class MediaDataFilter @Inject constructor( */ fun removeListener(listener: MediaDataManager.Listener) = _listeners.remove(listener) - /** Check if the Smartspace sends an empty update. */ - private fun isMediaRecommendationEmpty(data: SmartspaceTarget): Boolean { - val mediaRecommendationList: List<SmartspaceAction> = data.getIconGrid() - return mediaRecommendationList == null || mediaRecommendationList.isEmpty() - } - /** * Return the time since last active for the most-recent media. * diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt index c74f2fe64d6f..13c7f71f53ee 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt @@ -42,6 +42,7 @@ import android.os.UserHandle import android.service.notification.StatusBarNotification import android.text.TextUtils import android.util.Log +import com.android.internal.annotations.VisibleForTesting import com.android.systemui.Dumpable import com.android.systemui.R import com.android.systemui.broadcast.BroadcastDispatcher @@ -76,6 +77,9 @@ private const val DEBUG = true private val LOADING = MediaData(-1, false, 0, null, null, null, null, null, emptyList(), emptyList(), "INVALID", null, null, null, true, null) +@VisibleForTesting +internal val EMPTY_SMARTSPACE_MEDIA_DATA = SmartspaceMediaData("INVALID", false, false, + "INVALID", null, emptyList(), 0) fun isMediaNotification(sbn: StatusBarNotification): Boolean { if (!sbn.notification.hasMediaSession()) { @@ -118,6 +122,10 @@ class MediaDataManager( @JvmField val SMARTSPACE_UI_SURFACE_LABEL = "media_data_manager" + // Smartspace package name's extra key. + @JvmField + val EXTRAS_MEDIA_SOURCE_PACKAGE_NAME = "package_name" + // Maximum number of actions allowed in compact view @JvmField val MAX_COMPACT_ACTIONS = 3 @@ -137,7 +145,7 @@ class MediaDataManager( private val internalListeners: MutableSet<Listener> = mutableSetOf() private val mediaEntries: LinkedHashMap<String, MediaData> = LinkedHashMap() // There should ONLY be at most one Smartspace media recommendation. - private var smartspaceMediaTarget: SmartspaceTarget? = null + private var smartspaceMediaData: SmartspaceMediaData = EMPTY_SMARTSPACE_MEDIA_DATA private var smartspaceSession: SmartspaceSession? = null @Inject @@ -360,7 +368,7 @@ class MediaDataManager( * External listeners registered with [addListener] will be notified after the event propagates * through the internal listener pipeline. */ - private fun notifySmartspaceMediaDataLoaded(key: String, info: SmartspaceTarget) { + private fun notifySmartspaceMediaDataLoaded(key: String, info: SmartspaceMediaData) { internalListeners.forEach { it.onSmartspaceMediaDataLoaded(key, info) } } @@ -379,9 +387,13 @@ class MediaDataManager( * * External listeners registered with [addListener] will be notified after the event propagates * through the internal listener pipeline. + * + * @param immediately indicates should apply the UI changes immediately, otherwise wait until + * the next refresh-round before UI becomes visible. Should only be true if the update is + * initiated by user's interaction. */ - private fun notifySmartspaceMediaDataRemoved(key: String) { - internalListeners.forEach { it.onSmartspaceMediaDataRemoved(key) } + private fun notifySmartspaceMediaDataRemoved(key: String, immediately: Boolean) { + internalListeners.forEach { it.onSmartspaceMediaDataRemoved(key, immediately) } } /** @@ -424,14 +436,18 @@ class MediaDataManager( * This will make the recommendation view to not be shown anymore during this headphone * connection session. */ - fun dismissSmartspaceRecommendation(delay: Long) { + fun dismissSmartspaceRecommendation(key: String, delay: Long) { Log.d(TAG, "Dismissing Smartspace media target") - // Do not set smartspaceMediaTarget to null. So the instance is preserved during the entire - // headphone connection, and will ONLY be set to null when headphones are disconnected. - smartspaceMediaTarget?.let { - foregroundExecutor.executeDelayed( - { notifySmartspaceMediaDataRemoved(it.smartspaceTargetId) }, delay) + if (smartspaceMediaData.targetId != key) { + return + } + if (smartspaceMediaData.isActive) { + smartspaceMediaData = EMPTY_SMARTSPACE_MEDIA_DATA.copy( + targetId = smartspaceMediaData.targetId) } + foregroundExecutor.executeDelayed( + { notifySmartspaceMediaDataRemoved( + smartspaceMediaData.targetId, immediately = true) }, delay) } private fun loadMediaDataInBgForResumption( @@ -680,46 +696,41 @@ class MediaDataManager( override fun onSmartspaceTargetsUpdated(targets: List<Parcelable>) { if (!Utils.allowMediaRecommendations(context)) { + Log.d(TAG, "Smartspace recommendation is disabled in Settings.") return } + val mediaTargets = targets.filterIsInstance<SmartspaceTarget>() when (mediaTargets.size) { 0 -> { Log.d(TAG, "Empty Smartspace media target") - smartspaceMediaTarget?.let { - Log.d(TAG, "Setting Smartspace media target to null") - notifySmartspaceMediaDataRemoved(it.smartspaceTargetId) + if (!smartspaceMediaData.isActive) { + return } - smartspaceMediaTarget = null + Log.d(TAG, "Set Smartspace media to be inactive for the data update") + smartspaceMediaData = EMPTY_SMARTSPACE_MEDIA_DATA.copy( + targetId = smartspaceMediaData.targetId) + notifySmartspaceMediaDataRemoved(smartspaceMediaData.targetId, immediately = false) } 1 -> { - // TODO(b/182811956): Reactivate the resumable media sessions whose last active - // time is within 3 hours. - // TODO(b/182813365): Wire this up with MediaTimeoutListener so the session can be - // expired after 30 seconds. val newMediaTarget = mediaTargets.get(0) - if (smartspaceMediaTarget != null && - smartspaceMediaTarget!!.smartspaceTargetId == - newMediaTarget.smartspaceTargetId) { - // The same Smartspace updates can be received. Only send the first one. + if (smartspaceMediaData.targetId == newMediaTarget.smartspaceTargetId) { + // The same Smartspace updates can be received. Skip the duplicate updates. Log.d(TAG, "Same Smartspace media update exists. Skip loading data.") } else { - smartspaceMediaTarget?.let { - notifySmartspaceMediaDataRemoved(it.smartspaceTargetId) - } + Log.d(TAG, "Forwarding Smartspace media update.") + smartspaceMediaData = toSmartspaceMediaData(newMediaTarget, isActive = true) notifySmartspaceMediaDataLoaded( - newMediaTarget.smartspaceTargetId, newMediaTarget) - smartspaceMediaTarget = newMediaTarget + smartspaceMediaData.targetId, smartspaceMediaData) } } else -> { // There should NOT be more than 1 Smartspace media update. When it happens, it // indicates a bad state or an error. Reset the status accordingly. Log.wtf(TAG, "More than 1 Smartspace Media Update. Resetting the status...") - smartspaceMediaTarget?.let { - notifySmartspaceMediaDataRemoved(it.smartspaceTargetId) - } - smartspaceMediaTarget = null + notifySmartspaceMediaDataRemoved( + smartspaceMediaData.targetId, false /* immediately */) + smartspaceMediaData = EMPTY_SMARTSPACE_MEDIA_DATA } } } @@ -797,28 +808,77 @@ class MediaDataManager( * oldKey is provided to check whether the view has changed keys, which can happen when a * player has gone from resume state (key is package name) to active state (key is * notification key) or vice versa. + * + * @param immediately indicates should apply the UI changes immediately, otherwise wait + * until the next refresh-round before UI becomes visible. True by default to take in place + * immediately. */ - fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) {} + fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean = true + ) {} /** * Called whenever there's new Smartspace media data loaded. * - * shouldPrioritize indicates the sorting priority of the Smartspace card. If true, it will - * be prioritized as the first card. Otherwise, it will show up as the last card as default. + * @param shouldPrioritize indicates the sorting priority of the Smartspace card. If true, + * it will be prioritized as the first card. Otherwise, it will show up as the last card as + * default. */ fun onSmartspaceMediaDataLoaded( key: String, - data: SmartspaceTarget, + data: SmartspaceMediaData, shouldPrioritize: Boolean = false ) {} + /** Called whenever a previously existing Media notification was removed. */ + fun onMediaDataRemoved(key: String) {} + /** - * Called whenever a previously existing Media notification was removed + * Called whenever a previously existing Smartspace media data was removed. + * + * @param immediately indicates should apply the UI changes immediately, otherwise wait + * until the next refresh-round before UI becomes visible. True by default to take in place + * immediately. */ - fun onMediaDataRemoved(key: String) {} + fun onSmartspaceMediaDataRemoved(key: String, immediately: Boolean = true) {} + } - /** Called whenever a previously existing Smartspace media data was removed. */ - fun onSmartspaceMediaDataRemoved(key: String) {} + /** + * Converts the pass-in SmartspaceTarget to SmartspaceMediaData with the pass-in active status. + * + * @return An empty SmartspaceMediaData with the valid target Id is returned if the + * SmartspaceTarget's data is invalid. + */ + private fun toSmartspaceMediaData( + target: SmartspaceTarget, + isActive: Boolean + ): SmartspaceMediaData { + packageName(target)?.let { + return SmartspaceMediaData(target.smartspaceTargetId, isActive, true, it, + target.baseAction, target.iconGrid, 0) + } + return EMPTY_SMARTSPACE_MEDIA_DATA + .copy(targetId = target.smartspaceTargetId, isActive = isActive) + } + + private fun packageName(target: SmartspaceTarget): String? { + val recommendationList = target.iconGrid + if (recommendationList == null || recommendationList.isEmpty()) { + Log.d(TAG, "Empty or media recommendation list.") + return null + } + for (recommendation in recommendationList) { + val extras = recommendation.extras + extras?.let { + it.getString(EXTRAS_MEDIA_SOURCE_PACKAGE_NAME)?.let { + packageName -> return packageName } + } + } + Log.d(TAG, "No valid package name is provided.") + return null } override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) { diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt index a993d00df01e..52ecbea05924 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDeviceManager.kt @@ -63,7 +63,12 @@ class MediaDeviceManager @Inject constructor( */ fun removeListener(listener: Listener) = listeners.remove(listener) - override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { + override fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean + ) { if (oldKey != null && oldKey != key) { val oldEntry = entries.remove(oldKey) oldEntry?.stop() diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt b/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt index fe20dcbe8564..43e21424c45e 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaHost.kt @@ -1,6 +1,5 @@ package com.android.systemui.media -import android.app.smartspace.SmartspaceTarget import android.graphics.Rect import android.util.ArraySet import android.view.View @@ -57,13 +56,20 @@ class MediaHost constructor( } private val listener = object : MediaDataManager.Listener { - override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { - updateViewVisibility() + override fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean + ) { + if (immediately) { + updateViewVisibility() + } } override fun onSmartspaceMediaDataLoaded( key: String, - data: SmartspaceTarget, + data: SmartspaceMediaData, shouldPrioritize: Boolean ) { updateViewVisibility() @@ -73,8 +79,10 @@ class MediaHost constructor( updateViewVisibility() } - override fun onSmartspaceMediaDataRemoved(key: String) { - updateViewVisibility() + override fun onSmartspaceMediaDataRemoved(key: String, immediately: Boolean) { + if (immediately) { + updateViewVisibility() + } } } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt b/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt index 7fe408fb0cb7..9aeb63d724e3 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaResumeListener.kt @@ -155,7 +155,12 @@ class MediaResumeListener @Inject constructor( } } - override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { + override fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean + ) { if (useMediaResumption) { // If this had been started from a resume state, disconnect now that it's live mediaBrowser?.disconnect() diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaSessionBasedFilter.kt b/packages/SystemUI/src/com/android/systemui/media/MediaSessionBasedFilter.kt index 3e5e82484df6..a4f33e354b68 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaSessionBasedFilter.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaSessionBasedFilter.kt @@ -16,7 +16,6 @@ package com.android.systemui.media -import android.app.smartspace.SmartspaceTarget import android.content.ComponentName import android.content.Context import android.media.session.MediaController @@ -92,39 +91,44 @@ class MediaSessionBasedFilter @Inject constructor( * playback type PLAYBACK_TYPE_LOCAL. These updates should be filtered to improve the usability * of the media controls. */ - override fun onMediaDataLoaded(key: String, oldKey: String?, info: MediaData) { + override fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean + ) { backgroundExecutor.execute { - info.token?.let { + data.token?.let { tokensWithNotifications.add(it) } val isMigration = oldKey != null && key != oldKey if (isMigration) { keyedTokens.remove(oldKey)?.let { removed -> keyedTokens.put(key, removed) } } - if (info.token != null) { + if (data.token != null) { keyedTokens.get(key)?.let { tokens -> - tokens.add(info.token) + tokens.add(data.token) } ?: run { - val tokens = mutableSetOf(info.token) + val tokens = mutableSetOf(data.token) keyedTokens.put(key, tokens) } } // Determine if an app is casting by checking if it has a session with playback type // PLAYBACK_TYPE_REMOTE. - val remoteControllers = packageControllers.get(info.packageName)?.filter { + val remoteControllers = packageControllers.get(data.packageName)?.filter { it.playbackInfo?.playbackType == PlaybackInfo.PLAYBACK_TYPE_REMOTE } // Limiting search to only apps with a single remote session. val remote = if (remoteControllers?.size == 1) remoteControllers.firstOrNull() else null - if (isMigration || remote == null || remote.sessionToken == info.token || + if (isMigration || remote == null || remote.sessionToken == data.token || !tokensWithNotifications.contains(remote.sessionToken)) { // Not filtering in this case. Passing the event along to listeners. - dispatchMediaDataLoaded(key, oldKey, info) + dispatchMediaDataLoaded(key, oldKey, data, immediately) } else { // Filtering this event because the app is casting and the loaded events is for a // local session. - Log.d(TAG, "filtering key=$key local=${info.token} remote=${remote?.sessionToken}") + Log.d(TAG, "filtering key=$key local=${data.token} remote=${remote?.sessionToken}") // If the local session uses a different notification key, then lets go a step // farther and dismiss the media data so that media controls for the local session // don't hang around while casting. @@ -137,7 +141,7 @@ class MediaSessionBasedFilter @Inject constructor( override fun onSmartspaceMediaDataLoaded( key: String, - data: SmartspaceTarget, + data: SmartspaceMediaData, shouldPrioritize: Boolean ) { backgroundExecutor.execute { @@ -153,15 +157,20 @@ class MediaSessionBasedFilter @Inject constructor( } } - override fun onSmartspaceMediaDataRemoved(key: String) { + override fun onSmartspaceMediaDataRemoved(key: String, immediately: Boolean) { backgroundExecutor.execute { - dispatchSmartspaceMediaDataRemoved(key) + dispatchSmartspaceMediaDataRemoved(key, immediately) } } - private fun dispatchMediaDataLoaded(key: String, oldKey: String?, info: MediaData) { + private fun dispatchMediaDataLoaded( + key: String, + oldKey: String?, + info: MediaData, + immediately: Boolean + ) { foregroundExecutor.execute { - listeners.toSet().forEach { it.onMediaDataLoaded(key, oldKey, info) } + listeners.toSet().forEach { it.onMediaDataLoaded(key, oldKey, info, immediately) } } } @@ -171,15 +180,15 @@ class MediaSessionBasedFilter @Inject constructor( } } - private fun dispatchSmartspaceMediaDataLoaded(key: String, info: SmartspaceTarget) { + private fun dispatchSmartspaceMediaDataLoaded(key: String, info: SmartspaceMediaData) { foregroundExecutor.execute { listeners.toSet().forEach { it.onSmartspaceMediaDataLoaded(key, info) } } } - private fun dispatchSmartspaceMediaDataRemoved(key: String) { + private fun dispatchSmartspaceMediaDataRemoved(key: String, immediately: Boolean) { foregroundExecutor.execute { - listeners.toSet().forEach { it.onSmartspaceMediaDataRemoved(key) } + listeners.toSet().forEach { it.onSmartspaceMediaDataRemoved(key, immediately) } } } diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt b/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt index 8bfe94bbd0de..bbea140ecfaf 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaTimeoutListener.kt @@ -50,7 +50,12 @@ class MediaTimeoutListener @Inject constructor( */ lateinit var timeoutCallback: (String, Boolean) -> Unit - override fun onMediaDataLoaded(key: String, oldKey: String?, data: MediaData) { + override fun onMediaDataLoaded( + key: String, + oldKey: String?, + data: MediaData, + immediately: Boolean + ) { var reusedListener: PlaybackStateListener? = null // First check if we already have a listener diff --git a/packages/SystemUI/src/com/android/systemui/media/SmartspaceMediaData.kt b/packages/SystemUI/src/com/android/systemui/media/SmartspaceMediaData.kt new file mode 100644 index 000000000000..9ac128920edb --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/media/SmartspaceMediaData.kt @@ -0,0 +1,51 @@ +/* + * 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.media + +import android.app.smartspace.SmartspaceAction + +/** State of a Smartspace media recommendations view. */ +data class SmartspaceMediaData( + /** + * Unique id of a Smartspace media target. + */ + val targetId: String, + /** + * Indicates if the status is active. + */ + val isActive: Boolean, + /** + * Indicates if all the required data field is valid. + */ + val isValid: Boolean, + /** + * Package name of the media recommendations' provider-app. + */ + val packageName: String, + /** + * Action to perform when the card is tapped. Also contains the target's extra info. + */ + val cardAction: SmartspaceAction?, + /** + * List of media recommendations. + */ + val recommendations: List<SmartspaceAction>, + /** + * View's background color. + */ + val backgroundColor: Int +) 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 12c6906d87f7..ba65d5163881 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapter.java @@ -291,6 +291,7 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta @Override public boolean onFailedToRecycleView(Holder holder) { + holder.stopDrag(); holder.clearDrag(); return true; } @@ -565,12 +566,6 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta public void clearDrag() { itemView.clearAnimation(); - if (mTileView instanceof CustomizeTileView) { - mTileView.findViewById(R.id.tile_label).clearAnimation(); - mTileView.findViewById(R.id.tile_label).setAlpha(1); - mTileView.getSecondaryLabel().clearAnimation(); - mTileView.getSecondaryLabel().setAlpha(.6f); - } } public void startDrag() { @@ -578,14 +573,6 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta .setDuration(DRAG_LENGTH) .scaleX(DRAG_SCALE) .scaleY(DRAG_SCALE); - if (mTileView instanceof CustomizeTileView) { - mTileView.findViewById(R.id.tile_label).animate() - .setDuration(DRAG_LENGTH) - .alpha(0); - mTileView.getSecondaryLabel().animate() - .setDuration(DRAG_LENGTH) - .alpha(0); - } } public void stopDrag() { @@ -593,14 +580,6 @@ public class TileAdapter extends RecyclerView.Adapter<Holder> implements TileSta .setDuration(DRAG_LENGTH) .scaleX(1) .scaleY(1); - if (mTileView instanceof CustomizeTileView) { - mTileView.findViewById(R.id.tile_label).animate() - .setDuration(DRAG_LENGTH) - .alpha(1); - mTileView.getSecondaryLabel().animate() - .setDuration(DRAG_LENGTH) - .alpha(.6f); - } } boolean canRemove() { 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 47d80bb0d16f..a938821a343f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java @@ -181,14 +181,15 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy mStatusBarStateController = statusBarStateController; mActivityStarter = activityStarter; - mState = newTileState(); - mTmpState = newTileState(); + resetStates(); mUiHandler.post(() -> mLifecycle.setCurrentState(CREATED)); } protected final void resetStates() { mState = newTileState(); mTmpState = newTileState(); + mState.spec = mTileSpec; + mTmpState.spec = mTileSpec; } @NonNull @@ -225,6 +226,8 @@ public abstract class QSTileImpl<TState extends State> implements QSTile, Lifecy public void setTileSpec(String tileSpec) { mTileSpec = tileSpec; + mState.spec = tileSpec; + mTmpState.spec = tileSpec; } public QSHost getHost() { diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt index cd76b4df3c92..8aed0a88fa35 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileViewImpl.kt @@ -38,6 +38,7 @@ import android.widget.ImageView import android.widget.LinearLayout import android.widget.Switch import android.widget.TextView +import androidx.annotation.VisibleForTesting import com.android.settingslib.Utils import com.android.systemui.FontSizeUtils import com.android.systemui.R @@ -62,6 +63,8 @@ open class QSTileViewImpl @JvmOverloads constructor( private const val SECONDARY_LABEL_NAME = "secondaryLabel" private const val CHEVRON_NAME = "chevron" const val UNAVAILABLE_ALPHA = 0.3f + @VisibleForTesting + internal const val TILE_STATE_RES_PREFIX = "tile_states_" } override var heightOverride: Int = HeightOverrideable.NO_OVERRIDE @@ -484,16 +487,18 @@ open class QSTileViewImpl @JvmOverloads constructor( } 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) + if (state.disabledByPolicy) { + return context.getString(R.string.tile_disabled) + } + + return if (state.state == Tile.STATE_UNAVAILABLE || state is BooleanState) { + val resName = "$TILE_STATE_RES_PREFIX${state.spec}" + var arrayResId = resources.getIdentifier(resName, "array", context.packageName) + if (arrayResId == 0) { + arrayResId = R.array.tile_states_default } + val array = resources.getStringArray(arrayResId) + array[state.state] } else { "" } 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 74d3425edd22..7cb1421e3f0f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/InternetTile.java @@ -45,7 +45,6 @@ import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.qs.QSIconView; -import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile.SignalState; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.qs.AlphaControlledSignalTileView; @@ -72,7 +71,6 @@ public class InternetTile extends QSTileImpl<SignalState> { protected final NetworkController mController; private final DataUsageController mDataController; - private final QSTile.SignalState mStateBeforeClick = newTileState(); // The last updated tile state, 0: mobile, 1: wifi, 2: ethernet. private int mLastTileState = -1; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java index efac1414aeb6..41a3020191a6 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java @@ -94,6 +94,7 @@ public class WifiTile extends QSTileImpl<SignalState> { mWifiController = accessPointController; mDetailAdapter = (WifiDetailAdapter) createDetailAdapter(); mController.observe(getLifecycle(), mSignalCallback); + mStateBeforeClick.spec = "wifi"; } @Override diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt index af8d80887474..4ed376ace8c8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt @@ -287,6 +287,8 @@ class LockscreenShadeTransitionController @Inject constructor( // TODO: appear media also in split shade val mediaAmount = if (useSplitShade) 0f else field mediaHierarchyManager.setTransitionToFullShadeAmount(mediaAmount) + // Fade out all content only visible on the lockscreen + notificationPanelController.setKeyguardOnlyContentAlpha(1.0f - scrimProgress) } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java index f99436f67728..a69b8d60681c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java @@ -24,7 +24,6 @@ import android.annotation.MainThread; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Notification; -import android.app.smartspace.SmartspaceTarget; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; @@ -55,6 +54,7 @@ import com.android.systemui.colorextraction.SysuiColorExtractor; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.media.MediaData; import com.android.systemui.media.MediaDataManager; +import com.android.systemui.media.SmartspaceMediaData; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.dagger.StatusBarModule; import com.android.systemui.statusbar.notification.NotificationEntryListener; @@ -245,13 +245,12 @@ public class NotificationMediaManager implements Dumpable { mMediaDataManager.addListener(new MediaDataManager.Listener() { @Override public void onMediaDataLoaded(@NonNull String key, - @Nullable String oldKey, @NonNull MediaData data) { + @Nullable String oldKey, @NonNull MediaData data, boolean immediately) { } @Override public void onSmartspaceMediaDataLoaded(@NonNull String key, - @NonNull SmartspaceTarget data, boolean shouldPrioritize) { - + @NonNull SmartspaceMediaData data, boolean shouldPrioritize) { } @Override @@ -269,7 +268,7 @@ public class NotificationMediaManager implements Dumpable { } @Override - public void onSmartspaceMediaDataRemoved(@NonNull String key) {} + public void onSmartspaceMediaDataRemoved(@NonNull String key, boolean immediately) {} }); } @@ -319,12 +318,12 @@ public class NotificationMediaManager implements Dumpable { mMediaDataManager.addListener(new MediaDataManager.Listener() { @Override public void onMediaDataLoaded(@NonNull String key, - @Nullable String oldKey, @NonNull MediaData data) { + @Nullable String oldKey, @NonNull MediaData data, boolean immediately) { } @Override public void onSmartspaceMediaDataLoaded(@NonNull String key, - @NonNull SmartspaceTarget data, boolean shouldPrioritize) { + @NonNull SmartspaceMediaData data, boolean shouldPrioritize) { } @@ -341,7 +340,7 @@ public class NotificationMediaManager implements Dumpable { } @Override - public void onSmartspaceMediaDataRemoved(@NonNull String key) {} + public void onSmartspaceMediaDataRemoved(@NonNull String key, boolean immediately) {} }); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt index 05afc57fbb59..22bbb81b44e6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/charging/WiredChargingRippleController.kt @@ -25,6 +25,8 @@ import android.util.DisplayMetrics import android.view.View import android.view.WindowManager import com.android.internal.annotations.VisibleForTesting +import com.android.internal.logging.UiEvent +import com.android.internal.logging.UiEventLogger import com.android.settingslib.Utils import com.android.systemui.dagger.SysUISingleton import com.android.systemui.statusbar.FeatureFlags @@ -55,7 +57,8 @@ class WiredChargingRippleController @Inject constructor( featureFlags: FeatureFlags, private val context: Context, private val windowManager: WindowManager, - private val systemClock: SystemClock + private val systemClock: SystemClock, + private val uiEventLogger: UiEventLogger ) { private var pluggedIn: Boolean? = null private val rippleEnabled: Boolean = featureFlags.isChargingRippleEnabled && @@ -164,6 +167,7 @@ class WiredChargingRippleController @Inject constructor( } }) windowManager.addView(rippleView, windowLayoutParams) + uiEventLogger.log(WiredChargingRippleEvent.CHARGING_RIPPLE_PLAYED) } private fun layoutRipple() { @@ -203,4 +207,11 @@ class WiredChargingRippleController @Inject constructor( pw.println("Usage: adb shell cmd statusbar charging-ripple") } } + + enum class WiredChargingRippleEvent(private val _id: Int) : UiEventLogger.UiEventEnum { + @UiEvent(doc = "Wired charging ripple effect played") + CHARGING_RIPPLE_PLAYED(829); + + override fun getId() = _id + } } 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 33aa7c720b22..8479b30c3a75 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt @@ -315,7 +315,11 @@ class SystemStatusAnimationScheduler @Inject constructor( ) : AnimatorListenerAdapter() { override fun onAnimationEnd(p0: Animator?) { chipAnimationController.onChipAnimationEnd(animationState) - animationState = endState + animationState = if (endState == SHOWING_PERSISTENT_DOT && !hasPersistentDot) { + IDLE + } else { + endState + } } override fun onAnimationStart(p0: Animator?) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt index 7afb0151aeda..84728f699e91 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationWakeUpCoordinator.kt @@ -28,6 +28,7 @@ import com.android.systemui.statusbar.notification.stack.StackStateAnimator import com.android.systemui.statusbar.phone.DozeParameters import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.statusbar.phone.PanelExpansionListener +import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController import com.android.systemui.statusbar.policy.HeadsUpManager import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener import javax.inject.Inject @@ -38,7 +39,8 @@ class NotificationWakeUpCoordinator @Inject constructor( private val mHeadsUpManager: HeadsUpManager, private val statusBarStateController: StatusBarStateController, private val bypassController: KeyguardBypassController, - private val dozeParameters: DozeParameters + private val dozeParameters: DozeParameters, + private val unlockedScreenOffAnimationController: UnlockedScreenOffAnimationController ) : OnHeadsUpChangedListener, StatusBarStateController.StateListener, PanelExpansionListener { private val mNotificationVisibility = object : FloatProperty<NotificationWakeUpCoordinator>( @@ -264,7 +266,7 @@ class NotificationWakeUpCoordinator @Inject constructor( } override fun onStateChanged(newState: Int) { - if (dozeParameters.shouldControlUnlockedScreenOff()) { + if (unlockedScreenOffAnimationController.shouldPlayScreenOffAnimation()) { if (animatingScreenOff && state == StatusBarState.KEYGUARD && newState == StatusBarState.SHADE) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java index b237f6f0a46e..3e2bcf9562b0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java @@ -211,6 +211,12 @@ public abstract class ActivatableNotificationView extends ExpandableOutlineView return super.onInterceptTouchEvent(ev); } + /** + * Called by the TouchHandler when this view is tapped. This will be called for actual taps + * only, i.e. taps that have been filtered by the FalsingManager. + */ + public void onTap() {} + /** Sets the last action up time this view was touched. */ void setLastActionUpTime(long eventTime) { mLastActionUpTime = eventTime; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewController.java index 0a63e19acc1a..c4961029dc33 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewController.java @@ -118,7 +118,11 @@ public class ActivatableNotificationViewController if (ev.getAction() == MotionEvent.ACTION_UP) { // If this is a false tap, capture the even so it doesn't result in a click. - return mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY); + boolean falseTap = mFalsingManager.isFalseTap(FalsingManager.LOW_PENALTY); + if (!falseTap && v instanceof ActivatableNotificationView) { + ((ActivatableNotificationView) v).onTap(); + } + return falseTap; } return result; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java index ced284e21963..d68271a19d04 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java @@ -73,7 +73,6 @@ import com.android.internal.widget.CachingIconView; import com.android.internal.widget.CallLayout; import com.android.systemui.Dependency; import com.android.systemui.R; -import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.animation.Interpolators; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.plugins.FalsingManager; @@ -2020,6 +2019,14 @@ public class ExpandableNotificationRow extends ActivatableNotificationView if (params == null) { return; } + + if (!params.getVisible()) { + if (getVisibility() == View.VISIBLE) { + setVisibility(View.INVISIBLE); + } + return; + } + float zProgress = Interpolators.FAST_OUT_SLOW_IN.getInterpolation( params.getProgress(0, 50)); float translationZ = MathUtils.lerp(params.getStartTranslationZ(), @@ -2077,10 +2084,6 @@ public class ExpandableNotificationRow extends ActivatableNotificationView contentView = mGuts; } if (expandAnimationRunning) { - contentView.animate() - .alpha(0f) - .setDuration(ActivityLaunchAnimator.ANIMATION_DURATION_FADE_OUT_CONTENT) - .setInterpolator(ActivityLaunchAnimator.CONTENT_FADE_OUT_INTERPOLATOR); setAboveShelf(true); mExpandAnimationRunning = true; getViewState().cancelAnimations(this); @@ -2088,6 +2091,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView } else { mExpandAnimationRunning = false; setAboveShelf(isAboveShelf()); + setVisibility(View.VISIBLE); if (mGuts != null) { mGuts.setAlpha(1.0f); } @@ -2291,6 +2295,23 @@ public class ExpandableNotificationRow extends ActivatableNotificationView } @Override + public void onTap() { + // This notification will expand and animates into the content activity, so we disable the + // ripple. We will restore its value once the tap/click is actually performed. + if (mEntry.getSbn().getNotification().contentIntent != null) { + setRippleAllowed(false); + } + } + + @Override + public boolean performClick() { + // We force-disabled the ripple in onTap. When this method is called, the code drawing the + // ripple will already have been called so we can restore its value now. + updateRippleAllowed(); + return super.performClick(); + } + + @Override public int getIntrinsicHeight() { if (isUserLocked()) { return getActualHeight(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java index f6ab409998bf..4b1f679b8851 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationBackgroundView.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Canvas; import android.graphics.PorterDuff; -import android.graphics.PorterDuffXfermode; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.LayerDrawable; @@ -30,8 +29,6 @@ import android.view.View; import com.android.internal.util.ArrayUtils; import com.android.systemui.R; -import com.android.systemui.animation.ActivityLaunchAnimator; -import com.android.systemui.animation.Interpolators; import com.android.systemui.statusbar.notification.ExpandAnimationParameters; /** @@ -281,11 +278,6 @@ public class NotificationBackgroundView extends View { public void setExpandAnimationParams(ExpandAnimationParameters params) { mActualHeight = params.getHeight(); mActualWidth = params.getWidth(); - float alphaProgress = Interpolators.ALPHA_IN.getInterpolation( - params.getProgress( - ActivityLaunchAnimator.ANIMATION_DELAY_FADE_IN_WINDOW /* delay */, - ActivityLaunchAnimator.ANIMATION_DURATION_FADE_IN_WINDOW /* duration */)); - mBackground.setAlpha((int) (mDrawableAlpha * (1.0f - alphaProgress))); invalidate(); } @@ -294,8 +286,6 @@ public class NotificationBackgroundView extends View { if (mBackground instanceof LayerDrawable) { GradientDrawable gradientDrawable = (GradientDrawable) ((LayerDrawable) mBackground).getDrawable(0); - gradientDrawable.setXfermode( - running ? new PorterDuffXfermode(PorterDuff.Mode.SRC) : null); // Speed optimization: disable AA if transfer mode is not SRC_OVER. AA is not easy to // spot during animation anyways. gradientDrawable.setAntiAlias(!running); 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 94edbd092a4d..64f228f41df9 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 @@ -43,6 +43,7 @@ import android.graphics.Paint; import android.graphics.PointF; import android.graphics.Rect; import android.os.Bundle; +import android.os.SystemProperties; import android.os.UserHandle; import android.provider.Settings; import android.util.AttributeSet; @@ -129,7 +130,12 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable public static final float BACKGROUND_ALPHA_DIMMED = 0.7f; private static final String TAG = "StackScroller"; - private static final boolean DEBUG = false; + + // Usage: + // adb shell setprop persist.debug.nssl true && adb reboot + private static final boolean DEBUG = SystemProperties.getBoolean("persist.debug.nssl", + false /* default */); + private static final float RUBBER_BAND_FACTOR_NORMAL = 0.35f; private static final float RUBBER_BAND_FACTOR_AFTER_EXPAND = 0.15f; private static final float RUBBER_BAND_FACTOR_ON_PANEL_EXPAND = 0.21f; @@ -4667,8 +4673,9 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable @ShadeViewRefactor(RefactorComponent.SHADE_VIEW) public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println(String.format("[%s: pulsing=%s qsCustomizerShowing=%s visibility=%s" - + " alpha:%f scrollY:%d maxTopPadding:%d showShelfOnly=%s" - + " qsExpandFraction=%f]", + + " alpha=%f scrollY:%d maxTopPadding=%d showShelfOnly=%s" + + " qsExpandFraction=%f" + + " hideAmount=%f]", this.getClass().getSimpleName(), mPulsing ? "T" : "f", mAmbientState.isQsCustomizerShowing() ? "T" : "f", @@ -4679,7 +4686,8 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable mAmbientState.getScrollY(), mMaxTopPadding, mShouldShowShelfOnly ? "T" : "f", - mQsExpansionFraction)); + mQsExpansionFraction, + mAmbientState.getHideAmount())); int childCount = getChildCount(); pw.println(" Number of children: " + childCount); pw.println(); 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 7737420cf026..eb46fe3c6177 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -334,6 +334,8 @@ public class NotificationPanelViewController extends PanelViewController { private NotificationsQuickSettingsContainer mNotificationContainerParent; private boolean mAnimateNextPositionUpdate; private float mQuickQsOffsetHeight; + private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; + private int mTrackingPointer; private VelocityTracker mQsVelocityTracker; private boolean mQsTracking; @@ -577,6 +579,11 @@ public class NotificationPanelViewController extends PanelViewController { */ private ValueAnimator mQsClippingAnimation = null; private final Rect mKeyguardStatusAreaClipBounds = new Rect(); + + /** + * The alpha of the views which only show on the keyguard but not in shade / shade locked + */ + private float mKeyguardOnlyContentAlpha = 1.0f; private int mOldLayoutDirection; private NotificationShelfController mNotificationShelfController; private int mScrimCornerRadius; @@ -670,7 +677,8 @@ public class NotificationPanelViewController extends PanelViewController { FragmentService fragmentService, QuickAccessWalletController quickAccessWalletController, @Main Executor uiExecutor, - SecureSettings secureSettings) { + SecureSettings secureSettings, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { super(view, falsingManager, dozeLog, keyguardStateController, (SysuiStatusBarStateController) statusBarStateController, vibratorHelper, statusBarKeyguardViewManager, latencyTracker, flingAnimationUtilsBuilder.get(), @@ -765,6 +773,7 @@ public class NotificationPanelViewController extends PanelViewController { mConversationNotificationManager = conversationNotificationManager; mAuthController = authController; mLockIconViewController = lockIconViewController; + mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; mView.setBackgroundColor(Color.TRANSPARENT); OnAttachStateChangeListener onAttachStateChangeListener = new OnAttachStateChangeListener(); @@ -1240,10 +1249,11 @@ public class NotificationPanelViewController extends PanelViewController { int userIconHeight = mKeyguardQsUserSwitchController != null ? mKeyguardQsUserSwitchController.getUserIconHeight() : 0; float expandedFraction = - mKeyguardStatusViewController.isAnimatingScreenOffFromUnlocked() ? 1.0f - : getExpandedFraction(); - float darkamount = mKeyguardStatusViewController.isAnimatingScreenOffFromUnlocked() ? 1.0f - : mInterpolatedDarkAmount; + mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying() + ? 1.0f : getExpandedFraction(); + float darkamount = + mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying() + ? 1.0f : mInterpolatedDarkAmount; mClockPositionAlgorithm.setup(mStatusBarHeaderHeightKeyguard, totalHeight - bottomPadding, mNotificationStackScrollLayoutController.getIntrinsicContentHeight(), @@ -1412,12 +1422,13 @@ public class NotificationPanelViewController extends PanelViewController { } private void updateClock() { - mKeyguardStatusViewController.setAlpha(mClockPositionResult.clockAlpha); + float alpha = mClockPositionResult.clockAlpha * mKeyguardOnlyContentAlpha; + mKeyguardStatusViewController.setAlpha(alpha); if (mKeyguardQsUserSwitchController != null) { - mKeyguardQsUserSwitchController.setAlpha(mClockPositionResult.clockAlpha); + mKeyguardQsUserSwitchController.setAlpha(alpha); } if (mKeyguardUserSwitcherController != null) { - mKeyguardUserSwitcherController.setAlpha(mClockPositionResult.clockAlpha); + mKeyguardUserSwitcherController.setAlpha(alpha); } } @@ -2024,6 +2035,7 @@ public class NotificationPanelViewController extends PanelViewController { private void maybeAnimateBottomAreaAlpha() { mBottomAreaShadeAlphaAnimator.cancel(); if (mBarState == StatusBarState.SHADE_LOCKED) { + mBottomAreaShadeAlphaAnimator.setFloatValues(mBottomAreaShadeAlpha, 0.0f); mBottomAreaShadeAlphaAnimator.start(); } else { mBottomAreaShadeAlpha = 1f; @@ -2439,6 +2451,20 @@ public class NotificationPanelViewController extends PanelViewController { updateQsExpansion(); } + /** + * Set the alpha of the keyguard elements which only show on the lockscreen, but not in + * shade locked / shade. This is used when dragging down to the full shade. + */ + public void setKeyguardOnlyContentAlpha(float keyguardAlpha) { + mKeyguardOnlyContentAlpha = Interpolators.ALPHA_IN.getInterpolation(keyguardAlpha); + if (mBarState == KEYGUARD) { + // If the animator is running, it's already fading out the content and this is a reset + mBottomAreaShadeAlpha = mKeyguardOnlyContentAlpha; + updateKeyguardBottomAreaAlpha(); + } + updateClock(); + } + private void trackMovement(MotionEvent event) { if (mQsVelocityTracker != null) mQsVelocityTracker.addMovement(event); } @@ -2897,6 +2923,7 @@ public class NotificationPanelViewController extends PanelViewController { if (ambientIndicationContainer != null) { ambientIndicationContainer.setAlpha(alpha); } + mLockIconViewController.setAlpha(alpha); } /** @@ -4209,7 +4236,9 @@ public class NotificationPanelViewController extends PanelViewController { int oldState = mBarState; boolean keyguardShowing = statusBarState == KEYGUARD; - if (mDozeParameters.shouldControlUnlockedScreenOff() && isDozing() && keyguardShowing) { + if (mUnlockedScreenOffAnimationController.shouldPlayScreenOffAnimation() + && oldState == StatusBarState.SHADE + && statusBarState == KEYGUARD) { // This means we're doing the screen off animation - position the keyguard status // view where it'll be on AOD, so we can animate it in. mKeyguardStatusViewController.updatePosition( @@ -4280,6 +4309,18 @@ public class NotificationPanelViewController extends PanelViewController { } /** + * Reconfigures the shade to show the AOD UI (clock, smartspace, etc). This is called by the + * screen off animation controller in order to animate in AOD without "actually" fully switching + * to the KEYGUARD state. + */ + public void showAodUi() { + setDozing(true /* dozing */, false /* animate */, null); + mStatusBarStateListener.onStateChanged(KEYGUARD); + mStatusBarStateListener.onDozeAmountChanged(1f, 1f); + setExpandedFraction(1f); + } + + /** * Sets the overstretch amount in raw pixels when dragging down. */ public void setOverStrechAmount(float amount) { 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 b92f7c034b57..1331829201b8 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -169,6 +169,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump private final KeyguardVisibilityCallback mKeyguardVisibilityCallback; private final Handler mHandler; private final Executor mMainExecutor; + private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private GradientColors mColors; private boolean mNeedsDrawableColorUpdate; @@ -224,7 +225,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump AlarmManager alarmManager, KeyguardStateController keyguardStateController, DelayedWakeLock.Builder delayedWakeLockBuilder, Handler handler, KeyguardUpdateMonitor keyguardUpdateMonitor, DockManager dockManager, - ConfigurationController configurationController, @Main Executor mainExecutor) { + ConfigurationController configurationController, @Main Executor mainExecutor, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { mScrimStateListener = lightBarController::setScrimState; mDefaultScrimAlpha = BUSY_SCRIM_ALPHA; ScrimState.BUBBLE_EXPANDED.setBubbleAlpha(BUBBLE_SCRIM_ALPHA); @@ -235,6 +237,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump mKeyguardVisibilityCallback = new KeyguardVisibilityCallback(); mHandler = handler; mMainExecutor = mainExecutor; + mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; mTimeTicker = new AlarmTimeout(alarmManager, this::onHideWallpaperTimeout, "hide_aod_wallpaper", mHandler); mWakeLock = delayedWakeLockBuilder.setHandler(mHandler).setTag("Scrims").build(); @@ -640,17 +643,20 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump } if (mState == ScrimState.UNLOCKED) { - // Darken scrim as you pull down the shade when unlocked - float behindFraction = getInterpolatedFraction(); - behindFraction = (float) Math.pow(behindFraction, 0.8f); - if (mClipsQsScrim) { - mBehindAlpha = 1; - mNotificationsAlpha = behindFraction * mDefaultScrimAlpha; - } else { - mBehindAlpha = behindFraction * mDefaultScrimAlpha; - mNotificationsAlpha = mBehindAlpha; + // Darken scrim as you pull down the shade when unlocked, unless the shade is expanding + // because we're doing the screen off animation. + if (!mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying()) { + float behindFraction = getInterpolatedFraction(); + behindFraction = (float) Math.pow(behindFraction, 0.8f); + if (mClipsQsScrim) { + mBehindAlpha = 1; + mNotificationsAlpha = behindFraction * mDefaultScrimAlpha; + } else { + mBehindAlpha = behindFraction * mDefaultScrimAlpha; + mNotificationsAlpha = mBehindAlpha; + } + mInFrontAlpha = 0; } - mInFrontAlpha = 0; } else if (mState == ScrimState.BUBBLE_EXPANDED) { // Darken scrim as you pull down the shade when unlocked float behindFraction = getInterpolatedFraction(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java index 35dda4426849..e52e1fa5f39f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java @@ -189,9 +189,11 @@ public enum ScrimState { mBubbleAlpha = ScrimController.TRANSPARENT; mAnimationDuration = ScrimController.ANIMATION_DURATION_LONG; - // DisplayPowerManager may blank the screen for us, - // in this case we just need to set our state. - mAnimateChange = mDozeParameters.shouldControlScreenOff(); + // DisplayPowerManager may blank the screen for us, or we might blank it for ourselves + // by animating the screen off via the LightRevelScrim. In either case we just need to + // set our state. + mAnimateChange = mDozeParameters.shouldControlScreenOff() + && !mDozeParameters.shouldControlUnlockedScreenOff(); } @Override 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 c27497e43400..8e8dcbda51e6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -105,6 +105,7 @@ import android.util.Log; import android.util.MathUtils; import android.util.Slog; import android.view.Display; +import android.view.IRemoteAnimationRunner; import android.view.IWindowManager; import android.view.InsetsState.InternalInsetsType; import android.view.KeyEvent; @@ -164,6 +165,7 @@ import com.android.systemui.emergency.EmergencyGesture; import com.android.systemui.fragments.ExtensionFragmentListener; import com.android.systemui.fragments.FragmentHostManager; import com.android.systemui.keyguard.DismissCallbackRegistry; +import com.android.systemui.keyguard.KeyguardService; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.ScreenLifecycle; @@ -267,7 +269,8 @@ public class StatusBar extends SystemUI implements DemoMode, OnHeadsUpChangedListener, CommandQueue.Callbacks, ColorExtractor.OnColorsChangedListener, ConfigurationListener, StatusBarStateController.StateListener, - LifecycleOwner, BatteryController.BatteryStateChangeCallback { + LifecycleOwner, BatteryController.BatteryStateChangeCallback, + ActivityLaunchAnimator.KeyguardHandler { public static final boolean MULTIUSER_DEBUG = false; protected static final int MSG_HIDE_RECENT_APPS = 1020; @@ -465,6 +468,7 @@ public class StatusBar extends SystemUI implements DemoMode, private final BrightnessSlider.Factory mBrightnessSliderFactory; private final FeatureFlags mFeatureFlags; private final KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; + private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private final List<ExpansionChangedListener> mExpansionChangedListeners; @@ -803,7 +807,8 @@ public class StatusBar extends SystemUI implements DemoMode, StatusBarLocationPublisher locationPublisher, LockscreenShadeTransitionController lockscreenShadeTransitionController, FeatureFlags featureFlags, - KeyguardUnlockAnimationController keyguardUnlockAnimationController) { + KeyguardUnlockAnimationController keyguardUnlockAnimationController, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { super(context); mNotificationsController = notificationsController; mLightBarController = lightBarController; @@ -887,6 +892,7 @@ public class StatusBar extends SystemUI implements DemoMode, mStatusBarLocationPublisher = locationPublisher; mFeatureFlags = featureFlags; mKeyguardUnlockAnimationController = keyguardUnlockAnimationController; + mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; mLockscreenShadeTransitionController = lockscreenShadeTransitionController; lockscreenShadeTransitionController.setStatusbar(this); @@ -1241,6 +1247,7 @@ public class StatusBar extends SystemUI implements DemoMode, mScrimController.attachViews(scrimBehind, notificationsScrim, scrimInFront, scrimForBubble); mLightRevealScrim = mNotificationShadeWindowView.findViewById(R.id.light_reveal_scrim); + mUnlockedScreenOffAnimationController.initialize(this, mLightRevealScrim); updateLightRevealScrimVisibility(); mNotificationPanelViewController.initDependencies( @@ -1413,7 +1420,7 @@ public class StatusBar extends SystemUI implements DemoMode, private void setUpPresenter() { // Set up the initial notification state. - mActivityLaunchAnimator = new ActivityLaunchAnimator(mContext); + mActivityLaunchAnimator = new ActivityLaunchAnimator(this, mContext); mNotificationAnimationProvider = new NotificationLaunchAnimatorControllerProvider( mNotificationShadeWindowViewController, mStackScrollerController.getNotificationListContainer(), @@ -1471,7 +1478,9 @@ public class StatusBar extends SystemUI implements DemoMode, * @param why the reason for the wake up */ public void wakeUpIfDozing(long time, View where, String why) { - if (mDozing && !mKeyguardViewMediator.isAnimatingScreenOff()) { + if (mDozing && !(mKeyguardViewMediator.isAnimatingScreenOff() + || mUnlockedScreenOffAnimationController + .isScreenOffLightRevealAnimationPlaying())) { mPowerManager.wakeUp( time, PowerManager.WAKE_REASON_GESTURE, "com.android.systemui:" + why); mWakeUpComingFromTouch = true; @@ -2072,10 +2081,45 @@ public class StatusBar extends SystemUI implements DemoMode, } } - /** Whether we should animate an activity launch. */ - public boolean areLaunchAnimationsEnabled() { - // TODO(b/184121838): Support lock screen launch animations. - return mState == StatusBarState.SHADE && !isOccluded(); + /** + * Whether we should animate an activity launch. + * + * Note: This method must be called *before* dismissing the keyguard. + */ + public boolean shouldAnimateLaunch(boolean isActivityIntent) { + // TODO(b/184121838): Support launch animations when occluded. + if (isOccluded()) { + return false; + } + + // Always animate if we are unlocked. + if (!mKeyguardStateController.isShowing()) { + return true; + } + + // If we are locked, only animate if remote unlock animations are enabled and we can dismiss + // the lock screen without challenging the user. We also don't animate non-activity + // launches as they can break the animation. + // TODO(b/184121838): Support non activity launches on the lockscreen. + return isActivityIntent + && KeyguardService.sEnableRemoteKeyguardAnimation + && mKeyguardStateController.canDismissLockScreen(); + } + + @Override + public boolean isOnKeyguard() { + return mKeyguardStateController.isShowing(); + } + + @Override + public void hideKeyguardWithAnimation(IRemoteAnimationRunner runner) { + if (!mKeyguardStateController.canDismissLockScreen()) { + Log.wtf(TAG, + "Unable to hide keyguard with animation as the keyguard can't be dismissed"); + return; + } + + mKeyguardViewMediator.hideWithAnimation(runner); } public boolean isDeviceInVrMode() { @@ -2543,7 +2587,7 @@ public class StatusBar extends SystemUI implements DemoMode, public void onAnimationEnded() { mNotificationShadeWindowController.setRequestTopUi(false, TAG); } - }, false).show(animationDelay); + }, false, sUiEventLogger).show(animationDelay); } @Override @@ -2796,8 +2840,9 @@ public class StatusBar extends SystemUI implements DemoMode, final boolean afterKeyguardGone = mActivityIntentHelper.wouldLaunchResolverActivity( intent, mLockscreenUserManager.getCurrentUserId()); - ActivityLaunchAnimator.Controller animController = wrapAnimationController( - animationController, dismissShade); + ActivityLaunchAnimator.Controller animController = + shouldAnimateLaunch(true /* isActivityIntent */) ? wrapAnimationController( + animationController, dismissShade) : null; // If we animate, we will dismiss the shade only once the animation is done. This is taken // care of by the StatusBarLaunchAnimationController. @@ -2811,7 +2856,7 @@ public class StatusBar extends SystemUI implements DemoMode, int[] result = new int[]{ActivityManager.START_CANCELED}; mActivityLaunchAnimator.startIntentWithAnimation(animController, - areLaunchAnimationsEnabled(), intent.getPackage(), (adapter) -> { + true /* animate */, intent.getPackage(), (adapter) -> { ActivityOptions options = new ActivityOptions( getActivityOptions(mDisplayId, adapter)); options.setDisallowEnterPictureInPictureWhileLaunching( @@ -3377,8 +3422,9 @@ public class StatusBar extends SystemUI implements DemoMode, updatePanelExpansionForKeyguard(); } if (shouldBeKeyguard) { - if (isGoingToSleep() - && mScreenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_TURNING_OFF) { + if (mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying() + || (isGoingToSleep() + && mScreenLifecycle.getScreenState() == ScreenLifecycle.SCREEN_TURNING_OFF)) { // Delay showing the keyguard until screen turned off. } else { showKeyguardImpl(); @@ -3549,6 +3595,7 @@ public class StatusBar extends SystemUI implements DemoMode, mNotificationPanelViewController.cancelAnimation(); mNotificationPanelViewController.setAlpha(1f); mNotificationPanelViewController.resetViewGroupFade(); + updateDozingState(); updateScrimController(); Trace.endSection(); return staying; @@ -4011,6 +4058,13 @@ public class StatusBar extends SystemUI implements DemoMode, mWakeUpCoordinator.setFullyAwake(false); mBypassHeadsUpNotifier.setFullyAwake(false); mKeyguardBypassController.onStartedGoingToSleep(); + + // The screen off animation uses our LightRevealScrim - we need to be expanded for it to + // be visible. + if (mUnlockedScreenOffAnimationController.shouldPlayScreenOffAnimation()) { + makeExpandedVisible(true); + } + DejankUtils.stopDetectingBlockingIpcs(tag); } @@ -4031,6 +4085,13 @@ public class StatusBar extends SystemUI implements DemoMode, // once we fully woke up. updateNotificationPanelTouchState(); mPulseExpansionHandler.onStartedWakingUp(); + + // If we are waking up during the screen off animation, we should undo making the + // expanded visible (we did that so the LightRevealScrim would be visible). + if (mUnlockedScreenOffAnimationController.isScreenOffLightRevealAnimationPlaying()) { + makeExpandedInvisible(); + } + DejankUtils.stopDetectingBlockingIpcs(tag); } @@ -4403,8 +4464,9 @@ public class StatusBar extends SystemUI implements DemoMode, } public boolean shouldIgnoreTouch() { - return mStatusBarStateController.isDozing() - && mDozeServiceHost.getIgnoreTouchWhilePulsing(); + return (mStatusBarStateController.isDozing() + && mDozeServiceHost.getIgnoreTouchWhilePulsing()) + || mUnlockedScreenOffAnimationController.isScreenOffAnimationPlaying(); } // Begin Extra BaseStatusBar methods. @@ -4606,6 +4668,7 @@ public class StatusBar extends SystemUI implements DemoMode, mLockscreenUserManager.getCurrentUserId()); boolean collapse = animationController == null; + boolean animate = shouldAnimateLaunch(intent.isActivity()); executeActionDismissingKeyguard(() -> { try { // We wrap animationCallback with a StatusBarLaunchAnimatorController so that the @@ -4615,7 +4678,7 @@ public class StatusBar extends SystemUI implements DemoMode, animationController, this, intent.isActivity()) : null; mActivityLaunchAnimator.startPendingIntentWithAnimation( - controller, areLaunchAnimationsEnabled(), intent.getCreatorPackage(), + controller, animate, intent.getCreatorPackage(), (animationAdapter) -> intent.sendAndReturnResult(null, 0, null, null, null, null, getActivityOptions(mDisplayId, animationAdapter))); } catch (PendingIntent.CanceledException e) { 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 91d1bd73a403..c0957c0aff81 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -35,6 +35,7 @@ import android.view.ViewGroup; import android.view.ViewRootImpl; import android.view.WindowManagerGlobal; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; @@ -63,6 +64,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.Objects; import java.util.Optional; import javax.inject.Inject; @@ -268,10 +270,23 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb registerListeners(); } - public void setAlternateAuthInterceptor(@Nullable AlternateAuthInterceptor authInterceptor) { - final boolean newlyNull = authInterceptor == null && mAlternateAuthInterceptor != null; + /** + * Sets the given alt auth interceptor to null if it's the current auth interceptor. Else, + * does nothing. + */ + public void removeAlternateAuthInterceptor(@NonNull AlternateAuthInterceptor authInterceptor) { + if (Objects.equals(mAlternateAuthInterceptor, authInterceptor)) { + mAlternateAuthInterceptor = null; + resetAlternateAuth(true); + } + } + + /** + * Sets a new alt auth interceptor. + */ + public void setAlternateAuthInterceptor(@NonNull AlternateAuthInterceptor authInterceptor) { mAlternateAuthInterceptor = authInterceptor; - resetAlternateAuth(newlyNull); + resetAlternateAuth(false); } private void registerListeners() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java index 5cd4e13bdcce..f5dd19552b7f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java @@ -255,14 +255,14 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit final boolean afterKeyguardGone = isActivityIntent && mActivityIntentHelper.wouldLaunchResolverActivity(intent.getIntent(), mLockscreenUserManager.getCurrentUserId()); - final boolean wasOccluded = mStatusBar.isOccluded(); + final boolean animate = mStatusBar.shouldAnimateLaunch(isActivityIntent); boolean showOverLockscreen = mKeyguardStateController.isShowing() && intent != null && mActivityIntentHelper.wouldShowOverLockscreen(intent.getIntent(), mLockscreenUserManager.getCurrentUserId()); ActivityStarter.OnDismissAction postKeyguardAction = () -> handleNotificationClickAfterKeyguardDismissed( entry, row, controller, intent, - isActivityIntent, wasOccluded, showOverLockscreen); + isActivityIntent, animate, showOverLockscreen); if (showOverLockscreen) { mIsCollapsingToShowActivityOverLockscreen = true; postKeyguardAction.onDismiss(); @@ -278,7 +278,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit RemoteInputController controller, PendingIntent intent, boolean isActivityIntent, - boolean wasOccluded, + boolean animate, boolean showOverLockscreen) { mLogger.logHandleClickAfterKeyguardDismissed(entry.getKey()); @@ -293,7 +293,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit final Runnable runnable = () -> handleNotificationClickAfterPanelCollapsed( entry, row, controller, intent, - isActivityIntent, wasOccluded); + isActivityIntent, animate); if (showOverLockscreen) { mShadeController.addPostCollapseAction(runnable); @@ -314,7 +314,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit RemoteInputController controller, PendingIntent intent, boolean isActivityIntent, - boolean wasOccluded) { + boolean animate) { String notificationKey = entry.getKey(); mLogger.logHandleClickAfterPanelCollapsed(notificationKey); @@ -360,8 +360,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit removeHUN(row); expandBubbleStackOnMainThread(entry); } else { - startNotificationIntent( - intent, fillInIntent, entry, row, wasOccluded, isActivityIntent); + startNotificationIntent(intent, fillInIntent, entry, row, animate, isActivityIntent); } if (isActivityIntent || canBubble) { mAssistManagerLazy.get().hideAssist(); @@ -426,7 +425,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit Intent fillInIntent, NotificationEntry entry, ExpandableNotificationRow row, - boolean wasOccluded, + boolean animate, boolean isActivityIntent) { mLogger.logStartNotificationIntent(entry.getKey(), intent); try { @@ -436,8 +435,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit isActivityIntent); mActivityLaunchAnimator.startPendingIntentWithAnimation(animationController, - !wasOccluded && mStatusBar.areLaunchAnimationsEnabled(), - intent.getCreatorPackage(), (adapter) -> { + animate, intent.getCreatorPackage(), (adapter) -> { long eventTime = row.getAndResetLastActionUpTime(); Bundle options = eventTime > 0 ? getActivityOptions( @@ -460,6 +458,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit @Override public void startNotificationGutsIntent(final Intent intent, final int appUid, ExpandableNotificationRow row) { + boolean animate = mStatusBar.shouldAnimateLaunch(true /* isActivityIntent */); mActivityStarter.dismissKeyguardThenExecute(() -> { AsyncTask.execute(() -> { ActivityLaunchAnimator.Controller animationController = @@ -468,8 +467,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit mStatusBar, true /* isActivityIntent */); mActivityLaunchAnimator.startIntentWithAnimation( - animationController, mStatusBar.areLaunchAnimationsEnabled(), - intent.getPackage(), + animationController, animate, intent.getPackage(), (adapter) -> TaskStackBuilder.create(mContext) .addNextIntentWithParentStack(intent) .startActivities(getActivityOptions( @@ -483,6 +481,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit @Override public void startHistoryIntent(View view, boolean showHistory) { + boolean animate = mStatusBar.shouldAnimateLaunch(true /* isActivityIntent */); mActivityStarter.dismissKeyguardThenExecute(() -> { AsyncTask.execute(() -> { Intent intent = showHistory ? new Intent( @@ -499,8 +498,8 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit ActivityLaunchAnimator.Controller.fromView(view), mStatusBar, true /* isActivityIntent */); - mActivityLaunchAnimator.startIntentWithAnimation(animationController, - mStatusBar.areLaunchAnimationsEnabled(), intent.getPackage(), + mActivityLaunchAnimator.startIntentWithAnimation(animationController, animate, + intent.getPackage(), (adapter) -> tsb.startActivities( getActivityOptions(mStatusBar.getDisplayId(), adapter), UserHandle.CURRENT)); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt new file mode 100644 index 000000000000..e135cc51a7bc --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UnlockedScreenOffAnimationController.kt @@ -0,0 +1,178 @@ +package com.android.systemui.statusbar.phone + +import android.animation.Animator +import android.animation.AnimatorListenerAdapter +import android.animation.ValueAnimator +import android.os.Handler +import android.view.View +import com.android.systemui.animation.Interpolators +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.keyguard.KeyguardViewMediator +import com.android.systemui.keyguard.WakefulnessLifecycle +import com.android.systemui.statusbar.LightRevealScrim +import com.android.systemui.statusbar.StatusBarState +import com.android.systemui.statusbar.StatusBarStateControllerImpl +import com.android.systemui.statusbar.notification.AnimatableProperty +import com.android.systemui.statusbar.notification.PropertyAnimator +import com.android.systemui.statusbar.notification.stack.AnimationProperties +import com.android.systemui.statusbar.notification.stack.StackStateAnimator +import javax.inject.Inject + +/** + * When to show the keyguard (AOD) view. This should be once the light reveal scrim is barely + * visible, because the transition to KEYGUARD causes brief jank. + */ +private const val ANIMATE_IN_KEYGUARD_DELAY = 600L + +/** + * Duration for the light reveal portion of the animation. + */ +private const val LIGHT_REVEAL_ANIMATION_DURATION = 750L + +/** + * Controller for the unlocked screen off animation, which runs when the device is going to sleep + * and we're unlocked. + * + * This animation uses a [LightRevealScrim] that lives in the status bar to hide the screen contents + * and then animates in the AOD UI. + */ +@SysUISingleton +class UnlockedScreenOffAnimationController @Inject constructor( + private val wakefulnessLifecycle: WakefulnessLifecycle, + private val statusBarStateControllerImpl: StatusBarStateControllerImpl, + private val keyguardViewMediatorLazy: dagger.Lazy<KeyguardViewMediator>, + private val dozeParameters: DozeParameters +) : WakefulnessLifecycle.Observer { + private val handler = Handler() + + private lateinit var statusBar: StatusBar + private lateinit var lightRevealScrim: LightRevealScrim + + private var lightRevealAnimationPlaying = false + private var aodUiAnimationPlaying = false + + private val lightRevealAnimator = ValueAnimator.ofFloat(1f, 0f).apply { + duration = LIGHT_REVEAL_ANIMATION_DURATION + interpolator = Interpolators.FAST_OUT_SLOW_IN_REVERSE + addUpdateListener { lightRevealScrim.revealAmount = it.animatedValue as Float } + addListener(object : AnimatorListenerAdapter() { + override fun onAnimationCancel(animation: Animator?) { + lightRevealScrim.revealAmount = 1f + lightRevealAnimationPlaying = false + } + + override fun onAnimationEnd(animation: Animator?) { + lightRevealAnimationPlaying = false + } + }) + } + + fun initialize( + statusBar: StatusBar, + lightRevealScrim: LightRevealScrim + ) { + this.lightRevealScrim = lightRevealScrim + this.statusBar = statusBar + + wakefulnessLifecycle.addObserver(this) + } + + /** + * Animates in the provided keyguard view, ending in the same position that it will be in on + * AOD. + */ + fun animateInKeyguard(keyguardView: View, after: Runnable) { + keyguardView.alpha = 0f + keyguardView.visibility = View.VISIBLE + + val currentY = keyguardView.y + + // Move the keyguard up by 10% so we can animate it back down. + keyguardView.y = currentY - keyguardView.height * 0.1f + + val duration = StackStateAnimator.ANIMATION_DURATION_WAKEUP + + // We animate the Y properly separately using the PropertyAnimator, as the panel + // view also needs to update the end position. + PropertyAnimator.cancelAnimation(keyguardView, AnimatableProperty.Y) + PropertyAnimator.setProperty<View>(keyguardView, AnimatableProperty.Y, currentY, + AnimationProperties().setDuration(duration.toLong()), + true /* animate */) + + keyguardView.animate() + .setDuration(duration.toLong()) + .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) + .alpha(1f) + .withEndAction { + aodUiAnimationPlaying = false + + // Lock the keyguard if it was waiting for the screen off animation to end. + keyguardViewMediatorLazy.get().maybeHandlePendingLock() + + // Tell the StatusBar to become keyguard for real - we waited on that since it + // is slow and would have caused the animation to jank. + statusBar.updateIsKeyguard() + + // Run the callback given to us by the KeyguardVisibilityHelper. + after.run() + } + .start() + } + + override fun onStartedWakingUp() { + lightRevealAnimator.cancel() + handler.removeCallbacksAndMessages(null) + } + + override fun onFinishedWakingUp() { + // Set this to false in onFinishedWakingUp rather than onStartedWakingUp so that other + // observers (such as StatusBar) can ask us whether we were playing the screen off animation + // and reset accordingly. + lightRevealAnimationPlaying = false + aodUiAnimationPlaying = false + + // Make sure the status bar is in the correct keyguard state, since we might have left it in + // the KEYGUARD state if this wakeup cancelled the screen off animation. + statusBar.updateIsKeyguard() + } + + override fun onStartedGoingToSleep() { + if (shouldPlayScreenOffAnimation()) { + lightRevealAnimationPlaying = true + lightRevealAnimator.start() + + handler.postDelayed({ + aodUiAnimationPlaying = true + + // Show AOD. That'll cause the KeyguardVisibilityHelper to call #animateInKeyguard. + statusBar.notificationPanelViewController.showAodUi() + }, ANIMATE_IN_KEYGUARD_DELAY) + } + } + + /** + * Whether we should play the screen off animation when the phone starts going to sleep. We can + * do that if dozeParameters says we can control the unlocked screen off animation and we are in + * the SHADE state. If we're in KEYGUARD or SHADE_LOCKED, the regular + */ + fun shouldPlayScreenOffAnimation(): Boolean { + return dozeParameters.shouldControlUnlockedScreenOff() && + statusBarStateControllerImpl.state == StatusBarState.SHADE + } + + /** + * Whether we're doing the light reveal animation or we're done with that and animating in the + * AOD UI. + */ + fun isScreenOffAnimationPlaying(): Boolean { + return lightRevealAnimationPlaying || aodUiAnimationPlaying + } + + /** + * Whether the light reveal animation is playing. The second part of the screen off animation, + * where AOD animates in, might still be playing if this returns false. + */ + fun isScreenOffLightRevealAnimationPlaying(): Boolean { + return lightRevealAnimationPlaying + } +}
\ No newline at end of file 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 9722d6841c62..2611ab5f7016 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 @@ -94,6 +94,7 @@ 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.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.ongoingcall.OngoingCallController; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; @@ -216,7 +217,8 @@ public interface StatusBarPhoneModule { StatusBarLocationPublisher locationPublisher, LockscreenShadeTransitionController transitionController, FeatureFlags featureFlags, - KeyguardUnlockAnimationController keyguardUnlockAnimationController) { + KeyguardUnlockAnimationController keyguardUnlockAnimationController, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { return new StatusBar( context, notificationsController, @@ -303,6 +305,7 @@ public interface StatusBarPhoneModule { locationPublisher, transitionController, featureFlags, - keyguardUnlockAnimationController); + keyguardUnlockAnimationController, + unlockedScreenOffAnimationController); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java index f39acf9a40ed..2b79733f886b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java @@ -31,6 +31,7 @@ import android.util.Log; import androidx.annotation.NonNull; +import com.android.internal.annotations.GuardedBy; import com.android.settingslib.bluetooth.BluetoothCallback; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.bluetooth.LocalBluetoothManager; @@ -66,6 +67,7 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa private final WeakHashMap<CachedBluetoothDevice, ActuallyCachedState> mCachedState = new WeakHashMap<>(); private final Handler mBgHandler; + @GuardedBy("mConnectedDevices") private final List<CachedBluetoothDevice> mConnectedDevices = new ArrayList<>(); private boolean mEnabled; @@ -118,7 +120,7 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa pw.print(" mConnectionState="); pw.println(stateToString(mConnectionState)); pw.print(" mAudioProfileOnly="); pw.println(mAudioProfileOnly); pw.print(" mIsActive="); pw.println(mIsActive); - pw.print(" mConnectedDevices="); pw.println(mConnectedDevices); + pw.print(" mConnectedDevices="); pw.println(getConnectedDevices()); pw.print(" mCallbacks.size="); pw.println(mHandler.mCallbacks.size()); pw.println(" Bluetooth Devices:"); for (CachedBluetoothDevice device : getDevices()) { @@ -151,7 +153,11 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa @Override public List<CachedBluetoothDevice> getConnectedDevices() { - return mConnectedDevices; + List<CachedBluetoothDevice> out; + synchronized (mConnectedDevices) { + out = new ArrayList<>(mConnectedDevices); + } + return out; } @Override @@ -226,8 +232,10 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa @Override public String getConnectedDeviceName() { - if (mConnectedDevices.size() == 1) { - return mConnectedDevices.get(0).getName(); + synchronized (mConnectedDevices) { + if (mConnectedDevices.size() == 1) { + return mConnectedDevices.get(0).getName(); + } } return null; } @@ -242,7 +250,7 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa private void updateConnected() { // Make sure our connection state is up to date. int state = mLocalBluetoothManager.getBluetoothAdapter().getConnectionState(); - mConnectedDevices.clear(); + List<CachedBluetoothDevice> newList = new ArrayList<>(); // If any of the devices are in a higher state than the adapter, move the adapter into // that state. for (CachedBluetoothDevice device : getDevices()) { @@ -251,15 +259,19 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa state = maxDeviceState; } if (device.isConnected()) { - mConnectedDevices.add(device); + newList.add(device); } } - if (mConnectedDevices.isEmpty() && state == BluetoothAdapter.STATE_CONNECTED) { + if (newList.isEmpty() && state == BluetoothAdapter.STATE_CONNECTED) { // If somehow we think we are connected, but have no connected devices, we aren't // connected. state = BluetoothAdapter.STATE_DISCONNECTED; } + synchronized (mConnectedDevices) { + mConnectedDevices.clear(); + mConnectedDevices.addAll(newList); + } if (state != mConnectionState) { mConnectionState = state; mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java index 9d667805fade..2ecd4b3db5a1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardQsUserSwitchController.java @@ -45,6 +45,7 @@ import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.statusbar.phone.NotificationPanelViewController; +import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.phone.UserAvatarView; import com.android.systemui.util.ViewController; @@ -122,7 +123,8 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie ConfigurationController configurationController, SysuiStatusBarStateController statusBarStateController, DozeParameters dozeParameters, - Provider<UserDetailView.Adapter> userDetailViewAdapterProvider) { + Provider<UserDetailView.Adapter> userDetailViewAdapterProvider, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { super(view); if (DEBUG) Log.d(TAG, "New KeyguardQsUserSwitchController"); mContext = context; @@ -135,7 +137,7 @@ public class KeyguardQsUserSwitchController extends ViewController<UserAvatarVie mConfigurationController = configurationController; mStatusBarStateController = statusBarStateController; mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, - keyguardStateController, dozeParameters); + keyguardStateController, dozeParameters, unlockedScreenOffAnimationController); mUserDetailAdapter = new KeyguardUserDetailAdapter(context, userDetailViewAdapterProvider); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java index e2c52f9a3961..68f2a62a4fec 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserSwitcherController.java @@ -51,6 +51,7 @@ import com.android.systemui.statusbar.notification.PropertyAnimator; import com.android.systemui.statusbar.notification.stack.AnimationProperties; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.phone.DozeParameters; +import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.util.ViewController; import java.util.ArrayList; @@ -159,7 +160,8 @@ public class KeyguardUserSwitcherController extends ViewController<KeyguardUserS KeyguardStateController keyguardStateController, SysuiStatusBarStateController statusBarStateController, KeyguardUpdateMonitor keyguardUpdateMonitor, - DozeParameters dozeParameters) { + DozeParameters dozeParameters, + UnlockedScreenOffAnimationController unlockedScreenOffAnimationController) { super(keyguardUserSwitcherView); if (DEBUG) Log.d(TAG, "New KeyguardUserSwitcherController"); mContext = context; @@ -171,7 +173,7 @@ public class KeyguardUserSwitcherController extends ViewController<KeyguardUserS mAdapter = new KeyguardUserAdapter(mContext, resources, layoutInflater, mUserSwitcherController, this); mKeyguardVisibilityHelper = new KeyguardVisibilityHelper(mView, - keyguardStateController, dozeParameters); + keyguardStateController, dozeParameters, unlockedScreenOffAnimationController); mBackground = new KeyguardUserSwitcherScrim(context); } diff --git a/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java b/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java index b1241b160d70..941cd7783ed0 100644 --- a/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java +++ b/packages/SystemUI/src/com/android/systemui/usb/UsbDebuggingActivity.java @@ -68,7 +68,9 @@ public class UsbDebuggingActivity extends AlertActivity super.onCreate(icicle); - if (SystemProperties.getInt("service.adb.tcp.port", 0) == 0) { + // Emulator does not support reseating the usb cable to reshow the dialog. + boolean isEmulator = SystemProperties.get("ro.boot.qemu").equals("1"); + if (SystemProperties.getInt("service.adb.tcp.port", 0) == 0 && !isEmulator) { mDisconnectedReceiver = new UsbDisconnectedReceiver(this); IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_STATE); mBroadcastDispatcher.registerReceiver(mDisconnectedReceiver, filter); diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java index 6a648bdf8cd4..19ed2848ca6f 100644 --- a/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ProximitySensor.java @@ -21,8 +21,8 @@ import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.util.Assert; import com.android.systemui.util.concurrency.DelayableExecutor; +import com.android.systemui.util.concurrency.Execution; import java.util.ArrayList; import java.util.List; @@ -62,6 +62,7 @@ public class ProximitySensor implements ThresholdSensor { private final ThresholdSensor mPrimaryThresholdSensor; private final ThresholdSensor mSecondaryThresholdSensor; private final DelayableExecutor mDelayableExecutor; + private final Execution mExecution; private final List<ThresholdSensor.Listener> mListeners = new ArrayList<>(); private String mTag = null; @VisibleForTesting protected boolean mPaused; @@ -74,14 +75,10 @@ public class ProximitySensor implements ThresholdSensor { private boolean mInitializedListeners = false; private boolean mSecondarySafe = false; - private ThresholdSensor.Listener mPrimaryEventListener = new ThresholdSensor.Listener() { - @Override - public void onThresholdCrossed(ThresholdSensorEvent event) { - onPrimarySensorEvent(event); - } - }; + private final ThresholdSensor.Listener mPrimaryEventListener = this::onPrimarySensorEvent; - private ThresholdSensor.Listener mSecondaryEventListener = new ThresholdSensor.Listener() { + private final ThresholdSensor.Listener mSecondaryEventListener = + new ThresholdSensor.Listener() { @Override public void onThresholdCrossed(ThresholdSensorEvent event) { // If we no longer have a "below" signal and the secondary sensor is not @@ -110,12 +107,15 @@ public class ProximitySensor implements ThresholdSensor { }; @Inject - public ProximitySensor(@PrimaryProxSensor ThresholdSensor primary, + public ProximitySensor( + @PrimaryProxSensor ThresholdSensor primary, @SecondaryProxSensor ThresholdSensor secondary, - @Main DelayableExecutor delayableExecutor) { + @Main DelayableExecutor delayableExecutor, + Execution execution) { mPrimaryThresholdSensor = primary; mSecondaryThresholdSensor = secondary; mDelayableExecutor = delayableExecutor; + mExecution = execution; } @Override @@ -127,7 +127,7 @@ public class ProximitySensor implements ThresholdSensor { @Override public void setDelay(int delay) { - Assert.isMainThread(); + mExecution.assertIsMainThread(); mPrimaryThresholdSensor.setDelay(delay); mSecondaryThresholdSensor.setDelay(delay); } @@ -137,7 +137,7 @@ public class ProximitySensor implements ThresholdSensor { */ @Override public void pause() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); mPaused = true; unregisterInternal(); } @@ -147,18 +147,23 @@ public class ProximitySensor implements ThresholdSensor { */ @Override public void resume() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); mPaused = false; registerInternal(); } /** * Sets that it is safe to leave the secondary sensor on indefinitely. + * + * The secondary sensor will be turned on if there are any registered listeners, regardless + * of what is reported by the primary sensor. */ public void setSecondarySafe(boolean safe) { mSecondarySafe = safe; if (!mSecondarySafe) { mSecondaryThresholdSensor.pause(); + } else { + mSecondaryThresholdSensor.resume(); } } @@ -185,7 +190,7 @@ public class ProximitySensor implements ThresholdSensor { */ @Override public void register(ThresholdSensor.Listener listener) { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (!isLoaded()) { return; } @@ -199,13 +204,15 @@ public class ProximitySensor implements ThresholdSensor { } protected void registerInternal() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (mRegistered || mPaused || mListeners.isEmpty()) { return; } if (!mInitializedListeners) { mPrimaryThresholdSensor.register(mPrimaryEventListener); - mSecondaryThresholdSensor.pause(); + if (!mSecondarySafe) { + mSecondaryThresholdSensor.pause(); + } mSecondaryThresholdSensor.register(mSecondaryEventListener); mInitializedListeners = true; } @@ -222,7 +229,7 @@ public class ProximitySensor implements ThresholdSensor { */ @Override public void unregister(ThresholdSensor.Listener listener) { - Assert.isMainThread(); + mExecution.assertIsMainThread(); mListeners.remove(listener); if (mListeners.size() == 0) { unregisterInternal(); @@ -230,7 +237,7 @@ public class ProximitySensor implements ThresholdSensor { } protected void unregisterInternal() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (!mRegistered) { return; } @@ -252,7 +259,7 @@ public class ProximitySensor implements ThresholdSensor { /** Update all listeners with the last value this class received from the sensor. */ public void alertListeners() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (mAlerting.getAndSet(true)) { return; } @@ -267,7 +274,7 @@ public class ProximitySensor implements ThresholdSensor { } private void onPrimarySensorEvent(ThresholdSensorEvent event) { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (mLastPrimaryEvent != null && event.getBelow() == mLastPrimaryEvent.getBelow()) { return; } @@ -290,7 +297,7 @@ public class ProximitySensor implements ThresholdSensor { } private void onSensorEvent(ThresholdSensorEvent event) { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (mLastEvent != null && event.getBelow() == mLastEvent.getBelow()) { return; } @@ -306,9 +313,9 @@ public class ProximitySensor implements ThresholdSensor { @Override public String toString() { return String.format("{registered=%s, paused=%s, near=%s, primarySensor=%s, " - + "secondarySensor=%s}", + + "secondarySensor=%s secondarySafe=%s}", isRegistered(), mPaused, isNear(), mPrimaryThresholdSensor, - mSecondaryThresholdSensor); + mSecondaryThresholdSensor, mSecondarySafe); } /** diff --git a/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java index 71b255229c8f..31c307297066 100644 --- a/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java +++ b/packages/SystemUI/src/com/android/systemui/util/sensors/ThresholdSensorImpl.java @@ -25,7 +25,7 @@ import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.dagger.qualifiers.Main; -import com.android.systemui.util.Assert; +import com.android.systemui.util.concurrency.Execution; import java.util.ArrayList; import java.util.List; @@ -37,6 +37,7 @@ class ThresholdSensorImpl implements ThresholdSensor { private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private final AsyncSensorManager mSensorManager; + private final Execution mExecution; private final Sensor mSensor; private final float mThreshold; private boolean mRegistered; @@ -61,9 +62,10 @@ class ThresholdSensorImpl implements ThresholdSensor { } }; - private ThresholdSensorImpl(AsyncSensorManager sensorManager, - Sensor sensor, float threshold, float thresholdLatch, int sensorDelay) { + private ThresholdSensorImpl(AsyncSensorManager sensorManager, Sensor sensor, + Execution execution, float threshold, float thresholdLatch, int sensorDelay) { mSensorManager = sensorManager; + mExecution = execution; mSensor = sensor; mThreshold = threshold; mThresholdLatch = thresholdLatch; @@ -107,7 +109,7 @@ class ThresholdSensorImpl implements ThresholdSensor { */ @Override public void register(Listener listener) { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (!mListeners.contains(listener)) { mListeners.add(listener); } @@ -116,7 +118,7 @@ class ThresholdSensorImpl implements ThresholdSensor { @Override public void unregister(Listener listener) { - Assert.isMainThread(); + mExecution.assertIsMainThread(); mListeners.remove(listener); unregisterInternal(); } @@ -126,7 +128,7 @@ class ThresholdSensorImpl implements ThresholdSensor { */ @Override public void pause() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); mPaused = true; unregisterInternal(); } @@ -136,7 +138,7 @@ class ThresholdSensorImpl implements ThresholdSensor { */ @Override public void resume() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); mPaused = false; registerInternal(); } @@ -148,7 +150,7 @@ class ThresholdSensorImpl implements ThresholdSensor { } private void registerInternal() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (mRegistered || mPaused || mListeners.isEmpty()) { return; } @@ -158,7 +160,7 @@ class ThresholdSensorImpl implements ThresholdSensor { } private void unregisterInternal() { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (!mRegistered) { return; } @@ -177,7 +179,7 @@ class ThresholdSensorImpl implements ThresholdSensor { * still appears entirely binary. */ private void onSensorEvent(boolean belowThreshold, boolean aboveThreshold, long timestampNs) { - Assert.isMainThread(); + mExecution.assertIsMainThread(); if (!mRegistered) { return; } @@ -212,6 +214,7 @@ class ThresholdSensorImpl implements ThresholdSensor { static class Builder { private final Resources mResources; private final AsyncSensorManager mSensorManager; + private final Execution mExecution; private int mSensorDelay = SensorManager.SENSOR_DELAY_NORMAL;; private float mThresholdValue; private float mThresholdLatchValue; @@ -221,9 +224,10 @@ class ThresholdSensorImpl implements ThresholdSensor { private boolean mThresholdLatchValueSet; @Inject - Builder(@Main Resources resources, AsyncSensorManager sensorManager) { + Builder(@Main Resources resources, AsyncSensorManager sensorManager, Execution execution) { mResources = resources; mSensorManager = sensorManager; + mExecution = execution; } @@ -302,7 +306,8 @@ class ThresholdSensorImpl implements ThresholdSensor { } return new ThresholdSensorImpl( - mSensorManager, mSensor, mThresholdValue, mThresholdLatchValue, mSensorDelay); + mSensorManager, mSensor, mExecution, + mThresholdValue, mThresholdLatchValue, mSensorDelay); } private Sensor findSensorByType(String sensorType) { diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewControllerTest.java index f9b6d4467e3c..83c2227ffc12 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardStatusViewControllerTest.java @@ -25,6 +25,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.shared.system.smartspace.SmartspaceTransitionController; import com.android.systemui.statusbar.phone.DozeParameters; +import com.android.systemui.statusbar.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -56,6 +57,8 @@ public class KeyguardStatusViewControllerTest extends SysuiTestCase { KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; @Mock SmartspaceTransitionController mSmartSpaceTransitionController; + @Mock + UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private KeyguardStatusViewController mController; @@ -72,7 +75,8 @@ public class KeyguardStatusViewControllerTest extends SysuiTestCase { mConfigurationController, mDozeParameters, mKeyguardUnlockAnimationController, - mSmartSpaceTransitionController); + mSmartSpaceTransitionController, + mUnlockedScreenOffAnimationController); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java index 2f3d62ae2bde..ab5bdf4835da 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MagnificationModeSwitchTest.java @@ -70,6 +70,7 @@ import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.ImageView; +import androidx.test.filters.FlakyTest; import androidx.test.filters.SmallTest; import com.android.internal.graphics.SfVsyncFrameCallbackProvider; @@ -89,8 +90,9 @@ import org.mockito.MockitoAnnotations; import java.util.List; @SmallTest +@FlakyTest(bugId = 188890599) @RunWith(AndroidTestingRunner.class) -@TestableLooper.RunWithLooper +@TestableLooper.RunWithLooper(setAsMainLooper = true) public class MagnificationModeSwitchTest extends SysuiTestCase { private static final float FADE_IN_ALPHA = 1f; diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuViewTest.java index 0de257ad424b..448211ed5274 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/floatingmenu/AccessibilityFloatingMenuViewTest.java @@ -18,6 +18,8 @@ package com.android.systemui.accessibility.floatingmenu; import static android.view.View.OVER_SCROLL_ALWAYS; import static android.view.View.OVER_SCROLL_NEVER; +import static android.view.WindowInsets.Type.ime; +import static android.view.WindowInsets.Type.navigationBars; import static com.google.common.truth.Truth.assertThat; @@ -31,9 +33,11 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.content.Context; import android.content.res.Resources; +import android.graphics.Insets; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; @@ -43,7 +47,9 @@ import android.testing.TestableLooper; import android.view.MotionEvent; import android.view.View; import android.view.ViewPropertyAnimator; +import android.view.WindowInsets; import android.view.WindowManager; +import android.view.WindowMetrics; import android.view.accessibility.AccessibilityNodeInfo; import androidx.annotation.NonNull; @@ -79,12 +85,17 @@ public class AccessibilityFloatingMenuViewTest extends SysuiTestCase { @Mock private ViewPropertyAnimator mAnimator; + @Mock + private WindowMetrics mWindowMetrics; + private MotionEvent mInterceptMotionEvent; private RecyclerView mListView; private Rect mAvailableBounds = new Rect(100, 200, 300, 400); + private int mScreenHeight; + private int mMenuWindowHeight; private int mMenuHalfWidth; private int mMenuHalfHeight; private int mScreenHalfWidth; @@ -111,18 +122,19 @@ public class AccessibilityFloatingMenuViewTest extends SysuiTestCase { final int margin = res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_margin); final int padding = - res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_padding); + res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_small_padding); final int iconWidthHeight = res.getDimensionPixelSize(R.dimen.accessibility_floating_menu_small_width_height); final int menuWidth = padding * 2 + iconWidthHeight; final int menuHeight = (padding + iconWidthHeight) * mTargets.size() + padding; final int screenWidth = mContext.getResources().getDisplayMetrics().widthPixels; - final int screenHeight = mContext.getResources().getDisplayMetrics().heightPixels; + mScreenHeight = mContext.getResources().getDisplayMetrics().heightPixels; mMenuHalfWidth = menuWidth / 2; mMenuHalfHeight = menuHeight / 2; mScreenHalfWidth = screenWidth / 2; - mScreenHalfHeight = screenHeight / 2; + mScreenHalfHeight = mScreenHeight / 2; mMaxWindowX = screenWidth - margin - menuWidth; + mMenuWindowHeight = menuHeight + margin * 2; } @Test @@ -464,12 +476,80 @@ public class AccessibilityFloatingMenuViewTest extends SysuiTestCase { assertThat(mListView.getOverScrollMode()).isEqualTo(OVER_SCROLL_NEVER); } + @Test + public void showMenuView_insetsListener_overlapWithIme_menuViewShifted() { + final int offset = 200; + + showMenuWithLatestStatus(); + final WindowInsets imeInset = fakeImeInsetWith(offset); + when(mWindowManager.getCurrentWindowMetrics()).thenReturn(mWindowMetrics); + when(mWindowMetrics.getWindowInsets()).thenReturn(imeInset); + final int expectedLayoutY = mMenuView.mCurrentLayoutParams.y - offset; + mMenuView.dispatchApplyWindowInsets(imeInset); + + assertThat(mMenuView.mCurrentLayoutParams.y).isEqualTo(expectedLayoutY); + } + + @Test + public void hideIme_onMenuViewShifted_menuViewMovedBack() { + final int offset = 200; + showMenuWithLatestStatus(); + final WindowInsets imeInset = fakeImeInsetWith(offset); + when(mWindowManager.getCurrentWindowMetrics()).thenReturn(mWindowMetrics); + when(mWindowMetrics.getWindowInsets()).thenReturn(imeInset); + final int expectedLayoutY = mMenuView.mCurrentLayoutParams.y; + mMenuView.dispatchApplyWindowInsets(imeInset); + + mMenuView.dispatchApplyWindowInsets( + new WindowInsets.Builder().setVisible(ime(), false).build()); + + assertThat(mMenuView.mCurrentLayoutParams.y).isEqualTo(expectedLayoutY); + } + + @Test + public void showMenuAndIme_withHigherIme_alignScreenTopEdge() { + final int offset = 99999; + + showMenuWithLatestStatus(); + final WindowInsets imeInset = fakeImeInsetWith(offset); + when(mWindowManager.getCurrentWindowMetrics()).thenReturn(mWindowMetrics); + when(mWindowMetrics.getWindowInsets()).thenReturn(imeInset); + mMenuView.dispatchApplyWindowInsets(imeInset); + + assertThat(mMenuView.mCurrentLayoutParams.y).isEqualTo(0); + } + @After public void tearDown() { mInterceptMotionEvent = null; mMotionEventHelper.recycleEvents(); } + private void showMenuWithLatestStatus() { + mMenuView.show(); + mMenuView.onTargetsChanged(mTargets); + mMenuView.setSizeType(0); + mMenuView.setShapeType(0); + } + + /** + * Based on the current menu status, fake the ime inset component {@link WindowInsets} used + * for testing. + * + * @param offset is used for the y-axis position of ime higher than the y-axis position of menu. + * @return the ime inset + */ + private WindowInsets fakeImeInsetWith(int offset) { + // Ensure the keyboard has overlapped on the menu view. + final int fakeImeHeight = + mScreenHeight - (mMenuView.mCurrentLayoutParams.y + mMenuWindowHeight) + offset; + + return new WindowInsets.Builder() + .setVisible(ime() | navigationBars(), true) + .setInsets(ime() | navigationBars(), Insets.of(0, 0, 0, fakeImeHeight)) + .build(); + } + private class TestAccessibilityFloatingMenu extends AccessibilityFloatingMenuView { TestAccessibilityFloatingMenu(Context context, RecyclerView listView) { super(context, listView); diff --git a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt index f2ef5c38e9b9..d4990114e1c7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/animation/ActivityLaunchAnimatorTest.kt @@ -2,12 +2,16 @@ package com.android.systemui.animation import android.app.ActivityManager import android.app.WindowConfiguration +import android.content.ComponentName +import android.content.pm.ActivityInfo +import android.content.pm.ApplicationInfo import android.graphics.Point import android.graphics.Rect import android.os.Looper import android.testing.AndroidTestingRunner import android.testing.TestableLooper.RunWithLooper import android.view.IRemoteAnimationFinishedCallback +import android.view.IRemoteAnimationRunner import android.view.RemoteAnimationAdapter import android.view.RemoteAnimationTarget import android.view.SurfaceControl @@ -15,6 +19,7 @@ import android.view.ViewGroup import android.widget.LinearLayout import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase +import com.android.systemui.util.mockito.any import junit.framework.Assert.assertFalse import junit.framework.Assert.assertNotNull import junit.framework.Assert.assertNull @@ -27,6 +32,7 @@ import org.mockito.ArgumentCaptor import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.Mock import org.mockito.Mockito.never +import org.mockito.Mockito.spy import org.mockito.Mockito.verify import org.mockito.Spy import org.mockito.junit.MockitoJUnit @@ -36,14 +42,16 @@ import kotlin.concurrent.thread @RunWith(AndroidTestingRunner::class) @RunWithLooper class ActivityLaunchAnimatorTest : SysuiTestCase() { - private val activityLaunchAnimator = ActivityLaunchAnimator(mContext) private val launchContainer = LinearLayout(mContext) + private val keyguardHandler = TestLaunchAnimatorKeyguardHandler(isOnKeyguard = false) @Spy private val controller = TestLaunchAnimatorController(launchContainer) @Mock lateinit var iCallback: IRemoteAnimationFinishedCallback + private val activityLaunchAnimator = ActivityLaunchAnimator(keyguardHandler, mContext) @get:Rule val rule = MockitoJUnit.rule() private fun startIntentWithAnimation( + animator: ActivityLaunchAnimator = this.activityLaunchAnimator, controller: ActivityLaunchAnimator.Controller? = this.controller, animate: Boolean = true, intentStarter: (RemoteAnimationAdapter?) -> Int @@ -51,7 +59,7 @@ class ActivityLaunchAnimatorTest : SysuiTestCase() { // We start in a new thread so that we can ensure that the callbacks are called in the main // thread. thread { - activityLaunchAnimator.startIntentWithAnimation( + animator.startIntentWithAnimation( controller = controller, animate = animate, intentStarter = intentStarter @@ -101,6 +109,27 @@ class ActivityLaunchAnimatorTest : SysuiTestCase() { } @Test + fun animatesIfActivityIsAlreadyOpenAndIsOnKeyguard() { + val keyguardHandler = spy(TestLaunchAnimatorKeyguardHandler(isOnKeyguard = true)) + val animator = ActivityLaunchAnimator(keyguardHandler, context) + + val willAnimateCaptor = ArgumentCaptor.forClass(Boolean::class.java) + var animationAdapter: RemoteAnimationAdapter? = null + + startIntentWithAnimation(animator) { adapter -> + animationAdapter = adapter + ActivityManager.START_DELIVERED_TO_TOP + } + + waitForIdleSync() + verify(controller).onIntentStarted(willAnimateCaptor.capture()) + verify(keyguardHandler).hideKeyguardWithAnimation(any()) + + assertTrue(willAnimateCaptor.value) + assertNull(animationAdapter) + } + + @Test fun doesNotAnimateIfAnimateIsFalse() { val willAnimateCaptor = ArgumentCaptor.forClass(Boolean::class.java) startIntentWithAnimation(animate = false) { ActivityManager.START_SUCCESS } @@ -141,14 +170,30 @@ class ActivityLaunchAnimatorTest : SysuiTestCase() { private fun fakeWindow(): RemoteAnimationTarget { val bounds = Rect(10 /* left */, 20 /* top */, 30 /* right */, 40 /* bottom */) + val taskInfo = ActivityManager.RunningTaskInfo() + taskInfo.topActivity = ComponentName("com.android.systemui", "FakeActivity") + taskInfo.topActivityInfo = ActivityInfo().apply { + applicationInfo = ApplicationInfo() + } + return RemoteAnimationTarget( 0, RemoteAnimationTarget.MODE_OPENING, SurfaceControl(), false, Rect(), Rect(), 0, Point(), Rect(), bounds, WindowConfiguration(), false, SurfaceControl(), Rect(), - ActivityManager.RunningTaskInfo() + taskInfo ) } } +private class TestLaunchAnimatorKeyguardHandler( + private val isOnKeyguard: Boolean +) : ActivityLaunchAnimator.KeyguardHandler { + override fun isOnKeyguard(): Boolean = isOnKeyguard + + override fun hideKeyguardWithAnimation(runner: IRemoteAnimationRunner) { + // Do nothing. + } +} + /** * A simple implementation of [ActivityLaunchAnimator.Controller] which throws if it is called * outside of the main thread. diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java index f41c100ed562..0b399cf118b0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java @@ -224,7 +224,7 @@ public class AuthContainerViewTest extends SysuiTestCase { public void testLayoutParams_hasSecureWindowFlag() { final IBinder windowToken = mock(IBinder.class); final WindowManager.LayoutParams layoutParams = - AuthContainerView.getLayoutParams(windowToken); + AuthContainerView.getLayoutParams(windowToken, ""); assertTrue((layoutParams.flags & WindowManager.LayoutParams.FLAG_SECURE) != 0); } @@ -232,7 +232,7 @@ public class AuthContainerViewTest extends SysuiTestCase { public void testLayoutParams_excludesImeInsets() { final IBinder windowToken = mock(IBinder.class); final WindowManager.LayoutParams layoutParams = - AuthContainerView.getLayoutParams(windowToken); + AuthContainerView.getLayoutParams(windowToken, ""); assertTrue((layoutParams.getFitInsetsTypes() & WindowInsets.Type.ime()) == 0); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerTest.java index a7c63c13637a..5923de6719a8 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerTest.java @@ -254,15 +254,15 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase { @Test public void testOnDetachedStateReset() { - // GIVEN view is attached, alt auth is force being shown + // GIVEN view is attached mController.onViewAttached(); - captureStatusBarStateListeners(); + captureAltAuthInterceptor(); // WHEN view is detached mController.onViewDetached(); - // THEN set alternate auth interceptor to null - verify(mStatusBarKeyguardViewManager).setAlternateAuthInterceptor(null); + // THEN remove alternate auth interceptor + verify(mStatusBarKeyguardViewManager).removeAlternateAuthInterceptor(mAltAuthInterceptor); } private void sendStatusBarStateChanged(int statusBarState) { 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 6f03f5d975d0..e6f9aaf78080 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardViewMediatorTest.java @@ -49,6 +49,7 @@ import com.android.systemui.navigationbar.NavigationModeController; 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.phone.UnlockedScreenOffAnimationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.DeviceConfigProxyFake; @@ -82,6 +83,7 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { private @Mock SysuiStatusBarStateController mStatusBarStateController; private @Mock KeyguardStateController mKeyguardStateController; private @Mock KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; + private @Mock UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private DeviceConfigProxy mDeviceConfig = new DeviceConfigProxyFake(); private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); @@ -101,7 +103,8 @@ public class KeyguardViewMediatorTest extends SysuiTestCase { mDismissCallbackRegistry, mUpdateMonitor, mDumpManager, mUiBgExecutor, mPowerManager, mTrustManager, mDeviceConfig, mNavigationModeController, mKeyguardDisplayManager, mDozeParameters, mStatusBarStateController, - mKeyguardStateController, () -> mKeyguardUnlockAnimationController); + mKeyguardStateController, () -> mKeyguardUnlockAnimationController, + mUnlockedScreenOffAnimationController); mViewMediator.start(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataCombineLatestTest.java b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataCombineLatestTest.java index 4a487be914c2..e20b426907be 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataCombineLatestTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataCombineLatestTest.java @@ -19,6 +19,7 @@ package com.android.systemui.media; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.any; +import static org.mockito.Mockito.anyBoolean; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; @@ -81,9 +82,9 @@ public class MediaDataCombineLatestTest extends SysuiTestCase { @Test public void eventNotEmittedWithoutDevice() { // WHEN data source emits an event without device data - mManager.onMediaDataLoaded(KEY, null, mMediaData); + mManager.onMediaDataLoaded(KEY, null, mMediaData, true /* immediately */); // THEN an event isn't emitted - verify(mListener, never()).onMediaDataLoaded(eq(KEY), any(), any()); + verify(mListener, never()).onMediaDataLoaded(eq(KEY), any(), any(), anyBoolean()); } @Test @@ -91,7 +92,7 @@ public class MediaDataCombineLatestTest extends SysuiTestCase { // WHEN device source emits an event without media data mManager.onMediaDeviceChanged(KEY, null, mDeviceData); // THEN an event isn't emitted - verify(mListener, never()).onMediaDataLoaded(eq(KEY), any(), any()); + verify(mListener, never()).onMediaDataLoaded(eq(KEY), any(), any(), anyBoolean()); } @Test @@ -99,80 +100,80 @@ public class MediaDataCombineLatestTest extends SysuiTestCase { // GIVEN that a device event has already been received mManager.onMediaDeviceChanged(KEY, null, mDeviceData); // WHEN media event is received - mManager.onMediaDataLoaded(KEY, null, mMediaData); + mManager.onMediaDataLoaded(KEY, null, mMediaData, true /* immediately */); // THEN the listener receives a combined event ArgumentCaptor<MediaData> captor = ArgumentCaptor.forClass(MediaData.class); - verify(mListener).onMediaDataLoaded(eq(KEY), any(), captor.capture()); + verify(mListener).onMediaDataLoaded(eq(KEY), any(), captor.capture(), anyBoolean()); assertThat(captor.getValue().getDevice()).isNotNull(); } @Test public void emitEventAfterMediaFirst() { // GIVEN that media event has already been received - mManager.onMediaDataLoaded(KEY, null, mMediaData); + mManager.onMediaDataLoaded(KEY, null, mMediaData, true /* immediately */); // WHEN device event is received mManager.onMediaDeviceChanged(KEY, null, mDeviceData); // THEN the listener receives a combined event ArgumentCaptor<MediaData> captor = ArgumentCaptor.forClass(MediaData.class); - verify(mListener).onMediaDataLoaded(eq(KEY), any(), captor.capture()); + verify(mListener).onMediaDataLoaded(eq(KEY), any(), captor.capture(), anyBoolean()); assertThat(captor.getValue().getDevice()).isNotNull(); } @Test public void migrateKeyMediaFirst() { // GIVEN that media and device info has already been received - mManager.onMediaDataLoaded(OLD_KEY, null, mMediaData); + mManager.onMediaDataLoaded(OLD_KEY, null, mMediaData, true /* immediately */); mManager.onMediaDeviceChanged(OLD_KEY, null, mDeviceData); reset(mListener); // WHEN a key migration event is received - mManager.onMediaDataLoaded(KEY, OLD_KEY, mMediaData); + mManager.onMediaDataLoaded(KEY, OLD_KEY, mMediaData, true /* immediately */); // THEN the listener receives a combined event ArgumentCaptor<MediaData> captor = ArgumentCaptor.forClass(MediaData.class); - verify(mListener).onMediaDataLoaded(eq(KEY), eq(OLD_KEY), captor.capture()); + verify(mListener).onMediaDataLoaded(eq(KEY), eq(OLD_KEY), captor.capture(), anyBoolean()); assertThat(captor.getValue().getDevice()).isNotNull(); } @Test public void migrateKeyDeviceFirst() { // GIVEN that media and device info has already been received - mManager.onMediaDataLoaded(OLD_KEY, null, mMediaData); + mManager.onMediaDataLoaded(OLD_KEY, null, mMediaData, true /* immediately */); mManager.onMediaDeviceChanged(OLD_KEY, null, mDeviceData); reset(mListener); // WHEN a key migration event is received mManager.onMediaDeviceChanged(KEY, OLD_KEY, mDeviceData); // THEN the listener receives a combined event ArgumentCaptor<MediaData> captor = ArgumentCaptor.forClass(MediaData.class); - verify(mListener).onMediaDataLoaded(eq(KEY), eq(OLD_KEY), captor.capture()); + verify(mListener).onMediaDataLoaded(eq(KEY), eq(OLD_KEY), captor.capture(), anyBoolean()); assertThat(captor.getValue().getDevice()).isNotNull(); } @Test public void migrateKeyMediaAfter() { // GIVEN that media and device info has already been received - mManager.onMediaDataLoaded(OLD_KEY, null, mMediaData); + mManager.onMediaDataLoaded(OLD_KEY, null, mMediaData, true /* immediately */); mManager.onMediaDeviceChanged(OLD_KEY, null, mDeviceData); mManager.onMediaDeviceChanged(KEY, OLD_KEY, mDeviceData); reset(mListener); // WHEN a second key migration event is received for media - mManager.onMediaDataLoaded(KEY, OLD_KEY, mMediaData); + mManager.onMediaDataLoaded(KEY, OLD_KEY, mMediaData, true /* immediately */); // THEN the key has already been migrated ArgumentCaptor<MediaData> captor = ArgumentCaptor.forClass(MediaData.class); - verify(mListener).onMediaDataLoaded(eq(KEY), eq(KEY), captor.capture()); + verify(mListener).onMediaDataLoaded(eq(KEY), eq(KEY), captor.capture(), anyBoolean()); assertThat(captor.getValue().getDevice()).isNotNull(); } @Test public void migrateKeyDeviceAfter() { // GIVEN that media and device info has already been received - mManager.onMediaDataLoaded(OLD_KEY, null, mMediaData); + mManager.onMediaDataLoaded(OLD_KEY, null, mMediaData, true /* immediately */); mManager.onMediaDeviceChanged(OLD_KEY, null, mDeviceData); - mManager.onMediaDataLoaded(KEY, OLD_KEY, mMediaData); + mManager.onMediaDataLoaded(KEY, OLD_KEY, mMediaData, true /* immediately */); reset(mListener); // WHEN a second key migration event is received for the device mManager.onMediaDeviceChanged(KEY, OLD_KEY, mDeviceData); // THEN the key has already be migrated ArgumentCaptor<MediaData> captor = ArgumentCaptor.forClass(MediaData.class); - verify(mListener).onMediaDataLoaded(eq(KEY), eq(KEY), captor.capture()); + verify(mListener).onMediaDataLoaded(eq(KEY), eq(KEY), captor.capture(), anyBoolean()); assertThat(captor.getValue().getDevice()).isNotNull(); } @@ -186,7 +187,7 @@ public class MediaDataCombineLatestTest extends SysuiTestCase { @Test public void mediaDataRemovedAfterMediaEvent() { - mManager.onMediaDataLoaded(KEY, null, mMediaData); + mManager.onMediaDataLoaded(KEY, null, mMediaData, true /* immediately */); mManager.onMediaDataRemoved(KEY); verify(mListener).onMediaDataRemoved(eq(KEY)); } @@ -201,12 +202,13 @@ public class MediaDataCombineLatestTest extends SysuiTestCase { @Test public void mediaDataKeyUpdated() { // GIVEN that device and media events have already been received - mManager.onMediaDataLoaded(KEY, null, mMediaData); + mManager.onMediaDataLoaded(KEY, null, mMediaData, true /* immediately */); mManager.onMediaDeviceChanged(KEY, null, mDeviceData); // WHEN the key is changed - mManager.onMediaDataLoaded("NEW_KEY", KEY, mMediaData); + mManager.onMediaDataLoaded("NEW_KEY", KEY, mMediaData, true /* immediately */); // THEN the listener gets a load event with the correct keys ArgumentCaptor<MediaData> captor = ArgumentCaptor.forClass(MediaData.class); - verify(mListener).onMediaDataLoaded(eq("NEW_KEY"), any(), captor.capture()); + verify(mListener).onMediaDataLoaded( + eq("NEW_KEY"), any(), captor.capture(), anyBoolean()); } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataFilterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataFilterTest.kt index fc0506abbdac..17f2a07eb249 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataFilterTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataFilterTest.kt @@ -17,7 +17,6 @@ package com.android.systemui.media import android.app.smartspace.SmartspaceAction -import android.app.smartspace.SmartspaceTarget import android.graphics.Color import androidx.test.filters.SmallTest import android.testing.AndroidTestingRunner @@ -74,7 +73,7 @@ class MediaDataFilterTest : SysuiTestCase() { @Mock private lateinit var executor: Executor @Mock - private lateinit var smartspaceData: SmartspaceTarget + private lateinit var smartspaceData: SmartspaceMediaData @Mock private lateinit var smartspaceMediaRecommendationItem: SmartspaceAction @@ -102,8 +101,11 @@ class MediaDataFilterTest : SysuiTestCase() { dataGuest = MediaData(USER_GUEST, true, BG_COLOR, APP, null, ARTIST, TITLE, null, emptyList(), emptyList(), PACKAGE, null, null, device, true, null) - `when`(smartspaceData.smartspaceTargetId).thenReturn(SMARTSPACE_KEY) - `when`(smartspaceData.iconGrid).thenReturn(listOf(smartspaceMediaRecommendationItem)) + `when`(smartspaceData.targetId).thenReturn(SMARTSPACE_KEY) + `when`(smartspaceData.isActive).thenReturn(true) + `when`(smartspaceData.isValid).thenReturn(true) + `when`(smartspaceData.packageName).thenReturn(PACKAGE) + `when`(smartspaceData.recommendations).thenReturn(listOf(smartspaceMediaRecommendationItem)) } private fun setUser(id: Int) { @@ -118,7 +120,7 @@ class MediaDataFilterTest : SysuiTestCase() { mediaDataFilter.onMediaDataLoaded(KEY, null, dataMain) // THEN we should tell the listener - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), eq(dataMain)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), eq(dataMain), eq(true)) } @Test @@ -127,7 +129,7 @@ class MediaDataFilterTest : SysuiTestCase() { mediaDataFilter.onMediaDataLoaded(KEY, null, dataGuest) // THEN we should NOT tell the listener - verify(listener, never()).onMediaDataLoaded(any(), any(), any()) + verify(listener, never()).onMediaDataLoaded(any(), any(), any(), anyBoolean()) } @Test @@ -173,10 +175,10 @@ class MediaDataFilterTest : SysuiTestCase() { setUser(USER_GUEST) // THEN we should add back the guest user media - verify(listener).onMediaDataLoaded(eq(KEY_ALT), eq(null), eq(dataGuest)) + verify(listener).onMediaDataLoaded(eq(KEY_ALT), eq(null), eq(dataGuest), eq(true)) // but not the main user's - verify(listener, never()).onMediaDataLoaded(eq(KEY), any(), eq(dataMain)) + verify(listener, never()).onMediaDataLoaded(eq(KEY), any(), eq(dataMain), anyBoolean()) } @Test @@ -229,7 +231,7 @@ class MediaDataFilterTest : SysuiTestCase() { } @Test - fun testOnSmartspaceMediaDataLoaded_noMedia_nonEmptyRec_prioritizesSmartspace() { + fun testOnSmartspaceMediaDataLoaded_noMedia_activeValidRec_prioritizesSmartspace() { mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData) verify(listener) @@ -238,18 +240,18 @@ class MediaDataFilterTest : SysuiTestCase() { } @Test - fun testOnSmartspaceMediaDataLoaded_noMedia_emptyRec_showsNothing() { - `when`(smartspaceData.iconGrid).thenReturn(listOf()) + fun testOnSmartspaceMediaDataLoaded_noMedia_inactiveRec_showsNothing() { + `when`(smartspaceData.isActive).thenReturn(false) mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData) - verify(listener, never()) - .onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData), anyBoolean()) - assertThat(mediaDataFilter.hasActiveMedia()).isTrue() + verify(listener, never()).onMediaDataLoaded(any(), any(), any(), anyBoolean()) + verify(listener, never()).onSmartspaceMediaDataLoaded(any(), any(), anyBoolean()) + assertThat(mediaDataFilter.hasActiveMedia()).isFalse() } @Test - fun testOnSmartspaceMediaDataLoaded_noRecentMedia_nonEmptyRec_prioritizesSmartspace() { + fun testOnSmartspaceMediaDataLoaded_noRecentMedia_activeValidRec_prioritizesSmartspace() { val dataOld = dataMain.copy(active = false, lastActive = clock.elapsedRealtime()) mediaDataFilter.onMediaDataLoaded(KEY, null, dataOld) clock.advanceTime(SMARTSPACE_MAX_AGE + 100) @@ -261,53 +263,68 @@ class MediaDataFilterTest : SysuiTestCase() { } @Test - fun testOnSmartspaceMediaDataLoaded_noRecentMedia_emptyRec_showsNothing() { - `when`(smartspaceData.iconGrid).thenReturn(listOf()) + fun testOnSmartspaceMediaDataLoaded_noRecentMedia_inactiveRec_showsNothing() { + `when`(smartspaceData.isActive).thenReturn(false) val dataOld = dataMain.copy(active = false, lastActive = clock.elapsedRealtime()) mediaDataFilter.onMediaDataLoaded(KEY, null, dataOld) clock.advanceTime(SMARTSPACE_MAX_AGE + 100) mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData) - verify(listener, never()) - .onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData), anyBoolean()) - assertThat(mediaDataFilter.hasActiveMedia()).isTrue() + verify(listener, never()).onSmartspaceMediaDataLoaded(any(), any(), anyBoolean()) + assertThat(mediaDataFilter.hasActiveMedia()).isFalse() + } + + @Test + fun testOnSmartspaceMediaDataLoaded_hasRecentMedia_inactiveRec_showsNothing() { + `when`(smartspaceData.isActive).thenReturn(false) + + // WHEN we have media that was recently played, but not currently active + val dataCurrent = dataMain.copy(active = false, lastActive = clock.elapsedRealtime()) + mediaDataFilter.onMediaDataLoaded(KEY, null, dataCurrent) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), eq(dataCurrent), eq(true)) + + // AND we get a smartspace signal + mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData) + + // THEN we should tell listeners to treat the media as active instead + verify(listener, never()).onSmartspaceMediaDataLoaded(any(), any(), anyBoolean()) + assertThat(mediaDataFilter.hasActiveMedia()).isFalse() } @Test - fun testOnSmartspaceMediaDataLoaded_hasRecentMedia_emptyRec_usesMedia() { - `when`(smartspaceData.iconGrid).thenReturn(listOf()) + fun testOnSmartspaceMediaDataLoaded_hasRecentMedia_activeInvalidRec_usesMedia() { + `when`(smartspaceData.isValid).thenReturn(false) // WHEN we have media that was recently played, but not currently active val dataCurrent = dataMain.copy(active = false, lastActive = clock.elapsedRealtime()) mediaDataFilter.onMediaDataLoaded(KEY, null, dataCurrent) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), eq(dataCurrent)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), eq(dataCurrent), eq(true)) // AND we get a smartspace signal mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData) // THEN we should tell listeners to treat the media as active instead val dataCurrentAndActive = dataCurrent.copy(active = true) - verify(listener).onMediaDataLoaded(eq(KEY), eq(KEY), eq(dataCurrentAndActive)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(KEY), eq(dataCurrentAndActive), eq(true)) assertThat(mediaDataFilter.hasActiveMedia()).isTrue() // Smartspace update shouldn't be propagated for the empty rec list. - verify(listener, never()) - .onSmartspaceMediaDataLoaded(eq(SMARTSPACE_KEY), eq(smartspaceData), anyBoolean()) + verify(listener, never()).onSmartspaceMediaDataLoaded(any(), any(), anyBoolean()) } @Test - fun testOnSmartspaceMediaDataLoaded_hasRecentMedia_nonEmptyRec_usesBoth() { + fun testOnSmartspaceMediaDataLoaded_hasRecentMedia_activeValidRec_usesBoth() { // WHEN we have media that was recently played, but not currently active val dataCurrent = dataMain.copy(active = false, lastActive = clock.elapsedRealtime()) mediaDataFilter.onMediaDataLoaded(KEY, null, dataCurrent) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), eq(dataCurrent)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), eq(dataCurrent), eq(true)) // AND we get a smartspace signal mediaDataFilter.onSmartspaceMediaDataLoaded(SMARTSPACE_KEY, smartspaceData) // THEN we should tell listeners to treat the media as active instead val dataCurrentAndActive = dataCurrent.copy(active = true) - verify(listener).onMediaDataLoaded(eq(KEY), eq(KEY), eq(dataCurrentAndActive)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(KEY), eq(dataCurrentAndActive), eq(true)) assertThat(mediaDataFilter.hasActiveMedia()).isTrue() // Smartspace update should also be propagated but not prioritized. verify(listener) @@ -320,7 +337,7 @@ class MediaDataFilterTest : SysuiTestCase() { mediaDataFilter.onSmartspaceMediaDataRemoved(SMARTSPACE_KEY) verify(listener).onSmartspaceMediaDataRemoved(SMARTSPACE_KEY) - assertThat(mediaDataFilter.hasSmartspace).isFalse() + assertThat(mediaDataFilter.hasActiveMedia()).isFalse() } @Test @@ -331,9 +348,8 @@ class MediaDataFilterTest : SysuiTestCase() { mediaDataFilter.onSmartspaceMediaDataRemoved(SMARTSPACE_KEY) - verify(listener).onMediaDataLoaded(eq(KEY), eq(KEY), eq(dataCurrent)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(KEY), eq(dataCurrent), eq(true)) verify(listener).onSmartspaceMediaDataRemoved(SMARTSPACE_KEY) assertThat(mediaDataFilter.hasActiveMedia()).isFalse() - assertThat(mediaDataFilter.hasSmartspace).isFalse() } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataManagerTest.kt index dfb149daa6d5..15cfee828293 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaDataManagerTest.kt @@ -2,6 +2,7 @@ package com.android.systemui.media import android.app.Notification.MediaStyle import android.app.PendingIntent +import android.app.smartspace.SmartspaceAction import android.app.smartspace.SmartspaceTarget import android.graphics.Bitmap import android.media.MediaDescription @@ -9,6 +10,7 @@ import android.media.MediaMetadata import android.media.session.MediaController import android.media.session.MediaSession import android.provider.Settings +import android.os.Bundle import android.service.notification.StatusBarNotification import android.testing.AndroidTestingRunner import android.testing.TestableLooper.RunWithLooper @@ -79,6 +81,7 @@ class MediaDataManagerTest : SysuiTestCase() { @Mock lateinit var activityStarter: ActivityStarter lateinit var smartspaceMediaDataProvider: SmartspaceMediaDataProvider @Mock lateinit var mediaSmartspaceTarget: SmartspaceTarget + @Mock private lateinit var mediaRecommendationItem: SmartspaceAction lateinit var mediaDataManager: MediaDataManager lateinit var mediaNotification: StatusBarNotification @Captor lateinit var mediaDataCaptor: ArgumentCaptor<MediaData> @@ -137,8 +140,12 @@ class MediaDataManagerTest : SysuiTestCase() { // treat mediaSessionBasedFilter as a listener for testing. listener = mediaSessionBasedFilter + val recommendationExtras = Bundle() + recommendationExtras.putString("package_name", PACKAGE_NAME) + whenever(mediaRecommendationItem.extras).thenReturn(recommendationExtras) whenever(mediaSmartspaceTarget.smartspaceTargetId).thenReturn(KEY_MEDIA_SMARTSPACE) whenever(mediaSmartspaceTarget.featureType).thenReturn(SmartspaceTarget.FEATURE_MEDIA) + whenever(mediaSmartspaceTarget.iconGrid).thenReturn(listOf(mediaRecommendationItem)) } @After @@ -172,7 +179,7 @@ class MediaDataManagerTest : SysuiTestCase() { fun testOnMetaDataLoaded_callsListener() { mediaDataManager.onNotificationAdded(KEY, mediaNotification) mediaDataManager.onMediaDataLoaded(KEY, oldKey = null, data = mock(MediaData::class.java)) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), anyObject()) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), anyObject(), eq(true)) } @Test @@ -183,7 +190,7 @@ class MediaDataManagerTest : SysuiTestCase() { mediaDataManager.onNotificationAdded(KEY, mediaNotification) assertThat(backgroundExecutor.runAllReady()).isEqualTo(1) assertThat(foregroundExecutor.runAllReady()).isEqualTo(1) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor), eq(true)) assertThat(mediaDataCaptor.value!!.active).isTrue() } @@ -202,14 +209,15 @@ class MediaDataManagerTest : SysuiTestCase() { mediaDataManager.onNotificationAdded(KEY, mediaNotification) assertThat(backgroundExecutor.runAllReady()).isEqualTo(1) assertThat(foregroundExecutor.runAllReady()).isEqualTo(1) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor), eq(true)) val data = mediaDataCaptor.value assertThat(data.resumption).isFalse() mediaDataManager.onMediaDataLoaded(KEY, null, data.copy(resumeAction = Runnable {})) // WHEN the notification is removed mediaDataManager.onNotificationRemoved(KEY) // THEN the media data indicates that it is for resumption - verify(listener).onMediaDataLoaded(eq(PACKAGE_NAME), eq(KEY), capture(mediaDataCaptor)) + verify(listener) + .onMediaDataLoaded(eq(PACKAGE_NAME), eq(KEY), capture(mediaDataCaptor), eq(true)) assertThat(mediaDataCaptor.value.resumption).isTrue() } @@ -221,7 +229,8 @@ class MediaDataManagerTest : SysuiTestCase() { mediaDataManager.onNotificationAdded(KEY_2, mediaNotification) assertThat(backgroundExecutor.runAllReady()).isEqualTo(2) assertThat(foregroundExecutor.runAllReady()).isEqualTo(2) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor)) + verify(listener) + .onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor), eq(true)) val data = mediaDataCaptor.value assertThat(data.resumption).isFalse() val resumableData = data.copy(resumeAction = Runnable {}) @@ -231,14 +240,16 @@ class MediaDataManagerTest : SysuiTestCase() { // WHEN the first is removed mediaDataManager.onNotificationRemoved(KEY) // THEN the data is for resumption and the key is migrated to the package name - verify(listener).onMediaDataLoaded(eq(PACKAGE_NAME), eq(KEY), capture(mediaDataCaptor)) + verify(listener) + .onMediaDataLoaded(eq(PACKAGE_NAME), eq(KEY), capture(mediaDataCaptor), eq(true)) assertThat(mediaDataCaptor.value.resumption).isTrue() verify(listener, never()).onMediaDataRemoved(eq(KEY)) // WHEN the second is removed mediaDataManager.onNotificationRemoved(KEY_2) // THEN the data is for resumption and the second key is removed - verify(listener).onMediaDataLoaded(eq(PACKAGE_NAME), eq(PACKAGE_NAME), - capture(mediaDataCaptor)) + verify(listener) + .onMediaDataLoaded( + eq(PACKAGE_NAME), eq(PACKAGE_NAME), capture(mediaDataCaptor), eq(true)) assertThat(mediaDataCaptor.value.resumption).isTrue() verify(listener).onMediaDataRemoved(eq(KEY_2)) } @@ -252,7 +263,7 @@ class MediaDataManagerTest : SysuiTestCase() { mediaDataManager.onNotificationAdded(KEY, mediaNotification) assertThat(backgroundExecutor.runAllReady()).isEqualTo(1) assertThat(foregroundExecutor.runAllReady()).isEqualTo(1) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor), eq(true)) val data = mediaDataCaptor.value val dataRemoteWithResume = data.copy(resumeAction = Runnable {}, isLocalSession = false) mediaDataManager.onMediaDataLoaded(KEY, null, dataRemoteWithResume) @@ -277,7 +288,8 @@ class MediaDataManagerTest : SysuiTestCase() { assertThat(backgroundExecutor.runAllReady()).isEqualTo(1) assertThat(foregroundExecutor.runAllReady()).isEqualTo(1) // THEN the media data indicates that it is for resumption - verify(listener).onMediaDataLoaded(eq(PACKAGE_NAME), eq(null), capture(mediaDataCaptor)) + verify(listener) + .onMediaDataLoaded(eq(PACKAGE_NAME), eq(null), capture(mediaDataCaptor), eq(true)) val data = mediaDataCaptor.value assertThat(data.resumption).isTrue() assertThat(data.song).isEqualTo(SESSION_TITLE) @@ -316,14 +328,29 @@ class MediaDataManagerTest : SysuiTestCase() { // THEN it still loads assertThat(backgroundExecutor.runAllReady()).isEqualTo(1) assertThat(foregroundExecutor.runAllReady()).isEqualTo(1) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor)) + verify(listener) + .onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor), eq(true)) } @Test - fun testOnSmartspaceMediaDataLoaded_hasNewMediaTarget_callsListener() { + fun testOnSmartspaceMediaDataLoaded_hasNewValidMediaTarget_callsListener() { smartspaceMediaDataProvider.onTargetsAvailable(listOf(mediaSmartspaceTarget)) verify(listener).onSmartspaceMediaDataLoaded( - eq(KEY_MEDIA_SMARTSPACE), eq(mediaSmartspaceTarget), eq(false)) + eq(KEY_MEDIA_SMARTSPACE), + eq(SmartspaceMediaData(KEY_MEDIA_SMARTSPACE, true /* isActive */, true /*isValid */, + PACKAGE_NAME, null, listOf(mediaRecommendationItem), 0)), + eq(false)) + } + + @Test + fun testOnSmartspaceMediaDataLoaded_hasNewInvalidMediaTarget_callsListener() { + whenever(mediaSmartspaceTarget.iconGrid).thenReturn(listOf()) + smartspaceMediaDataProvider.onTargetsAvailable(listOf(mediaSmartspaceTarget)) + verify(listener).onSmartspaceMediaDataLoaded( + eq(KEY_MEDIA_SMARTSPACE), + eq(EMPTY_SMARTSPACE_MEDIA_DATA + .copy(targetId = KEY_MEDIA_SMARTSPACE, isActive = true, isValid = false)), + eq(false)) } @Test @@ -337,7 +364,7 @@ class MediaDataManagerTest : SysuiTestCase() { fun testOnSmartspaceMediaDataLoaded_hasNoneMediaTarget_callsRemoveListener() { smartspaceMediaDataProvider.onTargetsAvailable(listOf(mediaSmartspaceTarget)) smartspaceMediaDataProvider.onTargetsAvailable(listOf()) - verify(listener).onSmartspaceMediaDataRemoved(KEY_MEDIA_SMARTSPACE) + verify(listener).onSmartspaceMediaDataRemoved(eq(KEY_MEDIA_SMARTSPACE), eq(false)) } @Test @@ -358,7 +385,7 @@ class MediaDataManagerTest : SysuiTestCase() { mediaDataManager.onNotificationAdded(KEY, mediaNotification) assertThat(backgroundExecutor.runAllReady()).isEqualTo(1) assertThat(foregroundExecutor.runAllReady()).isEqualTo(1) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor), eq(true)) assertThat(mediaDataCaptor.value!!.lastActive).isAtLeast(currentTime) } @@ -375,7 +402,7 @@ class MediaDataManagerTest : SysuiTestCase() { mediaDataManager.setTimedOut(KEY, true, true) // THEN the last active time is not changed - verify(listener).onMediaDataLoaded(eq(KEY), eq(KEY), capture(mediaDataCaptor)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(KEY), capture(mediaDataCaptor), eq(true)) assertThat(mediaDataCaptor.value.lastActive).isLessThan(currentTime) } @@ -386,7 +413,7 @@ class MediaDataManagerTest : SysuiTestCase() { mediaDataManager.onNotificationAdded(KEY, mediaNotification) assertThat(backgroundExecutor.runAllReady()).isEqualTo(1) assertThat(foregroundExecutor.runAllReady()).isEqualTo(1) - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor), eq(true)) val data = mediaDataCaptor.value assertThat(data.resumption).isFalse() mediaDataManager.onMediaDataLoaded(KEY, null, data.copy(resumeAction = Runnable {})) @@ -397,7 +424,8 @@ class MediaDataManagerTest : SysuiTestCase() { mediaDataManager.onNotificationRemoved(KEY) // THEN the last active time is not changed - verify(listener).onMediaDataLoaded(eq(PACKAGE_NAME), eq(KEY), capture(mediaDataCaptor)) + verify(listener) + .onMediaDataLoaded(eq(PACKAGE_NAME), eq(KEY), capture(mediaDataCaptor), eq(true)) assertThat(mediaDataCaptor.value.resumption).isTrue() assertThat(mediaDataCaptor.value.lastActive).isLessThan(currentTime) } @@ -423,7 +451,7 @@ class MediaDataManagerTest : SysuiTestCase() { assertThat(foregroundExecutor.runAllReady()).isEqualTo(1) // THEN only the first MAX_COMPACT_ACTIONS are actually set - verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor)) + verify(listener).onMediaDataLoaded(eq(KEY), eq(null), capture(mediaDataCaptor), eq(true)) assertThat(mediaDataCaptor.value.actionsToShowInCompact.size).isEqualTo( MediaDataManager.MAX_COMPACT_ACTIONS) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/MediaSessionBasedFilterTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/MediaSessionBasedFilterTest.kt index 2d90cc4f6712..c6d7e92175eb 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/MediaSessionBasedFilterTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/MediaSessionBasedFilterTest.kt @@ -36,6 +36,7 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentCaptor +import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.any @@ -184,7 +185,7 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { filter.onMediaDataLoaded(KEY, null, mediaData1) bgExecutor.runAllReady() fgExecutor.runAllReady() - verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1), eq(true)) } @Test @@ -206,7 +207,7 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1), eq(true)) } @Test @@ -235,7 +236,7 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1), eq(true)) } @Test @@ -250,13 +251,14 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1), eq(true)) // WHEN a loaded event is received that matches the local session filter.onMediaDataLoaded(KEY, null, mediaData2) bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is filtered - verify(mediaListener, never()).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData2)) + verify(mediaListener, never()).onMediaDataLoaded( + eq(KEY), eq(null), eq(mediaData2), anyBoolean()) } @Test @@ -272,7 +274,7 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { fgExecutor.runAllReady() // THEN the event is not filtered because there isn't a notification for the remote // session. - verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1), eq(true)) } @Test @@ -289,13 +291,14 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(key1), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(key1), eq(null), eq(mediaData1), eq(true)) // WHEN a loaded event is received that matches the local session filter.onMediaDataLoaded(key2, null, mediaData2) bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is filtered - verify(mediaListener, never()).onMediaDataLoaded(eq(key2), eq(null), eq(mediaData2)) + verify(mediaListener, never()) + .onMediaDataLoaded(eq(key2), eq(null), eq(mediaData2), anyBoolean()) // AND there should be a removed event for key2 verify(mediaListener).onMediaDataRemoved(eq(key2)) } @@ -314,13 +317,13 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(key1), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(key1), eq(null), eq(mediaData1), eq(true)) // WHEN a loaded event is received that matches the remote session filter.onMediaDataLoaded(key2, null, mediaData2) bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(key2), eq(null), eq(mediaData2)) + verify(mediaListener).onMediaDataLoaded(eq(key2), eq(null), eq(mediaData2), eq(true)) } @Test @@ -336,13 +339,13 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1), eq(true)) // WHEN a loaded event is received that matches the local session filter.onMediaDataLoaded(KEY, null, mediaData2) bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData2)) + verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData2), eq(true)) } @Test @@ -360,7 +363,7 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the event is not filtered - verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(KEY), eq(null), eq(mediaData1), eq(true)) } @Test @@ -382,7 +385,7 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the key migration event is fired - verify(mediaListener).onMediaDataLoaded(eq(key2), eq(key1), eq(mediaData2)) + verify(mediaListener).onMediaDataLoaded(eq(key2), eq(key1), eq(mediaData2), eq(true)) } @Test @@ -411,12 +414,13 @@ public class MediaSessionBasedFilterTest : SysuiTestCase() { bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the key migration event is filtered - verify(mediaListener, never()).onMediaDataLoaded(eq(key2), eq(null), eq(mediaData2)) + verify(mediaListener, never()) + .onMediaDataLoaded(eq(key2), eq(null), eq(mediaData2), anyBoolean()) // WHEN a loaded event is received that matches the remote session filter.onMediaDataLoaded(key2, null, mediaData1) bgExecutor.runAllReady() fgExecutor.runAllReady() // THEN the key migration event is fired - verify(mediaListener).onMediaDataLoaded(eq(key2), eq(null), eq(mediaData1)) + verify(mediaListener).onMediaDataLoaded(eq(key2), eq(null), eq(mediaData1), eq(true)) } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt index 126dca550cdb..a2b5013c8c2c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileViewImplTest.kt @@ -23,6 +23,7 @@ import android.testing.AndroidTestingRunner import android.testing.TestableLooper import android.text.TextUtils import android.view.View +import android.widget.TextView import androidx.test.filters.SmallTest import com.android.systemui.R import com.android.systemui.SysuiTestCase @@ -52,6 +53,7 @@ class QSTileViewImplTest : SysuiTestCase() { @Before fun setUp() { MockitoAnnotations.initMocks(this) + context.ensureTestableResources() tileView = FakeTileView(context, iconView, false) customDrawableView = tileView.requireViewById(R.id.customDrawable) @@ -117,7 +119,7 @@ class QSTileViewImplTest : SysuiTestCase() { } @Test - fun testSecondaryLabelDescription_unavailable() { + fun testSecondaryLabelDescription_unavailable_default() { val state = QSTile.State() state.state = Tile.STATE_UNAVAILABLE state.secondaryLabel = "" @@ -130,7 +132,7 @@ class QSTileViewImplTest : SysuiTestCase() { } @Test - fun testSecondaryLabelDescription_booleanInactive() { + fun testSecondaryLabelDescription_booleanInactive_default() { val state = QSTile.BooleanState() state.state = Tile.STATE_INACTIVE state.secondaryLabel = "" @@ -143,7 +145,7 @@ class QSTileViewImplTest : SysuiTestCase() { } @Test - fun testSecondaryLabelDescription_booleanActive() { + fun testSecondaryLabelDescription_booleanActive_default() { val state = QSTile.BooleanState() state.state = Tile.STATE_ACTIVE state.secondaryLabel = "" @@ -220,6 +222,41 @@ class QSTileViewImplTest : SysuiTestCase() { assertThat(chevronView.visibility).isEqualTo(View.GONE) } + @Test + fun testUseStateStringsForKnownSpec_Boolean() { + val state = QSTile.BooleanState() + val spec = "internet" + state.spec = spec + + val unavailableString = "${spec}_unavailable" + val offString = "${spec}_off" + val onString = "${spec}_on" + + context.orCreateTestableResources.addOverride(R.array.tile_states_internet, arrayOf( + unavailableString, + offString, + onString + )) + + // State UNAVAILABLE + state.secondaryLabel = "" + state.state = Tile.STATE_UNAVAILABLE + tileView.changeState(state) + assertThat((tileView.secondaryLabel as TextView).text).isEqualTo(unavailableString) + + // State INACTIVE + state.secondaryLabel = "" + state.state = Tile.STATE_INACTIVE + tileView.changeState(state) + assertThat((tileView.secondaryLabel as TextView).text).isEqualTo(offString) + + // State ACTIVE + state.secondaryLabel = "" + state.state = Tile.STATE_ACTIVE + tileView.changeState(state) + assertThat((tileView.secondaryLabel as TextView).text).isEqualTo(onString) + } + class FakeTileView( context: Context, icon: QSIconView, diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/TilesStatesTextTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/TilesStatesTextTest.kt new file mode 100644 index 000000000000..19ffa4991eaf --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/TilesStatesTextTest.kt @@ -0,0 +1,54 @@ +/* + * 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.testing.AndroidTestingRunner +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.Assert.assertEquals +import org.junit.Assert.assertNotEquals +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidTestingRunner::class) +@SmallTest +class TilesStatesTextTest : SysuiTestCase() { + + @Test + fun testStockTilesHaveStatesArray() { + val tiles = mContext.getString(R.string.quick_settings_tiles_stock).split(",") + tiles.forEach { spec -> + val resName = "${QSTileViewImpl.TILE_STATE_RES_PREFIX}$spec" + val resId = mContext.resources.getIdentifier(resName, "array", mContext.packageName) + + assertNotEquals("Missing resource for $resName", 0, resId) + + val array = mContext.resources.getStringArray(resId) + + assertEquals("Array for $spec is of wrong size", 3, array.size) + } + } + + @Test + fun testDefaultArray() { + val array = mContext.resources.getStringArray(R.array.tile_states_default) + + assertThat(array.size).isEqualTo(3) + } +}
\ No newline at end of file diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/charging/WiredChargingRippleControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/charging/WiredChargingRippleControllerTest.kt index 03744b78e8d5..85ec3faa4013 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/charging/WiredChargingRippleControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/charging/WiredChargingRippleControllerTest.kt @@ -20,6 +20,7 @@ import android.testing.AndroidTestingRunner import android.view.View import android.view.WindowManager import androidx.test.filters.SmallTest +import com.android.internal.logging.UiEventLogger import com.android.systemui.SysuiTestCase import com.android.systemui.statusbar.FeatureFlags import com.android.systemui.statusbar.commandline.CommandRegistry @@ -50,6 +51,7 @@ class WiredChargingRippleControllerTest : SysuiTestCase() { @Mock private lateinit var configurationController: ConfigurationController @Mock private lateinit var rippleView: ChargingRippleView @Mock private lateinit var windowManager: WindowManager + @Mock private lateinit var uiEventLogger: UiEventLogger private val systemClock = FakeSystemClock() @Before @@ -58,7 +60,7 @@ class WiredChargingRippleControllerTest : SysuiTestCase() { `when`(featureFlags.isChargingRippleEnabled).thenReturn(true) controller = WiredChargingRippleController( commandRegistry, batteryController, configurationController, - featureFlags, context, windowManager, systemClock) + featureFlags, context, windowManager, systemClock, uiEventLogger) controller.rippleView = rippleView // Replace the real ripple view with a mock instance } @@ -87,6 +89,10 @@ class WiredChargingRippleControllerTest : SysuiTestCase() { // Verify ripple removed runnableCaptor.value.run() verify(windowManager).removeView(rippleView) + + // Verify event logged + verify(uiEventLogger).log( + WiredChargingRippleController.WiredChargingRippleEvent.CHARGING_RIPPLE_PLAYED) } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java index ee8d1209a5cb..ffb53a8b2e11 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java @@ -160,6 +160,8 @@ public class NotificationPanelViewTest extends SysuiTestCase { @Mock private DozeParameters mDozeParameters; @Mock + private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; + @Mock private NotificationPanelView mView; @Mock private LayoutInflater mLayoutInflater; @@ -328,7 +330,8 @@ public class NotificationPanelViewTest extends SysuiTestCase { mock(HeadsUpManagerPhone.class), new StatusBarStateControllerImpl(new UiEventLoggerFake()), mKeyguardBypassController, - mDozeParameters); + mDozeParameters, + mUnlockedScreenOffAnimationController); PulseExpansionHandler expansionHandler = new PulseExpansionHandler( mContext, coordinator, @@ -386,7 +389,8 @@ public class NotificationPanelViewTest extends SysuiTestCase { mFragmentService, mQuickAccessWalletController, new FakeExecutor(new FakeSystemClock()), - mSecureSettings); + mSecureSettings, + mUnlockedScreenOffAnimationController); mNotificationPanelViewController.initDependencies( mStatusBar, mNotificationShelfController); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java index 8b0b579bea54..075d1dd626e2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java @@ -108,6 +108,8 @@ public class ScrimControllerTest extends SysuiTestCase { private DockManager mDockManager; @Mock private ConfigurationController mConfigurationController; + @Mock + private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private static class AnimatorListener implements Animator.AnimatorListener { @@ -221,7 +223,8 @@ public class ScrimControllerTest extends SysuiTestCase { mScrimController = new ScrimController(mLightBarController, mDozeParameters, mAlarmManager, mKeyguardStateController, mDelayedWakeLockBuilder, new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor, - mDockManager, mConfigurationController, new FakeExecutor(new FakeSystemClock())); + mDockManager, mConfigurationController, new FakeExecutor(new FakeSystemClock()), + mUnlockedScreenOffAnimationController); mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible); mScrimController.attachViews(mScrimBehind, mNotificationsScrim, mScrimInFront, mScrimForBubble); 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 5a3683e8e3f4..deff2043f6dc 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 @@ -272,6 +272,7 @@ public class StatusBarTest extends SysuiTestCase { @Mock private FeatureFlags mFeatureFlags; @Mock private IWallpaperManager mWallpaperManager; @Mock private KeyguardUnlockAnimationController mKeyguardUnlockAnimationController; + @Mock private UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; private ShadeController mShadeController; private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); private InitController mInitController = new InitController(); @@ -441,7 +442,8 @@ public class StatusBarTest extends SysuiTestCase { mLocationPublisher, mLockscreenTransitionController, mFeatureFlags, - mKeyguardUnlockAnimationController); + mKeyguardUnlockAnimationController, + mUnlockedScreenOffAnimationController); when(mKeyguardViewMediator.registerStatusBar(any(StatusBar.class), any(ViewGroup.class), any(NotificationPanelViewController.class), any(BiometricUnlockController.class), any(ViewGroup.class), any(KeyguardBypassController.class))) diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java index 9bb4c4b08481..50947ab0ee86 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/FakeProximitySensor.java @@ -17,6 +17,7 @@ package com.android.systemui.util.sensors; import com.android.systemui.util.concurrency.DelayableExecutor; +import com.android.systemui.util.concurrency.FakeExecution; public class FakeProximitySensor extends ProximitySensor { private boolean mAvailable; @@ -25,7 +26,7 @@ public class FakeProximitySensor extends ProximitySensor { public FakeProximitySensor(ThresholdSensor primary, ThresholdSensor secondary, DelayableExecutor delayableExecutor) { super(primary, secondary == null ? new FakeThresholdSensor() : secondary, - delayableExecutor); + delayableExecutor, new FakeExecution()); mAvailable = true; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java index bae1d98aa310..8f0754592b83 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorDualTest.java @@ -27,6 +27,7 @@ import android.testing.TestableLooper; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; +import com.android.systemui.util.concurrency.FakeExecution; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; @@ -54,7 +55,8 @@ public class ProximitySensorDualTest extends SysuiTestCase { mThresholdSensorSecondary.setLoaded(true); mProximitySensor = new ProximitySensor( - mThresholdSensorPrimary, mThresholdSensorSecondary, mFakeExecutor); + mThresholdSensorPrimary, mThresholdSensorSecondary, mFakeExecutor, + new FakeExecution()); } @Test @@ -324,9 +326,10 @@ public class ProximitySensorDualTest extends SysuiTestCase { TestableListener listener = new TestableListener(); + // WE immediately register the secondary sensor. mProximitySensor.register(listener); assertFalse(mThresholdSensorPrimary.isPaused()); - assertTrue(mThresholdSensorSecondary.isPaused()); + assertFalse(mThresholdSensorSecondary.isPaused()); assertNull(listener.mLastEvent); assertEquals(0, listener.mCallCount); diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorSingleTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorSingleTest.java index f2d5284d4009..6c6d355d7866 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorSingleTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ProximitySensorSingleTest.java @@ -27,6 +27,7 @@ import android.testing.TestableLooper; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; +import com.android.systemui.util.concurrency.FakeExecution; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.time.FakeSystemClock; @@ -54,7 +55,7 @@ public class ProximitySensorSingleTest extends SysuiTestCase { mThresholdSensor.setLoaded(true); mProximitySensor = new ProximitySensor( - mThresholdSensor, new FakeThresholdSensor(), mFakeExecutor); + mThresholdSensor, new FakeThresholdSensor(), mFakeExecutor, new FakeExecution()); } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java index d3a35a735f6d..12765679a7f3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/util/sensors/ThresholdSensorImplTest.java @@ -24,7 +24,7 @@ import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; import com.android.systemui.SysuiTestCase; -import com.android.systemui.util.Assert; +import com.android.systemui.util.concurrency.FakeExecution; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.concurrency.FakeThreadFactory; import com.android.systemui.util.time.FakeSystemClock; @@ -52,7 +52,7 @@ public class ThresholdSensorImplTest extends SysuiTestCase { mFakeProximitySensor = mSensorManager.getFakeProximitySensor(); ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder( - null, mAsyncSensorManager); + null, mAsyncSensorManager, new FakeExecution()); mThresholdSensor = (ThresholdSensorImpl) thresholdSensorBuilder .setSensor(mFakeProximitySensor.getSensor()) .setThresholdValue(mFakeProximitySensor.getSensor().getMaximumRange()) @@ -61,7 +61,6 @@ public class ThresholdSensorImplTest extends SysuiTestCase { @Test public void testSingleListener() { - Assert.setTestThread(Thread.currentThread()); TestableListener listener = new TestableListener(); assertFalse(mThresholdSensor.isRegistered()); @@ -83,7 +82,6 @@ public class ThresholdSensorImplTest extends SysuiTestCase { @Test public void testMultiListener() { - Assert.setTestThread(Thread.currentThread()); TestableListener listenerA = new TestableListener(); TestableListener listenerB = new TestableListener(); @@ -117,7 +115,6 @@ public class ThresholdSensorImplTest extends SysuiTestCase { @Test public void testDuplicateListener() { - Assert.setTestThread(Thread.currentThread()); TestableListener listenerA = new TestableListener(); assertFalse(mThresholdSensor.isRegistered()); @@ -142,7 +139,6 @@ public class ThresholdSensorImplTest extends SysuiTestCase { } @Test public void testUnregister() { - Assert.setTestThread(Thread.currentThread()); TestableListener listener = new TestableListener(); assertFalse(mThresholdSensor.isRegistered()); @@ -162,7 +158,6 @@ public class ThresholdSensorImplTest extends SysuiTestCase { @Test public void testPauseAndResume() { - Assert.setTestThread(Thread.currentThread()); TestableListener listener = new TestableListener(); assertFalse(mThresholdSensor.isRegistered()); @@ -205,7 +200,6 @@ public class ThresholdSensorImplTest extends SysuiTestCase { @Test public void testAlertListeners() { - Assert.setTestThread(Thread.currentThread()); TestableListener listenerA = new TestableListener(); TestableListener listenerB = new TestableListener(); @@ -237,12 +231,11 @@ public class ThresholdSensorImplTest extends SysuiTestCase { @Test public void testHysteresis() { - Assert.setTestThread(Thread.currentThread()); float lowValue = 10f; float highValue = 100f; FakeSensorManager.FakeGenericSensor sensor = mSensorManager.getFakeLightSensor(); ThresholdSensorImpl.Builder thresholdSensorBuilder = new ThresholdSensorImpl.Builder( - null, mAsyncSensorManager); + null, mAsyncSensorManager, new FakeExecution()); ThresholdSensorImpl thresholdSensor = (ThresholdSensorImpl) thresholdSensorBuilder .setSensor(sensor.getSensor()) .setThresholdValue(lowValue) @@ -286,7 +279,6 @@ public class ThresholdSensorImplTest extends SysuiTestCase { @Test public void testAlertAfterPause() { - Assert.setTestThread(Thread.currentThread()); TestableListener listener = new TestableListener(); mThresholdSensor.register(listener); diff --git a/packages/VpnDialogs/res/values-eu/strings.xml b/packages/VpnDialogs/res/values-eu/strings.xml index 74c537880e68..9fc16e27ca7f 100644 --- a/packages/VpnDialogs/res/values-eu/strings.xml +++ b/packages/VpnDialogs/res/values-eu/strings.xml @@ -25,7 +25,7 @@ <string name="data_transmitted" msgid="7988167672982199061">"Bidalita:"</string> <string name="data_received" msgid="4062776929376067820">"Jasota:"</string> <string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> byte / <xliff:g id="NUMBER_1">%2$s</xliff:g> pakete"</string> - <string name="always_on_disconnected_title" msgid="1906740176262776166">"Ezin da konektatu beti aktibatuta dagoen VPN sarea"</string> + <string name="always_on_disconnected_title" msgid="1906740176262776166">"Ezin da konektatu beti aktibatuta dagoen VPNa"</string> <string name="always_on_disconnected_message" msgid="555634519845992917">"Beti aktibatuta egoteko dago konfiguratuta <xliff:g id="VPN_APP_0">%1$s</xliff:g>, baina une honetan ezin da konektatu. <xliff:g id="VPN_APP_1">%1$s</xliff:g> sarera berriro konektatu ahal izan arte, sare publiko bat erabiliko du telefonoak."</string> <string name="always_on_disconnected_message_lockdown" msgid="4232225539869452120">"Beti aktibatuta egoteko dago konfiguratuta <xliff:g id="VPN_APP">%1$s</xliff:g>, baina une honetan ezin da konektatu. VPN sarearen konexioa berreskuratu arte, ez duzu izango konexiorik."</string> <string name="always_on_disconnected_message_separator" msgid="3310614409322581371">" "</string> diff --git a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-kk/strings.xml b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-kk/strings.xml index 0f4bc3ad8c03..9ef49224404a 100644 --- a/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-kk/strings.xml +++ b/packages/overlays/DisplayCutoutEmulationCornerOverlay/res/values-kk/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="display_cutout_emulation_overlay" msgid="1677693377327336341">"Бұрышынан ойық жасау"</string> + <string name="display_cutout_emulation_overlay" msgid="1677693377327336341">"Бұрыштағы ойық"</string> </resources> diff --git a/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values-ne/strings.xml b/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values-ne/strings.xml index c83f6b4d4755..a45c6db42c60 100644 --- a/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values-ne/strings.xml +++ b/packages/overlays/DisplayCutoutEmulationTallOverlay/res/values-ne/strings.xml @@ -17,5 +17,5 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="display_cutout_emulation_overlay" msgid="6424539415439220018">"अग्लो कटआउट"</string> + <string name="display_cutout_emulation_overlay" msgid="6424539415439220018">"टल कटआउट"</string> </resources> diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 71d6a48b89ee..8041ec4a9727 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -79,8 +79,10 @@ import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UptimeMillisLong; +import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.ActivityManagerInternal; +import android.app.ActivityManagerInternal.ServiceNotificationPolicy; import android.app.ActivityThread; import android.app.AppGlobals; import android.app.AppOpsManager; @@ -213,6 +215,9 @@ public final class ActiveServices { // at the same time. final int mMaxStartingBackground; + /** + * Master service bookkeeping, keyed by user number. + */ final SparseArray<ServiceMap> mServiceMap = new SparseArray<>(); /** @@ -1811,7 +1816,7 @@ public final class ActiveServices { showFgsBgRestrictedNotificationLocked(r); updateServiceForegroundLocked(psr, true); ignoreForeground = true; - logForegroundServiceStateChanged(r, + logFGSStateChangeLocked(r, FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__DENIED, 0); if (CompatChanges.isChangeEnabled(FGS_START_EXCEPTION_CHANGE_ID, @@ -1859,6 +1864,7 @@ public final class ActiveServices { active.mNumActive++; } r.isForeground = true; + r.mLogEntering = true; enterForeground = true; r.mStartForegroundCount++; r.mFgsEnterTime = SystemClock.uptimeMillis(); @@ -1881,14 +1887,7 @@ public final class ActiveServices { } // Even if the service is already a FGS, we need to update the notification, // so we need to call it again. - postFgsNotificationLocked(r); - if (enterForeground) { - // Because we want to log what's updated in postFgsNotificationLocked(), - // this must be called after postFgsNotificationLocked(). - logForegroundServiceStateChanged(r, - FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER, - 0); - } + r.postNotification(); if (r.app != null) { updateServiceForegroundLocked(psr, true); } @@ -1937,7 +1936,7 @@ public final class ActiveServices { AppOpsManager.getToken(mAm.mAppOpsService), AppOpsManager.OP_START_FOREGROUND, r.appInfo.uid, r.packageName, null); unregisterAppOpCallbackLocked(r); - logForegroundServiceStateChanged(r, + logFGSStateChangeLocked(r, FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT, r.mFgsExitTime > r.mFgsEnterTime ? (int)(r.mFgsExitTime - r.mFgsEnterTime) : 0); @@ -1964,7 +1963,18 @@ public final class ActiveServices { } } - private boolean withinFgsDeferRateLimit(final int uid, final long now) { + private boolean withinFgsDeferRateLimit(ServiceRecord sr, final long now) { + // If we're still within the service's deferral period, then by definition + // deferral is not rate limited. + if (now < sr.fgDisplayTime) { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG_SERVICE, "FGS transition for " + sr + + " within deferral period, no rate limit applied"); + } + return false; + } + + final int uid = sr.appInfo.uid; final long eligible = mFgsDeferralEligible.get(uid, 0L); if (DEBUG_FOREGROUND_SERVICE) { if (now < eligible) { @@ -1975,62 +1985,137 @@ public final class ActiveServices { return now < eligible; } - // TODO: remove as part of fixing b/173627642 + ServiceNotificationPolicy applyForegroundServiceNotificationLocked(Notification notification, + final int id, final String pkg, final int userId) { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG_SERVICE, "Evaluating FGS policy for id=" + id + + " pkg=" + pkg + " not=" + notification); + } + // Is there an FGS using this notification? + final ServiceMap smap = mServiceMap.get(userId); + if (smap == null) { + // No services in this user at all + return ServiceNotificationPolicy.NOT_FOREGROUND_SERVICE; + } + + for (int i = 0; i < smap.mServicesByInstanceName.size(); i++) { + final ServiceRecord sr = smap.mServicesByInstanceName.valueAt(i); + if (id != sr.foregroundId || !pkg.equals(sr.appInfo.packageName)) { + // Not this one; keep looking + continue; + } + + // Found; it is associated with an FGS. Make sure that it's flagged: + // it may have entered the bookkeeping outside of Service-related + // APIs. We also make sure to take this latest Notification as + // the content to be shown (immediately or eventually). + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG_SERVICE, " FOUND: notification is for " + sr); + } + notification.flags |= Notification.FLAG_FOREGROUND_SERVICE; + sr.foregroundNoti = notification; + + // ...and determine immediate vs deferred display policy for it + final boolean showNow = shouldShowFgsNotificationLocked(sr); + if (showNow) { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG_SERVICE, " Showing immediately due to policy"); + } + sr.mFgsNotificationDeferred = false; + return ServiceNotificationPolicy.SHOW_IMMEDIATELY; + } + + // Deferring - kick off the timer if necessary, and tell the caller + // that it's to be shown only if it's an update to already- + // visible content (e.g. if it's an FGS adopting a + // previously-posted Notification). + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG_SERVICE, " Deferring / update-only"); + } + startFgsDeferralTimerLocked(sr); + return ServiceNotificationPolicy.UPDATE_ONLY; + } + + // None of the services in this user are FGSs + return ServiceNotificationPolicy.NOT_FOREGROUND_SERVICE; + } + + // No legacy-app behavior skew intended but there's a runtime E-stop if a need + // arises, so note that @SuppressWarnings("AndroidFrameworkCompatChange") - private void postFgsNotificationLocked(ServiceRecord r) { - final int uid = r.appInfo.uid; + private boolean shouldShowFgsNotificationLocked(ServiceRecord r) { final long now = SystemClock.uptimeMillis(); - final boolean isLegacyApp = (r.appInfo.targetSdkVersion < Build.VERSION_CODES.S); // Is the behavior enabled at all? - boolean showNow = !mAm.mConstants.mFlagFgsNotificationDeferralEnabled; - if (!showNow) { - // Did the app have another FGS notification deferred recently? - showNow = withinFgsDeferRateLimit(uid, now); + if (!mAm.mConstants.mFlagFgsNotificationDeferralEnabled) { + return true; + } + + // Has this service's deferral timer expired? + if (r.mFgsNotificationDeferred && now >= r.fgDisplayTime) { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG, "FGS reached end of deferral period: " + r); + } + return true; + } + + // Did the app have another FGS notification deferred recently? + if (withinFgsDeferRateLimit(r, now)) { + return true; } - if (!showNow) { - // Legacy apps' FGS notifications are not deferred unless the relevant + + if (mAm.mConstants.mFlagFgsNotificationDeferralApiGated) { + // Legacy apps' FGS notifications are also deferred unless the relevant // DeviceConfig element has been set - showNow = isLegacyApp && mAm.mConstants.mFlagFgsNotificationDeferralApiGated; - } - if (!showNow) { - // has the app forced deferral? - if (!r.foregroundNoti.isForegroundDisplayForceDeferred()) { - // is the notification such that it should show right away? - showNow = r.foregroundNoti.shouldShowForegroundImmediately(); - if (DEBUG_FOREGROUND_SERVICE && showNow) { + final boolean isLegacyApp = (r.appInfo.targetSdkVersion < Build.VERSION_CODES.S); + if (isLegacyApp) { + return true; + } + } + + // did we already show it? + if (r.mFgsNotificationShown) { + return true; + } + + // has the app forced deferral? + if (!r.foregroundNoti.isForegroundDisplayForceDeferred()) { + // is the notification such that it should show right away? + if (r.foregroundNoti.shouldShowForegroundImmediately()) { + if (DEBUG_FOREGROUND_SERVICE) { Slog.d(TAG_SERVICE, "FGS " + r + " notification policy says show immediately"); } - // or is this an type of FGS that always shows immediately? - if (!showNow) { - if ((r.foregroundServiceType & FGS_IMMEDIATE_DISPLAY_MASK) != 0) { - if (DEBUG_FOREGROUND_SERVICE) { - Slog.d(TAG_SERVICE, "FGS " + r - + " type gets immediate display"); - } - showNow = true; - } - } - } else { + return true; + } + + // or is this an type of FGS that always shows immediately? + if ((r.foregroundServiceType & FGS_IMMEDIATE_DISPLAY_MASK) != 0) { if (DEBUG_FOREGROUND_SERVICE) { - Slog.d(TAG_SERVICE, "FGS " + r + " notification is app deferred"); + Slog.d(TAG_SERVICE, "FGS " + r + + " type gets immediate display"); } + return true; } - } - if (showNow) { + // fall through to return false: no policy dictates immediate display + } else { if (DEBUG_FOREGROUND_SERVICE) { - Slog.d(TAG_SERVICE, "FGS " + r + " non-deferred notification"); + Slog.d(TAG_SERVICE, "FGS " + r + " notification is app deferred"); } - r.postNotification(); - r.mFgsNotificationDeferred = false; - r.mFgsNotificationShown = true; - return; + // fall through to return false } - r.mFgsNotificationDeferred = true; - r.mFgsNotificationShown = false; + return false; + } + + // Target SDK consultation here is strictly for logging purposes, not + // behavioral variation. + @SuppressWarnings("AndroidFrameworkCompatChange") + private void startFgsDeferralTimerLocked(ServiceRecord r) { + final long now = SystemClock.uptimeMillis(); + final int uid = r.appInfo.uid; + // schedule the actual notification post long when = now + mAm.mConstants.mFgsNotificationDeferralInterval; // If there are already deferred FGS notifications for this app, @@ -2053,11 +2138,14 @@ public final class ActiveServices { final long nextEligible = when + mAm.mConstants.mFgsNotificationDeferralExclusionTime; mFgsDeferralEligible.put(uid, nextEligible); r.fgDisplayTime = when; + r.mFgsNotificationDeferred = true; + r.mFgsNotificationShown = false; mPendingFgsNotifications.add(r); if (DEBUG_FOREGROUND_SERVICE) { Slog.d(TAG_SERVICE, "FGS " + r + " notification in " + (when - now) + " ms"); } + final boolean isLegacyApp = (r.appInfo.targetSdkVersion < Build.VERSION_CODES.S); if (isLegacyApp) { Slog.i(TAG_SERVICE, "Deferring FGS notification in legacy app " + r.appInfo.packageName + "/" + UserHandle.formatUid(r.appInfo.uid) @@ -2089,9 +2177,16 @@ public final class ActiveServices { if (r.isForeground && r.app != null) { r.postNotification(); r.mFgsNotificationShown = true; - } else if (DEBUG_FOREGROUND_SERVICE) { - Slog.d(TAG_SERVICE, " - service no longer running/fg, ignoring"); + } else { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG_SERVICE, " - service no longer running/fg, ignoring"); + } } + // Regardless of whether we needed to post the notification or the + // service is no longer running, we may not have logged its FGS + // transition yet depending on the timing and API sequence that led + // to this point - so make sure to do so. + maybeLogFGSStateEnteredLocked(r); } } if (DEBUG_FOREGROUND_SERVICE) { @@ -2102,6 +2197,60 @@ public final class ActiveServices { } }; + private void maybeLogFGSStateEnteredLocked(ServiceRecord r) { + if (r.mLogEntering) { + logFGSStateChangeLocked(r, + FrameworkStatsLog + .FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER, + 0); + r.mLogEntering = false; + } + } + + /** + * Callback from NotificationManagerService whenever it posts a notification + * associated with a foreground service. This is the unified handling point + * for the disjoint code flows that affect an FGS's notifiation content and + * visibility, starting with both Service.startForeground() and + * NotificationManager.notify(). + */ + public void onForegroundServiceNotificationUpdateLocked(Notification notification, + final int id, final String pkg, @UserIdInt final int userId) { + // If this happens to be a Notification for an FGS still in its deferral period, + // drop the deferral and make sure our content bookkeeping is up to date. + for (int i = mPendingFgsNotifications.size() - 1; i >= 0; i--) { + final ServiceRecord sr = mPendingFgsNotifications.get(i); + if (userId == sr.userId + && id == sr.foregroundId + && sr.appInfo.packageName.equals(pkg)) { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG_SERVICE, "Notification shown; canceling deferral of " + + sr); + } + maybeLogFGSStateEnteredLocked(sr); + sr.mFgsNotificationShown = true; + sr.mFgsNotificationDeferred = false; + mPendingFgsNotifications.remove(i); + } + } + // And make sure to retain the latest notification content for the FGS + ServiceMap smap = mServiceMap.get(userId); + if (smap != null) { + for (int i = 0; i < smap.mServicesByInstanceName.size(); i++) { + final ServiceRecord sr = smap.mServicesByInstanceName.valueAt(i); + if (sr.isForeground + && id == sr.foregroundId + && sr.appInfo.packageName.equals(pkg)) { + if (DEBUG_FOREGROUND_SERVICE) { + Slog.d(TAG_SERVICE, "Recording shown notification for " + + sr); + } + sr.foregroundNoti = notification; + } + } + } + } + /** Registers an AppOpCallback for monitoring special AppOps for this foreground service. */ private void registerAppOpCallbackLocked(@NonNull ServiceRecord r) { if (r.app == null) { @@ -4016,7 +4165,7 @@ public final class ActiveServices { AppOpsManager.OP_START_FOREGROUND, r.appInfo.uid, r.packageName, null); unregisterAppOpCallbackLocked(r); r.mFgsExitTime = SystemClock.uptimeMillis(); - logForegroundServiceStateChanged(r, + logFGSStateChangeLocked(r, FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT, r.mFgsExitTime > r.mFgsEnterTime ? (int)(r.mFgsExitTime - r.mFgsEnterTime) : 0); @@ -6022,7 +6171,7 @@ public final class ActiveServices { * @param state one of ENTER/EXIT/DENIED event. * @param durationMs Only meaningful for EXIT event, the duration from ENTER and EXIT state. */ - private void logForegroundServiceStateChanged(ServiceRecord r, int state, int durationMs) { + private void logFGSStateChangeLocked(ServiceRecord r, int state, int durationMs) { if (!ActivityManagerUtils.shouldSamplePackageForAtom( r.packageName, mAm.mConstants.mFgsAtomSampleRate)) { return; diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java index 0fff8be70574..0d19efc20785 100644 --- a/services/core/java/com/android/server/am/ActivityManagerConstants.java +++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java @@ -453,7 +453,7 @@ final class ActivityManagerConstants extends ContentObserver { volatile long mFgsNotificationDeferralInterval = 10_000; // Rate limit: minimum time after an app's FGS notification is deferred - // before another FGS notifiction from that app can be deferred. + // before another FGS notification from that app can be deferred. volatile long mFgsNotificationDeferralExclusionTime = 2 * 60 * 1000L; /** diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 3e6a0a8ec80d..6e500e4ea5ea 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -16059,6 +16059,24 @@ public class ActivityManagerService extends IActivityManager.Stub } @Override + public ServiceNotificationPolicy applyForegroundServiceNotification( + Notification notification, int id, String pkg, int userId) { + synchronized (ActivityManagerService.this) { + return mServices.applyForegroundServiceNotificationLocked(notification, + id, pkg, userId); + } + } + + @Override + public void onForegroundServiceNotificationUpdate(Notification notification, + int id, String pkg, @UserIdInt int userId) { + synchronized (ActivityManagerService.this) { + mServices.onForegroundServiceNotificationUpdateLocked(notification, + id, pkg, userId); + } + } + + @Override public void stopForegroundServicesForChannel(String pkg, int userId, String channelId) { synchronized (ActivityManagerService.this) { diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java index dbb2f65b0680..dd1ddd73a84f 100644 --- a/services/core/java/com/android/server/am/ServiceRecord.java +++ b/services/core/java/com/android/server/am/ServiceRecord.java @@ -109,6 +109,7 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN boolean fgWaiting; // is a timeout for going foreground already scheduled? boolean isNotAppComponentUsage; // is service binding not considered component/package usage? boolean isForeground; // is service currently in foreground mode? + boolean mLogEntering; // need to report fgs transition once deferral policy is known int foregroundId; // Notification ID of last foreground req. Notification foregroundNoti; // Notification record of foreground state. long fgDisplayTime; // time at which the FGS notification should become visible diff --git a/services/core/java/com/android/server/connectivity/PacProxyService.java b/services/core/java/com/android/server/connectivity/PacProxyService.java index d23b488f3054..00703390a118 100644 --- a/services/core/java/com/android/server/connectivity/PacProxyService.java +++ b/services/core/java/com/android/server/connectivity/PacProxyService.java @@ -345,7 +345,14 @@ public class PacProxyService extends IPacProxyManager.Stub { if (mProxyService == null) { Log.e(TAG, "No proxy service"); } else { - mNetThreadHandler.post(mPacDownloader); + // If mCurrentPac is not null, then the PacService might have + // crashed and restarted. The download task will not actually + // call setCurrentProxyScript, so call setCurrentProxyScript here. + if (mCurrentPac != null) { + setCurrentProxyScript(mCurrentPac); + } else { + mNetThreadHandler.post(mPacDownloader); + } } } } diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 5b03989f5248..0bec09cd003f 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -105,6 +105,7 @@ import android.security.keystore2.AndroidKeyStoreLoadStoreParameter; import android.security.keystore2.AndroidKeyStoreProvider; import android.service.gatekeeper.GateKeeperResponse; import android.service.gatekeeper.IGateKeeperService; +import android.system.keystore2.Domain; import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; @@ -254,8 +255,7 @@ public class LockSettingsService extends ILockSettings.Stub { * The UIDs that are used for system credential storage in keystore. */ private static final int[] SYSTEM_CREDENTIAL_UIDS = { - Process.WIFI_UID, Process.VPN_UID, - Process.ROOT_UID, Process.SYSTEM_UID }; + Process.VPN_UID, Process.ROOT_UID, Process.SYSTEM_UID}; // This class manages life cycle events for encrypted users on File Based Encryption (FBE) // devices. The most basic of these is to show/hide notifications about missing features until @@ -2123,9 +2123,14 @@ public class LockSettingsService extends ILockSettings.Stub { // Clear all the users credentials could have been installed in for this user. for (int profileId : mUserManager.getProfileIdsWithDisabled(userId)) { for (int uid : SYSTEM_CREDENTIAL_UIDS) { - mKeyStore.clearUid(UserHandle.getUid(profileId, uid)); + AndroidKeyStoreMaintenance.clearNamespace(Domain.APP, + UserHandle.getUid(profileId, uid)); } } + if (mUserManager.getUserInfo(userId).isPrimary()) { + AndroidKeyStoreMaintenance.clearNamespace(Domain.SELINUX, + KeyProperties.NAMESPACE_WIFI); + } } finally { if (managedUserId != -1 && managedUserDecryptedPassword != null) { if (DEBUG) Slog.v(TAG, "Restore tied profile lock"); diff --git a/services/core/java/com/android/server/media/MediaSession2Record.java b/services/core/java/com/android/server/media/MediaSession2Record.java index 162c388dadd1..607218e20ea8 100644 --- a/services/core/java/com/android/server/media/MediaSession2Record.java +++ b/services/core/java/com/android/server/media/MediaSession2Record.java @@ -56,13 +56,17 @@ public class MediaSession2Record implements MediaSessionRecordImpl { public MediaSession2Record(Session2Token sessionToken, MediaSessionService service, Looper handlerLooper, int policies) { - mSessionToken = sessionToken; - mService = service; - mHandlerExecutor = new HandlerExecutor(new Handler(handlerLooper)); - mController = new MediaController2.Builder(service.getContext(), sessionToken) - .setControllerCallback(mHandlerExecutor, new Controller2Callback()) - .build(); - mPolicies = policies; + // The lock is required to prevent `Controller2Callback` from using partially initialized + // `MediaSession2Record.this`. + synchronized (mLock) { + mSessionToken = sessionToken; + mService = service; + mHandlerExecutor = new HandlerExecutor(new Handler(handlerLooper)); + mController = new MediaController2.Builder(service.getContext(), sessionToken) + .setControllerCallback(mHandlerExecutor, new Controller2Callback()) + .build(); + mPolicies = policies; + } } @Override @@ -176,10 +180,12 @@ public class MediaSession2Record implements MediaSessionRecordImpl { if (DEBUG) { Log.d(TAG, "connected to " + mSessionToken + ", allowed=" + allowedCommands); } + MediaSessionService service; synchronized (mLock) { mIsConnected = true; + service = mService; } - mService.onSessionActiveStateChanged(MediaSession2Record.this); + service.onSessionActiveStateChanged(MediaSession2Record.this); } @Override @@ -187,10 +193,12 @@ public class MediaSession2Record implements MediaSessionRecordImpl { if (DEBUG) { Log.d(TAG, "disconnected from " + mSessionToken); } + MediaSessionService service; synchronized (mLock) { mIsConnected = false; + service = mService; } - mService.onSessionDied(MediaSession2Record.this); + service.onSessionDied(MediaSession2Record.this); } @Override @@ -199,7 +207,11 @@ public class MediaSession2Record implements MediaSessionRecordImpl { Log.d(TAG, "playback active changed, " + mSessionToken + ", active=" + playbackActive); } - mService.onSessionPlaybackStateChanged(MediaSession2Record.this, playbackActive); + MediaSessionService service; + synchronized (mLock) { + service = mService; + } + service.onSessionPlaybackStateChanged(MediaSession2Record.this, playbackActive); } } } diff --git a/services/core/java/com/android/server/notification/NotificationManagerInternal.java b/services/core/java/com/android/server/notification/NotificationManagerInternal.java index dc9839c6da0e..0528b95d1a6e 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerInternal.java +++ b/services/core/java/com/android/server/notification/NotificationManagerInternal.java @@ -30,6 +30,9 @@ public interface NotificationManagerInternal { void cancelNotification(String pkg, String basePkg, int callingUid, int callingPid, String tag, int id, int userId); + /** is the given notification currently showing? */ + boolean isNotificationShown(String pkg, String tag, int notificationId, int userId); + void removeForegroundServiceFlagFromNotification(String pkg, int notificationId, int userId); void onConversationRemoved(String pkg, int uid, Set<String> shortcuts); diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 0dd9b292b386..e24c4af7026e 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -130,6 +130,7 @@ import android.annotation.UserIdInt; import android.annotation.WorkerThread; import android.app.ActivityManager; import android.app.ActivityManagerInternal; +import android.app.ActivityManagerInternal.ServiceNotificationPolicy; import android.app.AlarmManager; import android.app.AppGlobals; import android.app.AppOpsManager; @@ -211,9 +212,7 @@ import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; -import android.os.VibrationAttributes; import android.os.VibrationEffect; -import android.os.Vibrator; import android.provider.DeviceConfig; import android.provider.Settings; import android.service.notification.Adjustment; @@ -369,12 +368,8 @@ public class NotificationManagerService extends SystemService { // 1 second past the ANR timeout. static final int FINISH_TOKEN_TIMEOUT = 11 * 1000; - static final long[] DEFAULT_VIBRATE_PATTERN = {0, 250, 250, 250}; - static final long SNOOZE_UNTIL_UNSPECIFIED = -1; - static final int VIBRATE_PATTERN_MAXLEN = 8 * 2 + 1; // up to eight bumps - static final int INVALID_UID = -1; static final String ROOT_PKG = "root"; @@ -482,7 +477,6 @@ public class NotificationManagerService extends SystemService { AudioManagerInternal mAudioManagerInternal; // Can be null for wear @Nullable StatusBarManagerInternal mStatusBar; - Vibrator mVibrator; private WindowManagerInternal mWindowManagerInternal; private AlarmManager mAlarmManager; private ICompanionDeviceManager mCompanionManager; @@ -504,7 +498,6 @@ public class NotificationManagerService extends SystemService { private LogicalLight mNotificationLight; LogicalLight mAttentionLight; - private long[] mFallbackVibrationPattern; private boolean mUseAttentionLight; boolean mHasLight = true; boolean mLightEnabled; @@ -583,6 +576,7 @@ public class NotificationManagerService extends SystemService { RankingHelper mRankingHelper; @VisibleForTesting PreferencesHelper mPreferencesHelper; + private VibratorHelper mVibratorHelper; private final UserProfiles mUserProfiles = new UserProfiles(); private NotificationListeners mListeners; @@ -1597,10 +1591,7 @@ public class NotificationManagerService extends SystemService { mVibrateNotificationKey = null; final long identity = Binder.clearCallingIdentity(); try { - // Stop all vibrations with usage of class alarm (ringtone, alarm, notification usages). - int usageFilter = - VibrationAttributes.USAGE_CLASS_ALARM | ~VibrationAttributes.USAGE_CLASS_MASK; - mVibrator.cancel(usageFilter); + mVibratorHelper.cancelVibration(); } finally { Binder.restoreCallingIdentity(identity); } @@ -1994,19 +1985,6 @@ public class NotificationManagerService extends SystemService { private SettingsObserver mSettingsObserver; protected ZenModeHelper mZenModeHelper; - static long[] getLongArray(Resources r, int resid, int maxlen, long[] def) { - int[] ar = r.getIntArray(resid); - if (ar == null) { - return def; - } - final int len = ar.length > maxlen ? maxlen : ar.length; - long[] out = new long[len]; - for (int i=0; i<len; i++) { - out[i] = ar[i]; - } - return out; - } - public NotificationManagerService(Context context) { this(context, new NotificationRecordLoggerImpl(), @@ -2040,13 +2018,18 @@ public class NotificationManagerService extends SystemService { } @VisibleForTesting - void setHints(int hints) { - mListenerHints = hints; + VibratorHelper getVibratorHelper() { + return mVibratorHelper; } @VisibleForTesting - void setVibrator(Vibrator vibrator) { - mVibrator = vibrator; + void setVibratorHelper(VibratorHelper helper) { + mVibratorHelper = helper; + } + + @VisibleForTesting + void setHints(int hints) { + mListenerHints = hints; } @VisibleForTesting @@ -2121,11 +2104,6 @@ public class NotificationManagerService extends SystemService { } @VisibleForTesting - void setFallbackVibrationPattern(long[] vibrationPattern) { - mFallbackVibrationPattern = vibrationPattern; - } - - @VisibleForTesting void setPackageManager(IPackageManager packageManager) { mPackageManager = packageManager; } @@ -2199,7 +2177,6 @@ public class NotificationManagerService extends SystemService { mPackageManager = packageManager; mPackageManagerClient = packageManagerClient; mAppOps = appOps; - mVibrator = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE); mAppUsageStats = appUsageStats; mAlarmManager = (AlarmManager) getContext().getSystemService(Context.ALARM_SERVICE); mCompanionManager = companionManager; @@ -2287,6 +2264,7 @@ public class NotificationManagerService extends SystemService { extractorNames); mSnoozeHelper = snoozeHelper; mGroupHelper = groupHelper; + mVibratorHelper = new VibratorHelper(getContext()); mHistoryManager = historyManager; // This is a ManagedServices object that keeps track of the listeners. @@ -2308,10 +2286,6 @@ public class NotificationManagerService extends SystemService { mNotificationLight = lightsManager.getLight(LightsManager.LIGHT_ID_NOTIFICATIONS); mAttentionLight = lightsManager.getLight(LightsManager.LIGHT_ID_ATTENTION); - mFallbackVibrationPattern = getLongArray(resources, - R.array.config_notificationFallbackVibePattern, - VIBRATE_PATTERN_MAXLEN, - DEFAULT_VIBRATE_PATTERN); mInCallNotificationUri = Uri.parse("file://" + resources.getString(R.string.config_inCallNotificationSound)); mInCallNotificationAudioAttributes = new AudioAttributes.Builder() @@ -3078,6 +3052,20 @@ public class NotificationManagerService extends SystemService { } } + protected void maybeReportForegroundServiceUpdate(final NotificationRecord r) { + if (r.isForegroundService()) { + // snapshot live state for the asynchronous operation + final StatusBarNotification sbn = r.getSbn(); + final Notification notification = sbn.getNotification(); + final int id = sbn.getId(); + final String pkg = sbn.getPackageName(); + final int userId = sbn.getUser().getIdentifier(); + mHandler.post(() -> { + mAmi.onForegroundServiceNotificationUpdate(notification, id, pkg, userId); + }); + } + } + private String getHistoryTitle(Notification n) { CharSequence title = null; if (n.extras != null) { @@ -5070,7 +5058,7 @@ public class NotificationManagerService extends SystemService { } @Override - public boolean isNotificationPolicyAccessGrantedForPackage(String pkg) {; + public boolean isNotificationPolicyAccessGrantedForPackage(String pkg) { enforceSystemOrSystemUIOrSamePackage(pkg, "request policy access status for another package"); return checkPolicyAccess(pkg); @@ -5725,9 +5713,7 @@ public class NotificationManagerService extends SystemService { summaryNotification.extras.putAll(extras); Intent appIntent = getContext().getPackageManager().getLaunchIntentForPackage(pkg); if (appIntent != null) { - final ActivityManagerInternal ami = LocalServices - .getService(ActivityManagerInternal.class); - summaryNotification.contentIntent = ami.getPendingIntentActivityAsApp( + summaryNotification.contentIntent = mAmi.getPendingIntentActivityAsApp( 0, appIntent, PendingIntent.FLAG_IMMUTABLE, null, pkg, appInfo.uid); } @@ -5778,7 +5764,7 @@ public class NotificationManagerService extends SystemService { return "callState"; } return null; - }; + } private void dumpJson(PrintWriter pw, @NonNull DumpFilter filter) { JSONObject dump = new JSONObject(); @@ -6059,6 +6045,11 @@ public class NotificationManagerService extends SystemService { } @Override + public boolean isNotificationShown(String pkg, String tag, int notificationId, int userId) { + return isNotificationShownInternal(pkg, tag, notificationId, userId); + } + + @Override public void removeForegroundServiceFlagFromNotification(String pkg, int notificationId, int userId) { checkCallerIsSystem(); @@ -6141,16 +6132,22 @@ public class NotificationManagerService extends SystemService { mustNotHaveFlags, false, userId, REASON_APP_CANCEL, null); } + boolean isNotificationShownInternal(String pkg, String tag, int notificationId, int userId) { + synchronized (mNotificationLock) { + return findNotificationLocked(pkg, tag, notificationId, userId) != null; + } + } + void enqueueNotificationInternal(final String pkg, final String opPkg, final int callingUid, final int callingPid, final String tag, final int id, final Notification notification, int incomingUserId) { enqueueNotificationInternal(pkg, opPkg, callingUid, callingPid, tag, id, notification, - incomingUserId, false); + incomingUserId, false); } void enqueueNotificationInternal(final String pkg, final String opPkg, final int callingUid, - final int callingPid, final String tag, final int id, final Notification notification, - int incomingUserId, boolean postSilently) { + final int callingPid, final String tag, final int id, final Notification notification, + int incomingUserId, boolean postSilently) { if (DBG) { Slog.v(TAG, "enqueueNotificationInternal: pkg=" + pkg + " id=" + id + " notification=" + notification); @@ -6185,6 +6182,22 @@ public class NotificationManagerService extends SystemService { return; } + // Notifications passed to setForegroundService() have FLAG_FOREGROUND_SERVICE, + // but it's also possible that the app has called notify() with an update to an + // FGS notification that hasn't yet been displayed. Make sure we check for any + // FGS-related situation up front, outside of any locks so it's safe to call into + // the Activity Manager. + final ServiceNotificationPolicy policy = mAmi.applyForegroundServiceNotification( + notification, id, pkg, userId); + if (policy == ServiceNotificationPolicy.UPDATE_ONLY) { + // Proceed if the notification is already showing/known, otherwise ignore + // because the service lifecycle logic has retained responsibility for its + // handling. + if (!isNotificationShownInternal(pkg, tag, id, userId)) { + return; + } + } + mUsageStats.registerEnqueuedByApp(pkg); final StatusBarNotification n = new StatusBarNotification( @@ -6287,19 +6300,17 @@ public class NotificationManagerService extends SystemService { if (notification.allPendingIntents != null) { final int intentCount = notification.allPendingIntents.size(); if (intentCount > 0) { - final ActivityManagerInternal am = LocalServices - .getService(ActivityManagerInternal.class); final long duration = LocalServices.getService( DeviceIdleInternal.class).getNotificationAllowlistDuration(); for (int i = 0; i < intentCount; i++) { PendingIntent pendingIntent = notification.allPendingIntents.valueAt(i); if (pendingIntent != null) { - am.setPendingIntentAllowlistDuration(pendingIntent.getTarget(), + mAmi.setPendingIntentAllowlistDuration(pendingIntent.getTarget(), ALLOWLIST_TOKEN, duration, TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, REASON_NOTIFICATION_SERVICE, "NotificationManagerService"); - am.setPendingIntentAllowBgActivityStarts(pendingIntent.getTarget(), + mAmi.setPendingIntentAllowBgActivityStarts(pendingIntent.getTarget(), ALLOWLIST_TOKEN, (FLAG_ACTIVITY_SENDER | FLAG_BROADCAST_SENDER | FLAG_SERVICE_SENDER)); } @@ -6568,15 +6579,14 @@ public class NotificationManagerService extends SystemService { } // bubble or inline reply that's immutable? - // TODO (b/171418004): renable after app outreach - /*if (n.getBubbleMetadata() != null + if (n.getBubbleMetadata() != null && n.getBubbleMetadata().getIntent() != null && hasFlag(mAmi.getPendingIntentFlags( n.getBubbleMetadata().getIntent().getTarget()), PendingIntent.FLAG_IMMUTABLE)) { throw new IllegalArgumentException(r.getKey() + " Not posted." + " PendingIntents attached to bubbles must be mutable"); - }*/ + } if (n.actions != null) { for (Notification.Action action : n.actions) { @@ -6821,12 +6831,14 @@ public class NotificationManagerService extends SystemService { mUsageStats.registerClickedByUser(r); } - if (mReason == REASON_LISTENER_CANCEL - && r.getNotification().isBubbleNotification()) { + if ((mReason == REASON_LISTENER_CANCEL + && r.getNotification().isBubbleNotification()) + || (mReason == REASON_CLICK && r.canBubble() + && r.isFlagBubbleRemoved())) { boolean isBubbleSuppressed = r.getNotification().getBubbleMetadata() != null && r.getNotification().getBubbleMetadata().isBubbleSuppressed(); mNotificationDelegate.onBubbleNotificationSuppressionChanged( - r.getKey(), true /* suppressed */, isBubbleSuppressed); + r.getKey(), true /* notifSuppressed */, isBubbleSuppressed); return; } @@ -7108,6 +7120,7 @@ public class NotificationManagerService extends SystemService { maybeRecordInterruptionLocked(r); maybeRegisterMessageSent(r); + maybeReportForegroundServiceUpdate(r); // Log event to statsd mNotificationRecordLogger.maybeLogNotificationPosted(r, old, position, @@ -7398,7 +7411,7 @@ public class NotificationManagerService extends SystemService { if (mSystemReady && mAudioManager != null) { Uri soundUri = record.getSound(); hasValidSound = soundUri != null && !Uri.EMPTY.equals(soundUri); - long[] vibration = record.getVibration(); + VibrationEffect vibration = record.getVibration(); // Demote sound to vibration if vibration missing & phone in vibration mode. if (vibration == null && hasValidSound @@ -7406,7 +7419,8 @@ public class NotificationManagerService extends SystemService { == AudioManager.RINGER_MODE_VIBRATE) && mAudioManager.getStreamVolume( AudioAttributes.toLegacyStreamType(record.getAudioAttributes())) == 0) { - vibration = mFallbackVibrationPattern; + boolean insistent = (record.getFlags() & Notification.FLAG_INSISTENT) != 0; + vibration = mVibratorHelper.createFallbackVibration(insistent); } hasValidVibrate = vibration != null; boolean hasAudibleAlert = hasValidSound || hasValidVibrate; @@ -7633,23 +7647,12 @@ public class NotificationManagerService extends SystemService { return false; } - private boolean playVibration(final NotificationRecord record, long[] vibration, + private boolean playVibration(final NotificationRecord record, final VibrationEffect effect, boolean delayVibForSound) { // Escalate privileges so we can use the vibrator even if the // notifying app does not have the VIBRATE permission. final long identity = Binder.clearCallingIdentity(); try { - final VibrationEffect effect; - try { - final boolean insistent = - (record.getNotification().flags & Notification.FLAG_INSISTENT) != 0; - effect = VibrationEffect.createWaveform( - vibration, insistent ? 0 : -1 /*repeatIndex*/); - } catch (IllegalArgumentException e) { - Slog.e(TAG, "Error creating vibration waveform with pattern: " + - Arrays.toString(vibration)); - return false; - } if (delayVibForSound) { new Thread(() -> { // delay the vibration by the same amount as the notification sound @@ -7686,8 +7689,7 @@ public class NotificationManagerService extends SystemService { // to the reason so we can still debug from bugreports String reason = "Notification (" + record.getSbn().getOpPkg() + " " + record.getSbn().getUid() + ") " + (delayed ? "(Delayed)" : ""); - mVibrator.vibrate(Process.SYSTEM_UID, PackageManagerService.PLATFORM_PACKAGE_NAME, - effect, reason, record.getAudioAttributes()); + mVibratorHelper.vibrate(effect, record.getAudioAttributes(), reason); } private boolean isNotificationForCurrentUser(NotificationRecord record) { diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java index e87506544188..f66cfa99ce98 100644 --- a/services/core/java/com/android/server/notification/NotificationRecord.java +++ b/services/core/java/com/android/server/notification/NotificationRecord.java @@ -47,6 +47,7 @@ import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.os.UserHandle; +import android.os.VibrationEffect; import android.provider.Settings; import android.service.notification.Adjustment; import android.service.notification.NotificationListenerService; @@ -158,7 +159,7 @@ public final class NotificationRecord { private String mUserExplanation; private boolean mPreChannelsNotification = true; private Uri mSound; - private long[] mVibration; + private VibrationEffect mVibration; private AudioAttributes mAttributes; private NotificationChannel mChannel; private ArrayList<String> mPeopleOverride; @@ -287,29 +288,28 @@ public final class NotificationRecord { return light; } - private long[] calculateVibration() { - long[] vibration; - final long[] defaultVibration = NotificationManagerService.getLongArray( - mContext.getResources(), - com.android.internal.R.array.config_defaultNotificationVibePattern, - NotificationManagerService.VIBRATE_PATTERN_MAXLEN, - NotificationManagerService.DEFAULT_VIBRATE_PATTERN); + private VibrationEffect calculateVibration() { + VibratorHelper helper = new VibratorHelper(mContext); + final Notification notification = getSbn().getNotification(); + final boolean insistent = (notification.flags & Notification.FLAG_INSISTENT) != 0; + VibrationEffect defaultVibration = helper.createDefaultVibration(insistent); + VibrationEffect vibration; if (getChannel().shouldVibrate()) { vibration = getChannel().getVibrationPattern() == null - ? defaultVibration : getChannel().getVibrationPattern(); + ? defaultVibration + : helper.createWaveformVibration(getChannel().getVibrationPattern(), insistent); } else { vibration = null; } if (mPreChannelsNotification && (getChannel().getUserLockedFields() & NotificationChannel.USER_LOCKED_VIBRATION) == 0) { - final Notification notification = getSbn().getNotification(); final boolean useDefaultVibrate = (notification.defaults & Notification.DEFAULT_VIBRATE) != 0; if (useDefaultVibrate) { vibration = defaultVibration; } else { - vibration = notification.vibrate; + vibration = helper.createWaveformVibration(notification.vibrate, insistent); } } return vibration; @@ -877,6 +877,10 @@ public final class NotificationRecord { return mHidden; } + public boolean isForegroundService() { + return 0 != (getFlags() & Notification.FLAG_FOREGROUND_SERVICE); + } + /** * Override of all alerting information on the channel and notification. Used when notifications * are reposted in response to direct user action and thus don't need to alert. @@ -1067,7 +1071,7 @@ public final class NotificationRecord { return mSound; } - public long[] getVibration() { + public VibrationEffect getVibration() { return mVibration; } diff --git a/services/core/java/com/android/server/notification/VibratorHelper.java b/services/core/java/com/android/server/notification/VibratorHelper.java new file mode 100644 index 000000000000..f25b0470cc8a --- /dev/null +++ b/services/core/java/com/android/server/notification/VibratorHelper.java @@ -0,0 +1,153 @@ +/* + * 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.notification; + +import android.annotation.Nullable; +import android.content.Context; +import android.content.res.Resources; +import android.media.AudioAttributes; +import android.os.Process; +import android.os.VibrationAttributes; +import android.os.VibrationEffect; +import android.os.Vibrator; +import android.util.Slog; + +import com.android.internal.R; +import com.android.server.pm.PackageManagerService; + +import java.util.Arrays; + +/** + * NotificationManagerService helper for functionality related to the vibrator. + */ +public final class VibratorHelper { + private static final String TAG = "NotificationVibratorHelper"; + + private static final long[] DEFAULT_VIBRATE_PATTERN = {0, 250, 250, 250}; + private static final int VIBRATE_PATTERN_MAXLEN = 8 * 2 + 1; // up to eight bumps + + private final Vibrator mVibrator; + private final long[] mDefaultPattern; + private final long[] mFallbackPattern; + + public VibratorHelper(Context context) { + mVibrator = context.getSystemService(Vibrator.class); + mDefaultPattern = getLongArray( + context.getResources(), + com.android.internal.R.array.config_defaultNotificationVibePattern, + VIBRATE_PATTERN_MAXLEN, + DEFAULT_VIBRATE_PATTERN); + mFallbackPattern = getLongArray(context.getResources(), + R.array.config_notificationFallbackVibePattern, + VIBRATE_PATTERN_MAXLEN, + DEFAULT_VIBRATE_PATTERN); + } + + /** + * Safely create a {@link VibrationEffect} from given vibration {@code pattern}. + * + * <p>This method returns {@code null} if the pattern is also {@code null} or invalid. + * + * @param pattern The off/on vibration pattern, where each item is a duration in milliseconds. + * @param insistent {@code true} if the vibration should loop until it is cancelled. + */ + @Nullable + public static VibrationEffect createWaveformVibration(@Nullable long[] pattern, + boolean insistent) { + try { + if (pattern != null) { + return VibrationEffect.createWaveform(pattern, /* repeat= */ insistent ? 0 : -1); + } + } catch (IllegalArgumentException e) { + Slog.e(TAG, "Error creating vibration waveform with pattern: " + + Arrays.toString(pattern)); + } + return null; + } + + /** + * Vibrate the device with given {@code effect}. + * + * <p>We need to vibrate as "android" so we can breakthrough DND. + */ + public void vibrate(VibrationEffect effect, AudioAttributes attrs, String reason) { + mVibrator.vibrate(Process.SYSTEM_UID, PackageManagerService.PLATFORM_PACKAGE_NAME, + effect, reason, attrs); + } + + /** Stop all notification vibrations (ringtone, alarm, notification usages). */ + public void cancelVibration() { + int usageFilter = + VibrationAttributes.USAGE_CLASS_ALARM | ~VibrationAttributes.USAGE_CLASS_MASK; + mVibrator.cancel(usageFilter); + } + + /** + * Creates a vibration to be used as fallback when the device is in vibrate mode. + * + * @param insistent {@code true} if the vibration should loop until it is cancelled. + */ + public VibrationEffect createFallbackVibration(boolean insistent) { + if (mVibrator.hasFrequencyControl()) { + return createChirpVibration(insistent); + } + return createWaveformVibration(mFallbackPattern, insistent); + } + + /** + * Creates a vibration to be used by notifications without a custom pattern. + * + * @param insistent {@code true} if the vibration should loop until it is cancelled. + */ + public VibrationEffect createDefaultVibration(boolean insistent) { + if (mVibrator.hasFrequencyControl()) { + return createChirpVibration(insistent); + } + return createWaveformVibration(mDefaultPattern, insistent); + } + + private static VibrationEffect createChirpVibration(boolean insistent) { + VibrationEffect.WaveformBuilder waveformBuilder = VibrationEffect.startWaveform() + .addStep(/* amplitude= */ 0, /* frequency= */ -0.85f, /* duration= */ 0) + .addRamp(/* amplitude= */ 1, /* frequency= */ -0.25f, /* duration= */ 100) + .addStep(/* amplitude= */ 1, /* duration= */ 150) + .addRamp(/* amplitude= */ 0, /* frequency= */ -0.85f, /* duration= */ 250); + + if (insistent) { + return waveformBuilder.build(/* repeat= */ 0); + } + + VibrationEffect singleBeat = waveformBuilder.build(); + return VibrationEffect.startComposition() + .addEffect(singleBeat) + .addEffect(singleBeat) + .compose(); + } + + private static long[] getLongArray(Resources resources, int resId, int maxLength, long[] def) { + int[] ar = resources.getIntArray(resId); + if (ar == null) { + return def; + } + final int len = ar.length > maxLength ? maxLength : ar.length; + long[] out = new long[len]; + for (int i = 0; i < len; i++) { + out[i] = ar[i]; + } + return out; + } +} diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 9c25159faef1..ae8f967ade64 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -436,6 +436,7 @@ public class PhoneWindowManager implements WindowManagerPolicy { volatile boolean mPowerKeyHandled; volatile boolean mBackKeyHandled; volatile boolean mEndCallKeyHandled; + volatile boolean mCameraGestureTriggered; volatile boolean mCameraGestureTriggeredDuringGoingToSleep; /** @@ -3833,6 +3834,9 @@ public class PhoneWindowManager implements WindowManagerPolicy { final MutableBoolean outLaunched = new MutableBoolean(false); final boolean gesturedServiceIntercepted = gestureService.interceptPowerKeyDown(event, interactive, outLaunched); + if (outLaunched.value) { + mCameraGestureTriggered = true; + } if (outLaunched.value && mRequestedOrSleepingDefaultDisplay) { mCameraGestureTriggeredDuringGoingToSleep = true; } @@ -4209,13 +4213,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { mDefaultDisplayRotation.updateOrientationListener(); if (mKeyguardDelegate != null) { - mKeyguardDelegate.onFinishedGoingToSleep(pmSleepReason, - mCameraGestureTriggeredDuringGoingToSleep); + mKeyguardDelegate.onFinishedGoingToSleep(pmSleepReason, mCameraGestureTriggered); } if (mDisplayFoldController != null) { mDisplayFoldController.finishedGoingToSleep(); } mCameraGestureTriggeredDuringGoingToSleep = false; + mCameraGestureTriggered = false; } // Called on the PowerManager's Notifier thread. @@ -4242,8 +4246,10 @@ public class PhoneWindowManager implements WindowManagerPolicy { mDefaultDisplayRotation.updateOrientationListener(); if (mKeyguardDelegate != null) { - mKeyguardDelegate.onStartedWakingUp(pmWakeReason); + mKeyguardDelegate.onStartedWakingUp(pmWakeReason, mCameraGestureTriggered); } + + mCameraGestureTriggered = false; } // Called on the PowerManager's Notifier thread. diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java index 44f14b4d5b0d..cdce660835b6 100644 --- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java +++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceDelegate.java @@ -178,7 +178,8 @@ public class KeyguardServiceDelegate { // This is used to hide the scrim once keyguard displays. if (mKeyguardState.interactiveState == INTERACTIVE_STATE_AWAKE || mKeyguardState.interactiveState == INTERACTIVE_STATE_WAKING) { - mKeyguardService.onStartedWakingUp(PowerManager.WAKE_REASON_UNKNOWN); + mKeyguardService.onStartedWakingUp(PowerManager.WAKE_REASON_UNKNOWN, + false /* cameraGestureTriggered */); } if (mKeyguardState.interactiveState == INTERACTIVE_STATE_AWAKE) { mKeyguardService.onFinishedWakingUp(); @@ -297,10 +298,11 @@ public class KeyguardServiceDelegate { mKeyguardState.dreaming = false; } - public void onStartedWakingUp(@PowerManager.WakeReason int pmWakeReason) { + public void onStartedWakingUp( + @PowerManager.WakeReason int pmWakeReason, boolean cameraGestureTriggered) { if (mKeyguardService != null) { if (DEBUG) Log.v(TAG, "onStartedWakingUp()"); - mKeyguardService.onStartedWakingUp(pmWakeReason); + mKeyguardService.onStartedWakingUp(pmWakeReason, cameraGestureTriggered); } mKeyguardState.interactiveState = INTERACTIVE_STATE_WAKING; } diff --git a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java index 0872b3a5fd42..855a1ccc172d 100644 --- a/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java +++ b/services/core/java/com/android/server/policy/keyguard/KeyguardServiceWrapper.java @@ -121,9 +121,10 @@ public class KeyguardServiceWrapper implements IKeyguardService { } @Override - public void onStartedWakingUp(@PowerManager.WakeReason int pmWakeReason) { + public void onStartedWakingUp( + @PowerManager.WakeReason int pmWakeReason, boolean cameraGestureTriggered) { try { - mService.onStartedWakingUp(pmWakeReason); + mService.onStartedWakingUp(pmWakeReason, cameraGestureTriggered); } catch (RemoteException e) { Slog.w(TAG , "Remote Exception", e); } diff --git a/services/core/java/com/android/server/power/FaceDownDetector.java b/services/core/java/com/android/server/power/FaceDownDetector.java index 816c81ddf305..b237ca27e62d 100644 --- a/services/core/java/com/android/server/power/FaceDownDetector.java +++ b/services/core/java/com/android/server/power/FaceDownDetector.java @@ -77,6 +77,8 @@ public class FaceDownDetector implements SensorEventListener { private boolean mIsEnabled; + private int mSensorMaxLatencyMicros; + /** * DeviceConfig flag name, determines how long to disable sensor when user interacts while * device is flipped. @@ -202,7 +204,11 @@ public class FaceDownDetector implements SensorEventListener { if (mActive != shouldBeActive) { if (shouldBeActive) { mSensorManager.registerListener( - this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); + this, + mAccelerometer, + SensorManager.SENSOR_DELAY_NORMAL, + mSensorMaxLatencyMicros + ); if (mPreviousResultType == SCREEN_OFF_RESULT) { logScreenOff(); } @@ -226,6 +232,7 @@ public class FaceDownDetector implements SensorEventListener { pw.println(" mFaceDown=" + mFaceDown); pw.println(" mActive=" + mActive); pw.println(" mLastFlipTime=" + mLastFlipTime); + pw.println(" mSensorMaxLatencyMicros=" + mSensorMaxLatencyMicros); pw.println(" mUserInteractionBackoffMillis=" + mUserInteractionBackoffMillis); pw.println(" mPreviousResultTime=" + mPreviousResultTime); pw.println(" mPreviousResultType=" + mPreviousResultType); @@ -356,6 +363,11 @@ public class FaceDownDetector implements SensorEventListener { 3600_000); } + private int getSensorMaxLatencyMicros() { + return mContext.getResources().getInteger( + com.android.internal.R.integer.config_flipToScreenOffMaxLatencyMicros); + } + private float getFloatFlagValue(String key, float defaultValue, float min, float max) { final float value = DeviceConfig.getFloat(NAMESPACE_ATTENTION_MANAGER_SERVICE, key, @@ -416,6 +428,7 @@ public class FaceDownDetector implements SensorEventListener { mZAccelerationThreshold = getZAccelerationThreshold(); mZAccelerationThresholdLenient = mZAccelerationThreshold + 1.0f; mTimeThreshold = getTimeThreshold(); + mSensorMaxLatencyMicros = getSensorMaxLatencyMicros(); mUserInteractionBackoffMillis = getUserInteractionBackoffMillis(); final boolean oldEnabled = mIsEnabled; mIsEnabled = isEnabled(); diff --git a/services/core/java/com/android/server/sensors/SensorManagerInternal.java b/services/core/java/com/android/server/sensors/SensorManagerInternal.java new file mode 100644 index 000000000000..fbb6644934f1 --- /dev/null +++ b/services/core/java/com/android/server/sensors/SensorManagerInternal.java @@ -0,0 +1,55 @@ +/* + * 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.annotation.NonNull; + +import java.util.concurrent.Executor; + +/** + * Local system service interface for sensors. + * + * @hide Only for use within system server. + */ +public abstract class SensorManagerInternal { + /** + * Adds a listener for changes in proximity sensor state. + * @param executor The {@link Executor} to {@link Executor#execute invoke} the listener on. + * @param listener The listener to add. + * + * @throws IllegalArgumentException when adding a listener that is already listening + */ + public abstract void addProximityActiveListener(@NonNull Executor executor, + @NonNull ProximityActiveListener listener); + + /** + * Removes a previously registered listener of proximity sensor state changes. + * @param listener The listener to remove. + */ + public abstract void removeProximityActiveListener(@NonNull ProximityActiveListener listener); + + /** + * Listener for proximity sensor state changes. + */ + public interface ProximityActiveListener { + /** + * Callback invoked when the proximity sensor state changes + * @param isActive whether the sensor is being enabled or disabled. + */ + void onProximityActive(boolean isActive); + } +} diff --git a/services/core/java/com/android/server/sensors/SensorService.java b/services/core/java/com/android/server/sensors/SensorService.java index f7ed8e7138fa..8fe2d52f7160 100644 --- a/services/core/java/com/android/server/sensors/SensorService.java +++ b/services/core/java/com/android/server/sensors/SensorService.java @@ -16,25 +16,41 @@ package com.android.server.sensors; +import static com.android.server.sensors.SensorManagerInternal.ProximityActiveListener; + +import android.annotation.NonNull; import android.content.Context; +import android.util.ArrayMap; import com.android.internal.annotations.GuardedBy; import com.android.internal.util.ConcurrentUtils; +import com.android.server.LocalServices; import com.android.server.SystemServerInitThreadPool; import com.android.server.SystemService; import com.android.server.utils.TimingsTraceAndSlog; +import java.util.Objects; +import java.util.concurrent.Executor; 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 final ArrayMap<ProximityActiveListener, ProximityListenerProxy> mProximityListeners = + new ArrayMap<>(); + @GuardedBy("mLock") private Future<?> mSensorServiceStart; + @GuardedBy("mLock") + private long mPtr; /** Start the sensor service. This is a blocking call and can take time. */ - private static native void startNativeSensorService(); + private static native long startSensorServiceNative(ProximityActiveListener listener); + + private static native void registerProximityActiveListenerNative(long ptr); + private static native void unregisterProximityActiveListenerNative(long ptr); + public SensorService(Context ctx) { super(ctx); @@ -42,14 +58,19 @@ public class SensorService extends SystemService { mSensorServiceStart = SystemServerInitThreadPool.submit(() -> { TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog(); traceLog.traceBegin(START_NATIVE_SENSOR_SERVICE); - startNativeSensorService(); + long ptr = startSensorServiceNative(new ProximityListenerDelegate()); + synchronized (mLock) { + mPtr = ptr; + } traceLog.traceEnd(); }, START_NATIVE_SENSOR_SERVICE); } } @Override - public void onStart() { } + public void onStart() { + LocalServices.addService(SensorManagerInternal.class, new LocalService()); + } @Override public void onBootPhase(int phase) { @@ -61,4 +82,70 @@ public class SensorService extends SystemService { } } } + + class LocalService extends SensorManagerInternal { + @Override + public void addProximityActiveListener(@NonNull Executor executor, + @NonNull ProximityActiveListener listener) { + Objects.requireNonNull(executor, "executor must not be null"); + Objects.requireNonNull(listener, "listener must not be null"); + ProximityListenerProxy proxy = new ProximityListenerProxy(executor, listener); + synchronized (mLock) { + if (mProximityListeners.containsKey(listener)) { + throw new IllegalArgumentException("listener already registered"); + } + mProximityListeners.put(listener, proxy); + if (mProximityListeners.size() == 1) { + registerProximityActiveListenerNative(mPtr); + } + } + } + + @Override + public void removeProximityActiveListener(@NonNull ProximityActiveListener listener) { + Objects.requireNonNull(listener, "listener must not be null"); + synchronized (mLock) { + ProximityListenerProxy proxy = mProximityListeners.remove(listener); + if (proxy == null) { + throw new IllegalArgumentException( + "listener was not registered with sensor service"); + } + if (mProximityListeners.isEmpty()) { + unregisterProximityActiveListenerNative(mPtr); + } + } + } + } + + private static class ProximityListenerProxy implements ProximityActiveListener { + private final Executor mExecutor; + private final ProximityActiveListener mListener; + + ProximityListenerProxy(Executor executor, ProximityActiveListener listener) { + mExecutor = executor; + mListener = listener; + } + + @Override + public void onProximityActive(boolean isActive) { + mExecutor.execute(() -> mListener.onProximityActive(isActive)); + } + } + + private class ProximityListenerDelegate implements ProximityActiveListener { + @Override + public void onProximityActive(boolean isActive) { + final ProximityListenerProxy[] listeners; + // We can't call out while holding the lock because clients might be calling into us + // while holding their own locks (e.g. when registering / unregistering their + // listeners).This would break lock ordering and create deadlocks. Instead, we need to + // copy the listeners out and then only invoke them once we've dropped the lock. + synchronized (mLock) { + listeners = mProximityListeners.values().toArray(new ProximityListenerProxy[0]); + } + for (ProximityListenerProxy listener : listeners) { + listener.onProximityActive(isActive); + } + } + } } diff --git a/services/core/java/com/android/server/vibrator/VibrationThread.java b/services/core/java/com/android/server/vibrator/VibrationThread.java index bc61478ec1b5..b3f1bcd444cc 100644 --- a/services/core/java/com/android/server/vibrator/VibrationThread.java +++ b/services/core/java/com/android/server/vibrator/VibrationThread.java @@ -45,8 +45,10 @@ import com.android.internal.util.FrameworkStatsLog; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; +import java.util.LinkedList; import java.util.List; import java.util.PriorityQueue; +import java.util.Queue; /** Plays a {@link Vibration} in dedicated thread. */ final class VibrationThread extends Thread implements IBinder.DeathRecipient { @@ -171,7 +173,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient { Slog.d(TAG, "Synced vibration complete reported by vibrator manager"); } for (int i = 0; i < mVibrators.size(); i++) { - mStepQueue.consumeOnVibratorComplete(mVibrators.keyAt(i)); + mStepQueue.notifyVibratorComplete(mVibrators.keyAt(i)); } mLock.notify(); } @@ -183,7 +185,7 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient { if (DEBUG) { Slog.d(TAG, "Vibration complete reported by vibrator " + vibratorId); } - mStepQueue.consumeOnVibratorComplete(vibratorId); + mStepQueue.notifyVibratorComplete(vibratorId); mLock.notify(); } } @@ -192,26 +194,25 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient { Trace.traceBegin(Trace.TRACE_TAG_VIBRATOR, "playVibration"); try { CombinedVibration.Sequential effect = toSequential(mVibration.getEffect()); - int stepsPlayed = 0; - - synchronized (mLock) { - mStepQueue.offer(new StartVibrateStep(effect)); - Step topOfQueue; + mStepQueue.offer(new StartVibrateStep(effect)); - while ((topOfQueue = mStepQueue.peek()) != null) { - long waitTime = topOfQueue.calculateWaitTime(); - if (waitTime <= 0) { - stepsPlayed += mStepQueue.consume(); - } else { + int stepsPlayed = 0; + while (!mStepQueue.isEmpty()) { + long waitTime = mStepQueue.calculateWaitTime(); + if (waitTime <= 0) { + stepsPlayed += mStepQueue.consumeNext(); + } else { + synchronized (mLock) { try { mLock.wait(waitTime); - } catch (InterruptedException e) { } - } - if (mForceStop) { - mStepQueue.cancel(); - return Vibration.Status.CANCELLED; + } catch (InterruptedException e) { + } } } + if (mForceStop) { + mStepQueue.cancel(); + return Vibration.Status.CANCELLED; + } } // Some effects might be ignored because the specified vibrator don't exist or doesn't @@ -295,54 +296,75 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient { private final class StepQueue { @GuardedBy("mLock") private final PriorityQueue<Step> mNextSteps = new PriorityQueue<>(); - @GuardedBy("mLock") + private final Queue<Step> mPendingOnVibratorCompleteSteps = new LinkedList<>(); + public void offer(@NonNull Step step) { - mNextSteps.offer(step); + synchronized (mLock) { + mNextSteps.offer(step); + } } - @GuardedBy("mLock") - @Nullable - public Step peek() { - return mNextSteps.peek(); + public boolean isEmpty() { + synchronized (mLock) { + return mPendingOnVibratorCompleteSteps.isEmpty() && mNextSteps.isEmpty(); + } + } + + /** Returns the time in millis to wait before calling {@link #consumeNext()}. */ + public long calculateWaitTime() { + Step nextStep; + synchronized (mLock) { + if (!mPendingOnVibratorCompleteSteps.isEmpty()) { + // Steps anticipated by vibrator complete callback should be played right away. + return 0; + } + nextStep = mNextSteps.peek(); + } + return nextStep == null ? 0 : nextStep.calculateWaitTime(); } /** - * Play and remove the step at the top of this queue, and also adds the next steps - * generated to be played next. + * Play and remove the step at the top of this queue, and also adds the next steps generated + * to be played next. * * @return the number of steps played */ - @GuardedBy("mLock") - public int consume() { - Step nextStep = mNextSteps.poll(); + public int consumeNext() { + Step nextStep = pollNext(); if (nextStep != null) { - mNextSteps.addAll(nextStep.play()); + // This might turn on the vibrator and have a HAL latency. Execute this outside any + // lock to avoid blocking other interactions with the thread. + List<Step> nextSteps = nextStep.play(); + synchronized (mLock) { + mNextSteps.addAll(nextSteps); + } return 1; } return 0; } /** - * Play and remove the step in this queue that should be anticipated by the vibrator - * completion callback. + * Notify the step in this queue that should be anticipated by the vibrator completion + * callback and keep it separate to be consumed by {@link #consumeNext()}. + * + * <p>This is a lightweight method that do not trigger any operation from {@link + * VibratorController}, so it can be called directly from a native callback. * * <p>This assumes only one of the next steps is waiting on this given vibrator, so the - * first step found is played by this method, in no particular order. + * first step found will be anticipated by this method, in no particular order. */ @GuardedBy("mLock") - public void consumeOnVibratorComplete(int vibratorId) { + public void notifyVibratorComplete(int vibratorId) { Iterator<Step> it = mNextSteps.iterator(); - List<Step> nextSteps = EMPTY_STEP_LIST; while (it.hasNext()) { Step step = it.next(); if (step.shouldPlayWhenVibratorComplete(vibratorId)) { it.remove(); - nextSteps = step.play(); + mPendingOnVibratorCompleteSteps.offer(step); break; } } - mNextSteps.addAll(nextSteps); } /** @@ -350,13 +372,25 @@ final class VibrationThread extends Thread implements IBinder.DeathRecipient { * * <p>This will remove and trigger {@link Step#cancel()} in all steps, in order. */ - @GuardedBy("mLock") public void cancel() { Step step; - while ((step = mNextSteps.poll()) != null) { + while ((step = pollNext()) != null) { + // This might turn off the vibrator and have a HAL latency. Execute this outside + // any lock to avoid blocking other interactions with the thread. step.cancel(); } } + + @Nullable + private Step pollNext() { + synchronized (mLock) { + // Prioritize the steps anticipated by a vibrator complete callback. + if (!mPendingOnVibratorCompleteSteps.isEmpty()) { + return mPendingOnVibratorCompleteSteps.poll(); + } + return mNextSteps.poll(); + } + } } /** diff --git a/services/core/java/com/android/server/vibrator/VibratorController.java b/services/core/java/com/android/server/vibrator/VibratorController.java index a09bfc57ba23..5dceac2d066c 100644 --- a/services/core/java/com/android/server/vibrator/VibratorController.java +++ b/services/core/java/com/android/server/vibrator/VibratorController.java @@ -67,7 +67,7 @@ final class VibratorController { mNativeWrapper = nativeWrapper; mNativeWrapper.init(vibratorId, listener); // TODO(b/167947076): load suggested range from config - mVibratorInfo = mNativeWrapper.getInfo(/* suggestedFrequencyRange= */ 100); + mVibratorInfo = mNativeWrapper.getInfo(/* suggestedFrequencyRange= */ 200); Preconditions.checkNotNull(mVibratorInfo, "Failed to retrieve data for vibrator %d", vibratorId); } diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java index e1b7dd3a081b..a781520c48d9 100644 --- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java @@ -80,7 +80,6 @@ import android.content.pm.IncrementalStatesInfo; 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; @@ -508,21 +507,12 @@ class ActivityMetricsLogger { } /** - * If the caller is found in an active transition, it will be considered as consecutive launch - * and coalesced into the active transition. - * - * @see #notifyActivityLaunching(Intent, ActivityRecord, int) - */ - LaunchingState notifyActivityLaunching(Intent intent, @Nullable ActivityRecord caller) { - return notifyActivityLaunching(intent, caller, Binder.getCallingUid()); - } - - /** * Notifies the tracker at the earliest possible point when we are starting to launch an * activity. The caller must ensure that {@link #notifyActivityLaunched} will be called later - * with the returned {@link LaunchingState}. + * with the returned {@link LaunchingState}. If the caller is found in an active transition, + * it will be considered as consecutive launch and coalesced into the active transition. */ - private LaunchingState notifyActivityLaunching(Intent intent, @Nullable ActivityRecord caller, + LaunchingState notifyActivityLaunching(Intent intent, @Nullable ActivityRecord caller, int callingUid) { final long transitionStartTimeNs = SystemClock.elapsedRealtimeNanos(); TransitionInfo existingInfo = null; @@ -790,7 +780,7 @@ class ActivityMetricsLogger { // window drawn event should report later to complete the transition. Otherwise all // activities in this task may be finished, invisible or drawn, so the transition event // should be cancelled. - if (t.forAllActivities( + if (t != null && t.forAllActivities( a -> a.mVisibleRequested && !a.isReportedDrawn() && !a.finishing)) { return; } diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 66e55e04d198..e2ef82b81a18 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -617,8 +617,10 @@ class ActivityStarter { final LaunchingState launchingState; synchronized (mService.mGlobalLock) { final ActivityRecord caller = ActivityRecord.forTokenLocked(mRequest.resultTo); + final int callingUid = mRequest.realCallingUid == Request.DEFAULT_REAL_CALLING_UID + ? Binder.getCallingUid() : mRequest.realCallingUid; launchingState = mSupervisor.getActivityMetricsLogger().notifyActivityLaunching( - mRequest.intent, caller); + mRequest.intent, caller, callingUid); } // If the caller hasn't already resolved the activity, we're willing diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index 134ecdeffa8f..29e55df32509 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -1381,6 +1381,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { getActivityStartController().obtainStarter(intent, "dream") .setCallingUid(callingUid) .setCallingPid(callingPid) + .setCallingPackage(intent.getPackage()) .setActivityInfo(a) .setActivityOptions(options.toBundle()) // To start the dream from background, we need to start it from a persistent diff --git a/services/core/java/com/android/server/wm/LockTaskController.java b/services/core/java/com/android/server/wm/LockTaskController.java index 62c155a3c198..94a175caba22 100644 --- a/services/core/java/com/android/server/wm/LockTaskController.java +++ b/services/core/java/com/android/server/wm/LockTaskController.java @@ -355,6 +355,11 @@ public class LockTaskController { return false; } + // Allow the dream to start during lock task mode + if (wc.isActivityTypeDream()) { + return false; + } + return !(isTaskAuthAllowlisted(taskAuth) || mLockTaskModeTasks.isEmpty()); } diff --git a/services/core/jni/com_android_server_sensor_SensorService.cpp b/services/core/jni/com_android_server_sensor_SensorService.cpp index acad1bc95ce0..d0f56e62f487 100644 --- a/services/core/jni/com_android_server_sensor_SensorService.cpp +++ b/services/core/jni/com_android_server_sensor_SensorService.cpp @@ -14,34 +14,123 @@ * 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" +#define LOG_TAG "NativeSensorService" +#include <android-base/properties.h> +#include <android_runtime/AndroidRuntime.h> +#include <core_jni_helpers.h> #include <cutils/properties.h> +#include <jni.h> #include <sensorservice/SensorService.h> #include <utils/Log.h> #include <utils/misc.h> +#include <mutex> + +#define PROXIMITY_ACTIVE_CLASS \ + "com/android/server/sensors/SensorManagerInternal$ProximityActiveListener" + 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 jmethodID sMethodIdOnProximityActive; + +class NativeSensorService { +public: + NativeSensorService(JNIEnv* env, jobject listener); + + void registerProximityActiveListener(); + void unregisterProximityActiveListener(); + +private: + sp<SensorService> mService; + + class ProximityActiveListenerDelegate : public SensorService::ProximityActiveListener { + public: + ProximityActiveListenerDelegate(JNIEnv* env, jobject listener); + ~ProximityActiveListenerDelegate(); + + void onProximityActive(bool isActive) override; + + private: + jobject mListener; + }; + sp<ProximityActiveListenerDelegate> mProximityActiveListenerDelegate; +}; + +NativeSensorService::NativeSensorService(JNIEnv* env, jobject listener) + : mProximityActiveListenerDelegate(new ProximityActiveListenerDelegate(env, listener)) { + if (base::GetBoolProperty("system_init.startsensorservice", true)) { + sp<IServiceManager> sm(defaultServiceManager()); + mService = new SensorService(); + sm->addService(String16(SensorService::getServiceName()), mService, + false /* allowIsolated */, IServiceManager::DUMP_FLAG_PRIORITY_CRITICAL); + } +} + +void NativeSensorService::registerProximityActiveListener() { + if (mService == nullptr) { + ALOGD("Dropping registerProximityActiveListener, sensor service not available."); + return; + } + mService->addProximityActiveListener(mProximityActiveListenerDelegate); +} + +void NativeSensorService::unregisterProximityActiveListener() { + if (mService == nullptr) { + ALOGD("Dropping unregisterProximityActiveListener, sensor service not available."); + return; } + + mService->removeProximityActiveListener(mProximityActiveListenerDelegate); +} + +NativeSensorService::ProximityActiveListenerDelegate::ProximityActiveListenerDelegate( + JNIEnv* env, jobject listener) + : mListener(env->NewGlobalRef(listener)) {} + +NativeSensorService::ProximityActiveListenerDelegate::~ProximityActiveListenerDelegate() { + AndroidRuntime::getJNIEnv()->DeleteGlobalRef(mListener); +} + +void NativeSensorService::ProximityActiveListenerDelegate::onProximityActive(bool isActive) { + AndroidRuntime::getJNIEnv()->CallVoidMethod(mListener, sMethodIdOnProximityActive, + static_cast<jboolean>(isActive)); +} + +static jlong startSensorServiceNative(JNIEnv* env, jclass, jobject listener) { + NativeSensorService* service = new NativeSensorService(env, listener); + return reinterpret_cast<jlong>(service); +} + +static void registerProximityActiveListenerNative(JNIEnv* env, jclass, jlong ptr) { + auto* service = reinterpret_cast<NativeSensorService*>(ptr); + service->registerProximityActiveListener(); +} + +static void unregisterProximityActiveListenerNative(JNIEnv* env, jclass, jlong ptr) { + auto* service = reinterpret_cast<NativeSensorService*>(ptr); + service->unregisterProximityActiveListener(); } static const JNINativeMethod methods[] = { - {"startNativeSensorService", "()V", (void*)startNativeSensorService}, + { + "startSensorServiceNative", "(L" PROXIMITY_ACTIVE_CLASS ";)J", + reinterpret_cast<void*>(startSensorServiceNative) + }, + { + "registerProximityActiveListenerNative", "(J)V", + reinterpret_cast<void*>(registerProximityActiveListenerNative) + }, + { + "unregisterProximityActiveListenerNative", "(J)V", + reinterpret_cast<void*>(unregisterProximityActiveListenerNative) + }, + }; int register_android_server_sensor_SensorService(JNIEnv* env) { + jclass listenerClass = FindClassOrDie(env, PROXIMITY_ACTIVE_CLASS); + sMethodIdOnProximityActive = GetMethodIDOrDie(env, listenerClass, "onProximityActive", "(Z)V"); return jniRegisterNativeMethods(env, "com/android/server/sensors/SensorService", methods, NELEM(methods)); } diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 1b48273e34a0..dddf3df63793 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -2086,12 +2086,19 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // The following policies weren't available to PO, but will be available after migration. parentAdmin.disableCamera = doAdmin.disableCamera; - parentAdmin.requireAutoTime = doAdmin.requireAutoTime; parentAdmin.disableScreenCapture = doAdmin.disableScreenCapture; parentAdmin.accountTypesWithManagementDisabled.addAll( doAdmin.accountTypesWithManagementDisabled); moveDoUserRestrictionsToCopeParent(doAdmin, parentAdmin); + + // From Android 11, {@link setAutoTimeRequired} is no longer used. The user restriction + // {@link UserManager#DISALLOW_CONFIG_DATE_TIME} should be used to enforce auto time + // settings instead. + if (doAdmin.requireAutoTime) { + parentAdmin.ensureUserRestrictions().putBoolean( + UserManager.DISALLOW_CONFIG_DATE_TIME, true); + } } private void moveDoUserRestrictionsToCopeParent(ActiveAdmin doAdmin, ActiveAdmin parentAdmin) { @@ -2361,6 +2368,41 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { saveSettingsLocked(user.getIdentifier()); } + /** + * Fix left-over restrictions and auto-time policy during COMP -> COPE migration. + * + * When a COMP device with requireAutoTime policy set was migrated to an + * organization-owned profile, a DISALLOW_CONFIG_DATE_TIME restriction is set + * on user 0 from the DO user, which becomes unremovable by the organization-owned + * profile owner. Fix this by force removing that restriction. Also revert the + * parentAdmin.requireAutoTime bit (since the COPE PO cannot unset this bit) + * and replace it with DISALLOW_CONFIG_DATE_TIME on the correct + * admin, in line with the deprecation recommendation of setAutoTimeRequired(). + */ + private void fixupAutoTimeRestrictionDuringOrganizationOwnedDeviceMigration() { + for (UserInfo ui : mUserManager.getUsers()) { + final int userId = ui.id; + if (isProfileOwnerOfOrganizationOwnedDevice(userId)) { + final ActiveAdmin parent = getProfileOwnerAdminLocked(userId).parentAdmin; + if (parent != null && parent.requireAutoTime) { + // Remove deprecated requireAutoTime + parent.requireAutoTime = false; + saveSettingsLocked(userId); + + // Remove user restrictions set by the device owner before the upgrade to + // Android 11. + mUserManagerInternal.setDevicePolicyUserRestrictions(UserHandle.USER_SYSTEM, + new Bundle(), new RestrictionsSet(), /* isDeviceOwner */ false); + + // Apply user restriction to parent active admin instead + parent.ensureUserRestrictions().putBoolean( + UserManager.DISALLOW_CONFIG_DATE_TIME, true); + pushUserRestrictions(userId); + } + } + } + } + private ComponentName findAdminComponentWithPackageLocked(String packageName, int userId) { final DevicePolicyData policy = getUserData(userId); final int n = policy.mAdminList.size(); @@ -3020,6 +3062,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { private void onLockSettingsReady() { synchronized (getLockObject()) { migrateUserRestrictionsIfNecessaryLocked(); + fixupAutoTimeRestrictionDuringOrganizationOwnedDeviceMigration(); performPolicyVersionUpgrade(); } getUserData(UserHandle.USER_SYSTEM); @@ -8576,6 +8619,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { admin.defaultEnabledRestrictionsAlreadySet.clear(); admin.forceEphemeralUsers = false; admin.isNetworkLoggingEnabled = false; + admin.requireAutoTime = false; mUserManagerInternal.setForceEphemeralUsers(admin.forceEphemeralUsers); } final DevicePolicyData policyData = getUserData(userId); diff --git a/services/tests/servicestests/src/com/android/server/vibrator/VibrationThreadTest.java b/services/tests/servicestests/src/com/android/server/vibrator/VibrationThreadTest.java index 5743982171cb..ac3e05d27962 100644 --- a/services/tests/servicestests/src/com/android/server/vibrator/VibrationThreadTest.java +++ b/services/tests/servicestests/src/com/android/server/vibrator/VibrationThreadTest.java @@ -85,12 +85,17 @@ public class VibrationThreadTest { private static final String PACKAGE_NAME = "package"; private static final VibrationAttributes ATTRS = new VibrationAttributes.Builder().build(); - @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule(); - - @Mock private VibrationThread.VibrationCallbacks mThreadCallbacks; - @Mock private VibratorController.OnVibrationCompleteListener mControllerCallbacks; - @Mock private IBinder mVibrationToken; - @Mock private IBatteryStats mIBatteryStatsMock; + @Rule + public MockitoRule mMockitoRule = MockitoJUnit.rule(); + + @Mock + private VibrationThread.VibrationCallbacks mThreadCallbacks; + @Mock + private VibratorController.OnVibrationCompleteListener mControllerCallbacks; + @Mock + private IBinder mVibrationToken; + @Mock + private IBatteryStats mIBatteryStatsMock; private final Map<Integer, FakeVibratorControllerProvider> mVibratorProviders = new HashMap<>(); private PowerManager.WakeLock mWakeLock; @@ -253,7 +258,7 @@ public class VibrationThreadTest { Thread cancellingThread = new Thread(() -> vibrationThread.cancel()); cancellingThread.start(); - waitForCompletion(vibrationThread, 20); + waitForCompletion(vibrationThread, /* timeout= */ 50); waitForCompletion(cancellingThread); verify(mThreadCallbacks).onVibrationEnded(eq(vibrationId), eq(Vibration.Status.CANCELLED)); @@ -278,7 +283,7 @@ public class VibrationThreadTest { Thread cancellingThread = new Thread(() -> vibrationThread.cancel()); cancellingThread.start(); - waitForCompletion(vibrationThread, 20); + waitForCompletion(vibrationThread, /* timeout= */ 50); waitForCompletion(cancellingThread); verify(mThreadCallbacks).onVibrationEnded(eq(vibrationId), eq(Vibration.Status.CANCELLED)); @@ -844,6 +849,39 @@ public class VibrationThreadTest { delay < maxDelay); } + @LargeTest + @Test + public void vibrate_cancelSlowVibrator_cancelIsNotBlockedByVibrationThread() throws Exception { + FakeVibratorControllerProvider fakeVibrator = mVibratorProviders.get(VIBRATOR_ID); + fakeVibrator.setSupportedEffects(VibrationEffect.EFFECT_CLICK); + + long latency = 5_000; // 5s + fakeVibrator.setLatency(latency); + + long vibrationId = 1; + VibrationEffect effect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK); + VibrationThread vibrationThread = startThreadAndDispatcher(vibrationId, effect); + + assertTrue(waitUntil( + t -> !fakeVibrator.getEffectSegments().isEmpty(), + vibrationThread, TEST_TIMEOUT_MILLIS)); + assertTrue(vibrationThread.isAlive()); + + // Run cancel in a separate thread so if VibrationThread.cancel blocks then this test should + // fail at waitForCompletion(cancellingThread). + Thread cancellingThread = new Thread(() -> vibrationThread.cancel()); + cancellingThread.start(); + + // Cancelling the vibration should be fast and return right away, even if the thread is + // stuck at the slow call to the vibrator. + waitForCompletion(cancellingThread, /* timeout= */ 50); + + // After the vibrator call ends the vibration is cancelled and the vibrator is turned off. + waitForCompletion(vibrationThread, /* timeout= */ latency + TEST_TIMEOUT_MILLIS); + verify(mThreadCallbacks).onVibrationEnded(eq(vibrationId), eq(Vibration.Status.CANCELLED)); + assertFalse(vibrationThread.getVibrators().get(VIBRATOR_ID).isVibrating()); + } + @Test public void vibrate_multiplePredefinedCancel_cancelsVibrationImmediately() throws Exception { mockVibrators(1, 2); @@ -870,7 +908,7 @@ public class VibrationThreadTest { Thread cancellingThread = new Thread(() -> vibrationThread.cancel()); cancellingThread.start(); - waitForCompletion(vibrationThread, 20); + waitForCompletion(vibrationThread, /* timeout= */ 50); waitForCompletion(cancellingThread); verify(mThreadCallbacks).onVibrationEnded(eq(vibrationId), eq(Vibration.Status.CANCELLED)); @@ -902,7 +940,7 @@ public class VibrationThreadTest { Thread cancellingThread = new Thread(() -> vibrationThread.cancel()); cancellingThread.start(); - waitForCompletion(vibrationThread, 20); + waitForCompletion(vibrationThread, /* timeout= */ 50); waitForCompletion(cancellingThread); verify(mThreadCallbacks).onVibrationEnded(eq(vibrationId), eq(Vibration.Status.CANCELLED)); diff --git a/services/tests/servicestests/src/com/android/server/vibrator/VibratorControllerTest.java b/services/tests/servicestests/src/com/android/server/vibrator/VibratorControllerTest.java index 59370e210652..9e98e7d0410c 100644 --- a/services/tests/servicestests/src/com/android/server/vibrator/VibratorControllerTest.java +++ b/services/tests/servicestests/src/com/android/server/vibrator/VibratorControllerTest.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.ArgumentMatchers.anyFloat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.eq; @@ -297,7 +298,7 @@ public class VibratorControllerTest { private void mockVibratorCapabilities(int capabilities) { VibratorInfo.FrequencyMapping frequencyMapping = new VibratorInfo.FrequencyMapping( Float.NaN, Float.NaN, Float.NaN, Float.NaN, null); - when(mNativeWrapperMock.getInfo(/* suggestedFrequencyRange= */ 100)).thenReturn( + when(mNativeWrapperMock.getInfo(anyFloat())).thenReturn( new VibratorInfo.Builder(VIBRATOR_ID) .setCapabilities(capabilities) .setFrequencyMapping(frequencyMapping) diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java index 00eb0f284719..3862d754b8f5 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java @@ -93,6 +93,9 @@ import org.mockito.ArgumentMatcher; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.mockito.verification.VerificationMode; + +import java.util.Objects; @SmallTest @RunWith(AndroidJUnit4.class) @@ -137,20 +140,19 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase { private static final int CUSTOM_LIGHT_COLOR = Color.BLACK; private static final int CUSTOM_LIGHT_ON = 10000; private static final int CUSTOM_LIGHT_OFF = 10000; - private static final long[] FALLBACK_VIBRATION_PATTERN = new long[] {100, 100, 100}; - private static final VibrationEffect FALLBACK_VIBRATION = - VibrationEffect.createWaveform(FALLBACK_VIBRATION_PATTERN, -1); private static final int MAX_VIBRATION_DELAY = 1000; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); + getContext().addMockSystemService(Vibrator.class, mVibrator); when(mAudioManager.isAudioFocusExclusive()).thenReturn(false); when(mAudioManager.getRingtonePlayer()).thenReturn(mRingtonePlayer); when(mAudioManager.getStreamVolume(anyInt())).thenReturn(10); when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL); when(mUsageStats.isAlertRateLimited(any())).thenReturn(false); + when(mVibrator.hasFrequencyControl()).thenReturn(false); long serviceReturnValue = IntPair.of( AccessibilityManager.STATE_FLAG_ACCESSIBILITY_ENABLED, @@ -164,13 +166,12 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase { mService = spy(new NotificationManagerService(getContext(), mNotificationRecordLogger, mNotificationInstanceIdSequence)); + mService.setVibratorHelper(new VibratorHelper(getContext())); mService.setAudioManager(mAudioManager); - mService.setVibrator(mVibrator); mService.setSystemReady(true); mService.setHandler(mHandler); mService.setLights(mLight); mService.setScreenOn(false); - mService.setFallbackVibrationPattern(FALLBACK_VIBRATION_PATTERN); mService.setUsageStats(mUsageStats); mService.setAccessibilityManager(accessibilityManager); mService.mScreenOn = false; @@ -416,32 +417,34 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase { } private void verifyVibrate() { - ArgumentCaptor<AudioAttributes> captor = ArgumentCaptor.forClass(AudioAttributes.class); - verify(mVibrator, times(1)).vibrate(anyInt(), anyString(), argThat(mVibrateOnceMatcher), - anyString(), captor.capture()); - assertEquals(0, (captor.getValue().getAllFlags() - & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY)); + verifyVibrate(/* times= */ 1); } private void verifyVibrate(int times) { - verify(mVibrator, times(times)).vibrate(eq(Process.SYSTEM_UID), - eq(PackageManagerService.PLATFORM_PACKAGE_NAME), any(), anyString(), - any(AudioAttributes.class)); + verifyVibrate(mVibrateOnceMatcher, times(times)); } private void verifyVibrateLooped() { - verify(mVibrator, times(1)).vibrate(anyInt(), anyString(), argThat(mVibrateLoopMatcher), - anyString(), any(AudioAttributes.class)); + verifyVibrate(mVibrateLoopMatcher, times(1)); } private void verifyDelayedVibrateLooped() { - verify(mVibrator, timeout(MAX_VIBRATION_DELAY).times(1)).vibrate(anyInt(), anyString(), - argThat(mVibrateLoopMatcher), anyString(), any(AudioAttributes.class)); + verifyVibrate(mVibrateLoopMatcher, timeout(MAX_VIBRATION_DELAY).times(1)); } - private void verifyDelayedVibrate() { - verify(mVibrator, timeout(MAX_VIBRATION_DELAY).times(1)).vibrate(anyInt(), anyString(), - argThat(mVibrateOnceMatcher), anyString(), any(AudioAttributes.class)); + private void verifyDelayedVibrate(VibrationEffect effect) { + verifyVibrate(argument -> Objects.equals(effect, argument), + timeout(MAX_VIBRATION_DELAY).times(1)); + } + + private void verifyVibrate(ArgumentMatcher<VibrationEffect> effectMatcher, + VerificationMode verification) { + ArgumentCaptor<AudioAttributes> captor = ArgumentCaptor.forClass(AudioAttributes.class); + verify(mVibrator, verification).vibrate(eq(Process.SYSTEM_UID), + eq(PackageManagerService.PLATFORM_PACKAGE_NAME), argThat(effectMatcher), + anyString(), captor.capture()); + assertEquals(0, (captor.getValue().getAllFlags() + & AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY)); } private void verifyStopVibrate() { @@ -761,11 +764,7 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase { mService.buzzBeepBlinkLocked(r); - VibrationEffect effect = VibrationEffect.createWaveform(r.getVibration(), -1); - - verify(mVibrator, timeout(MAX_VIBRATION_DELAY).times(1)).vibrate(anyInt(), anyString(), - eq(effect), anyString(), - (AudioAttributes) anyObject()); + verifyDelayedVibrate(r.getVibration()); assertTrue(r.isInterruptive()); assertNotEquals(-1, r.getLastAudiblyAlertedMs()); } @@ -800,8 +799,8 @@ public class BuzzBeepBlinkTest extends UiServiceTestCase { mService.buzzBeepBlinkLocked(r); - verify(mVibrator, timeout(MAX_VIBRATION_DELAY).times(1)).vibrate(anyInt(), anyString(), - eq(FALLBACK_VIBRATION), anyString(), (AudioAttributes) anyObject()); + verifyDelayedVibrate( + mService.getVibratorHelper().createFallbackVibration(/* insistent= */ false)); verify(mRingtonePlayer, never()).playAsync (anyObject(), anyObject(), anyBoolean(), anyObject()); assertTrue(r.isInterruptive()); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationComparatorTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationComparatorTest.java index 6a8f602a8350..5eed30be9279 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationComparatorTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationComparatorTest.java @@ -37,6 +37,7 @@ import android.content.pm.PackageManager; import android.graphics.Color; import android.os.Build; import android.os.UserHandle; +import android.os.Vibrator; import android.provider.Settings; import android.service.notification.StatusBarNotification; import android.telecom.TelecomManager; @@ -63,6 +64,7 @@ public class NotificationComparatorTest extends UiServiceTestCase { @Mock TelecomManager mTm; @Mock RankingHandler handler; @Mock PackageManager mPm; + @Mock Vibrator mVibrator; private final String callPkg = "com.android.server.notification"; private final int callUid = 10; @@ -98,6 +100,7 @@ public class NotificationComparatorTest extends UiServiceTestCase { when(mContext.getContentResolver()).thenReturn(getContext().getContentResolver()); when(mContext.getPackageManager()).thenReturn(mPm); when(mContext.getSystemService(eq(Context.TELECOM_SERVICE))).thenReturn(mTm); + when(mContext.getSystemService(Vibrator.class)).thenReturn(mVibrator); when(mContext.getString(anyInt())).thenCallRealMethod(); when(mContext.getColor(anyInt())).thenCallRealMethod(); when(mTm.getDefaultDialerPackage()).thenReturn(callPkg); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index c33287c57377..c480258c7fd9 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -7223,6 +7223,47 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mNotificationRecordLogger.event(0)); } + /** + * When something is bubble'd and the bubble is dismissed, but the notification is still + * visible, clicking on the notification shouldn't auto-cancel it because clicking on + * it will produce a bubble. + */ + @Test + public void testNotificationBubbles_bubbleStays_whenClicked_afterBubbleDismissed() + throws Exception { + setUpPrefsForBubbles(PKG, mUid, + true /* global */, + BUBBLE_PREFERENCE_ALL /* app */, + true /* channel */); + + // GIVEN a notification that has the auto cancels flag (cancel on click) and is a bubble + final NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel); + nr.getSbn().getNotification().flags |= FLAG_BUBBLE | FLAG_AUTO_CANCEL; + nr.setAllowBubble(true); + mService.addNotification(nr); + + // And the bubble is dismissed + mService.mNotificationDelegate.onNotificationBubbleChanged(nr.getKey(), + false /* isBubble */, 0 /* bubbleFlags */); + waitForIdle(); + assertTrue(nr.isFlagBubbleRemoved()); + + // WHEN we click the notification + final NotificationVisibility nv = NotificationVisibility.obtain(nr.getKey(), 1, 2, true); + mService.mNotificationDelegate.onNotificationClick(mUid, Binder.getCallingPid(), + nr.getKey(), nv); + waitForIdle(); + + // THEN the bubble should still exist + StatusBarNotification[] notifsAfter = mBinderService.getActiveNotifications(PKG); + assertEquals(1, notifsAfter.length); + + // Check we got the click log + assertEquals(1, mNotificationRecordLogger.numCalls()); + assertEquals(NotificationRecordLogger.NotificationEvent.NOTIFICATION_CLICKED, + mNotificationRecordLogger.event(0)); + } + @Test public void testLoadDefaultApprovedServices_emptyResources() { TestableResources tr = mContext.getOrCreateTestableResources(); @@ -7770,8 +7811,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { inOrder.verify(child).recordDismissalSentiment(anyInt()); } - // TODO (b/171418004): renable after app outreach - /*@Test + @Test public void testImmutableBubbleIntent() throws Exception { when(mAmi.getPendingIntentFlags(pi1)) .thenReturn(FLAG_IMMUTABLE | FLAG_ONE_SHOT); @@ -7786,7 +7826,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } catch (IllegalArgumentException e) { // good } - }*/ + } @Test public void testMutableBubbleIntent() throws Exception { 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 38c470da5029..49b63863fec7 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordTest.java @@ -62,6 +62,7 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.UserHandle; +import android.os.Vibrator; import android.provider.Settings; import android.service.notification.Adjustment; import android.service.notification.StatusBarNotification; @@ -82,7 +83,6 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.ArrayList; -import java.util.Arrays; @SmallTest @RunWith(AndroidJUnit4.class) @@ -91,6 +91,7 @@ public class NotificationRecordTest extends UiServiceTestCase { private final Context mMockContext = mock(Context.class); @Mock private PackageManager mPm; @Mock private ContentResolver mContentResolver; + @Mock private Vibrator mVibrator; private final String mPkg = PKG_O; private final int uid = 9583; @@ -122,6 +123,7 @@ public class NotificationRecordTest extends UiServiceTestCase { public void setUp() { MockitoAnnotations.initMocks(this); + when(mMockContext.getSystemService(eq(Vibrator.class))).thenReturn(mVibrator); when(mMockContext.getResources()).thenReturn(getContext().getResources()); when(mMockContext.getPackageManager()).thenReturn(mPm); when(mMockContext.getContentResolver()).thenReturn(mContentResolver); @@ -203,6 +205,26 @@ public class NotificationRecordTest extends UiServiceTestCase { return new StatusBarNotification(mPkg, mPkg, id1, tag1, uid, uid, n, mUser, null, uid); } + + private StatusBarNotification getInsistentNotification(boolean defaultVibration) { + final Builder builder = new Builder(mMockContext) + .setContentTitle("foo") + .setSmallIcon(android.R.drawable.sym_def_app_icon) + .setPriority(Notification.PRIORITY_HIGH); + int defaults = 0; + if (defaultVibration) { + defaults |= Notification.DEFAULT_VIBRATE; + } else { + builder.setVibrate(CUSTOM_VIBRATION); + channel.setVibrationPattern(CUSTOM_CHANNEL_VIBRATION); + } + builder.setDefaults(defaults); + builder.setFlag(Notification.FLAG_INSISTENT, true); + + Notification n = builder.build(); + return new StatusBarNotification(mPkg, mPkg, id1, tag1, uid, uid, n, mUser, null, uid); + } + private StatusBarNotification getMessagingStyleNotification() { return getMessagingStyleNotification(mPkg); } @@ -309,7 +331,8 @@ public class NotificationRecordTest extends UiServiceTestCase { false /* lights */, false /* defaultLights */, null /* group */); NotificationRecord record = new NotificationRecord(mMockContext, sbn, defaultChannel); - assertEquals(CUSTOM_VIBRATION, record.getVibration()); + assertEquals(VibratorHelper.createWaveformVibration( + CUSTOM_VIBRATION, /* insistent= */ false), record.getVibration()); } @Test @@ -322,7 +345,8 @@ public class NotificationRecordTest extends UiServiceTestCase { false /* lights */, false /* defaultLights */, null /* group */); NotificationRecord record = new NotificationRecord(mMockContext, sbn, defaultChannel); - assertTrue(!Arrays.equals(CUSTOM_VIBRATION, record.getVibration())); + assertNotEquals(VibratorHelper.createWaveformVibration( + CUSTOM_VIBRATION, /* insistent= */ false), record.getVibration()); } @Test @@ -334,7 +358,18 @@ public class NotificationRecordTest extends UiServiceTestCase { false /* lights */, false /* defaultLights */, null /* group */); NotificationRecord record = new NotificationRecord(mMockContext, sbn, channel); - assertEquals(CUSTOM_CHANNEL_VIBRATION, record.getVibration()); + assertEquals(VibratorHelper.createWaveformVibration( + CUSTOM_CHANNEL_VIBRATION, /* insistent= */ false), record.getVibration()); + } + + @Test + public void testVibration_insistent_createsInsistentVibrationEffect() { + channel.enableVibration(true); + StatusBarNotification sbn = getInsistentNotification(false /* defaultBuzz */); + + NotificationRecord record = new NotificationRecord(mMockContext, sbn, channel); + assertEquals(VibratorHelper.createWaveformVibration( + CUSTOM_CHANNEL_VIBRATION, /* insistent= */ true), record.getVibration()); } @Test diff --git a/services/tests/uiservicestests/src/com/android/server/notification/RankingHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/RankingHelperTest.java index b83f9f266ad7..4217881495b1 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/RankingHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/RankingHelperTest.java @@ -41,6 +41,7 @@ import android.media.AudioAttributes; import android.net.Uri; import android.os.Build; import android.os.UserHandle; +import android.os.Vibrator; import android.service.notification.StatusBarNotification; import android.test.suitebuilder.annotation.SmallTest; import android.testing.TestableContentResolver; @@ -84,6 +85,7 @@ public class RankingHelperTest extends UiServiceTestCase { @Mock Context mContext; @Mock ZenModeHelper mMockZenModeHelper; @Mock RankingConfig mConfig; + @Mock Vibrator mVibrator; private NotificationManager.Policy mTestNotificationPolicy; private Notification mNotiGroupGSortA; @@ -125,6 +127,7 @@ public class RankingHelperTest extends UiServiceTestCase { InstrumentationRegistry.getContext().getContentResolver()); when(mContext.getPackageManager()).thenReturn(mPm); when(mContext.getApplicationInfo()).thenReturn(legacy); + when(mContext.getSystemService(Vibrator.class)).thenReturn(mVibrator); TestableContentResolver contentResolver = getContext().getContentResolver(); contentResolver.setFallbackToExisting(false); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/VibratorHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/VibratorHelperTest.java new file mode 100644 index 000000000000..c77a474e032c --- /dev/null +++ b/services/tests/uiservicestests/src/com/android/server/notification/VibratorHelperTest.java @@ -0,0 +1,111 @@ +/* + * 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.notification; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNull; +import static junit.framework.Assert.assertTrue; + +import static org.mockito.Mockito.when; + +import android.os.VibrationEffect; +import android.os.Vibrator; +import android.test.suitebuilder.annotation.SmallTest; + +import androidx.test.runner.AndroidJUnit4; + +import com.android.server.UiServiceTestCase; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +@SmallTest +@RunWith(AndroidJUnit4.class) +public class VibratorHelperTest extends UiServiceTestCase { + + private static final long[] CUSTOM_PATTERN = new long[] { 100, 200, 300, 400 }; + + @Mock private Vibrator mVibrator; + + VibratorHelper mVibratorHelper; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + getContext().addMockSystemService(Vibrator.class, mVibrator); + + mVibratorHelper = new VibratorHelper(getContext()); + } + + @Test + public void createWaveformVibration_insistent_createsRepeatingVibration() { + assertRepeatingVibration( + VibratorHelper.createWaveformVibration(CUSTOM_PATTERN, /* insistent= */ true)); + } + + @Test + public void createWaveformVibration_nonInsistent_createsSingleShotVibration() { + assertSingleVibration( + VibratorHelper.createWaveformVibration(CUSTOM_PATTERN, /* insistent= */ false)); + } + + @Test + public void createWaveformVibration_invalidPattern_returnsNullAndDoesNotCrash() { + assertNull(VibratorHelper.createWaveformVibration(null, false)); + assertNull(VibratorHelper.createWaveformVibration(new long[0], false)); + assertNull(VibratorHelper.createWaveformVibration(new long[] { 0, 0 }, false)); + } + + @Test + public void createVibration_insistent_createsRepeatingVibration() { + when(mVibrator.hasFrequencyControl()).thenReturn(false); + assertRepeatingVibration(mVibratorHelper.createDefaultVibration(/* insistent= */ true)); + assertRepeatingVibration(mVibratorHelper.createFallbackVibration(/* insistent= */ true)); + + when(mVibrator.hasFrequencyControl()).thenReturn(true); + assertRepeatingVibration(mVibratorHelper.createDefaultVibration(/* insistent= */ true)); + assertRepeatingVibration(mVibratorHelper.createFallbackVibration(/* insistent= */ true)); + } + + @Test + public void createVibration_nonInsistent_createsSingleShotVibration() { + when(mVibrator.hasFrequencyControl()).thenReturn(false); + assertSingleVibration(mVibratorHelper.createDefaultVibration(/* insistent= */ false)); + assertSingleVibration(mVibratorHelper.createFallbackVibration(/* insistent= */ false)); + + when(mVibrator.hasFrequencyControl()).thenReturn(true); + assertSingleVibration(mVibratorHelper.createDefaultVibration(/* insistent= */ false)); + assertSingleVibration(mVibratorHelper.createFallbackVibration(/* insistent= */ false)); + } + + private void assertRepeatingVibration(VibrationEffect effect) { + assertTrue(getRepeatIndex(effect) >= 0); + } + + private void assertSingleVibration(VibrationEffect effect) { + assertEquals(-1, getRepeatIndex(effect)); + } + + private static int getRepeatIndex(VibrationEffect effect) { + assertTrue("Unknown vibration effect " + effect, + effect instanceof VibrationEffect.Composed); + return ((VibrationEffect.Composed) effect).getRepeatIndex(); + } +} 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 349270ff708a..beff3862df01 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityMetricsLaunchObserverTests.java @@ -306,7 +306,8 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { private void notifyActivityLaunching(Intent intent) { final ActivityMetricsLogger.LaunchingState previousState = mLaunchingState; mLaunchingState = mActivityMetricsLogger.notifyActivityLaunching(intent, - mLaunchTopByTrampoline ? mTrampolineActivity : null /* caller */); + mLaunchTopByTrampoline ? mTrampolineActivity : null /* caller */, + mLaunchTopByTrampoline ? mTrampolineActivity.getUid() : 0); if (mLaunchTopByTrampoline) { // The transition of TrampolineActivity has not been completed, so when the next // activity is starting from it, the same launching state should be returned. @@ -429,7 +430,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { .setCreateTask(true) .build(); mActivityMetricsLogger.notifyActivityLaunching(activityOnNewTask.intent, - mTrampolineActivity /* caller */); + mTrampolineActivity /* caller */, mTrampolineActivity.getUid()); notifyActivityLaunched(START_SUCCESS, activityOnNewTask); transitToDrawnAndVerifyOnLaunchFinished(activityOnNewTask); @@ -453,7 +454,7 @@ public class ActivityMetricsLaunchObserverTests extends WindowTestsBase { // Before TopActivity is drawn, it launches another activity on a different display. mActivityMetricsLogger.notifyActivityLaunching(activityOnNewDisplay.intent, - mTopActivity /* caller */); + mTopActivity /* caller */, mTopActivity.getUid()); notifyActivityLaunched(START_SUCCESS, activityOnNewDisplay); // There should be 2 events instead of coalescing as one event. diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 6b7fc2fb4b7d..8fb805b543e2 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -4346,7 +4346,7 @@ public class CarrierConfigManager { "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.deferred\"", "+g.gsma.rcs.cpm.pager-large", "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.session\"", - "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.session\"", + "+g.3gpp.icsi-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.oma.cpm.filetransfer\"", "+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.fthttp\"", "+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-application.ims.iari.rcs.ftsms\"", "+g.3gpp.iari-ref=\"urn%3Aurn-7%3A3gpp-service.ims.icsi.gsma.callcomposer\"", |