diff options
537 files changed, 7675 insertions, 8729 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 717a2acb4b4a..0afef8e4dbec 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -4734,6 +4734,7 @@ public final class ActivityThread extends ClientTransactionHandler } private void reportSplashscreenViewShown(IBinder token, SplashScreenView view) { + Trace.instant(Trace.TRACE_TAG_VIEW, "reportSplashscreenViewShown"); ActivityClient.getInstance().reportSplashScreenAttached(token); synchronized (this) { if (mSplashScreenGlobal != null) { @@ -4751,10 +4752,32 @@ public final class ActivityThread extends ClientTransactionHandler final SurfaceControl.Transaction transaction = new SurfaceControl.Transaction(); transaction.hide(startingWindowLeash); - decorView.getViewRootImpl().applyTransactionOnDraw(transaction); view.syncTransferSurfaceOnDraw(); - // Tell server we can remove the starting window - decorView.postOnAnimation(() -> reportSplashscreenViewShown(token, view)); + + if (com.android.window.flags.Flags.useRtFrameCallbackForSplashScreenTransfer() + && decorView.isHardwareAccelerated()) { + decorView.getViewRootImpl().registerRtFrameCallback( + new HardwareRenderer.FrameDrawingCallback() { + @Override + public void onFrameDraw(long frame) { } + @Override + public HardwareRenderer.FrameCommitCallback onFrameDraw( + int syncResult, long frame) { + return didProduceBuffer -> { + Trace.instant(Trace.TRACE_TAG_VIEW, "transferSplashscreenView"); + transaction.apply(); + // Tell server we can remove the starting window after frame commit. + decorView.postOnAnimation(() -> + reportSplashscreenViewShown(token, view)); + }; + } + }); + } else { + Trace.instant(Trace.TRACE_TAG_VIEW, "transferSplashscreenView_software"); + decorView.getViewRootImpl().applyTransactionOnDraw(transaction); + // Tell server we can remove the starting window after frame commit. + decorView.postOnAnimation(() -> reportSplashscreenViewShown(token, view)); + } } /** diff --git a/core/java/android/app/ApplicationStartInfo.java b/core/java/android/app/ApplicationStartInfo.java index f34341fd14e1..3214bd8f01fc 100644 --- a/core/java/android/app/ApplicationStartInfo.java +++ b/core/java/android/app/ApplicationStartInfo.java @@ -729,6 +729,7 @@ public final class ApplicationStartInfo implements Parcelable { return 0; } + // LINT.IfChange(write_parcel) @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(mStartupState); @@ -753,6 +754,7 @@ public final class ApplicationStartInfo implements Parcelable { dest.writeLong(mMonoticCreationTimeMs); dest.writeInt(mStartComponent); } + // LINT.ThenChange(:read_parcel) /** @hide */ public ApplicationStartInfo(long monotonicCreationTimeMs) { @@ -779,6 +781,7 @@ public final class ApplicationStartInfo implements Parcelable { } /** @hide */ + // LINT.IfChange(read_parcel) @VisibleForTesting public ApplicationStartInfo(@NonNull Parcel in) { mStartupState = in.readInt(); @@ -803,6 +806,7 @@ public final class ApplicationStartInfo implements Parcelable { mMonoticCreationTimeMs = in.readLong(); mStartComponent = in.readInt(); } + // LINT.ThenChange(:write_parcel) private static String intern(@Nullable String source) { return source != null ? source.intern() : null; @@ -835,6 +839,7 @@ public final class ApplicationStartInfo implements Parcelable { * @param fieldId Field Id of the ApplicationStartInfo as defined in the parent message * @hide */ + // LINT.IfChange(write_proto) public void writeToProto(ProtoOutputStream proto, long fieldId) throws IOException { final long token = proto.start(fieldId); proto.write(ApplicationStartInfoProto.PID, mPid); @@ -884,6 +889,7 @@ public final class ApplicationStartInfo implements Parcelable { proto.write(ApplicationStartInfoProto.START_COMPONENT, mStartComponent); proto.end(token); } + // LINT.ThenChange(:read_proto) /** * Read from a protocol buffer input stream. Protocol buffer message definition at {@link @@ -893,6 +899,7 @@ public final class ApplicationStartInfo implements Parcelable { * @param fieldId Field Id of the ApplicationStartInfo as defined in the parent message * @hide */ + // LINT.IfChange(read_proto) public void readFromProto(ProtoInputStream proto, long fieldId) throws IOException, WireTypeMismatchException, ClassNotFoundException { final long token = proto.start(fieldId); @@ -976,6 +983,7 @@ public final class ApplicationStartInfo implements Parcelable { } proto.end(token); } + // LINT.ThenChange(:write_proto) /** @hide */ public void dump(@NonNull PrintWriter pw, @Nullable String prefix, @Nullable String seqSuffix, diff --git a/core/java/android/os/TEST_MAPPING b/core/java/android/os/TEST_MAPPING index effe5554aff4..48fa0c8277df 100644 --- a/core/java/android/os/TEST_MAPPING +++ b/core/java/android/os/TEST_MAPPING @@ -112,6 +112,32 @@ { "file_patterns": ["Bugreport[^/]*\\.java"], "name": "ShellTests" + }, + { + "file_patterns": [ + "CpuHeadroom[^/]*", + "GpuHeadroom[^/]*", + "health/SystemHealthManager\\.java" + ], + "name": "CtsOsTestCases", + "options": [ + {"include-filter": "android.os.health.cts.HeadroomTest"}, + {"exclude-annotation": "androidx.test.filters.FlakyTest"}, + {"exclude-annotation": "org.junit.Ignore"} + ] + }, + { + "file_patterns": [ + "CpuHeadroom[^/]*", + "GpuHeadroom[^/]*", + "health/SystemHealthManager\\.java" + ], + "name": "FrameworksCoreTests", + "options": [ + {"include-filter": "android.os.SystemHealthManagerUnitTest"}, + {"exclude-annotation": "androidx.test.filters.FlakyTest"}, + {"exclude-annotation": "org.junit.Ignore"} + ] } ], "ravenwood-presubmit": [ diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 990b099d616e..eeb56d4d6c05 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -325,6 +325,7 @@ public abstract class WallpaperService extends Service { IWindowSession mSession; final Object mLock = new Object(); + private final Object mSurfaceReleaseLock = new Object(); boolean mOffsetMessageEnqueued; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) @@ -1075,9 +1076,11 @@ public abstract class WallpaperService extends Service { animator.setDuration(DIMMING_ANIMATION_DURATION_MS); animator.addUpdateListener((ValueAnimator va) -> { final float dimValue = (float) va.getAnimatedValue(); - if (mBbqSurfaceControl != null) { - surfaceControlTransaction - .setAlpha(mBbqSurfaceControl, 1 - dimValue).apply(); + synchronized (mSurfaceReleaseLock) { + if (mBbqSurfaceControl != null && mBbqSurfaceControl.isValid()) { + surfaceControlTransaction + .setAlpha(mBbqSurfaceControl, 1 - dimValue).apply(); + } } }); animator.addListener(new AnimatorListenerAdapter() { @@ -2356,35 +2359,39 @@ public abstract class WallpaperService extends Service { if (DEBUG) Log.v(TAG, "onDestroy(): " + this); onDestroy(); - if (mCreated) { - try { - if (DEBUG) Log.v(TAG, "Removing window and destroying surface " - + mSurfaceHolder.getSurface() + " of: " + this); + synchronized (mSurfaceReleaseLock) { + if (mCreated) { + try { + if (DEBUG) { + Log.v(TAG, "Removing window and destroying surface " + + mSurfaceHolder.getSurface() + " of: " + this); + } - if (mInputEventReceiver != null) { - mInputEventReceiver.dispose(); - mInputEventReceiver = null; - } + if (mInputEventReceiver != null) { + mInputEventReceiver.dispose(); + mInputEventReceiver = null; + } - mSession.remove(mWindow.asBinder()); - } catch (RemoteException e) { - } - mSurfaceHolder.mSurface.release(); - if (mBlastBufferQueue != null) { - mBlastBufferQueue.destroy(); - mBlastBufferQueue = null; - } - if (mBbqSurfaceControl != null) { - new SurfaceControl.Transaction().remove(mBbqSurfaceControl).apply(); - mBbqSurfaceControl = null; + mSession.remove(mWindow.asBinder()); + } catch (RemoteException e) { + } + mSurfaceHolder.mSurface.release(); + if (mBlastBufferQueue != null) { + mBlastBufferQueue.destroy(); + mBlastBufferQueue = null; + } + if (mBbqSurfaceControl != null) { + new SurfaceControl.Transaction().remove(mBbqSurfaceControl).apply(); + mBbqSurfaceControl = null; + } + mCreated = false; } - mCreated = false; - } - if (mSurfaceControl != null) { - mSurfaceControl.release(); - mSurfaceControl = null; - mRelayoutResult = null; + if (mSurfaceControl != null) { + mSurfaceControl.release(); + mSurfaceControl = null; + mRelayoutResult = null; + } } } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 36671b901a6b..a657acd261d4 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -134,7 +134,6 @@ import static com.android.text.flags.Flags.disableHandwritingInitiatorForIme; import static com.android.window.flags.Flags.enableBufferTransformHintFromDisplay; import static com.android.window.flags.Flags.predictiveBackSwipeEdgeNoneApi; import static com.android.window.flags.Flags.setScPropertiesInClient; -import static com.android.window.flags.Flags.systemUiImmersiveConfirmationDialog; import android.Manifest; import android.accessibilityservice.AccessibilityService; @@ -377,16 +376,6 @@ public final class ViewRootImpl implements ViewParent, SystemProperties.getBoolean("persist.wm.debug.client_transient", false); /** - * Whether the client (system UI) is handling the immersive confirmation window. If - * {@link CLIENT_TRANSIENT} is set to true, the immersive confirmation window will always be the - * client instance and this flag will be ignored. Otherwise, the immersive confirmation window - * can be switched freely by this flag. - * @hide - */ - public static final boolean CLIENT_IMMERSIVE_CONFIRMATION = - systemUiImmersiveConfirmationDialog(); - - /** * Set this system property to true to force the view hierarchy to render * at 60 Hz. This can be used to measure the potential framerate. */ diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java index 25bd713d9191..a5da0c3ce5b1 100644 --- a/core/java/android/view/WindowManagerGlobal.java +++ b/core/java/android/view/WindowManagerGlobal.java @@ -50,6 +50,7 @@ import android.window.TrustedPresentationThresholds; import com.android.internal.R; import com.android.internal.annotations.GuardedBy; +import com.android.internal.policy.PhoneWindow; import com.android.internal.util.FastPrintWriter; import java.io.FileDescriptor; @@ -375,7 +376,8 @@ public final class WindowManagerGlobal { if (context != null && wparams.type > LAST_APPLICATION_WINDOW) { final TypedArray styles = context.obtainStyledAttributes(R.styleable.Window); - if (styles.getBoolean(R.styleable.Window_windowOptOutEdgeToEdgeEnforcement, false)) { + if (PhoneWindow.isOptingOutEdgeToEdgeEnforcement( + context.getApplicationInfo(), true /* local */, styles)) { wparams.privateFlags |= PRIVATE_FLAG_OPT_OUT_EDGE_TO_EDGE; } styles.recycle(); diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig index 409c3cd569ab..c2e305d72dd0 100644 --- a/core/java/android/window/flags/windowing_frontend.aconfig +++ b/core/java/android/window/flags/windowing_frontend.aconfig @@ -257,14 +257,6 @@ flag { } flag { - name: "system_ui_immersive_confirmation_dialog" - namespace: "windowing_frontend" - description: "Enable the implementation of the immersive confirmation dialog on system UI side by default" - bug: "359713629" - is_fixed_read_only: true -} - -flag { name: "ensure_wallpaper_in_transitions" namespace: "windowing_frontend" description: "Ensure that wallpaper window tokens are always present/available for collection in transitions" @@ -426,6 +418,17 @@ flag { } flag { + name: "use_rt_frame_callback_for_splash_screen_transfer" + namespace: "windowing_frontend" + description: "report SplashscreenView shown after RtFrame commit" + is_fixed_read_only: true + bug: "387231234" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { name: "port_window_size_animation" namespace: "windowing_frontend" description: "Port window-resize animation from legacy to shell" @@ -433,6 +436,13 @@ flag { } flag { + name: "aod_transition" + namespace: "windowing_frontend" + description: "Support to show lock wallpaper in aod state" + bug: "361438779" +} + +flag { name: "check_disabled_snapshots_in_task_persister" namespace: "windowing_frontend" description: "Check for TaskSnapshots disabling in TaskSnapshotPersister." @@ -440,4 +450,4 @@ flag { metadata { purpose: PURPOSE_BUGFIX } -} +}
\ No newline at end of file diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java index e0529b339d4a..6c00921ebb7b 100644 --- a/core/java/com/android/internal/policy/PhoneWindow.java +++ b/core/java/com/android/internal/policy/PhoneWindow.java @@ -184,6 +184,14 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { private static final long ENFORCE_EDGE_TO_EDGE = 309578419; /** + * Disable opting out the edge-to-edge enforcement. + * {@link Build.VERSION_CODES#BAKLAVA} or above. + */ + @ChangeId + @EnabledSince(targetSdkVersion = Build.VERSION_CODES.BAKLAVA) + private static final long DISABLE_OPT_OUT_EDGE_TO_EDGE = 377864165; + + /** * Override the layout in display cutout mode behavior. This will only apply if the edge to edge * is not enforced. */ @@ -450,7 +458,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { */ public static boolean isEdgeToEdgeEnforced(ApplicationInfo info, boolean local, TypedArray windowStyle) { - return !windowStyle.getBoolean(R.styleable.Window_windowOptOutEdgeToEdgeEnforcement, false) + return !isOptingOutEdgeToEdgeEnforcement(info, local, windowStyle) && (info.targetSdkVersion >= ENFORCE_EDGE_TO_EDGE_SDK_VERSION || (Flags.enforceEdgeToEdge() && (local // Calling this doesn't require a permission. @@ -459,6 +467,29 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { : info.isChangeEnabled(ENFORCE_EDGE_TO_EDGE)))); } + /** + * Returns whether the given application is opting out edge-to-edge enforcement. + * + * @param info The application to query. + * @param local Whether this is called from the process of the given application. + * @param windowStyle The style of the window. + * @return {@code true} if the edge-to-edge enforcement is opting out. Otherwise, {@code false}. + */ + public static boolean isOptingOutEdgeToEdgeEnforcement(ApplicationInfo info, boolean local, + TypedArray windowStyle) { + final boolean disabled = Flags.disableOptOutEdgeToEdge() + // TODO (b/377864165): Don't exclude system apps after they are ready. + && !info.isSystemApp() + && (local + // Calling this doesn't require a permission. + ? CompatChanges.isChangeEnabled(DISABLE_OPT_OUT_EDGE_TO_EDGE) + // Calling this requires permissions. + : info.isChangeEnabled(DISABLE_OPT_OUT_EDGE_TO_EDGE)); + return !disabled && windowStyle.getBoolean( + R.styleable.Window_windowOptOutEdgeToEdgeEnforcement, false /* default */); + + } + @Override public final void setContainer(Window container) { super.setContainer(container); @@ -2486,6 +2517,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { TypedArray a = getWindowStyle(); WindowManager.LayoutParams params = getAttributes(); + ApplicationInfo appInfo = getContext().getApplicationInfo(); if (false) { System.out.println("From style:"); @@ -2497,8 +2529,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { System.out.println(s); } - mEdgeToEdgeEnforced = isEdgeToEdgeEnforced( - getContext().getApplicationInfo(), true /* local */, a); + mEdgeToEdgeEnforced = isEdgeToEdgeEnforced(appInfo, true /* local */, a); if (mEdgeToEdgeEnforced) { getAttributes().privateFlags |= PRIVATE_FLAG_EDGE_TO_EDGE_ENFORCED; mDecorFitsSystemWindows = false; @@ -2507,8 +2538,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { // mNavigationBarColor is not reset here because it might be used to draw the scrim. } if (CompatChanges.isChangeEnabled(OVERRIDE_LAYOUT_IN_DISPLAY_CUTOUT_MODE) - && !a.getBoolean(R.styleable.Window_windowOptOutEdgeToEdgeEnforcement, - false /* defValue */)) { + && !isOptingOutEdgeToEdgeEnforcement(appInfo, true /* local */, a)) { getAttributes().privateFlags |= PRIVATE_FLAG_OVERRIDE_LAYOUT_IN_DISPLAY_CUTOUT_MODE; } diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 1578bc23dfe8..59414771c36c 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Kan nie selnetwerk bereik nie"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Probeer die voorkeurnetwerk verander. Tik om te verander."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Noodoproepe is onbeskikbaar"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Moenie weer wys nie"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Noodoproepe vereis ’n selnetwerk."</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Opletberigte"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Oproepaanstuur"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Netwerkwaarskuwings"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Netwerk is beskikbaar"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Tyd en tydsones"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Opletberigte van jou IT-admin af"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Opletberigte"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Kleinhandeldemonstrasie"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App loop tans"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Programme wat batterykrag gebruik"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Vergroting"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Gehoortoestel"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Toeganklikheidgebruik"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Skerm"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> gebruik tans batterykrag"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Laai app af"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nuwe SIM is ingesit"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tik om dit op te stel"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Jou tydsone het verander"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Jy is nou in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Stel tyd"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Stel datum"</string> <string name="date_time_set" msgid="4603445265164486816">"Stel"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Eenhandmodus"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra donker"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Gehoortoestelle"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ontkoppel"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Gekoppel"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktief"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Laai tans"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Het volumesleutels ingehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aangeskakel."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Het volumesleutels ingehou. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> is afgeskakel"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Los die volumesleutels. Druk en hou albei volumesleutels weer 3 sekondes lank in om <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aan te skakel."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Die kenmerk sal oopmaak wanneer jy weer hierdie kortpad gebruik. Swiep vanaf die onderkant van jou skerm met 2 vingers op en los vinnig."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Die kenmerk sal oopmaak wanneer jy weer hierdie kortpad gebruik. Swiep vanaf die onderkant van jou skerm met 3 vingers op en los vinnig."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Vergroting"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Skakel oor na foonmikrofoon?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Skakel oor na gehoortoestelmikrofoon?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Vir beter klank of as jou gehoortoestel se battery laag is. Dit skakel net jou mikrofoon tydens die oproep oor."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Jy kan jou gehoortoestel en mikrofoon vir handvrye oproepe gebruik. Dit skakel net jou mikrofoon tydens die oproep oor."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Skakel oor"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Instellings"</string> <string name="user_switched" msgid="7249833311585228097">"Huidige gebruiker <xliff:g id="NAME">%1$s</xliff:g> ."</string> <string name="user_switching_message" msgid="1912993630661332336">"Skakel tans oor na <xliff:g id="NAME">%1$s</xliff:g> …"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Meld <xliff:g id="NAME">%1$s</xliff:g> tans af …"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Appinhoud is weens sekuriteit van skermdeling verberg"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Outomaties aan satelliet gekoppel"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Jy kan boodskappe stuur en ontvang sonder ’n selfoon- of wi-fi-netwerk"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Gebruik satellietboodskappe?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Stuur en ontvang boodskappe sonder ’n selfoon- of wi-fi-netwerk"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Maak Boodskappe oop"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 114013007fbe..0ca5ab4a338d 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"የሞባይል አውታረ መረብን መድረስ አልተቻለም"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ተመራጭ አውታረ መረብን ለመለወጥ ይሞክሩ። ለመለወጥ መታ ያድርጉ።"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"የአደጋ ጊዜ ጥሪ አይገኝም"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"ዳግም አታሳይ"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"የአደጋ ጥሪዎች የተንቀሳቃሽ ስልክ አውታረ መረብ ያስፈልጋቸዋል"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"ማንቂያዎች"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"ጥሪ ማስተላለፍ"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"የአውታረ መረብ ማንቂያዎች"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"አውታረ መረብ ይገኛል"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"የቪፒኤን ሁኔታ"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"ጊዜ እና የሰዓት ሰቆች"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"ከእርስዎ አይቲ አስተዳዳሪ የመጡ ማንቂያዎች"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"ማንቂያዎች"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"የችርቻሮ ማሳያ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"APP እየሠራ ነው"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ባትሪ በመፍጀት ላይ ያሉ መተግበሪያዎች"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"ማጉላት"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"የመስማት ችሎታ መሣሪያ"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"የተደራሽነት አጠቃቀም"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ማሳያ"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ባትሪ እየተጠቀመ ነው"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"መተግበሪያን አውርድ"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"አዲስ ሲም ገብቷል"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ለማዋቀር መታ ያድርጉ"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"የእርስዎ የሰዓት ሰቅ ተለውጧል"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"አሁን <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) ውስጥ ነዎት"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"ጊዜ አዘጋጅ"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"ውሂብ አዘጋጅ"</string> <string name="date_time_set" msgid="4603445265164486816">"አዘጋጅ"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"የአንድ እጅ ሁነታ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ተጨማሪ ደብዛዛ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"የመስሚያ መሣሪያዎች"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ግንኙነት ተቋርጧል"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"ተገናኝቷል"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"ገቢር"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"በመጫን ላይ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> በርቷል።"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"የድምፅ ቁልፎችን ይዟል። <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ጠፍተዋል።"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"የድምጽ መጠን ቁልፎቹን ይልቀቁ። <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ን ለማብራት ሁለቱንም የድምጽ መጠን ቁልፎች በድጋሚ ለ3 ሰከንዶች ተጭነው ይያዙ።"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"በቀጣይ ጊዜ ይህን አቋራጭ ሲመለከቱ ባህሪው ይከፈታል። ከማያ ገፅዎ ታች በ2 ጣቶች ወደላይ ያንሸራትቱ እና በፍጥነት ይልቀቁ።"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"በቀጣይ ጊዜ ይህን አቋራጭ ሲመለከቱ ባህሪው ይከፈታል። ከማያ ገፅዎ ታች ወደላይ በ3 ጣቶች ያንሸራትቱ እና ወዲያው ይልቀቁ።"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ማጉላት"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ወደ ስልክ ማይክሮፎን ይቀየር?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"ወደ መስሚያ አጋዥ መሣሪያ ማይክሮፎን ይቀየር?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"የተሻለ ድምፅ ለማግኘት ወይም መስሚያ አጋዥ መሣሪያዎ ባትሪ ዝቅተኛ ከሆነ። ይህ በጥሪው ወቅት ማይክሮፎንዎን ብቻ ይቀይራል።"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"የእርስዎን መስሚያ አጋዥ መሣሪያ ማይክሮፎን ለነጻ እጅ መደወል መጠቀም ይችላሉ። ይህ በጥሪው ወቅት ማይክሮፎንዎን ብቻ ይቀይራል።"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ቀይር"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ቅንብሮች"</string> <string name="user_switched" msgid="7249833311585228097">"የአሁኑ ተጠቃሚ <xliff:g id="NAME">%1$s</xliff:g>።"</string> <string name="user_switching_message" msgid="1912993630661332336">"ወደ <xliff:g id="NAME">%1$s</xliff:g> በመቀየር ላይ…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> በማውጣት ላይ…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ለደኅንነት ሲባል የመተግበሪያ ይዘት ከማያ ገጽ ማጋራት ተደብቋል"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"ከሳተላይት ጋር በራስ-ሰር ተገናኝቷል"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"ያለ ሞባይል ወይም የWi-Fi አውታረ መረብ መልዕክቶችን መላክ እና መቀበል ይችላሉ"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"የሳተላይት መልዕክት መላላክን ይጠቀማሉ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"ያለ ሞባይል ወይም የWi-Fi አውታረ መረብ መልዕክቶችን ይላኩ እና ይቀበሉ"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"መልዕክቶች ይክፈቱ"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 02e5be1a36b1..cb765e71b801 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -91,8 +91,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"يتعذّر الوصول إلى شبكة الجوّال."</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"حاول تغيير الشبكة المفضلة. انقر لتغييرها."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"لا تتوفر إمكانية الاتصال في حالات الطوارئ."</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"عدم عرض هذا الإشعار مجددًا"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"يتطلّب إجراء مكالمات الطوارئ الاتصال بشبكة جوّال"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"التنبيهات"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"إعادة توجيه المكالمة"</string> @@ -307,6 +306,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"تنبيهات الشبكة"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"الشبكة متوفرة"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"حالة شبكة VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"الوقت والمناطق الزمنية"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"التنبيهات من مشرف تكنولوجيا المعلومات"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"التنبيهات"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"عرض توضيحي لبائع التجزئة"</string> @@ -314,6 +314,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"التطبيق قيد التشغيل"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"التطبيقات التي تستهلك البطارية"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"التكبير"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"سماعة الأذن الطبية"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"استخدام \"أدوات تسهيل الاستخدام\""</string> <string name="notification_channel_display" msgid="6905032605735615090">"الشاشة"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"يستخدم تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> البطارية"</string> @@ -1411,6 +1412,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"تنزيل التطبيق"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"تم إدخال شريحة SIM جديدة."</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"انقر لإعداده."</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"تم تغيير منطقتك الزمنية"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"أنت الآن في <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)."</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"ضبط الوقت"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"تعيين التاريخ"</string> <string name="date_time_set" msgid="4603445265164486816">"ضبط"</string> @@ -1784,14 +1787,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"وضع \"التصفح بيد واحدة\""</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"زيادة تعتيم الشاشة"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"سماعات الأذن الطبية"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"غير متّصل"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"متّصل"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"متّصل حاليًا"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"غير متاح بعد"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم تفعيل <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"تم الضغط مع الاستمرار على مفتاحَي التحكّم في مستوى الصوت. تم إيقاف <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ارفع إصبعَيك عن مفتاحَي مستوى الصوت. لتفعيل خدمة \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"، اضغط مع الاستمرار على كلا مفتاحَي مستوى الصوت مجددًا لمدة 3 ثوانٍ."</string> @@ -1802,6 +1801,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"سيتم فتح الميزة عند استخدام هذا الاختصار في المرة القادمة. مرِّر سريعًا من أسفل الشاشة إلى أعلاها باستخدام إصبعَين وارفعما بعدها بسرعة."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"سيتم فتح الميزة عند استخدام هذا الاختصار في المرة القادمة. مرِّر سريعًا من أسفل الشاشة إلى أعلاها باستخدام 3 أصابع وارفع أصابعك بعدها بسرعة."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"التكبير"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"هل المطلوب التبديل إلى ميكروفون الهاتف؟"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"هل المطلوب التبديل إلى ميكروفون سماعة الأذن الطبية؟"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"ننصحك بالتبديل إذا أردت الحصول على صوت أفضل أو عند انخفاض طاقة بطارية سماعة الأذن الطبية. يؤدي هذا الإجراء إلى تبديل الميكروفون فقط أثناء المكالمة."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"يمكنك استخدام ميكروفون سماعة الأذن الطبية لإجراء مكالمات بدون لمس الجهاز. يؤدي هذا الإجراء إلى تبديل الميكروفون فقط أثناء المكالمة."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"تبديل"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"الإعدادات"</string> <string name="user_switched" msgid="7249833311585228097">"المستخدم الحالي <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"جارٍ التبديل إلى <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"جارٍ الخروج <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2458,6 +2463,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"تم إخفاء محتوى التطبيق بعد تفعيل ميزة \"مشاركة الشاشة\" للحفاظ على أمانك"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"تم الاتصال تلقائيًا بالقمر الصناعي"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"يمكنك إرسال الرسائل واستلامها بدون شبكة الجوّال أو شبكة Wi-Fi."</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"هل تريد المراسلة عبر القمر الصناعي؟"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"يمكنك إرسال الرسائل واستلامها بدون شبكة الجوّال أو شبكة Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"فتح تطبيق \"الرسائل\""</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index 9f3b263f84a6..48895bc41000 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"ম’বাইল নেটৱৰ্কৰ লগত সংযোগ কৰিব পৰা নাই"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"পচন্দৰ নেটৱৰ্ক সলনি কৰি চেষ্টা কৰি চাওক। সলনি কৰিবলৈ টিপক।"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"জৰুৰীকালীন কল কৰাৰ সুবিধা উপলব্ধ নহয়"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"পুনৰাই নেদেখুৱাব"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"জৰুৰীকালীন কল কৰিবলৈ ম’বাইল নেটৱৰ্কৰ প্ৰয়োজন"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"সতৰ্কবাণীসমূহ"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"কল ফৰৱাৰ্ডিং"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"নেটৱৰ্ক সম্পৰ্কীয় সতৰ্কবাণী"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"নেটৱৰ্ক উপলব্ধ"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"ভিপিএনৰ স্থিতি"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"সময় আৰু সময় মণ্ডল"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"আপোনাৰ আইটি প্ৰশাসকৰ পৰা অহা সতৰ্কবাণী"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"সতৰ্কবাণীসমূহ"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"খুচুৰা ডেম\'"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"এপ্ চলি আছে"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"বেটাৰী খৰচ কৰা এপ্সমূহ"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"বিবৰ্ধন"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"শুনাৰ ডিভাইচ"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"সাধ্য সুবিধাৰ ব্যৱহাৰ"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ডিছপ্লে’"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g>এ বেটাৰী ব্যৱহাৰ কৰি আছে"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"এপ্ ডাউনল’ড কৰক"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"নতুন ছিম ভৰোৱা হৈছে"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ছেট আপ কৰিবলৈ টিপক"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"আপোনাৰ সময় মণ্ডল সলনি হৈছে"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"আপুনি এতিয়া <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g>ত (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) আছে"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"সময় ছেট কৰক"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"তাৰিখ ছেট কৰক"</string> <string name="date_time_set" msgid="4603445265164486816">"ছেট কৰক"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"এখন হাতেৰে ব্যৱহাৰ কৰাৰ ম’ড"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"অতিৰিক্তভাৱে পোহৰ কমোৱাৰ সুবিধা"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"শুনাৰ ডিভাইচ"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"সংযোগ বিচ্ছিন্ন হ’ল"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"সংযোগ কৰা হ’ল"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"সক্ৰিয় হৈ আছে"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"ল’ড হৈ আছে"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কীসমূহ ধৰি ৰাখক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অন কৰা হ\'ল।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধৰি ৰাখিছিল। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অফ কৰা হ\'ল।"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ভলিউম কী এৰি দিয়ক। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> অন কৰিবলৈ, দুয়োটা ভলিউম কী পুনৰ ৩ ছেকেণ্ডৰ বাবে টিপি হেঁচি ৰাখক।"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ইয়াৰ পাছত আপুনি এই শ্বৰ্টকাটটো ব্যৱহাৰ কৰিলে সুবিধাটো খোল খাব। আপোনাৰ স্ক্ৰীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ২ টা আঙুলিৰে ছোৱাইপ কৰি আঙুলিকেইটা দ্ৰুতভাৱে উঠাই দিয়ক।"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ইয়াৰ পাছত আপুনি এই শ্বৰ্টকাটটো ব্যৱহাৰ কৰিলে সুবিধাটো খোল খাব। আপোনাৰ স্ক্ৰীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ৩ টা আঙুলিৰে ছোৱাইপ কৰি আঙুলিকেইটা দ্ৰুতভাৱে উঠাই দিয়ক।"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"বিবৰ্ধন"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ফ’নৰ মাইকলৈ সলনি কৰিবনে?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"শ্ৰৱণ যন্ত্ৰৰ মাইকলৈ সলনি কৰিবনে?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"অধিক ভাল ধ্বনিৰ বাবে বা যদি আপোনাৰ শ্ৰৱণ যন্ত্ৰৰ বেটাৰীৰ চাৰ্জ কম থাকে। এইটোৱে কল চলি থাকোঁতে কেৱল আপোনাৰ মাইকটো সলনি কৰে।"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"আপুনি হেণ্ডছ্-ফ্ৰী কলিঙৰ বাবে আপোনাৰ শ্ৰৱণ যন্ত্ৰৰ মাইক্ৰ’ফ’ন ব্যৱহাৰ কৰিব পাৰে। এইটোৱে কল চলি থাকোঁতে কেৱল আপোনাৰ মাইকটো সলনি কৰে।"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"সলনি কৰক"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ছেটিং"</string> <string name="user_switched" msgid="7249833311585228097">"বৰ্তমানৰ ব্যৱহাৰকাৰী <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>লৈ সলনি কৰি থকা হৈছে…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>ৰ পৰা লগ আউট কৰি থকা হৈছে…"</string> @@ -2454,6 +2459,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"সুৰক্ষাৰ বাবে এপৰ সমল স্ক্ৰীণ শ্বেয়াৰ কৰাৰ পৰা লুকুৱাই ৰখা হৈছে"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"উপগ্ৰহৰ সৈতে স্বয়ংক্ৰিয়ভাৱে সংযুক্ত হৈছে"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"আপুনি ম’বাইল বা ৱাই-ফাই নেটৱৰ্কৰ জৰিয়তে পাঠ বাৰ্তা পঠিয়াব বা লাভ কৰিব পাৰে"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"আপুনি উপগ্ৰহৰ জৰিয়তে বাৰ্তা পঠিয়াব আৰু গ্ৰহণ কৰিব পাৰে আৰু সীমিত তথ্য ব্যৱহাৰ কৰিব পাৰে"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"উপগ্ৰহৰ জৰিয়তে বাৰ্তা বিনিময়ৰ সুবিধাটো ব্যৱহাৰ কৰিবনে?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"আপুনি কোনো ম’বাইল বা ৱাই-ফাই নেটৱৰ্ক নোহোৱাকৈ বাৰ্তা পঠিয়াওক আৰু লাভ কৰক"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages খোলক"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index 54062de9536b..0a4597ec589e 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobil şəbəkəyə daxil olmaq mümkün deyil"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Tərcih edilən şəbəkəni dəyişin. Dəyişmək üçün klikləyin."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Təcili zəng əlçatan deyil"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Yenidən göstərməyin"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Təcili zənglər üçün mobil şəbəkə tələb olunur"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Siqnallar"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Zəng yönləndirmə"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Şəbəkə siqnalları"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Şəbəkə əlçatandır"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN statusu"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Vaxt və saat qurşaqları"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"IT adminindən xəbərdarlıqlar"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Siqnallar"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Pərakəndə demo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Tətbiq işləyir"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Batareyadan istifadə edən tətbiqlər"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Böyütmə"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Eşitmə cihazı"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Əlçatımlılıq istifadəsi"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Displey"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> batareyadan istifadə edir"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Tətbiqi endirin"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Yeni SIM kart taxılıb"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Quraşdırmaq üçün tıklayın"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Saat qurşağınız dəyişildi"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Hazırda saat qurşağınız: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Vaxt ayarlayın"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Tarixi quraşdır"</string> <string name="date_time_set" msgid="4603445265164486816">"Ayarlayın"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Birəlli rejim"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Əlavə tündləşmə"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Eşitmə cihazları"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Bağlantı kəsildi"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Qoşuldu"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivdir"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Yüklənir"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Səs səviyyəsi düymələrinə basıb saxlayın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktiv edildi."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Səs səviyyəsi düymələrinə basılaraq saxlanıb. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> deaktiv edilib."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Səs düymələrini buraxın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> xidmətini aktiv etmək üçün hər iki səs düyməsinə yenidən 3 saniyə basıb saxlayın."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Növbəti dəfə bu qısayoldan istifadə etdiyiniz zaman funksiya açılacaq. Ekranın aşağısından 2 barmaq ilə yuxarı çəkin və tez buraxın."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Növbəti dəfə bu qısayoldan istifadə etdiyiniz zaman funksiya açılacaq. Ekranın aşağısından 3 barmaq ilə yuxarı çəkin və tez buraxın."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Böyütmə"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Telefon mikrofonuna dəyişilsin?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Eşitmə aparatı mikrofonuna dəyişdirilsin?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Daha yaxşı səs üçün və ya eşitmə aparatınızın batareyası azdırsa. Bu, yalnız zəng zamanı mikrofonu dəyişdirir."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Səsli idarəetmə ilə zəng etmək üçün eşitmə aparatı mikrofonunuzdan istifadə edə bilərsiniz. Bu, yalnız zəng zamanı mikrofonu dəyişdirir."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Dəyişin"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Ayarlar"</string> <string name="user_switched" msgid="7249833311585228097">"Cari istifadəçi <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> adına keçirilir…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> çıxır..."</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Tətbiq kontenti güvənlik məsələlərinə görə ekran paylaşımından gizlədildi"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Peykə avtomatik qoşulub"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil və ya Wi-Fi şəbəkəsi olmadan mesaj göndərə və qəbul edə bilərsiniz"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Peyk mesajlaşmasından istifadə edilsin?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Mobil və ya Wi-Fi şəbəkəsi olmadan mesajlar göndərin və qəbul edin"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Mesajı 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 69b46124cec1..5fb744ee2fa9 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Povezivanje sa mobilnom mrežom nije uspelo"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Probajte da promenite željenu mrežu. Dodirnite da biste promenili."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Hitni pozivi nisu dostupni"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ne prikazuj ponovo"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Hitni pozivi zahtevaju mobilnu mrežu"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Upozorenja"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Preusmeravanje poziva"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Obaveštenja u vezi sa mrežom"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Mreža je dostupna"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Status VPN-a"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Vreme i vremenske zone"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Obaveštenja od IT administratora"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Upozorenja"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Režim demonstracije za maloprodajne objekte"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aktivna aplikacija"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikacije koje troše bateriju"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Uvećanje"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Slušni aparat"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Korišćenje Pristupačnosti"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Ekran"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> koristi bateriju"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Preuzmite aplikaciju"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nova SIM kartica je umetnuta"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Dodirnite za podešavanje"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Vremenska zona je promenjena"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Sada ste u vremenskoj zoni <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Podesite vreme"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Podešavanje datuma"</string> <string name="date_time_set" msgid="4603445265164486816">"Podesi"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamni"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušni aparati"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Veza je prekinuta"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Povezano"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivno"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Učitava se"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tastere za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Pustite tastere za jačinu zvuka. Da biste uključili <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ponovo pritisnite i zadržite oba tastera za jačinu zvuka 3 sekunde."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija će se otvoriti kada sledeći put budete koristili ovu prečicu. Prevucite nagore od dna ekrana sa 2 prsta i brzo pustite."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija će se otvoriti kada sledeći put budete koristili ovu prečicu. Prevucite nagore od dna ekrana sa 3 prsta i brzo pustite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Uvećanje"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Želite da pređete na mikrofon telefona?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Želite da pređete na mikrofon slušnog aparata?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Za bolji zvuk ili ako je baterija slušnog aparata skoro prazna. Time se mikrofon menja samo tokom poziva."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Možete da koristite mikrofon slušnog aparata za hendsfri pozivanje. Time se mikrofon menja samo tokom poziva."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Promeni"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Podešavanja"</string> <string name="user_switched" msgid="7249833311585228097">"Aktuelni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Prebacivanje na <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Odjavljuje se <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Sadržaj aplikacije je skriven za deljenje sadržaja ekrana zbog bezbednosti"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatski povezano sa satelitom"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Možete da šaljete i primate poruke bez mobilne ili WiFi mreže"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Želite da koristite satelitsku razmenu poruka?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Šaljite i primajte poruke bez mobilne ili WiFi mreže"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvori Messages"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 9f7f823fdec0..74c0b46a8045 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -89,8 +89,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Сетка мабільнай сувязі недаступная"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Націсніце, каб выбраць іншую сетку."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Экстранныя выклікі недаступныя"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Больш не паказваць"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Для экстранных выклікаў патрабуецца мабільная сетка"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Абвесткі"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Пераадрасацыя выкліку"</string> @@ -305,6 +304,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Абвесткі сеткі"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Сетка даступная"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Стан VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Час і часавыя паясы"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Абвесткі ад IT-адміністратара"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Абвесткi"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Дэманстрацыйны рэжым для пунктаў продажу"</string> @@ -312,6 +312,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Праграма працуе"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Праграмы, якія выкарыстоўваюць акумулятар"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Павелічэнне"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Слыхавы апарат"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Выкарыстанне спецыяльных магчымасцей"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Дысплэй"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> выкарыстоўвае акумулятар"</string> @@ -1409,6 +1410,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Спампаваць праграму"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Устаўлена новая SIM-карта"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Краніце, каб наладзіць"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Ваш часавы пояс зменены"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Ваш часавы пояс: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Задаць час"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Задаць дату"</string> <string name="date_time_set" msgid="4603445265164486816">"Задаць"</string> @@ -1782,14 +1785,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Рэжым кіравання адной рукой"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дадатковае памяншэнне яркасці"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слыхавыя апараты"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Адключана"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Падключана"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Актыўная"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Ідзе загрузка"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Клавішы гучнасці ўтрымліваліся націснутымі. Уключана служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Клавішы гучнасці ўтрымліваліся націснутымі. Служба \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" выключана."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Адпусціце клавішы гучнасці. Каб уключыць сэрвіс \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\", націсніце абедзве клавішы гучнасці яшчэ раз і ўтрымлівайце іх на працягу 3 секунд."</string> @@ -1800,6 +1799,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функцыя адкрыецца, калі вы наступным разам выкарыстаеце гэты хуткі доступ. Правядзіце двума пальцамі ад нізу экрана ўверх і хутка адпусціце."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функцыя адкрыецца, калі вы наступным разам выкарыстаеце гэты хуткі доступ. Правядзіце трыма пальцамі ад нізу экрана ўверх і хутка адпусціце."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Павелічэнне"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Пераключыцца на мікрафон тэлефона?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Пераключыцца на мікрафон слыхавога апарата?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Для паляпшэння якасці гуку або пры нізкім узроўні зараду акумулятара слыхавога апарата. Будзе пераключаны толькі ваш мікрафон."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Вы можаце выкарыстоўваць мікрафон слыхавога апарата, каб размаўляць падчас званка без дапамогі рук. Будзе пераключаны толькі ваш мікрафон."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Пераключыцца"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Налады"</string> <string name="user_switched" msgid="7249833311585228097">"Бягучы карыстальнік <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Пераход у рэжым \"<xliff:g id="NAME">%1$s</xliff:g>\"..."</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> выходзіць з сістэмы…"</string> @@ -2456,6 +2461,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Змесціва праграмы выключана з абагульвання экрана ў мэтах бяспекі"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Аўтаматычна падключана да сістэм спадарожнікавай сувязі"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Вы можаце адпраўляць і атрымліваць паведамленні без доступу да мабільнай сеткі або Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Выкарыстоўваць абмен паведамленнямі па спадарожнікавай сувязі?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Вы можаце адпраўляць і атрымліваць паведамленні, калі падключэнне да мабільнай сеткі або сеткі Wi-Fi адсутнічае"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Адкрыць Паведамленні"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 1353d2287c09..b857fb52b418 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Не може да се установи връзка с мобилната мрежа"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Изберете друга предпочитана мрежа. Докоснете за промяна."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Няма достъп до спешните обаждания"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Да не се показва отново"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"За спешните обаждания се изисква мобилна мрежа"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Сигнали"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Пренасочване на обаждания"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Сигнали за мрежата"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Налице е мрежа"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Състояние на VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Час и часови зони"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Сигнали от системния ви администратор"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Сигнали"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Демонстрационен режим за магазини"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Приложението работи"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Приложения, използващи батерията"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Увеличение"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Слухов апарат"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Използване на услугите за достъпност"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Дисплей"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> използва батерията"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Изтегляне на приложението"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Поставена е нова SIM карта"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Докоснете, за да я настроите"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Часовата ви зона се промени"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Вече сте в зоната <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Задаване на часа"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Задаване на дата"</string> <string name="date_time_set" msgid="4603445265164486816">"Задаване"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Работа с една ръка"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Допълнително затъмняване"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слухови апарати"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Няма връзка"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Свързано"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Активно"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Зарежда се"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е включена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Задържахте бутоните за силата на звука. Услугата <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е изключена."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Освободете бутоните за силата на звука. За да включите <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, отново натиснете двата бутона за силата на звука и задръжте за 3 секунди."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функцията ще се отвори при следващото използване на този пряк път. Прекарайте 2 пръста нагоре от долната част на екрана и бързо освободете."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функцията ще се отвори при следващото използване на този пряк път. Прекарайте 3 пръста нагоре от долната част на екрана и бързо освободете."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Увеличение"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Да се превключи ли към микрофона на телефона?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Да се превключи ли към микрофона на слуховия апарат?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"За по-добър звук или ако батерията на слуховия ви апарат е изтощена. Микрофонът ще бъде включен само по време на обаждането."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Можете да използвате микрофона на слуховия си апарат за обаждания в режим „свободни ръце“. Микрофонът ще бъде включен само по време на обаждането."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Превключване"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Настройки"</string> <string name="user_switched" msgid="7249833311585228097">"Текущ потребител <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Превключва се към: <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> излиза…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Съдържанието на приложението е скрито от функцията за споделяне на екрана от съображения за сигурност"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Автоматично установена връзка със сателит"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Можете да изпращате и получавате съобщения без мобилна или Wi-Fi мрежа"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Да се използват ли сателитни съобщения?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Изпращайте и получавайте съобщения без мобилна или Wi-Fi мрежа"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Отваряне на Messages"</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index d74a3a375159..8da67849c84d 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"মোবাইল নেটওয়ার্কে কানেক্ট করা যাচ্ছে না"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"পছন্দের নেটওয়ার্ক পরিবর্তন করে দেখুন। অন্য নেটওয়ার্ক বেছে নিতে ট্যাপ করুন।"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"জরুরি কল করা যাবে না"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"আর দেখতে চাই না"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"জরুরি কলের জন্য মোবাইল নেটওয়ার্ক থাকতে হবে"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"সতর্কতা"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"কল ফরওয়ার্ড করা"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"নেটওয়ার্ক সক্রান্ত অ্যালার্ট"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"নেটওয়ার্ক পাওয়া যাচ্ছে"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN এর স্থিতি"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"সময় এবং টাইম জোন"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"আপনার আইটি অ্যাডমিনের সতর্কতা"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"সতর্কতা"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"খুচরা বিক্রয়ের ডেমো"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"অ্যাপ চলছে"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"কিছু অ্যাপ ব্যাটারি ব্যবহার করছে"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"বড় করে দেখা"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"হিয়ারিং ডিভাইস"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"অ্যাক্সেসিবিলিটি সংক্রান্ত ব্যবহার"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ডিসপ্লে"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপটি ব্যাটারি ব্যবহার করছে"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"অ্যাপ ডাউনলোড করুন"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"নতুন সিম ঢোকানো হয়েছে"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"এটিকে সেট-আপ করতে আলতো চাপুন"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"আপনার টাইম জোন পরিবর্তন হয়ে গেছে"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"আপনি এখন <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)-এ আছেন"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"সময় সেট করুন"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"তারিখ সেট করুন"</string> <string name="date_time_set" msgid="4603445265164486816">"সেট করুন"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"এক হাতে ব্যবহার করার মোড"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"অতিরিক্ত কম উজ্জ্বলতা"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"হিয়ারিং ডিভাইস"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ডিসকানেক্ট হয়ে গেছে"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"কানেক্ট করা হয়েছে"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"অ্যাক্টিভ"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"লোড হচ্ছে"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> চালু করা হয়েছে।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ভলিউম কী ধরে ছিলেন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> বন্ধ করা হয়েছে।"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ভলিউম \'কী\' রিলিজ করুন। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> চালু করুন, দু\'টি ভলিউম \'কী\' আবার প্রেস করে ৩ সেকেন্ড ধরে রাখুন।"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"পরের বার এই শর্টকাট ব্যবহার করলে, ফিচারটি চালু হয়ে যাবে। ২টি আঙ্গুল দিয়ে স্ক্রিনের নিচ থেকে উপরের দিকে সোয়াইপ করে দ্রুত ছেড়ে দিন।"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"পরের বার এই শর্টকাট ব্যবহার করলে, ফিচারটি চালু হয়ে যাবে। ৩টি আঙ্গুল দিয়ে স্ক্রিনের নিচ থেকে উপরের দিকে সোয়াইপ করে দ্রুত ছেড়ে দিন।"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"বড় করে দেখা"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ফোনের মাইকে পরিবর্তন করবেন?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"হিয়ারিং এড মাইকে পরিবর্তন করবেন?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"আরও ভালো সাউন্ডের জন্য অথবা আপনার হিয়ারিং এডের ব্যাটারি যদি কম থাকে। এটি শুধুমাত্র কল চলাকালীন আপনার মাইক পরিবর্তন করে।"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"হ্যান্ডস-ফ্রি কলিংয়ের জন্য আপনার হিয়ারিং এডের মাইক্রোফোন ব্যবহার করতে পারবেন। এটি শুধুমাত্র কল চলাকালীন আপনার মাইক পরিবর্তন করে।"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"পরিবর্তন করুন"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"সেটিংস"</string> <string name="user_switched" msgid="7249833311585228097">"বর্তমান ব্যবহারকারী <xliff:g id="NAME">%1$s</xliff:g>৷"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> প্রোফাইলে পাল্টানো হচ্ছে…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>কে লগ-আউট করা হচ্ছে..."</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"নিরাপত্তার জন্য স্ক্রিন শেয়ার করা থেকে লুকানো অ্যাপের কন্টেন্ট"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"স্যাটেলাইটের সাথে অটোমেটিক কানেক্ট করা হয়েছে"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"আপনি কোনও মেবাইল বা ওয়াই-ফাই নেটওয়ার্ক ছাড়াই মেসেজ পাঠাতে ও পেতে পারবেন"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"\'স্যাটেলাইট মেসেজিং\' ব্যবহার করবেন?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"কোনও মেবাইল বা ওয়াই-ফাই নেটওয়ার্ক ছাড়াই মেসেজ পাঠান ও রিসিভ করুন"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages খুলুন"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index c9168709eb08..639972915f76 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Nije moguće dosegnuti mobilnu mrežu"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Pokušajte promijeniti preferiranu mrežu. Dodirnite za promjenu."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Hitni pozivi su nedostupni"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ne prikazuj ponovo"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Za hitne pozive potrebna je mreža"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Upozorenja"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Prosljeđivanje poziva"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Mrežna upozorenja"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Mreža je dostupna"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Status VPN-a"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Vrijeme i vremenske zone"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Upozorenja od IT administratora"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Upozorenja"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Prodajna demonstracija"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Pokrenuta aplikacija"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikacije koje troše bateriju"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Uvećavanje"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Slušni aparat"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Korištenje pristupačnosti"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Ekran"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> troši bateriju"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Preuzmite aplikaciju"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nova SIM kartica je umetnuta"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Dodirnite da biste postavili"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Vremenska zona je promijenjena"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Sada ste u vremenskoj zoni <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Postavljanje vremena"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Postavljanje datuma"</string> <string name="date_time_set" msgid="4603445265164486816">"Postaviti"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatno zatamnjenje"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušni aparati"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Nije povezano"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Povezano"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivno"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Učitavanje"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je uključena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za jačinu zvuka. Usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je isključena."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Pustite tipke za jačinu zvuka. Da uključite uslugu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ponovo pritisnite i zadržite obje tipke za jačinu zvuka 3 sekunde."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija će se otvoriti sljedeći put kada upotrijebite ovu prečicu. Prevucite s 2 prsta s dna ekrana i brzo pustite."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija će se otvoriti sljedeći put kada upotrijebite ovu prečicu. Prevucite s 3 prsta s dna ekrana i brzo pustite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Uvećavanje"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Promijeniti na mikrofon telefona?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Promijeniti na mikrofon slušnog aparata?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Za bolji zvuk ili ako je baterija slušnog aparata slaba. Ovo mijenja mikrofon samo tokom poziva."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Možete koristiti mikrofon slušnog aparata za pozivanje bez dodira. Ovo mijenja mikrofon samo tokom poziva."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Promijeni"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Postavke"</string> <string name="user_switched" msgid="7249833311585228097">"Trenutni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Prebacivanje na korisnika <xliff:g id="NAME">%1$s</xliff:g>..."</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Odjava korisnika <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Sadržaj aplikacije je sakriven od dijeljenja ekrana radi sigurnosti"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatski je povezano sa satelitom"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Možete slati i primati poruke bez mobilne ili WiFi mreže"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Koristiti satelitsku razmjenu poruka?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Šaljite i primajte poruke bez mobilne ili WiFi mreže"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvorite Messages"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 5c53857c5902..49d80c25cbfc 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"No es pot accedir a la xarxa mòbil"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Prova de canviar de xarxa preferent. Toca per canviar-la."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Les trucades d\'emergència no estan disponibles"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"No ho tornis a mostrar"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Per poder fer trucades d\'emergència, cal tenir connexió de xarxa mòbil"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertes"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Desviació de trucades"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertes de xarxa"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Hi ha una xarxa disponible"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Estat de la VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Hora i zones horàries"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertes de l\'administrador de TI"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertes"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demostració per a botigues"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplicació en execució"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplicacions que consumeixen bateria"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ampliació"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Audiòfon"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Ús de les funcions d\'accessibilitat"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Pantalla"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> està consumint bateria"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Baixa l\'aplicació"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"S\'ha inserit una SIM nova"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Toca per configurar-la"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"La zona horària ha canviat"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Ara ets a <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Defineix l\'hora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Establiment de data"</string> <string name="date_time_set" msgid="4603445265164486816">"Defineix"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode d\'una mà"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuació extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Audiòfons"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconnectat"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connectat"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Actiu"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"S\'està carregant"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S\'han mantingut premudes les tecles de volum. S\'ha activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S\'han mantingut premudes les tecles de volum. S\'ha desactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Deixa anar les tecles de volum. Per activar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, torna a mantenir premudes totes dues tecles de volum durant 3 segons."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La funció s\'obrirà la pròxima vegada que utilitzis aquesta drecera. Llisca cap amunt amb 2 dits des de la part inferior de la pantalla i aixeca\'ls ràpidament."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La funció s\'obrirà la pròxima vegada que utilitzis aquesta drecera. Llisca cap amunt amb 3 dits des de la part inferior de la pantalla i aixeca\'ls ràpidament."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliació"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Vols canviar al micròfon del telèfon?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Vols canviar al micròfon de l\'audiòfon?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Per obtenir un so millor o si l\'audiòfon té poca bateria. Aquesta opció només canvia el micròfon durant la trucada."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Pots fer servir el micròfon del teu audiòfon per fer trucades amb mans lliures. Aquesta opció només canvia el micròfon durant la trucada."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Canvia"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Configuració"</string> <string name="user_switched" msgid="7249833311585228097">"Usuari actual: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"S\'està canviant a <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"S\'està tancant la sessió de l\'usuari <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Contingut de l\'aplicació amagat de la compartició de pantalla per seguretat"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"S\'ha connectat automàticament a un satèl·lit"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Pots enviar i rebre missatges sense una xarxa mòbil o Wi‑Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Vols utilitzar els missatges per satèl·lit?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Envia i rep missatges sense una xarxa mòbil o Wi‑Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Obre Missatges"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 8d595d893ead..8b45d72f9131 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -89,8 +89,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobilní síť není dostupná"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Zkuste změnit preferovanou síť. Změníte ji klepnutím."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Tísňová volání jsou nedostupná"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Už nezobrazovat"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Tísňová volání vyžadují mobilní síť"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Upozornění"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Přesměrování hovorů"</string> @@ -305,6 +304,8 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Síťová upozornění"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"K dispozici je síť"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Stav sítě VPN"</string> + <!-- no translation found for notification_channel_system_time (1660313368058030441) --> + <skip /> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Upozornění od vašeho administrátora IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Upozornění"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Prodejní ukázka"</string> @@ -312,6 +313,8 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplikace je spuštěna"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikace spotřebovávají baterii"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Zvětšení"</string> + <!-- no translation found for notification_channel_accessibility_hearing_device (7816963856388758952) --> + <skip /> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Využití přístupnosti"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Displej"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> využívá baterii"</string> @@ -1409,6 +1412,10 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Stáhnout aplikaci"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Byla vložena nová SIM karta"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Klepnutím zahájíte nastavení"</string> + <!-- no translation found for time_zone_change_notification_title (5232503069219193218) --> + <skip /> + <!-- no translation found for time_zone_change_notification_body (6135793674904665585) --> + <skip /> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Nastavit čas"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Nastavení data"</string> <string name="date_time_set" msgid="4603445265164486816">"Nastavit"</string> @@ -1782,14 +1789,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jedné ruky"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Velmi tmavé zobrazení"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Naslouchátka"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Odpojeno"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Připojeno"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivní"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Načítání"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Byla podržena tlačítka hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> byla vypnuta."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Uvolněte tlačítka hlasitosti. Pokud chcete zapnout službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, znovu tři sekundy podržte obě tlačítka hlasitosti."</string> @@ -1800,6 +1803,18 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkce se otevře při příštím použití této zkratky. Přejeďte dvěma prsty nahoru ze spodní části obrazovky a rychle je zvedněte."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkce se otevře při příštím použití této zkratky. Přejeďte třemi prsty nahoru ze spodní části obrazovky a rychle je zvedněte."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Zvětšení"</string> + <!-- no translation found for hearing_device_switch_phone_mic_notification_title (6645178038359708836) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_title (4612074852145289569) --> + <skip /> + <!-- no translation found for hearing_device_switch_phone_mic_notification_text (1332426273666077412) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_text (8288368365767284208) --> + <skip /> + <!-- no translation found for hearing_device_notification_switch_button (3619524619430941300) --> + <skip /> + <!-- no translation found for hearing_device_notification_settings_button (6673651052880279178) --> + <skip /> <string name="user_switched" msgid="7249833311585228097">"Aktuální uživatel je <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Přepínání na uživatele <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Odhlašování uživatele <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2456,6 +2471,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Obsah aplikace je z bezpečnostních důvodů při sdílení obrazovky skryt"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automaticky připojeno k satelitu"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Zprávy můžete odesílat a přijímat bez mobilní sítě nebo sítě Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Použít satelitní zprávy?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Odesílejte a přijímejte zprávy bez mobilní sítě nebo Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Otevřít Zprávy"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 66e3402c1ebf..edd910c9fe6d 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Der er ingen forbindelse til mobilnetværket"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Prøv at skifte dit foretrukne netværk. Tryk for skifte."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Det er ikke muligt at foretage nødopkald"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Vis ikke igen"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Nødopkald kræver adgang til et mobilnetværk"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Underretninger"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Viderestilling af opkald"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Netværksunderretninger"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Tilgængeligt netværk"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Klokkeslæt og tidszoner"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Underretninger fra din it-administrator"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Underretninger"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo til udstilling i butik"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Appen kører"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps, der bruger batteri"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Forstørrelse"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Høreapparat"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Brug af hjælpefunktioner"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Skærm"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> bruger batteri"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Download app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nyt SIM-kort er indsat"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tryk for at konfigurere"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Din tidszone blev ændret"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Du er nu i <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Angiv tidspunkt"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Angiv dato"</string> <string name="date_time_set" msgid="4603445265164486816">"Angiv"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhåndstilstand"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dæmpet belysning"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Høreapparater"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ikke forbundet"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Forbundet"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiv"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Indlæser"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er aktiveret."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lydstyrkeknapperne blev holdt nede. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er deaktiveret."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Slip lydstyrkeknapperne. Du kan aktivere <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ved at holde begge lydstyrkeknapper nede igen i 3 sekunder."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funktionen åbnes næste gang, du bruger denne genvej. Stryg opad fra bunden af skærmen med 2 fingre, og slip derefter hurtigt."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funktionen åbnes næste gang, du bruger denne genvej. Stryg opad fra bunden af skærmen med 3 fingre, og slip derefter hurtigt."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Forstørrelse"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Vil du skifte til telefonens mikrofon?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Vil du skifte til mikrofonen i høreapparatet?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"For at få bedre lyd, eller hvis dit høreapparat er ved at løbe tør for batteri. Der skiftes kun mikrofon under opkaldet."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Du kan bruge mikrofonen i dit høreapparat til at foretage håndfrie opkald. Der skiftes kun mikrofon under opkaldet."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Skift"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Indstillinger"</string> <string name="user_switched" msgid="7249833311585228097">"Nuværende bruger <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Skifter til <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> logges ud…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Af sikkerhedsmæssige årsager vises appindhold ikke ved skærmdeling"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Der blev automatisk oprettet forbindelse til satellit"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan sende og modtage beskeder uden et mobil- eller Wi-Fi-netværk"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Vil du bruge satellitbeskeder?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Send og modtag beskeder uden et mobil- eller Wi-Fi-netværk"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Åbn Beskeder"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 6311880bb24a..5262da98d277 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobilfunknetz nicht erreichbar"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Versuche, das bevorzugte Netzwerk zu ändern. Tippe, um ein anderes auszuwählen."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Notrufe nicht möglich"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Nicht noch einmal anzeigen"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Für Notrufe ist ein Mobilfunknetz erforderlich"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Warnmeldungen"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Anrufweiterleitung"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Netzwerkwarnungen"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Netzwerk verfügbar"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-Status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Uhrzeit und Zeitzonen"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Benachrichtigungen zu wichtigen Updates von deinem IT-Administrator"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Warnmeldungen"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo für Einzelhandel"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App wird ausgeführt"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Strom verbrauchende Apps"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Vergrößerung"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hörgerät"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Nutzung der Bedienungshilfen"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Display"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> verbraucht Strom"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"App herunterladen"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Neue SIM-Karte eingelegt"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Zum Einrichten tippen"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Die Zeitzone hat sich geändert"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Du bist jetzt in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Uhrzeit festlegen"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Datum festlegen"</string> <string name="date_time_set" msgid="4603445265164486816">"Speichern"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Einhandmodus"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradunkel"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hörgeräte"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Nicht verbunden"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Verbunden"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiv"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Wird geladen"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist aktiviert."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Lautstärketasten wurden gedrückt gehalten. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ist deaktiviert."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Lass die Lautstärketasten los. Halte zum Aktivieren von <xliff:g id="SERVICE_NAME">%1$s</xliff:g> beide Lautstärketasten noch einmal 3 Sekunden lang gedrückt."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Die Funktion wird geöffnet, wenn du diese Touch-Geste für Bedienungshilfen das nächste Mal verwendest. Wische mit 2 Fingern vom unteren Displayrand nach oben und lass dann schnell los."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Die Funktion wird geöffnet, wenn du diese Touch-Geste für Bedienungshilfen das nächste Mal verwendest. Wische mit 3 Fingern vom unteren Displayrand nach oben und lass dann schnell los."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Vergrößerung"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Zum Mikrofon des Smartphones wechseln?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Zum Mikrofon des Hörgeräts wechseln?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Zum Verbessern des Tons oder wenn der Akkustand des Hörgeräts niedrig ist. Das Mikrofon wird nur für die Dauer des Anrufs gewechselt."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Du kannst das Mikrofon deines Hörgeräts für Anrufe per Sprachbefehl verwenden. Das Mikrofon wird nur für die Dauer des Anrufs gewechselt."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Wechseln"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Einstellungen"</string> <string name="user_switched" msgid="7249833311585228097">"Aktueller Nutzer <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Wechseln zu <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> wird abgemeldet…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Aus Sicherheitsgründen werden bei der Bildschirmfreigabe App-Inhalte ausgeblendet"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatisch mit Satellit verbunden"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Du kannst Nachrichten ohne Mobilfunknetz oder WLAN senden und empfangen"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Nachrichten per Satellit verwenden?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Du kannst ohne Mobilgerät oder WLAN Nachrichten senden und empfangen"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages öffnen"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 23fc44ca9dcc..1d194f4e3b22 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Δεν είναι δυνατή η σύνδεση στο δίκτυο κινητής τηλεφωνίας"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Δοκιμάστε να αλλάξετε το προτιμώμενο δίκτυο. Πατήστε για αλλαγή."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Οι κλήσεις έκτακτης ανάγκης δεν είναι διαθέσιμες"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Να μην εμφανιστεί ξανά"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Για τις κλήσεις έκτακτης ανάγκης απαιτείται δίκτυο κινητής τηλεφωνίας"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Ειδοποιήσεις"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Προώθηση κλήσης"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Ειδοποιήσεις δικτύου"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Το δίκτυο είναι διαθέσιμο"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Κατάσταση VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Ώρα και ζώνες ώρας"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Ειδοποιήσεις από τον διαχειριστή IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Ειδοποιήσεις"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Επίδειξη λιανικής"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Η εφαρμογή εκτελείται"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Εφαρμογές που καταναλώνουν μπαταρία"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Μεγιστοποίηση"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Συσκευή ακοής"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Χρήση προσβασιμότητας"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Οθόνη"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> χρησιμοποιεί μπαταρία"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Λήψη εφαρμογής"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Τοποθετήθηκε νέα SIM"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Πατήστε για ρύθμιση"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Η ζώνη ώρας άλλαξε"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Βρίσκεστε πλέον στη ζώνη ώρας <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Ρύθμιση ώρας"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Ορισμός ημερομηνίας"</string> <string name="date_time_set" msgid="4603445265164486816">"Ορισμός"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Λειτουργία ενός χεριού"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Επιπλέον μείωση φωτεινότητας"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Συσκευές ακοής"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Αποσυνδέθηκε"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Συνδέθηκε"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Ενεργή"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Φόρτωση"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ενεργοποιήθηκε."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Τα πλήκτρα έντασης είναι πατημένα. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>: απενεργοποιημένο"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Αφήστε τα κουμπιά έντασης ήχου. Για να ενεργοποιήσετε την υπηρεσία <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, πατήστε ξανά παρατεταμένα και τα δύο κουμπιά έντασης ήχου για τρία δευτερόλεπτα."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Η λειτουργία θα ανοίξει την επόμενη φορά που θα χρησιμοποιήσετε αυτή τη συντόμευση. Σαρώστε προς τα πάνω με 2 δάχτυλα από το κάτω μέρος της οθόνης και απομακρύνετε γρήγορα τα δάχτυλά σας."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Η λειτουργία θα ανοίξει την επόμενη φορά που θα χρησιμοποιήσετε αυτή τη συντόμευση. Σαρώστε προς τα πάνω με 3 δάχτυλα από το κάτω μέρος της οθόνης και απομακρύνετε γρήγορα τα δάχτυλά σας."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Μεγιστοποίηση"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Εναλλαγή στο μικρόφωνο του τηλεφώνου;"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Εναλλαγή στο μικρόφωνο του βοηθήματος ακοής;"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Για καλύτερο ήχο ή αν η μπαταρία του βοηθήματος ακοής είναι χαμηλή. Με αυτή την ενέργεια, το μικρόφωνό σας αλλάζει μόνο κατά τη διάρκεια της κλήσης."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Μπορείτε να χρησιμοποιήσετε το μικρόφωνο του βοηθήματος ακοής σας για κλήσεις handsfree. Με αυτή την ενέργεια, το μικρόφωνό σας αλλάζει μόνο κατά τη διάρκεια της κλήσης."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Εναλλαγή"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Ρυθμίσεις"</string> <string name="user_switched" msgid="7249833311585228097">"Τρέχων χρήστης <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Εναλλαγή σε <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Αποσύνδεση <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Για λόγους ασφάλειας, έγινε απόκρυψη του περιεχομένου της εφαρμογής από την κοινή χρήση οθόνης"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Συνδέθηκε αυτόματα με δορυφόρο"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Μπορείτε να στέλνετε και να λαμβάνετε μηνύματα χωρίς δίκτυο κινητής τηλεφωνίας ή Wi-Fi."</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Χρήση της ανταλλαγής μηνυμάτων μέσω δορυφόρου;"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Αποστολή και λήψη μηνυμάτων χωρίς δίκτυο κινητής τηλεφωνίας ή Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Άνοιγμα Messages"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 823db75ca6f4..75432f8b59a6 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Can’t reach mobile network"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Try changing preferred network. Tap to change."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Emergency calling unavailable"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Do not show again"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Emergency calls require a mobile network"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alerts"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Call forwarding"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Network alerts"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Network available"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Time and time zones"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alerts from your IT admin"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alerts"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Retail demo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App running"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps consuming battery"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Magnification"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hearing device"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Accessibility usage"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Display"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> is using battery"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Download app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"New SIM inserted"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tap to set it up"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Your time zone changed"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"You\'re now in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Set time"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Set date"</string> <string name="date_time_set" msgid="4603445265164486816">"Set"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hearing devices"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnected"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connected"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Active"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Loading"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Release the volume keys. To turn on <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, press and hold both volume keys again for three seconds."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"The feature will open the next time that you use this shortcut. Swipe up with 2 fingers from the bottom of your screen and release quickly."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"The feature will open the next time that you use this shortcut. Swipe up with 3 fingers from the bottom of your screen and release quickly."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Magnification"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Switch to phone mic?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Switch to hearing aid mic?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"For better sound or if your hearing aid battery is low. This only switches your mic during the call."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"You can use your hearing aid microphone for hands-free calling. This only switches your mic during the call."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Switch"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Settings"</string> <string name="user_switched" msgid="7249833311585228097">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Switching to <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Logging out <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App content hidden from screen share for security"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Auto-connected to satellite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Use satellite messaging?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Send and receive messages without a mobile or Wi-Fi network"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 83fd1186e006..fc4b8af6f0ba 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -302,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Network alerts"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Network available"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Time and time zones"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alerts from your IT admin"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alerts"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Retail demo"</string> @@ -309,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App running"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps consuming battery"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Magnification"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hearing device"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Accessibility usage"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Display"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> is using battery"</string> @@ -1406,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Download app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"New SIM inserted"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tap to set it up"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Your time zone changed"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"You\'re now in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Set time"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Set date"</string> <string name="date_time_set" msgid="4603445265164486816">"Set"</string> @@ -1779,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-Handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hearing devices"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnected"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connected"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Active"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Loading"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Release the volume keys. To turn on <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, press and hold both volume keys again for 3 seconds."</string> @@ -1797,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"The feature will open next time you use this shortcut. Swipe up with 2 fingers from the bottom of your screen and release quickly."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"The feature will open next time you use this shortcut. Swipe up with 3 fingers from the bottom of your screen and release quickly."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Magnification"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Switch to phone mic?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Switch to hearing aid mic?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"For better sound or if your hearing aid battery is low. This only switches your mic during the call."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"You can use your hearing aid microphone for hands-free calling. This only switches your mic during the call."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Switch"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Settings"</string> <string name="user_switched" msgid="7249833311585228097">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Switching to <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Logging out <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2453,6 +2459,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App content hidden from screen share for security"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Auto connected to satellite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"You can send and receive messages and use limited data by satellite"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Use satellite messaging?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Send and receive messages without a mobile or Wi-Fi network"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 46a0d2b96869..7d642b71028d 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Can’t reach mobile network"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Try changing preferred network. Tap to change."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Emergency calling unavailable"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Do not show again"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Emergency calls require a mobile network"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alerts"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Call forwarding"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Network alerts"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Network available"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Time and time zones"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alerts from your IT admin"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alerts"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Retail demo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App running"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps consuming battery"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Magnification"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hearing device"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Accessibility usage"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Display"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> is using battery"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Download app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"New SIM inserted"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tap to set it up"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Your time zone changed"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"You\'re now in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Set time"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Set date"</string> <string name="date_time_set" msgid="4603445265164486816">"Set"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hearing devices"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnected"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connected"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Active"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Loading"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Release the volume keys. To turn on <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, press and hold both volume keys again for three seconds."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"The feature will open the next time that you use this shortcut. Swipe up with 2 fingers from the bottom of your screen and release quickly."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"The feature will open the next time that you use this shortcut. Swipe up with 3 fingers from the bottom of your screen and release quickly."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Magnification"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Switch to phone mic?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Switch to hearing aid mic?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"For better sound or if your hearing aid battery is low. This only switches your mic during the call."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"You can use your hearing aid microphone for hands-free calling. This only switches your mic during the call."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Switch"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Settings"</string> <string name="user_switched" msgid="7249833311585228097">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Switching to <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Logging out <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App content hidden from screen share for security"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Auto-connected to satellite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Use satellite messaging?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Send and receive messages without a mobile or Wi-Fi network"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 22cf48f71439..dd8e69550fff 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Can’t reach mobile network"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Try changing preferred network. Tap to change."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Emergency calling unavailable"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Do not show again"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Emergency calls require a mobile network"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alerts"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Call forwarding"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Network alerts"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Network available"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Time and time zones"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alerts from your IT admin"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alerts"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Retail demo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App running"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps consuming battery"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Magnification"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hearing device"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Accessibility usage"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Display"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> is using battery"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Download app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"New SIM inserted"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tap to set it up"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Your time zone changed"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"You\'re now in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Set time"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Set date"</string> <string name="date_time_set" msgid="4603445265164486816">"Set"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-handed mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hearing devices"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnected"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connected"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Active"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Loading"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned on."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Held volume keys. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> turned off."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Release the volume keys. To turn on <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, press and hold both volume keys again for three seconds."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"The feature will open the next time that you use this shortcut. Swipe up with 2 fingers from the bottom of your screen and release quickly."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"The feature will open the next time that you use this shortcut. Swipe up with 3 fingers from the bottom of your screen and release quickly."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Magnification"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Switch to phone mic?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Switch to hearing aid mic?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"For better sound or if your hearing aid battery is low. This only switches your mic during the call."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"You can use your hearing aid microphone for hands-free calling. This only switches your mic during the call."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Switch"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Settings"</string> <string name="user_switched" msgid="7249833311585228097">"Current user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Switching to <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Logging out <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"App content hidden from screen share for security"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Auto-connected to satellite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"You can send and receive messages without a mobile or Wi-Fi network"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Use satellite messaging?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Send and receive messages without a mobile or Wi-Fi network"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Open Messages"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index b956286b7d2f..3451d58fe747 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"No se puede acceder a la red móvil"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Presiona para cambiar la red preferida."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Servicio de llamadas de emergencia no disponible"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"No volver a mostrar"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Las llamadas de emergencia requieren una red móvil"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertas"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Desvío de llamada"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertas de red"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Red disponible"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Estado de VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Hora y zonas horarias"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertas de tu administrador de TI"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertas"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo para punto de venta"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App en ejecución"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps que consumen batería"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ampliación"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Dispositivos auditivos"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Uso de accesibilidad"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Pantalla"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> está consumiendo batería"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Descargar app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nueva SIM insertada"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Presiona para configurar"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Se cambió tu zona horaria"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Ahora estás en <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Configurar hora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Configurar fecha"</string> <string name="date_time_set" msgid="4603445265164486816">"Establecer"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo de una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dispositivos auditivos"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Activo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Cargando"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Como mantuviste presionadas las teclas de volumen, se activó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Se presionaron las teclas de volumen. Se desactivó <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Suelta las teclas de volumen. Para activar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, vuelve a mantener presionadas las teclas de volumen durante 3 segundos."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La función se abrirá la próxima vez que uses este atajo. Desliza hacia arriba con 2 dedos desde la parte inferior de la pantalla y levanta los dedos rápidamente."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La función se abrirá la próxima vez que uses este atajo. Desliza hacia arriba con 3 dedos desde la parte inferior de la pantalla y levanta los dedos rápidamente."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliación"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"¿Quieres cambiar al micrófono del teléfono?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"¿Quieres cambiar al micrófono del audífono?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Para conseguir un mejor sonido o si la batería de tu audífono está baja. Esto solo cambia el micrófono durante la llamada."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Puedes usar el micrófono de tu audífono para realizar llamadas sin usar las manos. Esto solo cambia el micrófono durante la llamada."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Cambiar"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Configuración"</string> <string name="user_switched" msgid="7249833311585228097">"Usuario actual: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Cambiando a <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Saliendo de <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Se ocultó el contenido de la app durante el uso compartido de la pantalla por motivos de seguridad"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Conexión automática a satélite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Puedes enviar y recibir mensajes incluso si no tienes conexión a una red móvil o Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"¿Quieres usar la mensajería satelital?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Envía y recibe mensajes sin una red móvil ni Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir Mensajes"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index c50fbc7910ec..7b9dd4675800 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"No se puede establecer conexión con la red móvil"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Toca para cambiar la red preferida."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Servicio de llamadas de emergencia no disponible"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"No volver a mostrar"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Para hacer llamadas de emergencia, necesitas conectarte a una red móvil"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertas"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Desvío de llamadas"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertas de la red"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Red disponible"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Estado de la VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Hora y zonas horarias"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertas de tu administrador de TI"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertas"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo para tiendas"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplicación en ejecución"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplicaciones que consumen batería"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ampliación"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Audífono"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Uso de accesibilidad"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Pantalla"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> está usando la batería"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Descargar aplicación"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nueva SIM insertada"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Toca para configurar"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Tu zona horaria ha cambiado"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Ahora estás en <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Establecer hora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Establecer fecha"</string> <string name="date_time_set" msgid="4603445265164486816">"Establecer"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo Una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Audífonos"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Activo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Cargando"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Al mantener pulsadas las teclas de volumen, se ha activado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Se han mantenido pulsadas las teclas de volumen. Se ha desactivado <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Suelta las teclas de volumen. Para activar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, mantén pulsadas las dos teclas de volumen de nuevo durante 3 segundos."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La función se abrirá la próxima vez que uses este acceso directo. Desliza hacia arriba con 2 dedos desde la parte inferior de la pantalla y suelta rápidamente."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La función se abrirá la próxima vez que uses este acceso directo. Desliza hacia arriba con 3 dedos desde la parte inferior de la pantalla y suelta rápidamente."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliación"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"¿Cambiar al micrófono del teléfono?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"¿Cambiar al micrófono del audífono?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Para mejorar el sonido o si la batería de tu audífono está baja. Esta opción solo cambia el micrófono durante la llamada."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Puedes usar el micrófono de tu audífono para hacer llamadas en manos libres. Esta opción solo cambia el micrófono durante la llamada."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Cambiar"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Ajustes"</string> <string name="user_switched" msgid="7249833311585228097">"Usuario actual: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Cambiando a <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Cerrando la sesión de <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Contenido de la aplicación oculto en pantalla compartida por seguridad"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Conectado automáticamente al satélite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Puedes enviar y recibir mensajes sin una red móvil o Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"¿Usar mensajes por satélite?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Envía y recibe mensajes sin una red móvil ni Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Abre Mensajes"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 3e3e5db60163..cf875408ed14 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobiilsidevõrguga ei saa ühendust"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Proovige eelistatud võrku vahetada. Puudutage muutmiseks."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Hädaabikõned pole saadaval"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ära enam kuva"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Hädaabikõnede jaoks on vajalik mobiilsidevõrk"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Teatised"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Kõnede suunamine"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Võrguteavitused"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Võrk on saadaval"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-i olek"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Aeg ja ajavööndid"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Teie IT-administraatori teatised"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Teatised"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Poedemo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Rakendus töötab"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Rakendused kasutavad akutoidet"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Suurendus"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Kuuldeseade"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Juurdepääsetavuse kasutus"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Ekraan"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> kasutab akutoidet"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Laadi alla rakendus"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Uus SIM-kaart on sisestatud"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Puudutage seadistamiseks"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Teie ajavöönd muutus"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Olete praegu ajavööndis <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Kellaaja määramine"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Kuupäeva määramine"</string> <string name="date_time_set" msgid="4603445265164486816">"Määra"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Ühekäerežiim"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Eriti tume"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Kuuldeseadmed"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ühendus katkestatud"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ühendatud"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiivne"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Laadimine"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati sisse."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Helitugevuse klahve hoiti all. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> lülitati välja."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Vabastage helitugevuse klahvid. Teenuse <xliff:g id="SERVICE_NAME">%1$s</xliff:g> sisselülitamiseks vajutage uuesti mõlemat helitugevuse klahvi ja hoidke neid 3 sekundit all."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funktsioon avaneb järgmine kord, kui kasutate seda otseteed. Tõmmake kahe sõrmega ekraani allservast üles ja vabastage kiiresti."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funktsioon avaneb järgmine kord, kui kasutate seda otseteed. Tõmmake kolme sõrmega ekraani allservast üles ja vabastage kiiresti."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Suurendus"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Kas vahetada telefoni mikrofonile?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Kas vahetada kuuldeaparaadi mikrofonile?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Parema heli tagamiseks või siis, kui tele kuuldeaparaadi aku on tühi. See vahetab teie mikrofoni ainult kõne ajal."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Saate kasutada oma kuuldeaparaadi mikrofon vabakäerežiimis helistamiseks. See vahetab teie mikrofoni ainult kõne ajal."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Vaheta"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Seaded"</string> <string name="user_switched" msgid="7249833311585228097">"Praegune kasutaja <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Üleminek kasutajale <xliff:g id="NAME">%1$s</xliff:g> ..."</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Kasutaja <xliff:g id="NAME">%1$s</xliff:g> väljalogimine …"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Rakenduse sisu on ekraani jagamisel turvalisuse huvides peidetud"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Satelliidiga loodi automaatselt ühendus"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Teil on võimalik sõnumeid saata ja vastu võtta ilma mobiilside- ja WiFi-võrguta"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Kas soovite kasutada satelliidipõhist sõnumsidet?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Sõnumite saatmine ja vastuvõtmine ilma mobiilside- või WiFi-võrguta"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Ava rakendus Messages"</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index 2f477f3b2010..8e689594ea2a 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Ezin da konektatu sare mugikorrera"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Aldatu sare hobetsia. Sakatu aldatzeko."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Ezin da egin larrialdi-deirik"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ez erakutsi berriro"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Sare mugikorrera konektatuta egon behar duzu larrialdi-deiak egin ahal izateko"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertak"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Dei-desbideratzea"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Sarearen alertak"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Sare bat erabilgarri dago"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN egoera"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Ordua eta ordu-zonak"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"IKT saileko administratzaileak bidalitako alertak"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertak"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Saltzaileentzako demoa"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplikazio bat abian da"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Bateria kontsumitzen ari diren aplikazioak"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Lupa"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Entzumen-gailua"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Erabilerraztasun-hobespenak"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Pantaila"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ari da bateria erabiltzen"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Deskargatu aplikazioa"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"SIM berria sartu da"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Sakatu konfiguratzeko"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Ordu-zonaz aldatu zara"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Oraingo ordu-zona: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Ezarri ordua"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Ezarri data"</string> <string name="date_time_set" msgid="4603445265164486816">"Ezarri"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Esku bakarreko modua"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Are ilunago"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Entzumen-gailuak"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Deskonektatuta"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Konektatuta"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktibo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Kargatzen"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktibatu egin da."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bolumen-botoiak sakatuta eduki direnez, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desaktibatu egin da."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Askatu bolumen-botoiak. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> aktibatzeko, eduki sakatuta berriro bi bolumen-botoiak hiru segundoz."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Lasterbidea erabiltzen duzun hurrengoan irekiko da eginbidea. Pasatu 2 hatz pantailaren behealdetik gorantz eta askatu bizkor."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Lasterbidea erabiltzen duzun hurrengoan irekiko da eginbidea. Pasatu 3 hatz pantailaren behealdetik gorantz eta askatu bizkor."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Lupa"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Telefonoaren mikrofonora aldatu nahi duzu?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Audifonoaren mikrofonora aldatu nahi duzu?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Audioaren kalitatea hobetzeko edo audifonoak bateria gutxi badu. Deirako soilik aldatzen da mikrofonoa."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Audifonoaren mikrofonoa erabil dezakezu esku libreko deiak egiteko. Deirako soilik aldatzen da mikrofonoa."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Aldatu"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Ezarpenak"</string> <string name="user_switched" msgid="7249833311585228097">"Erabiltzailea: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"\"<xliff:g id="NAME">%1$s</xliff:g>\" erabiltzailera aldatzen…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> erabiltzailearen saioa amaitzen…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Aplikazioko edukia ezkutatu egin da pantaila partekatzeko eginbidetik, segurtasuna bermatzeko"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatikoki konektatu da satelitera"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Mezuak bidal eta jaso ditzakezu sare mugikorrik edo wifi-sarerik gabe"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Satelite bidezko mezularitza erabili nahi duzu?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Bidali eta jaso mezuak sare mugikorrik edo wifi-sarerik gabe"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Ireki Mezuak"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index d8fdff631b7d..9f2c7bb43c69 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"شبکه تلفن همراه دردسترس نیست"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"تغییر شبکه ترجیحی را امتحان کنید. برای تغییر، تکضرب بزنید."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"تماس اضطراری امکانپذیر نیست"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"دیگر نشان داده نشود"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"برای برقراری تماس اضطراری به شبکه تلفن همراه نیاز دارید"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"هشدارها"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"بازارسال تماس"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"هشدارهای شبکه"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"شبکه دردسترس است"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"وضعیت VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"زمان و منطقههای زمانی"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"هشدارهایی از سرپرست فناوری اطلاعات"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"هشدارها"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"نمونه برای خردهفروشان"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"برنامه درحال اجرا"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"برنامههای مصرفکننده باتری"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"درشتنمایی"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"سمعک"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"کاربرد دسترسپذیری"</string> <string name="notification_channel_display" msgid="6905032605735615090">"نمایشگر"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> درحال استفاده کردن از باتری است"</string> @@ -1215,7 +1216,7 @@ <string name="editTextMenuTitle" msgid="857666911134482176">"کنشهای متنی"</string> <string name="error_handwriting_unsupported" msgid="7809438534946014050">"در این فیلد از دستنویسی پشتیبانی نمیشود"</string> <string name="error_handwriting_unsupported_password" msgid="5095401146106891087">"در فیلدهای گذرواژه از دستنویسی پشتیبانی نمیشود"</string> - <string name="input_method_nav_back_button_desc" msgid="3655838793765691787">"برگشت"</string> + <string name="input_method_nav_back_button_desc" msgid="3655838793765691787">"برگشتن"</string> <string name="input_method_ime_switch_button_desc" msgid="2736542240252198501">"تغییر روش ورودی"</string> <string name="input_method_ime_switch_long_click_action_desc" msgid="3161942124116646998">"باز کردن انتخابگر روش ورودی"</string> <string name="input_method_switcher_settings_button" msgid="5609835654697108485">"تنظیمات"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"بارگیری برنامه"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"سیمکارت جدید جاگذاری شد"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"برای تنظیم آن تکضرب بزنید"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"منطقه زمانیتان تغییر کرد"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"درحالحاضر در <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) هستید"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"تنظیم زمان"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"تاریخ تنظیم"</string> <string name="date_time_set" msgid="4603445265164486816">"تنظیم"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"حالت یکدستی"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"بسیار کمنور"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"دستگاههای کمکشنوایی"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"متصل نیست"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"متصل"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"فعال"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"درحال بار کردن"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> روشن شد."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"کلیدهای میزان صدا پایین نگه داشته شد. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> خاموش شد."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"کلیدهای میزان صدا را رها کنید. برای روشن کردن <xliff:g id="SERVICE_NAME">%1$s</xliff:g>، هر دو کلید میزان صدا را مجدداً بهمدت ۳ ثانیه فشار دهید و نگه دارید."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"دفعه بعد که از این میانبر استفاده کنید، این ویژگی باز میشود. با ۲ انگشت از پایین صفحه تند به بالا بکشید و سریع رها کنید."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"دفعه بعد که از این میانبر استفاده کنید، این ویژگی باز میشود. با ۳ انگشت از پایین صفحه تند به بالا بکشید و سریع رها کنید."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"درشتنمایی"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"از میکروفون تلفن استفاده شود؟"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"از میکروفون سمعک استفاده شود؟"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"برای صدای بهتر یا اگر شارژ باتری سمعک شما کم باشد. این کار فقط درطول تماس میکروفون شما را عوض میکند."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"برای تماس دستآزاد میتوانید از میکروفون سمعک خود استفاده کنید. این کار فقط درطول تماس میکروفون شما را عوض میکند."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"عوض کردن"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"تنظیمات"</string> <string name="user_switched" msgid="7249833311585228097">"کاربر کنونی <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"در حالت تغییر به <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"در حال خروج از سیستم <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2029,7 +2034,7 @@ <string name="search_language_hint" msgid="7004225294308793583">"نام زبان را تایپ کنید"</string> <string name="language_picker_section_suggested" msgid="6556199184638990447">"پیشنهادی"</string> <string name="language_picker_regions_section_suggested" msgid="6080131515268225316">"پیشنهادی"</string> - <string name="language_picker_section_suggested_bilingual" msgid="5932198319583556613">"زبانهای پیشنهادی"</string> + <string name="language_picker_section_suggested_bilingual" msgid="5932198319583556613">"زبانهای پیشنهادشده"</string> <string name="region_picker_section_suggested_bilingual" msgid="704607569328224133">"مناطق پیشنهادی"</string> <string name="language_picker_section_all" msgid="1985809075777564284">"همه زبانها"</string> <string name="region_picker_section_all" msgid="756441309928774155">"همه منطقهها"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"بهدلایل امنیتی، محتوای برنامه پساز همرسانی صفحهنمایش پنهان میشود"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"بهطور خودکار به ماهواره متصل شد"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"میتوانید بدون شبکه تلفن همراه یا Wi-Fi پیام ارسال و دریافت کنید"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"از «پیامرسانی ماهوارهای» استفاده شود؟"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"ارسال و دریافت پیام بدون شبکه تلفن همراه یا Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"باز کردن «پیامنگار»"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 9f88732cd7b4..0b65ee2c5403 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobiiliverkkoon ei saada yhteyttä"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Kokeile vaihtaa ensisijaista verkkoa. Vaihda se napauttamalla."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Hätäpuhelut eivät ole käytettävissä"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Älä näytä uudelleen"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Hätäpuhelu edellyttää mobiiliverkkoa"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Ilmoitukset"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Soitonsiirto"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Verkkoilmoitukset"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Verkko käytettävissä"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-tila"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Aika ja aikavyöhykkeet"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Ilmoitukset IT-järjestelmänvalvojalta"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Ilmoitukset"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Esittelytila"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Sovellus käynnissä"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Akkua kuluttavat sovellukset"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Suurennus"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Kuulolaite"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Esteetön käyttö"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Näyttö"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> käyttää akkua."</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Lataa sovellus"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Uusi SIM-kortti asetettu"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Määritä se napauttamalla"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Aikavyöhykkeesi on muuttunut"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Olet nyt aikavyöhykkeellä <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Aseta aika"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Aseta päivämäärä"</string> <string name="date_time_set" msgid="4603445265164486816">"Aseta"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Yhden käden moodi"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Erittäin himmeä"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Kuulolaitteet"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Yhteys katkaistu"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Yhdistetty"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiivinen"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Ladataan"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin päälle."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Äänenvoimakkuuspainikkeita painettiin pitkään. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> laitettiin pois päältä."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Vapauta äänenvoimakkuuspainikkeet. Laita <xliff:g id="SERVICE_NAME">%1$s</xliff:g> päälle painamalla äänenvoimakkuuspainikkeita uudelleen kolmen sekunnin ajan."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Ominaisuus avautuu, kun seuraavan kerran käytät tätä pikakomentoa. Pyyhkäise näytön alareunasta ylös kahdella sormella ja nosta sormet näytöltä nopeasti."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Ominaisuus avautuu, kun seuraavan kerran käytät tätä pikakomentoa. Pyyhkäise näytön alareunasta ylös kolmella sormella ja nosta sormet näytöltä nopeasti."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Suurennus"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Vaihdetaanko puhelimen mikrofoniin?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Vaihdetaanko kuulolaitteen mikrofoniin?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Jos haluat paremman äänen tai kuulolaitteen akku on vähissä. Tämä vaihtaa mikrofonia vain puhelun ajaksi."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Voit soittaa ääniohjatusti kuulolaitteen mikrofonin avulla. Tämä vaihtaa mikrofonia vain puhelun ajaksi."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Vaihda"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Asetukset"</string> <string name="user_switched" msgid="7249833311585228097">"Nykyinen käyttäjä: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Vaihdetaan käyttäjään <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> kirjautuu ulos…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Sovelluksen sisältö piilotettu näytön jakamiselta turvallisuussyistä"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Yhdistetty automaattisesti satelliittiin"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Voit lähettää ja vastaanottaa viestejä ilman mobiili‑ tai Wi-Fi-verkkoa"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Käytetäänkö satelliittiviestintää?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Lähetä ja vastaanota viestejä ilman mobiili- tai Wi-Fi-verkkoa"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Avaa Messages"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index c535bc078b4d..e9331bb826c4 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Impossible de joindre le réseau cellulaire"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Essayez de changer de réseau préféré. Touchez l\'écran pour changer."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Le service d\'appel d\'urgence n\'est pas accessible"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ne plus afficher"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Les appels d\'urgence nécessitent un réseau cellulaire"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertes"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Transfert d\'appel"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertes réseau"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Réseau accessible"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"État du RPV"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Heure et fuseaux horaires"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertes de votre administrateur informatique"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertes"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Démo en magasin"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Appli en cours d\'exécution"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Applis qui sollicitent la pile"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Agrandissement"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Appareil auditif"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Usage des fonctionnalités d\'accessibilité"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Écran"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> sollicite la pile"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Télécharger l\'appli"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nouvelle carte SIM insérée"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Touchez ici pour effectuer la configuration"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Vous avez changé de fuseau horaire"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Voici le fuseau horaire dans lequel vous vous trouvez maintenant : <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Définir l\'heure"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Définir la date"</string> <string name="date_time_set" msgid="4603445265164486816">"Paramètres"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode Une main"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Très sombre"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Appareils auditifs"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Déconnecté"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connecté"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Actif"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Chargement en cours…"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume maintenues enfoncées. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume maintenues enfoncées. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Relâchez les touches de volume. Pour activer <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, maintenez les deux touches de volume enfoncées pendant 3 secondes."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La fonctionnalité s\'ouvrira la prochaine fois que vous utiliserez ce raccourci. Balayez l\'écran du bas vers le haut avec deux doigts et relâchez rapidement."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La fonctionnalité s\'ouvrira la prochaine fois que vous utiliserez ce raccourci. Balayez l\'écran du bas vers le haut avec trois doigts et relâchez rapidement."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Agrandissement"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Passer au micro du téléphone?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Passer au micro pour la prothèse auditive?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Pour profiter d\'un meilleur son ou si la pile de votre prothèse auditive est faible. Cette option ne change votre micro que pendant l\'appel."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Vous pouvez utiliser votre microphone pour prothèse auditive pour faire des appels en mode mains libres. Cette option ne change votre micro que pendant l\'appel."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Changer"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Paramètres"</string> <string name="user_switched" msgid="7249833311585228097">"Utilisateur actuel : <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Passage au profil : <xliff:g id="NAME">%1$s</xliff:g> en cours…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Déconnexion de <xliff:g id="NAME">%1$s</xliff:g> en cours..."</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Le contenu de l\'appli est masqué du Partage d\'écran par mesure de sécurité"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Connecté au satellite automatiquement"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Vous pouvez envoyer et recevoir des messages sans avoir recours à un appareil mobile ou à un réseau Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Utiliser la messagerie par satellite?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Envoyez et recevez des messages sans réseau cellulaire ou Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Ouvrir Messages"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index aa45f91f0975..cbcc961f309a 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Impossible d\'accéder au réseau mobile"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Essayez de changer le réseau préféré. Appuyez pour le modifier."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Appels d\'urgence non disponibles"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ne plus afficher"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Les appels d\'urgence requièrent un réseau mobile"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertes"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Transfert d\'appel"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertes réseau"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Réseau disponible"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"État du VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Heure et fuseaux horaires"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertes de votre administrateur informatique"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertes"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Démonstration en magasin"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Application en cours d\'exécution"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Applications utilisant la batterie"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Agrandissement"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Appareil auditif"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Utilisation de l\'accessibilité"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Écran"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> utilise la batterie"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Télécharger l\'application"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nouvelle carte SIM insérée"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Appuyez ici pour effectuer la configuration."</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Votre fuseau horaire a changé"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Vous êtes maintenant sur le fuseau horaire <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Définir l\'heure"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Définir la date"</string> <string name="date_time_set" msgid="4603445265164486816">"Définir"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode une main"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Luminosité ultra-réduite"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Appareils auditifs"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Déconnecté"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connecté"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Actif"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Chargement"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> activé."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Touches de volume appuyées de manière prolongée. Service <xliff:g id="SERVICE_NAME">%1$s</xliff:g> désactivé."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Relâchez les boutons de volume. Pour activer <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, appuyez de nouveau sur les deux boutons de volume pendant trois secondes."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La fonctionnalité s\'ouvrira la prochaine fois que vous utiliserez ce raccourci. Balayez du bas de l\'écran vers le haut avec deux doigts et relâchez rapidement."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La fonctionnalité s\'ouvrira la prochaine fois que vous utiliserez ce raccourci. Balayez du bas de l\'écran vers le haut avec trois doigts et relâchez rapidement."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Agrandissement"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Passer au micro du téléphone ?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Passer au micro de l\'appareil auditif ?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Pour améliorer le son ou si la batterie de votre appareil auditif est faible. Cette option change uniquement le micro pendant l\'appel."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Vous pouvez utiliser le micro de votre appareil auditif pour passer des appels en mode mains-libres. Cette option change uniquement le micro pendant l\'appel."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Changer"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Paramètres"</string> <string name="user_switched" msgid="7249833311585228097">"Utilisateur actuel : <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Passage à <xliff:g id="NAME">%1$s</xliff:g>..."</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Déconnexion de <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Le contenu de l\'appli est masqué lors du partage d\'écran par mesure de sécurité"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Connecté automatiquement au réseau satellite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Vous pouvez envoyer et recevoir des messages sans connexion au réseau mobile ou Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Utiliser la messagerie par satellite ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Envoyer et recevoir des messages sans réseau mobile ou Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Ouvrir Messages"</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index a1016b688282..25aac2cd0615 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Non se puido conectar coa rede de telefonía móbil"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Proba a cambiar a rede preferida. Toca para cambiar."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"As chamadas de emerxencia non están dispoñibles"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Non mostrar de novo"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"As chamadas de emerxencia precisan unha rede de telefonía móbil"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertas"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Desvío de chamadas"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertas de rede"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"A rede está dispoñible"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Estado da VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Hora e fusos horarios"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertas do teu administrador de TI"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertas"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demostración comercial"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Estase executando a aplicación"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplicacións que consomen batería"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ampliación"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Dispositivo auditivo"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Uso de accesibilidade"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Pantalla"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"A aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> está consumindo batería"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Descargar aplicación"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Introduciuse unha nova SIM"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tocar para configurar"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Cambiaches de fuso horario"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Estás en <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Configurar hora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Establecer data"</string> <string name="date_time_set" msgid="4603445265164486816">"Configurar"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo dunha soa man"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Atenuación extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dispositivos auditivos"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Activo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Cargando"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume premidas. Activouse o servizo <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Desactivouse <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Solta as teclas de volume. Para activar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, mantenas premidas de novo durante 3 segundos."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"A función abrirase cando volvas usar este atallo. Pasa dous dedos desde a parte inferior da pantalla e solta rapidamente."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"A función abrirase cando volvas usar este atallo. Pasa tres dedos desde a parte inferior da pantalla e solta rapidamente."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliación"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Queres cambiar ao micrófono do teléfono?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Queres cambiar ao micrófono do audiófono?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Para mellorar o son ou se o audiófono ten pouca batería. Esta acción só cambia o micrófono durante a chamada."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Podes usar o micrófono do audiófono para facer chamadas coas mans libres. Esta acción só cambia o micrófono durante a chamada."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Cambiar"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Configuración"</string> <string name="user_switched" msgid="7249833311585228097">"Usuario actual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Cambiando a <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Pechando sesión de <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Por seguranza, ocultouse o contido da aplicación na pantalla compartida"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Conexión automática ao satélite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Podes enviar e recibir mensaxes sen unha rede de telefonía móbil ou wifi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Queres usar a mensaxaría por satélite?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Envía e recibe mensaxes sen ter acceso a redes de telefonía móbil ou wifi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir Mensaxes"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 046939b3bf3c..c38768dc3e30 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"મોબાઇલ નેટવર્ક સુધી પહોંચી શકાતું નથી"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"પસંદગીનું નેટવર્ક બદલવાનો પ્રયાસ કરો. બદલવા માટે ટૅપ કરો."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"કટોકટીની કૉલિંગ સેવા અનુપલબ્ધ"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"ફરી બતાવશો નહીં"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"ઇમર્જન્સી કૉલ માટે મોબાઇલ નેટવર્કની આવશ્યકતા છે"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"અલર્ટ"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"કૉલ ફૉર્વર્ડિંગ"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"નેટવર્ક ચેતવણીઓ"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"નેટવર્ક ઉપલબ્ધ છે"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN સ્થિતિ"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"સમય અને સમય ઝોન"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"તમારા IT વ્યવસ્થાપક તરફથી અલર્ટ"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"અલર્ટ"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"રિટેલ ડેમો"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ઍપ ચાલી રહ્યું છે"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ઍપ બૅટરીનો વપરાશ કરી રહ્યાં છે"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"મોટું કરવાની સુવિધા"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"સાંભળવામાં મદદ આપતા ડિવાઇસ"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ઍક્સેસિબિલિટી વપરાશ"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ડિસ્પ્લે"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> બૅટરીનો ઉપયોગ કરી રહ્યું છે"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ઍપ ડાઉનલોડ કરો"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"નવું સિમ દાખલ કર્યું"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"તેને સેટ કરવા માટે ટૅપ કરો"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"તમારો સમય ઝોન બદલાયો છે"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"તમે <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)માં છો"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"સમય સેટ કરો"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"તારીખ સેટ કરો"</string> <string name="date_time_set" msgid="4603445265164486816">"સેટ કરો"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"એક-હાથે વાપરો મોડ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"એક્સ્ટ્રા ડિમ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"સાંભળવામાં સહાય કરતા ડિવાઇસ"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ડિસ્કનેક્ટેડ છે"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"કનેક્ટેડ છે"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"સક્રિય"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"લોડ કરી રહ્યાં છીએ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ચાલુ કરી."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"વૉલ્યૂમ કી દબાવી રાખો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> બંધ કરી."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"વૉલ્યૂમ કી છોડી દો. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ને ચાલુ કરવા માટે, 3 સેકન્ડ માટે બન્ને વૉલ્યૂમ કીને ફરીથી દબાવી રાખો."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"તમે આગલી વાર જ્યારે આ શૉર્ટકટનો ઉપયોગ કરશો, ત્યારે આ સુવિધા ચાલુ થશે. તમારી સ્ક્રીનની સૌથી નીચેથી 2 આંગળી વડે ઉપરની દિશાએ સ્વાઇપ કરો અને ઝડપથી છોડી દો."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"તમે આગલી વાર જ્યારે આ શૉર્ટકટનો ઉપયોગ કરશો, ત્યારે આ સુવિધા ચાલુ થશે. તમારી સ્ક્રીનની સૌથી નીચેથી 3 આંગળી વડે ઉપરની દિશાએ સ્વાઇપ કરો અને ઝડપથી છોડી દો."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"મોટું કરવું"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ફોનના માઇક પર સ્વિચ કરીએ?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"સાંભળવામાં મદદ આપતા યંત્રના માઇક પર સ્વિચ કરીએ?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"બહેતર સાઉન્ડ માટે અથવા જો સાંભળવામાં મદદ આપતા તમારા યંત્રની બૅટરી ઓછી હોય. કૉલ દરમિયાન આ ફક્ત તમારા માઇકને સ્વિચ કરે છે."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"તમે હાથના ઉપયોગ વિના કૉલ કરવા માટે સાંભળવામાં મદદ આપતા તમારા યંત્રના માઇક્રોફોનનો ઉપયોગ કરી શકો છો. કૉલ દરમિયાન આ ફક્ત તમારા માઇકને સ્વિચ કરે છે."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"સ્વિચ કરો"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"સેટિંગ"</string> <string name="user_switched" msgid="7249833311585228097">"વર્તમાન વપરાશકર્તા <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> પર સ્વિચ કરી રહ્યાં છે…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> લોગ આઉટ થઈ રહ્યાં છે…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"સુરક્ષા માટે સ્ક્રીન શેર કરતી વખતે ઍપનું કન્ટેન્ટ છુપાવેલું છે"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"સેટેલાઇટ સાથે ઑટોમૅટિક રીતે કનેક્ટેડ"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"તમે મોબાઇલ અથવા વાઇ-ફાઇ નેટવર્ક વિના મેસેજ મોકલી અને પ્રાપ્ત કરી શકો છો"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"શું સૅટલાઇટ મેસેજિંગનો ઉપયોગ કરીએ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"મોબાઇલ કે વાઇ-ફાઇ નેટવર્ક વિના મેસેજ મોકલો અને મેળવો"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ખોલો"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 7717d0276916..6199c806d5e2 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"मोबाइल नेटवर्क से कनेक्ट नहीं किया जा सका"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"पसंदीदा नेटवर्क बदलकर देखें. बदलने के लिए टैप करें."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"आपातकालीन कॉल करने की सुविधा उपलब्ध नहीं है"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"दोबारा न दिखाएं"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"आपातकालीन कॉल के लिए मोबाइल नेटवर्क ज़रूरी है"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"सूचनाएं"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"कॉल को दूसरे नंबर पर भेजना"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"नेटवर्क संबंधी सूचनाएं"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"नेटवर्क उपलब्ध है"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN की स्थिति"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"टाइम और टाइम ज़ोन"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"आपके आईटी एडमिन से मिली चेतावनियां"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"सूचनाएं"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"खुदरा डेमो"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ऐप अभी इस्तेमाल हो रहा है"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"बैटरी की खपत करने वाले ऐप"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"ज़ूम करने की सुविधा"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"कान की मशीन"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"सुलभता सुविधाओं का इस्तेमाल"</string> <string name="notification_channel_display" msgid="6905032605735615090">"डिसप्ले"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> बैटरी का इस्तेमाल कर रहा है"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ऐप्लिकेशन डाउनलोड करें"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"नई SIM डाली गई"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"इसे सेट करने के लिए टैप करें"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"आपका टाइम ज़ोन बदल गया है"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"अब आप <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) में हैं"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"समय सेट करें"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"तारीख सेट करें"</string> <string name="date_time_set" msgid="4603445265164486816">"सेट करें"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"वन-हैंडेड मोड"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"स्क्रीन की रोशनी को सामान्य लेवल से और कम करने की सुविधा"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"कान की मशीन"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"डिसकनेक्ट हो गया"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"कनेक्ट हो गया"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"चालू है"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"लोड हो रहा है"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को चालू कर दिया गया."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"आवाज़ कम-ज़्यादा करने वाले दोनों बटन दबाकर रखें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> को बंद कर दिया गया."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"आवाज़ बटन को छोड़ें. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> की सुविधा चालू करने के लिए, आवाज़ वाले दोनों बटन तीन सेकंड तक दबाकर रखें."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"इस शॉर्टकट का अगली बार इस्तेमाल करने पर, यह सुविधा चालू हो जाएगी. स्क्रीन पर दो उंगलियों से, नीचे से ऊपर की ओर स्वाइप करें और फिर स्क्रीन से तुरंत उंगलियां हटा दें."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"इस शॉर्टकट का अगली बार इस्तेमाल करने पर, यह सुविधा चालू हो जाएगी. स्क्रीन पर तीन उंगलियों से, नीचे से ऊपर की ओर स्वाइप करें और फिर स्क्रीन से तुरंत उंगलियां हटा दें."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ज़ूम करने की सुविधा"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"क्या आपको फ़ोन के माइक्रोफ़ोन पर स्विच करना है?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"क्या आपको कान की मशीन के माइक पर स्विच करना है?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"बेहतर आवाज़ के लिए या कान की मशीन की बैटरी कम होने पर. यह सिर्फ़ कॉल के दौरान आपका माइक चालू करता है."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"बोलकर कॉल का जवाब देने के लिए, \'कान की मशीन का माइक्रोफ़ोन\' इस्तेमाल किया जा सकता है. इससे, कॉल के दौरान सिर्फ़ आपका माइक चालू या बंद होता है."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"स्विच करें"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"सेटिंग"</string> <string name="user_switched" msgid="7249833311585228097">"मौजूदा उपयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> पर स्विच किया जा रहा है…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> द्वारा प्रस्थान किया जा रहा है…"</string> @@ -2454,6 +2459,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"स्क्रीन शेयर करने के दौरान सुरक्षा के लिए, ऐप्लिकेशन का कॉन्टेंट छिपाया गया"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"सैटलाइट से अपने-आप कनेक्ट हो गया"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"मोबाइल या वाई-फ़ाई नेटवर्क के बिना भी मैसेज भेजे और पाए जा सकते हैं"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"सैटलाइट के ज़रिए मैसेज भेजें और पाएं. साथ ही, सीमित डेटा का इस्तेमाल करें"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"क्या आपको सैटलाइट की मदद से मैसेज भेजना है?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"मोबाइल या वाई-फ़ाई नेटवर्क के बिना मैसेज भेजें और पाएं"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ऐप्लिकेशन खोलें"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 118b53928b61..5b3dc7c86658 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobilna mreža nije dostupna"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Pokušajte promijeniti preferiranu mrežu. Dodirnite da biste je promijenili."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Hitni pozivi nisu dostupni"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ne prikazuj ponovo"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Za hitne pozive potrebna je mobilna mreža"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Upozorenja"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Preusmjeravanje poziva"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Mrežna upozorenja"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Mreža je dostupna"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Status VPN-a"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Vrijeme i vremenske zone"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Upozorenja IT administratora"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Upozorenja"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Prodajni demo-način"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Izvodi se aplikacija"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikacije troše bateriju"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Povećavanje"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Slušno pomagalo"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Upotreba pristupačnosti"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Zaslon"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> koristi bateriju"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Preuzmite aplikaciju"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Umetnuta je nova SIM kartica"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Dodirnite da biste je postavili"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Vaša je vremenska zona promijenjena"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Sada ste u vremenskoj zoni <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Postavljanje vremena"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Postavi datum"</string> <string name="date_time_set" msgid="4603445265164486816">"Postavi"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Način rada jednom rukom"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Još tamnije"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušna pomagala"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Nije povezano"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Povezano"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivno"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Učitavanje"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Držali ste tipke za glasnoću. Uključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Držali ste tipke za glasnoću. Isključila se usluga <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Pustite tipke za glasnoću. Da biste uključili uslugu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ponovo pritisnite i zadržite obje tipke za glasnoću tri sekunde."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Značajka će se otvoriti sljedeći put kad upotrijebite ovaj prečac. Nakratko prijeđite dvama prstima s dna zaslona."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Značajka će se otvoriti sljedeći put kad upotrijebite ovaj prečac. Nakratko prijeđite s dna zaslona trima prstima."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Povećavanje"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Želite li se prebaciti na mikrofon telefona?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Želite li se prebaciti na mikrofon slušnog pomagala?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Za bolji zvuk ili ako je razina baterije slušnog pomagala niska. Time se mikrofon prebacuje samo tijekom poziva."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Mikrofon slušnog pomagala možete koristiti za pozivanje bez upotrebe ruku. Time se mikrofon prebacuje samo tijekom poziva."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Prebaci"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Postavke"</string> <string name="user_switched" msgid="7249833311585228097">"Trenutačni korisnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Prebacivanje na korisnika <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Odjavljivanje korisnika <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Sadržaj aplikacije sakriven je od dijeljenja zaslona radi sigurnosti"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatski povezano sa satelitom"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Možete slati i primati poruke bez mobilne mreže ili Wi-Fi mreže"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Želite li slati poruke putem satelita?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Šaljite i primajte poruke kad nije dostupna mobilna ili Wi-Fi mreža"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvori Poruke"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 09f162eba32e..117509955341 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"A mobilhálózat nem érhető el"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Próbálja meg módosítani a preferált hálózatot. Koppintson a módosításhoz."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Segélyhívás nem lehetséges"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ne jelenjen meg újra"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"A segélyhíváshoz mobilhálózatra van szükség"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Értesítések"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Hívásátirányítás"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Hálózati értesítések"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Van elérhető hálózat"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-állapot"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Idő és időzónák"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Értesítések a rendszergazdától"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Értesítések"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Kiskereskedelmi bemutató"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Jelenleg futó alkalmazás"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Akkumulátort használó alkalmazások"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Nagyítás"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hallókészülék"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Kisegítő lehetőségek használata"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Kijelző"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás használja az akkumulátort"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Alkalmazás letöltése"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Új SIM behelyezve"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Koppintson rá a beállításhoz"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Az időzóna megváltozott"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Mostani időzóna: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Idő beállítása"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Dátum beállítása"</string> <string name="date_time_set" msgid="4603445265164486816">"Beállítás"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Egykezes mód"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extrasötét"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hallásjavító eszközök"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Leválasztva"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Csatlakozva"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktív"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Betöltés"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> bekapcsolva."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Nyomva tartotta a hangerőgombokat. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kikapcsolva."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Engedje fel a hangerőszabályzó gombokat. A(z) <xliff:g id="SERVICE_NAME">%1$s</xliff:g> bekapcsolásához tartsa újra lenyomva a hangerőszabályzó gombokat három másodpercig."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"A funkció a gyorsparancs következő használatakor lesz megnyitva. Csúsztasson felfelé két ujjal a képernyő aljáról, majd emelje fel gyorsan az ujjait."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"A funkció a gyorsparancs következő használatakor lesz megnyitva. Csúsztasson felfelé három ujjal a képernyő aljáról, majd emelje fel gyorsan az ujjait."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Nagyítás"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Átvált a telefon mikrofonjára?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Átvált a hallókészülék mikrofonjára?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"A jobb hangzás érdekében, vagy ha a hallókészülék akkumulátora merülőben van. Csak a mikrofont kapcsolja át hívás közben."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Használhatja hallókészüléke mikrofonját a szabadkezes hívásokhoz. Csak a mikrofont kapcsolja át hívás közben."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Váltás"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Beállítások"</string> <string name="user_switched" msgid="7249833311585228097">"<xliff:g id="NAME">%1$s</xliff:g> az aktuális felhasználó."</string> <string name="user_switching_message" msgid="1912993630661332336">"Átváltás erre: <xliff:g id="NAME">%1$s</xliff:g>..."</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> kijelentkeztetése folyamatban van…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Apptartalom elrejtve a megosztástól a biztonság érdekében"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatikusan csatlakozva a műholdhoz"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Küldhet és fogadhat üzeneteket mobil- és Wi-Fi-hálózat nélkül is"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Műholdas üzenetváltást szeretne használni?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Küldhet és fogadhat üzeneteket mobil- és Wi-Fi-hálózat nélkül is"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"A Messages megnyitása"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 7a821a695edc..c89544823314 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Չհաջողվեց միանալ բջջային ցանցին"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Փորձեք այլ ցանցի միանալ: Հպեք՝ նախընտրած ցանցը փոխելու համար:"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Շտապ կանչերը հասանելի չեն"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Այլևս ցույց չտալ"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Շտապ կանչերի համար բջջային ցանց է անհրաժեշտ"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Ծանուցումներ"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Զանգի վերահասցեավորում"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Ցանցային զգուշացումներ"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Ցանցը հասանելի է"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN կարգավիճակ"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Ժամ և ժամային գոտի"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Ծանուցումներ ձեր ՏՏ ադմինիստրատորից"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Ծանուցումներ"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Խանութի ցուցադրական ռեժիմ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Հավելվածն աշխատում է"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Մարտկոցի լիցքը ծախսող հավելվածներ"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Խոշորացում"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Լսողական սարք"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Հատուկ գործառույթների օգտագործում"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Էկրան"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"«<xliff:g id="APP_NAME">%1$s</xliff:g>» հավելվածը ծախսում է մարտկոցի լիցքը"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Ներբեռնել հավելվածը"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Տեղադրվել է նոր SIM քարտ"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Հպեք՝ կարգավորելու համար"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Ձեր ժամային գոտին փոխվեց"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Դուք այժմ <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) ժամային գոտում եք"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Սահմանել ժամը"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Սահմանել ամսաթիվը"</string> <string name="date_time_set" msgid="4603445265164486816">"Սահմանել"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Մեկ ձեռքի ռեժիմ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Հավելյալ խամրեցում"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Լսողական սարքեր"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Անջատված է"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Միացված է"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Ակտիվ է"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Բեռնում"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը միացավ։"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ձայնի կարգավորման կոճակները սեղմվեցին։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունն անջատվեց։"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Բաց թողեք ձայնի ուժգնության կոճակները։ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ծառայությունը միացնելու համար սեղմեք և 3 վայրկյան պահեք ձայնի ուժգնության երկու կոճակը։"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Գործառույթը կբացվի հաջորդ անգամ, երբ օգտագործեք այս դյուրանցումը։ Երկու մատը էկրանի ներքևից սահեցրեք վերև և արագ բաց թողեք։"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Գործառույթը կբացվի հաջորդ անգամ, երբ օգտագործեք այս դյուրանցումը։ Երեք մատը էկրանի ներքևից սահեցրեք վերև և արագ բաց թողեք։"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Խոշորացում"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Անցնե՞լ հեռախոսի խոսափողին"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Անցնե՞լ լսողական սարքի խոսափողին"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Խոսափողը կարող եք օգտագործել, եթե ձայնի որակը ցածր է, կամ լսողական սարքի մարտկոցի լիցքը քիչ է։ Դուք կանցնեք խոսափողին միայն զանգի ընթացքում։"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Լսողական սարքի խոսափողը կարող եք օգտագործել ձայնային կառավարման համար։ Դուք կանցնեք խոսափողին միայն զանգի ընթացքում։"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Անցնել"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Կարգավորումներ"</string> <string name="user_switched" msgid="7249833311585228097">"Ներկայիս օգտատերը <xliff:g id="NAME">%1$s</xliff:g>:"</string> <string name="user_switching_message" msgid="1912993630661332336">"Անցում <xliff:g id="NAME">%1$s</xliff:g> պրոֆիլին..."</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Ելք <xliff:g id="NAME">%1$s</xliff:g>-ից…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Անվտանգության նկատառումներով՝ բովանդակությունը թաքցվել է ցուցադրումից"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Ավտոմատ միացել է արբանյակին"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Դուք կարող եք հաղորդագրություններ ուղարկել և ստանալ առանց բջջային կամ Wi-Fi կապի"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Օգտագործե՞լ արբանյակային հաղորդագրումը"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Ուղարկեք և ստացեք հաղորդագրություններ առանց բջջային կամ Wi-Fi ցանցի"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Բացել Messages-ը"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 3c0deb7c62ce..26a79e0b53a9 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Tidak dapat menjangkau jaringan seluler"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Coba ubah jaringan pilihan. Ketuk untuk mengubah."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Panggilan darurat tidak tersedia"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Jangan Tampilkan Lagi"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Panggilan darurat memerlukan jaringan seluler"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Notifikasi"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Penerusan panggilan"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Notifikasi jaringan"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Jaringan tersedia"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Status VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Waktu dan zona waktu"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Notifikasi dari admin IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Notifikasi"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo promo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplikasi berjalan"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikasi yang menggunakan baterai"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Pembesaran"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Alat bantu dengar"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Penggunaan aksesibilitas"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Layar"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang menggunakan baterai"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Download aplikasi"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"SIM baru dimasukkan"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Ketuk untuk menyiapkan"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Zona waktu Anda diubah"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Anda sekarang berada di <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Setel waktu"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Setel tanggal"</string> <string name="date_time_set" msgid="4603445265164486816">"Setel"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mode satu tangan"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra redup"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Alat bantu dengar"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Tidak terhubung"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Terhubung"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktif"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Memuat"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> diaktifkan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tombol volume ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dinonaktifkan."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Lepaskan tombol volume. Untuk mengaktifkan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, tekan kedua tombol volume lagi selama 3 detik."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Fitur akan terbuka setelah Anda menggunakan pintasan ini. Geser ke atas dengan 2 jari dari bawah layar, lalu lepaskan dengan cepat."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Fitur akan terbuka setelah Anda menggunakan pintasan ini. Geser ke atas dengan 3 jari dari bawah layar, lalu lepaskan dengan cepat."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Pembesaran"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Beralih ke mikrofon ponsel?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Beralih ke mikrofon alat bantu dengar?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Untuk mendapatkan kualitas suara yang lebih baik atau jika daya baterai alat bantu dengar Anda lemah. Tindakan ini hanya akan mengalihkan mikrofon Anda selama panggilan."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Anda dapat menggunakan mikrofon alat bantu dengar untuk melakukan panggilan handsfree. Tindakan ini hanya akan mengalihkan mikrofon Anda selama panggilan."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Alihkan"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Setelan"</string> <string name="user_switched" msgid="7249833311585228097">"Pengguna saat ini <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Beralih ke <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Mengeluarkan <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Konten aplikasi disembunyikan dari berbagi layar karena alasan keamanan"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Menghubungkan otomatis ke satelit"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Anda dapat mengirim dan menerima pesan tanpa jaringan seluler atau Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Gunakan fitur pesan satelit?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Mengirim dan menerima pesan tanpa jaringan seluler atau Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Buka Message"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 6a3519134688..f6d043b170ed 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Ekki næst samband við farsímakerfi"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Prófaðu að velja annað símkerfi. Ýttu til að breyta."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Neyðarsímtöl eru ekki í boði"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ekki birta aftur"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Neyðarsímtöl krefjast farsímakerfis"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Tilkynningar"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Símtalsflutningur"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Viðvaranir netkerfis"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Net í boði"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Staða VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Tími og tímabelti"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Tilkynningar frá kerfisstjóra"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Tilkynningar"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Kynningarútgáfa fyrir verslanir"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Forrit er í gangi"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Forrit sem nota rafhlöðuorku"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Stækkun"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Heyrnartæki"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Aðgengisnotkun"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Skjár"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> notar rafhlöðuorku"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Sækja forritið"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nýtt SIM-kort sett í"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Ýttu til að setja það upp"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Tímabeltinu þínu var breytt"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Þú ert nú á <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Veldu tíma"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Veldu dagsetningu"</string> <string name="date_time_set" msgid="4603445265164486816">"Velja"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Einhent stilling"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mjög dökkt"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Heyrnartæki"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Aftengt"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Tengt"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Virkt"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Hleður"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Hljóðstyrkstökkum haldið inni. Kveikt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Hljóðstyrkstökkum haldið inni. Slökkt á <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Slepptu hljóðstyrkstökkunum. Til að kveikja á <xliff:g id="SERVICE_NAME">%1$s</xliff:g> skaltu halda báðum hljóðstyrkstökkunum aftur inni í 3 sekúndur."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Eiginleikinn opnast næst þegar þú notar þessa flýtileið Strjúktu upp með 2 fingrum frá neðsta hluta skjásins og slepptu hratt."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Eiginleikinn opnast næst þegar þú notar þessa flýtileið Strjúktu upp með 3 fingrum frá neðsta hluta skjásins og slepptu hratt."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Stækkun"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Skipta yfir í hljóðnema símans?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Skipta yfir í hljóðnema heyrnartækis?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Fyrir betri hljómgæði eða ef lítil hleðsla er á heyrnartækinu. Aðeins verður skipt um hljóðnema á meðan á símtali stendur."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Þú getur notað hljóðnema heyrnartækisins þíns til að hringja eða svara símtölum handfrjálst. Aðeins verður skipt um hljóðnema á meðan á símtali stendur."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Skipta"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Stillingar"</string> <string name="user_switched" msgid="7249833311585228097">"Núverandi notandi <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Skiptir yfir á <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Skráir <xliff:g id="NAME">%1$s</xliff:g> út…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Efni forrits falið í skjádeilingu af öryggisástæðum"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Tengdist sjálfkrafa við gervihnött"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Þú getur sent og móttekið skilaboð án tengingar við farsímakerfi eða Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Nota skilaboð í gegnum gervihnött?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Senda og fá skilaboð án tengingar við farsímakerfi eða Wi-Fi-net"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Opna Messages"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index db402c50205b..96075003f0b2 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Impossibile raggiungere la rete mobile"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Prova a cambiare la rete preferita. Tocca per cambiare."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Chiamate di emergenza non disponibili"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Non mostrare più"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Per le chiamate di emergenza è necessaria una rete mobile"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Avvisi"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Deviazione chiamate"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Avvisi di rete"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Rete disponibile"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Stato della VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Ora e fusi orari"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Avvisi dall\'amministratore IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Avvisi"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo retail"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App in esecuzione"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"App che consumano la batteria"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ingrandimento"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Protesi uditiva"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Utilizzo dell\'accessibilità"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Display"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> sta consumando la batteria"</string> @@ -694,7 +695,7 @@ <string name="fingerprint_error_security_update_required" msgid="8440349108169661934">"Sensore temporaneamente disattivato"</string> <string name="fingerprint_error_bad_calibration" msgid="6770614925736183528">"Impossibile usare il sensore di impronte digitali. Contatta un fornitore di servizi di riparazione."</string> <string name="fingerprint_error_power_pressed" msgid="5479524500542129414">"Tasto di accensione premuto"</string> - <string name="fingerprint_name_template" msgid="8941662088160289778">"Dito <xliff:g id="FINGERID">%d</xliff:g>"</string> + <string name="fingerprint_name_template" msgid="8941662088160289778">"Impronta <xliff:g id="FINGERID">%d</xliff:g>"</string> <string name="fingerprint_app_setting_name" msgid="4253767877095495844">"Usa l\'impronta"</string> <string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"Usa l\'impronta o il blocco schermo"</string> <string name="fingerprint_dialog_default_subtitle" msgid="3879832845486835905">"Utilizza la tua impronta per continuare"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Scarica app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nuova SIM inserita"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tocca per configurarla"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Il tuo fuso orario è cambiato"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Il tuo fuso orario attuale è <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Imposta ora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Imposta data"</string> <string name="date_time_set" msgid="4603445265164486816">"Imposta"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modalità a una mano"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Attenuazione extra"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Protesi uditive"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Disconnesso"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Connesso"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Attivo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Caricamento in corso…"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> attivato."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tieni premuti i tasti del volume. Servizio <xliff:g id="SERVICE_NAME">%1$s</xliff:g> disattivato."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Rilascia i tasti del volume. Per attivare <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, tieni di nuovo premuti entrambi i tasti del volume per 3 secondi."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"La funzionalità si aprirà la prossima volta che utilizzerai questa scorciatoia. Scorri verso l\'alto con 2 dita dalla parte inferiore dello schermo e rilascia rapidamente."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"La funzionalità si aprirà la prossima volta che utilizzerai questa scorciatoia. Scorri verso l\'alto con 3 dita dalla parte inferiore dello schermo e rilascia rapidamente."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ingrandimento"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Passare al microfono dello smartphone?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Passare al microfono dell\'apparecchio acustico?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Per una migliore resa audio o se la batteria dell\'apparecchio acustico è scarica. In questo modo, il microfono viene attivato solo durante la chiamata."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Puoi usare il microfono dell\'apparecchio acustico per le chiamate in vivavoce. In questo modo, il microfono viene attivato solo durante la chiamata."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Cambia"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Impostazioni"</string> <string name="user_switched" msgid="7249833311585228097">"Utente corrente <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Passaggio a <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Disconnessione di <xliff:g id="NAME">%1$s</xliff:g> in corso…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Contenuti dell\'app nascosti dalla condivisione schermo per sicurezza"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Connessione automatica al satellite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Puoi inviare e ricevere messaggi senza una rete mobile o Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Utilizzare i messaggi via satellite?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Invia e ricevi messaggi senza una rete mobile o Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Apri Messaggi"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 503eb9747c96..d25cf01602e4 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -86,10 +86,9 @@ <string name="RestrictedStateContent" msgid="7693575344608618926">"הושבת באופן זמני על ידי הספק"</string> <string name="RestrictedStateContentMsimTemplate" msgid="5228235722511044687">"השירות הושבת באופן זמני על ידי הספק עבור SIM <xliff:g id="SIMNUMBER">%d</xliff:g>"</string> <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"לא ניתן להתחבר לרשת הסלולרית"</string> - <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"אפשר לנסות לשנות את הרשת המועדפת. יש להקיש כדי לשנות אותה."</string> + <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"אפשר לנסות לשנות את הרשת המועדפת. יש ללחוץ כדי לשנות אותה."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"שיחות חירום לא זמינות"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"לא להציג את זה שוב"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"כדי לבצע שיחות חירום, צריך להתחבר לרשת סלולרית"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"התראות"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"העברת שיחות"</string> @@ -210,7 +209,7 @@ <string name="private_space_deleted_by_admin" msgid="1484365588862066939">"המרחב הפרטי הוסר"</string> <string name="private_space_deleted_by_admin_details" msgid="7007781735201818689">"הארגון שלך לא מאפשר שימוש במרחבים פרטיים במכשיר המנוהל הזה."</string> <string name="network_logging_notification_title" msgid="554983187553845004">"המכשיר מנוהל"</string> - <string name="network_logging_notification_text" msgid="1327373071132562512">"הארגון שלך מנהל את המכשיר הזה והוא עשוי לנטר את התנועה ברשת. יש להקיש לקבלת פרטים."</string> + <string name="network_logging_notification_text" msgid="1327373071132562512">"הארגון שלך מנהל את המכשיר הזה והוא עשוי לנטר את התנועה ברשת. יש ללחוץ לקבלת פרטים."</string> <string name="location_changed_notification_title" msgid="3620158742816699316">"לאפליקציות יש הרשאת גישה למיקום שלך"</string> <string name="location_changed_notification_text" msgid="7158423339982706912">"יש לפנות למנהל ה-IT כדי לקבל מידע נוסף"</string> <string name="geofencing_service" msgid="3826902410740315456">"שירות להגדרת גבולות וירטואליים"</string> @@ -304,6 +303,8 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"התראות רשת"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"יש רשת זמינה"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"סטטוס ה-VPN"</string> + <!-- no translation found for notification_channel_system_time (1660313368058030441) --> + <skip /> <string name="notification_channel_device_admin" msgid="6384932669406095506">"התראות ממנהל ה-IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"התראות"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"הדגמה לקמעונאים"</string> @@ -311,11 +312,13 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"אפליקציה פועלת"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"אפליקציות שמרוקנות את הסוללה"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"הגדלה"</string> + <!-- no translation found for notification_channel_accessibility_hearing_device (7816963856388758952) --> + <skip /> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"שימוש בנגישות"</string> <string name="notification_channel_display" msgid="6905032605735615090">"מסך"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> משתמשת בסוללה"</string> <string name="foreground_service_apps_in_background" msgid="7340037176412387863">"<xliff:g id="NUMBER">%1$d</xliff:g> אפליקציות משתמשות בסוללה"</string> - <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"אפשר להקיש כדי לקבל פרטים על צריכה של נתונים וסוללה"</string> + <string name="foreground_service_tap_for_details" msgid="9078123626015586751">"אפשר ללחוץ כדי לקבל פרטים על צריכה של נתונים וסוללה"</string> <string name="foreground_service_multiple_separator" msgid="5002287361849863168">"<xliff:g id="RIGHT_SIDE">%2$s</xliff:g>, <xliff:g id="LEFT_SIDE">%1$s</xliff:g>"</string> <string name="safeMode" msgid="8974401416068943888">"מצב בטוח"</string> <string name="android_system_label" msgid="5974767339591067210">"מערכת Android"</string> @@ -356,13 +359,13 @@ <string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"אחזור תוכן של חלון"</string> <string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"בדיקת התוכן של חלון שאיתו מתבצעת אינטראקציה."</string> <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"הפעלה של \'גילוי באמצעות מגע\'"</string> - <string name="capability_desc_canRequestTouchExploration" msgid="4394677060796752976">"פריטים שמקישים עליהם יוקראו בקול, וניתן לנווט במסך באמצעות תנועות."</string> + <string name="capability_desc_canRequestTouchExploration" msgid="4394677060796752976">"פריטים שלוחצים עליהם יוקראו בקול, וניתן לנווט במסך באמצעות תנועות."</string> <string name="capability_title_canRequestFilterKeyEvents" msgid="2772371671541753254">"הצגת טקסט בזמן הקלדה"</string> <string name="capability_desc_canRequestFilterKeyEvents" msgid="2381315802405773092">"כולל נתונים אישיים כמו מספרי כרטיס אשראי וסיסמאות."</string> <string name="capability_title_canControlMagnification" msgid="7701572187333415795">"שליטה בהגדלת התצוגה"</string> <string name="capability_desc_canControlMagnification" msgid="2206586716709254805">"קביעת המרחק מהתצוגה ומיקום התצוגה."</string> <string name="capability_title_canPerformGestures" msgid="9106545062106728987">"ביצוע תנועות"</string> - <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"יכול להקיש, להחליק, לעשות תנועת צביטה ולבצע תנועות אחרות."</string> + <string name="capability_desc_canPerformGestures" msgid="6619457251067929726">"יכול ללחוץ, להחליק, לעשות תנועת צביטה ולבצע תנועות אחרות."</string> <string name="capability_title_canCaptureFingerprintGestures" msgid="1189053104594608091">"תנועות של טביעות אצבעות"</string> <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"אפשרות לזהות תנועות בזמן נגיעה בחיישן טביעות האצבע של המכשיר."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"צילום המסך"</string> @@ -693,7 +696,7 @@ <string name="fingerprint_error_hw_not_present" msgid="5898827259419366359">"במכשיר הזה אין חיישן טביעות אצבע"</string> <string name="fingerprint_error_security_update_required" msgid="8440349108169661934">"החיישן מושבת באופן זמני"</string> <string name="fingerprint_error_bad_calibration" msgid="6770614925736183528">"לא ניתן להשתמש בחיישן טביעות האצבע. צריך ליצור קשר עם ספק תיקונים."</string> - <string name="fingerprint_error_power_pressed" msgid="5479524500542129414">"לחצן ההפעלה נלחץ"</string> + <string name="fingerprint_error_power_pressed" msgid="5479524500542129414">"כפתור ההפעלה נלחץ"</string> <string name="fingerprint_name_template" msgid="8941662088160289778">"אצבע <xliff:g id="FINGERID">%d</xliff:g>"</string> <string name="fingerprint_app_setting_name" msgid="4253767877095495844">"שימוש בטביעת אצבע"</string> <string name="fingerprint_or_screen_lock_app_setting_name" msgid="3501743523487644907">"שימוש בטביעת אצבע או בנעילת מסך"</string> @@ -709,7 +712,7 @@ <string name="alternative_fp_setup_notification_content" msgid="7454096947415721639">"אפשר להשתמש בביטול הנעילה בטביעת אצבע כשהפנים שלך לא מזוהות, למשל כשאין מספיק אור"</string> <string name="face_recalibrate_notification_name" msgid="7311163114750748686">"פתיחה בזיהוי פנים"</string> <string name="face_recalibrate_notification_title" msgid="2524791952735579082">"בעיה בפתיחה ע\"י זיהוי הפנים"</string> - <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"יש להקיש כדי למחוק את התבנית לזיהוי הפנים, ואז להוסיף תבנית חדשה לזיהוי הפנים"</string> + <string name="face_recalibrate_notification_content" msgid="3064513770251355594">"יש ללחוץ כדי למחוק את התבנית לזיהוי הפנים, ואז להוסיף תבנית חדשה לזיהוי הפנים"</string> <string name="face_sensor_privacy_enabled" msgid="7407126963510598508">"כדי להשתמש בתכונה \'פתיחה ע\"י זיהוי הפנים\', יש להפעיל את ה"<b>"גישה למצלמה"</b>" בהגדרות > פרטיות"</string> <string name="fingerprint_recalibrate_notification_name" msgid="1414578431898579354">"פתיחה בטביעת אצבע"</string> <string name="fingerprint_recalibrate_notification_title" msgid="2406561052064558497">"לא ניתן להשתמש בחיישן טביעות האצבע"</string> @@ -994,7 +997,7 @@ <string name="keyguard_password_enter_puk_code" msgid="3112256684547584093">"יש להקליד את קוד ה-PUK ואת קוד האימות החדש"</string> <string name="keyguard_password_enter_puk_prompt" msgid="2825313071899938305">"קוד PUK"</string> <string name="keyguard_password_enter_pin_prompt" msgid="5505434724229581207">"קוד אימות חדש"</string> - <string name="keyguard_password_entry_touch_hint" msgid="4032288032993261520"><font size="17">"יש להקיש כדי להקליד את הסיסמה"</font></string> + <string name="keyguard_password_entry_touch_hint" msgid="4032288032993261520"><font size="17">"יש ללחוץ כדי להקליד את הסיסמה"</font></string> <string name="keyguard_password_enter_password_code" msgid="2751130557661643482">"יש להקליד סיסמה לביטול הנעילה"</string> <string name="keyguard_password_enter_pin_password_code" msgid="7792964196473964340">"יש להקליד קוד אימות לביטול הנעילה"</string> <string name="keyguard_password_wrong_pin_code" msgid="8583732939138432793">"קוד אימות שגוי"</string> @@ -1106,7 +1109,7 @@ <string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"להישאר בדף הזה"</string> <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nבטוח שברצונך לנווט אל מחוץ לדף הזה?"</string> <string name="autofill_window_title" msgid="4379134104008111961">"מילוי אוטומטי באמצעות <xliff:g id="SERVICENAME">%1$s</xliff:g>"</string> - <string name="permlab_setAlarm" msgid="1158001610254173567">"הגדרת התראה"</string> + <string name="permlab_setAlarm" msgid="1158001610254173567">"הגדרת שעון מעורר"</string> <string name="permdesc_setAlarm" msgid="2185033720060109640">"מאפשרת לאפליקציה להגדיר התראה באפליקציה מותקנת של שעון מעורר. אפליקציות מסוימות של שעון מעורר אינן מיישמות את התכונה הזו."</string> <string name="permlab_addVoicemail" msgid="4770245808840814471">"הוספה של דואר קולי"</string> <string name="permdesc_addVoicemail" msgid="5470312139820074324">"מאפשרת לאפליקציה להוסיף הודעות לתיבת הדואר הקולי."</string> @@ -1224,7 +1227,7 @@ <string name="low_internal_storage_view_text" msgid="8172166728369697835">"ייתכן שפונקציות מערכת מסוימות לא יפעלו"</string> <string name="low_internal_storage_view_text_no_boot" msgid="7368968163411251788">"אין מספיק מקום אחסון עבור המערכת. עליך לוודא שיש לך מקום פנוי בנפח של 250MB ולהתחיל שוב."</string> <string name="app_running_notification_title" msgid="8985999749231486569">"אפליקציית <xliff:g id="APP_NAME">%1$s</xliff:g> פועלת"</string> - <string name="app_running_notification_text" msgid="5120815883400228566">"יש להקיש לקבלת מידע נוסף או כדי לעצור את האפליקציה."</string> + <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> @@ -1315,15 +1318,15 @@ <string name="android_preparing_apk" msgid="589736917792300956">"המערכת מכינה את <xliff:g id="APPNAME">%1$s</xliff:g>."</string> <string name="android_upgrading_starting_apps" msgid="6206161195076057075">"מתבצעת הפעלה של אפליקציות."</string> <string name="android_upgrading_complete" msgid="409800058018374746">"תהליך האתחול בשלבי סיום."</string> - <string name="fp_power_button_enrollment_message" msgid="5648173517663246140">"לחצת על לחצן ההפעלה – בדרך כלל הפעולה הזו מכבה את המסך.\n\nעליך לנסות להקיש בעדינות במהלך ההגדרה של טביעת האצבע שלך."</string> + <string name="fp_power_button_enrollment_message" msgid="5648173517663246140">"לחצת על כפתור ההפעלה – בדרך כלל הפעולה הזו מכבה את המסך.\n\nעליך לנסות ללחוץ בעדינות במהלך ההגדרה של טביעת האצבע שלך."</string> <string name="fp_power_button_enrollment_title" msgid="6976841690455338563">"לסיום ההגדרה, יש לכבות את המסך"</string> <string name="fp_power_button_enrollment_button_text" msgid="3199783266386029200">"כיבוי"</string> <string name="fp_power_button_bp_title" msgid="5585506104526820067">"להמשיך לאמת את טביעת האצבע שלך?"</string> - <string name="fp_power_button_bp_message" msgid="2983163038168903393">"לחצת על לחצן ההפעלה – בדרך כלל הפעולה הזו מכבה את המסך.\n\nעליך לנסות להקיש בעדינות כדי לאמת את טביעת האצבע שלך."</string> + <string name="fp_power_button_bp_message" msgid="2983163038168903393">"לחצת על כפתור ההפעלה – בדרך כלל הפעולה הזו מכבה את המסך.\n\nעליך לנסות ללחוץ בעדינות כדי לאמת את טביעת האצבע שלך."</string> <string name="fp_power_button_bp_positive_button" msgid="728945472408552251">"כיבוי המסך"</string> <string name="fp_power_button_bp_negative_button" msgid="3971364246496775178">"המשך"</string> <string name="heavy_weight_notification" msgid="8382784283600329576">"האפליקציה <xliff:g id="APP">%1$s</xliff:g> פועלת"</string> - <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"יש להקיש כדי לחזור למשחק"</string> + <string name="heavy_weight_notification_detail" msgid="6802247239468404078">"יש ללחוץ כדי לחזור למשחק"</string> <string name="heavy_weight_switcher_title" msgid="3861984210040100886">"בחירת משחק"</string> <string name="heavy_weight_switcher_text" msgid="6814316627367160126">"לקבלת ביצועים טובים יותר, רק אחד מבין המשחקים האלה יכול להיות פתוח בכל פעם."</string> <string name="old_app_action" msgid="725331621042848590">"חזרה אל <xliff:g id="OLD_APP">%1$s</xliff:g>"</string> @@ -1331,7 +1334,7 @@ <string name="new_app_description" msgid="1958903080400806644">"אפליקציית <xliff:g id="OLD_APP">%1$s</xliff:g> תיסגר ללא שמירה"</string> <string name="dump_heap_notification" msgid="5316644945404825032">"<xliff:g id="PROC">%1$s</xliff:g> חורג ממגבלת הזיכרון"</string> <string name="dump_heap_ready_notification" msgid="2302452262927390268">"תמונת מצב של הזיכרון מוכנה עבור <xliff:g id="PROC">%1$s</xliff:g>"</string> - <string name="dump_heap_notification_detail" msgid="8431586843001054050">"Dump של ערימה נאסף. יש להקיש כדי לשתף."</string> + <string name="dump_heap_notification_detail" msgid="8431586843001054050">"Dump של ערימה נאסף. יש ללחוץ כדי לשתף."</string> <string name="dump_heap_title" msgid="4367128917229233901">"לשתף את תמונת המצב של הזיכרון?"</string> <string name="dump_heap_text" msgid="1692649033835719336">"התהליך <xliff:g id="PROC">%1$s</xliff:g> חרג ממגבלת הזיכרון בגודל <xliff:g id="SIZE">%2$s</xliff:g>. תמונת מצב של הזיכרון זמינה לשיתוף עם המפתח. חשוב לנקוט זהירות: תמונת המצב של הזיכרון עשויה לכלול מידע אישי שאליו יש לאפליקציה גישה."</string> <string name="dump_heap_system_text" msgid="6805155514925350849">"התהליך <xliff:g id="PROC">%1$s</xliff:g> חרג ממגבלת הזיכרון בגודל <xliff:g id="SIZE">%2$s</xliff:g>. יש Dump של ערימה זמין לשיתוף. חשוב לנקוט זהירות: ה-Dump של הערימה עשוי לכלול מידע אישי רגיש שאליו יש לתהליך גישה. ייתכן שמידע זה כולל נתונים שהקלדת."</string> @@ -1363,12 +1366,12 @@ <!-- no translation found for network_available_sign_in_detailed (7520423801613396556) --> <skip /> <string name="wifi_no_internet" msgid="1386911698276448061">"ל-<xliff:g id="NETWORK_SSID">%1$s</xliff:g> אין גישה לאינטרנט"</string> - <string name="wifi_no_internet_detailed" msgid="634938444133558942">"יש להקיש לצפייה באפשרויות"</string> + <string name="wifi_no_internet_detailed" msgid="634938444133558942">"יש ללחוץ לצפייה באפשרויות"</string> <string name="mobile_no_internet" msgid="4014455157529909781">"לרשת הסלולרית אין גישה לאינטרנט"</string> <string name="other_networks_no_internet" msgid="6698711684200067033">"לרשת אין גישה לאינטרנט"</string> <string name="private_dns_broken_detailed" msgid="3709388271074611847">"לא ניתן לגשת לשרת DNS הפרטי"</string> <string name="network_partial_connectivity" msgid="4791024923851432291">"הקישוריות של <xliff:g id="NETWORK_SSID">%1$s</xliff:g> מוגבלת"</string> - <string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"יש להקיש כדי להתחבר בכל זאת"</string> + <string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"יש ללחוץ כדי להתחבר בכל זאת"</string> <string name="network_switch_metered" msgid="1531869544142283384">"מעבר אל <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string> <string name="network_switch_metered_detail" msgid="1358296010128405906">"המכשיר משתמש ברשת <xliff:g id="NEW_NETWORK">%1$s</xliff:g> כשלרשת <xliff:g id="PREVIOUS_NETWORK">%2$s</xliff:g> אין גישה לאינטרנט. עשויים לחול חיובים."</string> <string name="network_switch_metered_toast" msgid="501662047275723743">"בוצע מעבר מרשת <xliff:g id="PREVIOUS_NETWORK">%1$s</xliff:g> לרשת <xliff:g id="NEW_NETWORK">%2$s</xliff:g>"</string> @@ -1407,7 +1410,11 @@ <string name="install_carrier_app_notification_text_app_name" msgid="4086877327264106484">"אפשר להוריד את האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> כדי להפעיל את כרטיס ה-SIM החדש"</string> <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"להורדת האפליקציה"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"ה-SIM החדש הוכנס"</string> - <string name="carrier_app_notification_text" msgid="6567057546341958637">"יש להקיש כדי להגדיר"</string> + <string name="carrier_app_notification_text" msgid="6567057546341958637">"יש ללחוץ כדי להגדיר"</string> + <!-- no translation found for time_zone_change_notification_title (5232503069219193218) --> + <skip /> + <!-- no translation found for time_zone_change_notification_body (6135793674904665585) --> + <skip /> <string name="time_picker_dialog_title" msgid="9053376764985220821">"הגדרת שעה"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"הגדרת תאריך"</string> <string name="date_time_set" msgid="4603445265164486816">"הגדרה"</string> @@ -1425,15 +1432,15 @@ <string name="usb_midi_notification_title" msgid="7404506788950595557">"MIDI באמצעות USB מופעל"</string> <string name="usb_uvc_notification_title" msgid="2030032862673400008">"המכשיר מחובר כמצלמת אינטרנט"</string> <string name="usb_accessory_notification_title" msgid="1385394660861956980">"אביזר USB מחובר"</string> - <string name="usb_notification_message" msgid="4715163067192110676">"אפשר להקיש כאן כדי לראות אפשרויות נוספות"</string> - <string name="usb_power_notification_message" msgid="7284765627437897702">"המכשיר המחובר בטעינה. יש להקיש לאפשרויות נוספות."</string> + <string name="usb_notification_message" msgid="4715163067192110676">"אפשר ללחוץ כאן כדי לראות אפשרויות נוספות"</string> + <string name="usb_power_notification_message" msgid="7284765627437897702">"המכשיר המחובר בטעינה. יש ללחוץ לאפשרויות נוספות."</string> <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"המכשיר זיהה התקן אודיו אנלוגי"</string> - <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"ההתקן שחיברת לא תואם לטלפון הזה. יש להקיש לקבלת מידע נוסף."</string> + <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"ההתקן שחיברת לא תואם לטלפון הזה. יש ללחוץ לקבלת מידע נוסף."</string> <string name="adb_active_notification_title" msgid="408390247354560331">"ניפוי באגים ב-USB מחובר"</string> - <string name="adb_active_notification_message" msgid="5617264033476778211">"צריך להקיש כדי להשבית את ניפוי הבאגים ב-USB"</string> + <string name="adb_active_notification_message" msgid="5617264033476778211">"צריך ללחוץ כדי להשבית את ניפוי הבאגים ב-USB"</string> <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"יש ללחוץ על ההתראה כדי להשבית ניפוי באגים ב-USB."</string> <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ניפוי הבאגים האלחוטי מחובר"</string> - <string name="adbwifi_active_notification_message" msgid="930987922852867972">"יש להקיש כדי להשבית ניפוי באגים אלחוטי"</string> + <string name="adbwifi_active_notification_message" msgid="930987922852867972">"יש ללחוץ כדי להשבית ניפוי באגים אלחוטי"</string> <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"יש לבחור כדי להשבית ניפוי באגים אלחוטי."</string> <string name="test_harness_mode_notification_title" msgid="2282785860014142511">"מצב מסגרת בדיקה הופעל"</string> <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"כדי להשבית את מצב \'מסגרת בדיקה\' צריך לאפס להגדרות היצרן."</string> @@ -1444,7 +1451,7 @@ <string name="mte_override_notification_title" msgid="4731115381962792944">"ה-MTE הניסיוני הופעל"</string> <string name="mte_override_notification_message" msgid="2441170442725738942">"יכולה להיות השפעה על הביצועים והיציבות. יש להפעיל מחדש כדי להשבית. אם ההפעלה מתבצעת באמצעות arm64.memtag.bootctl, צריך להגדיר מראש לערך none."</string> <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"יש נוזלים או חלקיקים ביציאת ה-USB"</string> - <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"יציאת ה-USB הושבתה באופן אוטומטי. יש להקיש לקבלת מידע נוסף."</string> + <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"יציאת ה-USB הושבתה באופן אוטומטי. יש ללחוץ לקבלת מידע נוסף."</string> <string name="usb_contaminant_not_detected_title" msgid="2651167729563264053">"ניתן להשתמש ביציאת ה-USB"</string> <string name="usb_contaminant_not_detected_message" msgid="892863190942660462">"הטלפון לא מזהה יותר נוזלים וחלקיקים."</string> <string name="taking_remote_bugreport_notification_title" msgid="1582531382166919850">"עיבוד דוח על באג..."</string> @@ -1459,32 +1466,32 @@ <string name="hardware" msgid="3611039921284836033">"שימוש במקלדת שמופיעה במסך"</string> <string name="select_keyboard_layout_notification_title" msgid="5823199895322205589">"הגדרה של <xliff:g id="DEVICE_NAME">%s</xliff:g>"</string> <string name="select_multiple_keyboards_layout_notification_title" msgid="6999491025126641938">"הגדרת מקלדות פיזיות"</string> - <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"יש להקיש כדי לבחור שפה ופריסה"</string> + <string name="select_keyboard_layout_notification_message" msgid="8835158247369158154">"יש ללחוץ כדי לבחור שפה ופריסה"</string> <string name="fast_scroll_alphabet" msgid="8854435958703888376">" ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string> <string name="fast_scroll_numeric_alphabet" msgid="2529539945421557329">" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"</string> <string name="alert_windows_notification_channel_group_name" msgid="6063891141815714246">"הצגה מעל אפליקציות אחרות"</string> <string name="alert_windows_notification_channel_name" msgid="3437528564303192620">"תצוגה של <xliff:g id="NAME">%s</xliff:g> מעל אפליקציות אחרות"</string> <string name="alert_windows_notification_title" msgid="6331662751095228536">"<xliff:g id="NAME">%s</xliff:g> מוצגת מעל אפליקציות אחרות"</string> - <string name="alert_windows_notification_message" msgid="6538171456970725333">"אם אינך רוצה שהאפליקציה <xliff:g id="NAME">%s</xliff:g> תשתמש בתכונה הזו, אפשר להקיש כדי לפתוח את ההגדרות ולהשבית אותה."</string> + <string name="alert_windows_notification_message" msgid="6538171456970725333">"אם אינך רוצה שהאפליקציה <xliff:g id="NAME">%s</xliff:g> תשתמש בתכונה הזו, אפשר ללחוץ כדי לפתוח את ההגדרות ולהשבית אותה."</string> <string name="alert_windows_notification_turn_off_action" msgid="7805857234839123780">"כיבוי"</string> <string name="ext_media_checking_notification_title" msgid="8299199995416510094">"בתהליך בדיקה של <xliff:g id="NAME">%s</xliff:g>…"</string> <string name="ext_media_checking_notification_message" msgid="2231566971425375542">"מתבצעת בדיקה של התוכן הנוכחי"</string> <string name="ext_media_checking_notification_message" product="tv" msgid="7986154434946021415">"אחסון המדיה בתהליך ניתוח"</string> <string name="ext_media_new_notification_title" msgid="3517407571407687677">"<xliff:g id="NAME">%s</xliff:g> חדש"</string> <string name="ext_media_new_notification_title" product="automotive" msgid="9085349544984742727">"המדיה <xliff:g id="NAME">%s</xliff:g> לא פועלת"</string> - <string name="ext_media_new_notification_message" msgid="6095403121990786986">"צריך להקיש כדי להגדיר"</string> + <string name="ext_media_new_notification_message" msgid="6095403121990786986">"צריך ללחוץ כדי להגדיר"</string> <string name="ext_media_new_notification_message" product="tv" msgid="216863352100263668">"יש לבחור כדי להגדיר"</string> - <string name="ext_media_new_notification_message" product="automotive" msgid="5140127881613227162">"ייתכן שיהיה צורך לפרמט מחדש את המכשיר. יש להקיש כדי להוציא את המדיה."</string> + <string name="ext_media_new_notification_message" product="automotive" msgid="5140127881613227162">"ייתכן שיהיה צורך לפרמט מחדש את המכשיר. יש ללחוץ כדי להוציא את המדיה."</string> <string name="ext_media_ready_notification_message" msgid="7509496364380197369">"לאחסון של תמונות, סרטונים, מוזיקה ועוד"</string> <string name="ext_media_ready_notification_message" product="tv" msgid="8847134811163165935">"עיון בקובצי המדיה"</string> <string name="ext_media_unmountable_notification_title" msgid="4895444667278979910">"בעיה עם <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unmountable_notification_title" product="automotive" msgid="3142723758949023280">"המדיה <xliff:g id="NAME">%s</xliff:g> לא פועלת"</string> - <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"יש להקיש כדי לפתור את הבעיה"</string> + <string name="ext_media_unmountable_notification_message" msgid="3256290114063126205">"יש ללחוץ כדי לפתור את הבעיה"</string> <string name="ext_media_unmountable_notification_message" product="tv" msgid="3003611129979934633">"<xliff:g id="NAME">%s</xliff:g> פגום. יש ללחוץ כדי לפתור את הבעיה."</string> - <string name="ext_media_unmountable_notification_message" product="automotive" msgid="2274596120715020680">"ייתכן שיהיה צורך לפרמט מחדש את המכשיר. יש להקיש כדי להוציא את המדיה."</string> + <string name="ext_media_unmountable_notification_message" product="automotive" msgid="2274596120715020680">"ייתכן שיהיה צורך לפרמט מחדש את המכשיר. יש ללחוץ כדי להוציא את המדיה."</string> <string name="ext_media_unsupported_notification_title" msgid="3487534182861251401">"בוצע זיהוי של <xliff:g id="NAME">%s</xliff:g>"</string> <string name="ext_media_unsupported_notification_title" product="automotive" msgid="6004193172658722381">"המדיה <xliff:g id="NAME">%s</xliff:g> לא פועלת"</string> - <string name="ext_media_unsupported_notification_message" msgid="8463636521459807981">"יש להקיש כדי להגדיר"</string> + <string name="ext_media_unsupported_notification_message" msgid="8463636521459807981">"יש ללחוץ כדי להגדיר"</string> <string name="ext_media_unsupported_notification_message" product="tv" msgid="1595482802187036532">"יש לבחור כדי להגדיר את <xliff:g id="NAME">%s</xliff:g> בפורמט נתמך."</string> <string name="ext_media_unsupported_notification_message" product="automotive" msgid="3412494732736336330">"ייתכן שיהיה צורך לפרמט מחדש את המכשיר"</string> <string name="ext_media_badremoval_notification_title" msgid="4114625551266196872">"<xliff:g id="NAME">%s</xliff:g> הוסר באופן בלתי צפוי"</string> @@ -1529,7 +1536,7 @@ <string name="permdesc_requestIgnoreBatteryOptimizations" msgid="634260656917874356">"מאפשרת לאפליקציה לבקש רשות להתעלם מאופטימיזציות של הסוללה לאפליקציה הזו."</string> <string name="permlab_queryAllPackages" msgid="2928450604653281650">"שליחת שאילתות לכל החבילות"</string> <string name="permdesc_queryAllPackages" msgid="5339069855520996010">"מאפשרת לאפליקציה לראות את כל החבילות המותקנות."</string> - <string name="tutorial_double_tap_to_zoom_message_short" msgid="1842872462124648678">"יש להקיש פעמיים לשינוי המרחק מהתצוגה"</string> + <string name="tutorial_double_tap_to_zoom_message_short" msgid="1842872462124648678">"יש ללחוץ פעמיים לשינוי המרחק מהתצוגה"</string> <string name="gadget_host_error_inflating" msgid="2449961590495198720">"לא ניתן להוסיף widget."</string> <string name="ime_action_go" msgid="5536744546326495436">"התחלה"</string> <string name="ime_action_search" msgid="4501435960587287668">"חיפוש"</string> @@ -1561,8 +1568,8 @@ <string name="notification_ranker_binding_label" msgid="432708245635563763">"שירות של דירוג התראות"</string> <string name="vpn_title" msgid="5906991595291514182">"VPN מופעל"</string> <string name="vpn_title_long" msgid="6834144390504619998">"VPN מופעל על ידי <xliff:g id="APP">%s</xliff:g>"</string> - <string name="vpn_text" msgid="2275388920267251078">"יש להקיש כדי לנהל את הרשת."</string> - <string name="vpn_text_long" msgid="278540576806169831">"בוצע חיבור אל <xliff:g id="SESSION">%s</xliff:g>. יש להקיש כדי לנהל את הרשת."</string> + <string name="vpn_text" msgid="2275388920267251078">"יש ללחוץ כדי לנהל את הרשת."</string> + <string name="vpn_text_long" msgid="278540576806169831">"בוצע חיבור אל <xliff:g id="SESSION">%s</xliff:g>. יש ללחוץ כדי לנהל את הרשת."</string> <string name="vpn_lockdown_connecting" msgid="6096725311950342607">"ה-VPN שמופעל תמיד, מתחבר..."</string> <string name="vpn_lockdown_connected" msgid="2853127976590658469">"ה-VPN שפועל תמיד, מחובר"</string> <string name="vpn_lockdown_disconnected" msgid="5573611651300764955">"אין חיבור ל-VPN שפועל כל הזמן"</string> @@ -1573,7 +1580,7 @@ <string name="reset" msgid="3865826612628171429">"איפוס"</string> <string name="submit" msgid="862795280643405865">"שליחה"</string> <string name="car_mode_disable_notification_title" msgid="8450693275833142896">"אפליקציית הנהיגה פועלת"</string> - <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"יש להקיש כדי לצאת מאפליקציית הנהיגה."</string> + <string name="car_mode_disable_notification_message" msgid="8954550232288567515">"יש ללחוץ כדי לצאת מאפליקציית הנהיגה."</string> <string name="back_button_label" msgid="4078224038025043387">"הקודם"</string> <string name="next_button_label" msgid="6040209156399907780">"הבא"</string> <string name="skip_button_label" msgid="3566599811326688389">"דילוג"</string> @@ -1652,7 +1659,7 @@ <string name="data_usage_wifi_limit_snoozed_title" msgid="1622359254521960508">"חריגה ממגבלת נתוני ה-Wi-Fi"</string> <string name="data_usage_limit_snoozed_body" msgid="545146591766765678">"חרגת ב-<xliff:g id="SIZE">%s</xliff:g> מעבר למגבלה המוגדרת"</string> <string name="data_usage_restricted_title" msgid="126711424380051268">"נתוני הרקע מוגבלים"</string> - <string name="data_usage_restricted_body" msgid="5338694433686077733">"יש להקיש כדי להסיר את ההגבלה."</string> + <string name="data_usage_restricted_body" msgid="5338694433686077733">"יש ללחוץ כדי להסיר את ההגבלה."</string> <string name="data_usage_rapid_title" msgid="2950192123248740375">"שימוש מוגבר בחבילת הגלישה"</string> <string name="data_usage_rapid_body" msgid="3886676853263693432">"האפליקציות שלך השתמשו בנתונים רבים יותר מהרגיל"</string> <string name="data_usage_rapid_app_body" msgid="5425779218506513861">"האפליקציה <xliff:g id="APP">%s</xliff:g> השתמשה בנתונים רבים יותר מהרגיל"</string> @@ -1748,7 +1755,7 @@ <string name="csd_dose_reached_warning" product="default" msgid="491875107583931974">"להמשיך להאזין בעוצמת קול גבוהה?\n\nעוצמת הקול של האוזניות הייתה גבוהה במשך יותר זמן מהמומלץ, מה שעלול להזיק לשמיעה"</string> <string name="csd_momentary_exposure_warning" product="default" msgid="7730840903435405501">"זוהה צליל חזק\n\nעוצמת הקול של האוזניות הייתה גבוהה מהמומלץ, מה שעלול להזיק לשמיעה"</string> <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"להשתמש בקיצור הדרך לתכונת הנגישות?"</string> - <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"כשקיצור הדרך מופעל, לחיצה על שני לחצני עוצמת הקול למשך שלוש שניות מפעילה את תכונת הנגישות."</string> + <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"כשקיצור הדרך מופעל, לחיצה על שני כפתורי עוצמת הקול למשך שלוש שניות מפעילה את תכונת הנגישות."</string> <string name="accessibility_shortcut_multiple_service_warning_title" msgid="3135860819356676426">"האם להפעיל את מקש הקיצור לתכונות הנגישות?"</string> <string name="accessibility_shortcut_multiple_service_warning" msgid="3740723309483706911">"לחיצה ארוכה על שני לחצני עוצמת הקול למשך מספר שניות מפעילה את תכונות הנגישות. בעקבות זאת, ייתכן שאופן הפעולה של המכשיר ישתנה.\n\nהתכונות הנוכחיות:\n<xliff:g id="SERVICE">%1$s</xliff:g>\nניתן לשנות את התכונות שנבחרו ב\'הגדרות\' > \'נגישות\'."</string> <string name="accessibility_shortcut_multiple_service_list" msgid="2128323171922023762">" • <xliff:g id="SERVICE">%1$s</xliff:g>\n"</string> @@ -1768,8 +1775,8 @@ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"עדיף שלא"</string> <string name="accessibility_dialog_button_uninstall" msgid="2952465517671708108">"הסרה"</string> <string name="accessibility_dialog_touch_filtered_warning" msgid="3741940116597822451">"אפליקציה מסתירה את בקשת ההרשאה כך שלא ניתן לאמת את התשובה שלך."</string> - <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"יש להקיש על תכונה כדי להתחיל להשתמש בה:"</string> - <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"בחירת תכונה לשימוש עם לחצן הנגישות"</string> + <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"יש ללחוץ על תכונה כדי להתחיל להשתמש בה:"</string> + <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"בחירת תכונה לשימוש עם כפתור הנגישות"</string> <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2245540598834891500">"בחירת תכונות לשימוש עם קיצור דרך באמצעות מקשי עוצמת הקול"</string> <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"שירות <xliff:g id="SERVICE_NAME">%s</xliff:g> כבוי"</string> <string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"עריכת קיצורי הדרך"</string> @@ -1781,24 +1788,32 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"מצב שימוש ביד אחת"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"מעומעם במיוחד"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"מכשירי שמיעה"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"מנותק"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"מחובר"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"פעיל"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"בטעינה"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הופעל."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"לחצני עוצמת הקול נלחצו בלחיצה ארוכה. שירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g> הושבת."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"אפשר לשחרר את מקש עוצמת הקול. כדי להפעיל את השירות <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, צריך ללחוץ לחיצה ארוכה על שני המקשים של עוצמת הקול שוב במשך 3 שניות."</string> <string name="accessibility_button_prompt_text" msgid="6105393217162198616">"בחירת תכונה"</string> <string name="accessibility_gesture_prompt_text" msgid="6452246951969541792">"בחירת תכונה"</string> <string name="accessibility_gesture_3finger_prompt_text" msgid="77745752309056152">"בחירת תכונה"</string> - <string name="accessibility_button_instructional_text" msgid="6831154884557881996">"התכונה תיפתח בפעם הבאה שתזוהה הקשה על לחצן הנגישות"</string> + <string name="accessibility_button_instructional_text" msgid="6831154884557881996">"התכונה תיפתח בפעם הבאה שתזוהה לחיצה על כפתור הנגישות"</string> <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"התכונה תיפתח בפעם הבאה שייעשה שימוש במקש הקיצור הזה. צריך להחליק למעלה עם 2 אצבעות מהחלק התחתון של המסך ולשחרר במהירות."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"התכונה תיפתח בפעם הבאה שייעשה שימוש במקש הקיצור הזה. צריך להחליק למעלה עם 3 אצבעות מהחלק התחתון של המסך ולשחרר במהירות."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"הגדלה"</string> + <!-- no translation found for hearing_device_switch_phone_mic_notification_title (6645178038359708836) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_title (4612074852145289569) --> + <skip /> + <!-- no translation found for hearing_device_switch_phone_mic_notification_text (1332426273666077412) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_text (8288368365767284208) --> + <skip /> + <!-- no translation found for hearing_device_notification_switch_button (3619524619430941300) --> + <skip /> + <!-- no translation found for hearing_device_notification_settings_button (6673651052880279178) --> + <skip /> <string name="user_switched" msgid="7249833311585228097">"המשתמש הנוכחי <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"מעבר אל <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"מתבצע ניתוק של <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -1908,7 +1923,7 @@ <string name="reason_unknown" msgid="5599739807581133337">"לא ידוע"</string> <string name="reason_service_unavailable" msgid="5288405248063804713">"שירות ההדפסה לא הופעל"</string> <string name="print_service_installed_title" msgid="6134880817336942482">"שירות <xliff:g id="NAME">%s</xliff:g> מותקן"</string> - <string name="print_service_installed_message" msgid="7005672469916968131">"יש להקיש כדי להפעיל את השירות"</string> + <string name="print_service_installed_message" msgid="7005672469916968131">"יש ללחוץ כדי להפעיל את השירות"</string> <string name="restr_pin_enter_admin_pin" msgid="1199419462726962697">"יש להזין את קוד האימות של מנהל המכשיר"</string> <string name="restr_pin_enter_pin" msgid="373139384161304555">"יש להזין קוד אימות"</string> <string name="restr_pin_incorrect" msgid="3861383632940852496">"שגוי"</string> @@ -1946,7 +1961,7 @@ <string name="confirm_battery_saver" msgid="5247976246208245754">"אישור"</string> <string name="battery_saver_description_with_learn_more" msgid="5444908404021316250">"התכונה \'חיסכון בסוללה\' מפעילה עיצוב כהה ומגבילה או מכבה פעילות ברקע, חלק מהאפקטים החזותיים, תכונות מסוימות וחלק מהחיבורים לרשתות."</string> <string name="battery_saver_description" msgid="8518809702138617167">"התכונה \'חיסכון בסוללה\' מפעילה עיצוב כהה ומגבילה או מכבה פעילות ברקע, חלק מהאפקטים החזותיים, תכונות מסוימות וחלק מהחיבורים לרשתות."</string> - <string name="data_saver_description" msgid="4995164271550590517">"כדי לסייע בהפחתת השימוש בנתונים, חוסך הנתונים (Data Saver) מונע מאפליקציות מסוימות לשלוח או לקבל נתונים ברקע. אפליקציות שבהן נעשה שימוש כרגע יכולות לגשת לנתונים, אבל בתדירות נמוכה יותר. המשמעות היא, למשל, שתמונות יוצגו רק לאחר שמקישים עליהן."</string> + <string name="data_saver_description" msgid="4995164271550590517">"כדי לסייע בהפחתת השימוש בנתונים, חוסך הנתונים (Data Saver) מונע מאפליקציות מסוימות לשלוח או לקבל נתונים ברקע. אפליקציות שבהן נעשה שימוש כרגע יכולות לגשת לנתונים, אבל בתדירות נמוכה יותר. המשמעות היא, למשל, שתמונות יוצגו רק לאחר שלוחצים עליהן."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"להפעיל את חוסך הנתונים?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"הפעלה"</string> <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{למשך דקה אחת (עד {formattedTime})}one{למשך # דקות (עד{formattedTime})}two{למשך # דקות (עד{formattedTime})}other{למשך # דקות (עד{formattedTime})}}"</string> @@ -2076,9 +2091,9 @@ <string name="new_sms_notification_content" msgid="3197949934153460639">"יש לפתוח את אפליקציית ה-SMS כדי להציג"</string> <string name="profile_encrypted_title" msgid="9001208667521266472">"ייתכן שחלק מהפונקציונליות תהיה מוגבלת"</string> <string name="profile_encrypted_detail" msgid="5279730442756849055">"פרופיל העבודה נעול"</string> - <string name="profile_encrypted_message" msgid="1128512616293157802">"יש להקיש לביטול נעילת פרופיל העבודה"</string> + <string name="profile_encrypted_message" msgid="1128512616293157802">"יש ללחוץ לביטול נעילת פרופיל העבודה"</string> <string name="usb_mtp_launch_notification_title" msgid="774319638256707227">"התבצע חיבור אל <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string> - <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"יש להקיש כדי להציג קבצים"</string> + <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"יש ללחוץ כדי להציג קבצים"</string> <string name="pin_target" msgid="8036028973110156895">"הצמדה"</string> <string name="pin_specific_target" msgid="7824671240625957415">"הצמדה של <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="unpin_target" msgid="3963318576590204447">"ביטול הצמדה"</string> @@ -2165,7 +2180,7 @@ <string name="volume_dialog_ringer_guidance_silent" msgid="1011246774949993783">"שיחות והתראות יושתקו"</string> <string name="notification_channel_system_changes" msgid="2462010596920209678">"שינויים במערכת"</string> <string name="review_notification_settings_title" msgid="5102557424459810820">"בדיקת הגדרת ההתראות"</string> - <string name="review_notification_settings_text" msgid="5916244866751849279">"החל מגרסת Android 13, אפליקציות שיותקנו יוכלו לשלוח התראות רק אם יקבלו ממך הרשאה. אפשר להקיש כדי לשנות את ההרשאה הזו באפליקציות קיימות."</string> + <string name="review_notification_settings_text" msgid="5916244866751849279">"החל מגרסת Android 13, אפליקציות שיותקנו יוכלו לשלוח התראות רק אם יקבלו ממך הרשאה. אפשר ללחוץ כדי לשנות את ההרשאה הזו באפליקציות קיימות."</string> <string name="review_notification_settings_remind_me_action" msgid="1081081018678480907">"תזכירו לי מאוחר יותר"</string> <string name="review_notification_settings_dismiss" msgid="4160916504616428294">"סגירה"</string> <string name="notification_app_name_system" msgid="3045196791746735601">"מערכת"</string> @@ -2174,10 +2189,10 @@ <string name="notification_appops_microphone_active" msgid="581333393214739332">"מיקרופון"</string> <string name="notification_appops_overlay_active" msgid="5571732753262836481">"תצוגה מעל אפליקציות אחרות במסך"</string> <string name="notification_feedback_indicator" msgid="663476517711323016">"שליחת משוב"</string> - <string name="notification_feedback_indicator_alerted" msgid="6552871804121942099">"ההתראה הזו שודרגה ל\'ברירת מחדל\'. יש להקיש כדי לשלוח משוב."</string> - <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ההתראה הזו הורדה בדרגה ל\'שקטה\'. יש להקיש כדי לשלוח משוב."</string> - <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"דירוג ההתראה הזו הוגבה. יש להקיש כדי לשלוח משוב."</string> - <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ההתראה הזו דורגה נמוך יותר. יש להקיש כדי לשלוח משוב."</string> + <string name="notification_feedback_indicator_alerted" msgid="6552871804121942099">"ההתראה הזו שודרגה ל\'ברירת מחדל\'. יש ללחוץ כדי לשלוח משוב."</string> + <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"ההתראה הזו הורדה בדרגה ל\'שקטה\'. יש ללחוץ כדי לשלוח משוב."</string> + <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"דירוג ההתראה הזו הוגבה. יש ללחוץ כדי לשלוח משוב."</string> + <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"ההתראה הזו דורגה נמוך יותר. יש ללחוץ כדי לשלוח משוב."</string> <string name="nas_upgrade_notification_title" msgid="8436359459300146555">"התראות משופרות"</string> <string name="nas_upgrade_notification_content" msgid="5157550369837103337">"ההתראות המשופרות מספקות מעכשיו הצעות לפעולות ולתשובות. אין יותר תמיכה בהתראות מותאמות ל-Android."</string> <string name="nas_upgrade_notification_enable_action" msgid="3046406808378726874">"אישור"</string> @@ -2394,14 +2409,14 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"סמל האפליקציה"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"תדמית המותג של האפליקציה"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"בדיקה של הגדרות הגישה"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"לשירות <xliff:g id="SERVICE_NAME">%s</xliff:g> יש הרשאה להצגת המסך ושליטה בו. אפשר להקיש כדי לבדוק."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"לשירות <xliff:g id="SERVICE_NAME">%s</xliff:g> יש הרשאה להצגת המסך ושליטה בו. אפשר ללחוץ כדי לבדוק."</string> <string name="ui_translation_accessibility_translated_text" msgid="3197547218178944544">"ההודעה <xliff:g id="MESSAGE">%1$s</xliff:g> תורגמה."</string> <string name="ui_translation_accessibility_translation_finished" msgid="3057830947610088465">"ההודעה תורגמה מ<xliff:g id="FROM_LANGUAGE">%1$s</xliff:g> ל<xliff:g id="TO_LANGUAGE">%2$s</xliff:g>."</string> <string name="notification_channel_abusive_bg_apps" msgid="6092140213264920355">"פעילות ברקע"</string> <string name="notification_title_abusive_bg_apps" msgid="994230770856147656">"אחת האפליקציות מרוקנת את הסוללה"</string> <string name="notification_title_long_running_fgs" msgid="8170284286477131587">"אפליקציה כלשהי עדיין פעילה"</string> - <string name="notification_content_abusive_bg_apps" msgid="5296898075922695259">"<xliff:g id="APP">%1$s</xliff:g> פועלת ברקע. יש להקיש כדי לנהל את השימוש בסוללה."</string> - <string name="notification_content_long_running_fgs" msgid="8258193410039977101">"האפליקציה <xliff:g id="APP">%1$s</xliff:g> עלולה להשפיע על חיי הסוללה. אפשר להקיש כדי לבדוק את האפליקציות הפעילות."</string> + <string name="notification_content_abusive_bg_apps" msgid="5296898075922695259">"<xliff:g id="APP">%1$s</xliff:g> פועלת ברקע. יש ללחוץ כדי לנהל את השימוש בסוללה."</string> + <string name="notification_content_long_running_fgs" msgid="8258193410039977101">"האפליקציה <xliff:g id="APP">%1$s</xliff:g> עלולה להשפיע על חיי הסוללה. אפשר ללחוץ כדי לבדוק את האפליקציות הפעילות."</string> <string name="notification_action_check_bg_apps" msgid="4758877443365362532">"כדאי לבדוק את האפליקציות הפעילות"</string> <string name="vdm_camera_access_denied" product="default" msgid="6102378580971542473">"לא ניתן לגשת למצלמה של הטלפון מה‑<xliff:g id="DEVICE">%1$s</xliff:g>"</string> <string name="vdm_camera_access_denied" product="tablet" msgid="6895968310395249076">"לא ניתן לגשת למצלמה של הטאבלט מה‑<xliff:g id="DEVICE">%1$s</xliff:g>"</string> @@ -2432,12 +2447,12 @@ <string name="device_state_notification_settings_button" msgid="691937505741872749">"מעבר להגדרות"</string> <string name="device_state_notification_turn_off_button" msgid="6327161707661689232">"השבתה"</string> <string name="keyboard_layout_notification_selected_title" msgid="1202560174252421219">"המקלדת <xliff:g id="DEVICE_NAME">%s</xliff:g> הוגדרה"</string> - <string name="keyboard_layout_notification_one_selected_message" msgid="4314216053129257197">"פריסת המקלדת מוגדרת ל<xliff:g id="LAYOUT_1">%s</xliff:g>. אפשר להקיש כדי לשנות את ההגדרה הזו."</string> - <string name="keyboard_layout_notification_two_selected_message" msgid="1876349944065922950">"פריסת המקלדת מוגדרת ל<xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>. אפשר להקיש כדי לשנות את ההגדרה הזו."</string> - <string name="keyboard_layout_notification_three_selected_message" msgid="280734264593115419">"פריסת המקלדת מוגדרת ל<xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>. אפשר להקיש כדי לשנות את ההגדרה הזו."</string> - <string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"פריסת המקלדת מוגדרת ל<xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… אפשר להקיש כדי לשנות את ההגדרה הזו."</string> + <string name="keyboard_layout_notification_one_selected_message" msgid="4314216053129257197">"פריסת המקלדת מוגדרת ל<xliff:g id="LAYOUT_1">%s</xliff:g>. אפשר ללחוץ כדי לשנות את ההגדרה הזו."</string> + <string name="keyboard_layout_notification_two_selected_message" msgid="1876349944065922950">"פריסת המקלדת מוגדרת ל<xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>. אפשר ללחוץ כדי לשנות את ההגדרה הזו."</string> + <string name="keyboard_layout_notification_three_selected_message" msgid="280734264593115419">"פריסת המקלדת מוגדרת ל<xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>. אפשר ללחוץ כדי לשנות את ההגדרה הזו."</string> + <string name="keyboard_layout_notification_more_than_three_selected_message" msgid="1581834181578206937">"פריסת המקלדת מוגדרת ל<xliff:g id="LAYOUT_1">%1$s</xliff:g>, <xliff:g id="LAYOUT_2">%2$s</xliff:g>, <xliff:g id="LAYOUT_3">%3$s</xliff:g>… אפשר ללחוץ כדי לשנות את ההגדרה הזו."</string> <string name="keyboard_layout_notification_multiple_selected_title" msgid="5242444914367024499">"הוגדרו מקלדות פיזיות"</string> - <string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"יש להקיש כדי להציג את המקלדות"</string> + <string name="keyboard_layout_notification_multiple_selected_message" msgid="6576533454124419202">"יש ללחוץ כדי להציג את המקלדות"</string> <string name="profile_label_private" msgid="6463418670715290696">"פרטי"</string> <string name="profile_label_clone" msgid="769106052210954285">"שכפול"</string> <string name="profile_label_work" msgid="3495359133038584618">"פרופיל עבודה"</string> @@ -2455,6 +2470,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"תוכן האפליקציה מוסתר משיתוף המסך מטעמי אבטחה"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"חיבור אוטומטי ללוויין"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"אפשר לשלוח ולקבל הודעות ללא רשת סלולרית או רשת Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"רוצה לשלוח הודעות באמצעות תקשורת לוויינית?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"אפשר לשלוח ולקבל הודעות ללא רשת סלולרית או Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"לפתיחת Messages"</string> @@ -2500,7 +2517,7 @@ <string name="bg_user_sound_notification_title_alarm" msgid="5251678483393143527">"שעון מעורר של <xliff:g id="USER_NAME">%s</xliff:g>"</string> <string name="bg_user_sound_notification_button_switch_user" msgid="3091969648572788946">"החלפת משתמש"</string> <string name="bg_user_sound_notification_button_mute" msgid="4942158515665615243">"השתקה"</string> - <string name="bg_user_sound_notification_message" msgid="8613881975316976673">"כדי להשתיק את הצליל, צריך להקיש כאן"</string> + <string name="bg_user_sound_notification_message" msgid="8613881975316976673">"כדי להשתיק את הצליל, צריך ללחוץ כאן"</string> <string name="keyboard_shortcut_group_applications_browser" msgid="6535007304687100909">"דפדפן"</string> <string name="keyboard_shortcut_group_applications_contacts" msgid="2750702518068326356">"אנשי קשר"</string> <string name="keyboard_shortcut_group_applications_email" msgid="4229037666415353683">"אימייל"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 05adb2b13e4d..51dca2255a83 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"モバイル ネットワークにアクセスできません"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"タップして、優先ネットワークを変更してください。"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"緊急通報は利用できません"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"今後表示しない"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"緊急通報にはモバイル ネットワークが必要です"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"通知"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"電話の転送"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ネットワーク通知"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"ネットワークを利用できます"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN のステータス"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"時刻とタイムゾーン"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"IT 管理者からの通知"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"通知"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"販売店デモ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"実行中のアプリ"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"電池を消費しているアプリ"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"拡大"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"補聴器"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ユーザー補助の使用"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ディスプレイ"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」がバッテリーを使用しています"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"アプリをダウンロード"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"新しい SIM が挿入されました"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"タップして設定"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"タイムゾーンを変更しました"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"<xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g>(<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)に変更しました"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"時刻設定"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"日付設定"</string> <string name="date_time_set" msgid="4603445265164486816">"設定"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"片手モード"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"さらに輝度を下げる"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"補聴器"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"未接続"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"接続済み"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"有効"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"読み込んでいます"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が ON になりました。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"音量ボタンを長押ししました。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> が OFF になりました。"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"音量ボタンを離してください。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> を有効にするには音量大と音量小の両方のボタンを 3 秒ほど長押ししてください。"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"この機能は、このショートカットを次回使用した時に利用できるようになります。2 本の指で画面の下部から上にスワイプし、素早く離してください。"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"この機能は、このショートカットを次回使用した時に利用できるようになります。3 本の指で画面の下部から上にスワイプし、素早く離してください。"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"拡大"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"スマートフォンのマイクに切り替えますか?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"補聴器のマイクに切り替えますか?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"音質を向上させるために、または補聴器のバッテリー残量が少ない場合に使用します。通話時のみマイクが切り替わります。"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"補聴器のマイクを使ってハンズフリー通話を行えます。通話時のみマイクが切り替わります。"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"切り替える"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"設定"</string> <string name="user_switched" msgid="7249833311585228097">"現在のユーザーは<xliff:g id="NAME">%1$s</xliff:g>です。"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>に切り替えています…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> をログアウトしています…"</string> @@ -2454,6 +2459,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"セキュリティ上、画面共有ではアプリの内容は非表示となります"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"衛星に自動接続しました"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"モバイル ネットワークや Wi-Fi ネットワークを使わずにメッセージを送受信できます"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"衛星経由でのメッセージの送受信とデータの使用(上限あり)が可能です"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"衛星通信メッセージを使用しますか?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"モバイル ネットワークや Wi-Fi ネットワークがなくてもメッセージを送受信できます"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"メッセージ アプリを開く"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 552f52e0c128..2411c8cad961 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"მობილურ ქსელთან დაკავშირება ვერ ხერხდება"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ცადეთ უპირატესი ქსელის შეცვლა. შეეხეთ შესაცვლელად."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"გადაუდებელი ზარი მიუწვდომელია"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"აღარ გამოჩნდეს"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"გადაუდებელი ზარები საჭიროებს მობილურ ქსელს"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"გაფრთხილებები"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"ზარის გადამისამართება"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ქსელის გაფრთხილებები"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"ქსელი ხელმისაწვდომია"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-ის სტატუსი"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"დრო და სასაათო სარტყელი"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"გაფრთხილებები თქვენი IT ადმინისტრატორისგან"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"გაფრთხილებები"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"დემო-რეჟიმი საცალო მოვაჭრეებისთვის"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"აპი გაშვებულია"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ბატარეის მხარჯავი აპები"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"გადიდება"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"სმენის აპარატი"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"მარტივი წვდომის გამოყენება"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ეკრანი"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> იყენებს ბატარეას"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"აპის ჩამოტვირთვა"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"მოთავსებულია ახალი SIM ბარათი"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"შეეხეთ პარამეტრების დასაყენებლად"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"თქვენი სასაათო სარტყელი შეიცვალა"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"თქვენ ახლა იმყოფებით შემდეგ სასაათო სარტყელში: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"დროის დაყენება"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"თარიღის დაყენება"</string> <string name="date_time_set" msgid="4603445265164486816">"დაყენება"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ცალი ხელის რეჟიმი"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"დამატებითი დაბინდვა"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"სმენის აპარატები"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"კავშირი გაწყვეტილია"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"დაკავშირებული"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"აქტიური"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"იტვირთება"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ჩართულია."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ხანგრძლივად დააჭირეთ ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> გამორთულია."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ხელი აუშვით ხმის ღილაკებს. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-ის ჩასართველად, ხელმეორედ ხანგრძლივად დააჭირეთ ორივე ხმის ღილაკს 3 წამის განმავლობაში."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ეს ფუნქცია გაიხსნება, როცა შემდეგ ჯერზე გამოიყენებთ ამ მალსახმობს. გადაფურცლეთ 2 თითით თქვენი ეკრანის ქვედა ნაწილიდან და სწრაფად აუშვით."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ეს ფუნქცია გაიხსნება, როცა შემდეგ ჯერზე გამოიყენებთ ამ მალსახმობს. გადაფურცლეთ 3 თითით თქვენი ეკრანის ქვედა ნაწილიდან და სწრაფად აუშვით."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"გადიდება"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"გსურთ ტელეფონის მიკროფონზე გადართვა?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"გსურთ სმენის მოწყობილობის მიკროფონზე გადართვა?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"უკეთესი ხმისთვის ან, თუ თქვენი სმენის მოწყობილობის ბატარეა სუსტადაა დამუხტული. ეს გადართავს თქვენს მიკროფონს მხოლოდ ზარის დროს."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"შეგიძლიათ სმენის მოწყობილობის მიკროფონის გამოყენება უკონტაქტოდ დასარეკად. ეს გადართავს თქვენს მიკროფონს მხოლოდ ზარის დროს."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"გადართვა"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"პარამეტრები"</string> <string name="user_switched" msgid="7249833311585228097">"ამჟამინდელი მომხმარებელი <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>-ზე გადართვა…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>-ის ანგარიშიდან გასვლა…"</string> @@ -2454,6 +2459,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ეკრანის გაზიარებისას აპის კონტენტი დამალულია უსაფრთხოების მიზნით"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"სატელიტთან ავტომატურად დაკავშირებულია"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"შეგიძლიათ გაგზავნოთ და მიიღოთ შეტყობინებები მობილური ან Wi-Fi ქსელის გარეშე"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"შეგიძლიათ გაგზავნოთ და მიიღოთ შეტყობინებები და გამოიყენოთ შეზღუდული მონაცემები სატელიტით"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"გსურთ შეტყობინებების სატელიტური მიმოცვლის გამოყენება?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"შეტყობინებების გაგზავნა და მიღება მობილური ან Wi-Fi ქსელის გარეშე"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages-ის გახსნა"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 3c118ac715b5..e1fd8d1a8d82 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Мобильдік желіге қосылу мүмкін емес"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Таңдаулы желіні өзгертіп көріңіз. Өзгерту үшін түртіңіз."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Жедел қызметке қоңырау шалу мүмкін емес"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Қайта көрсетілмесін"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Құтқару қызметіне қоңырау шалу үшін мобильдік желі қажет."</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Дабылдар"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Қоңырауды басқа нөмірге бағыттау"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Желі дабылдары"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Желі қолжетімді"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN күйі"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Уақыт және уақыт белдеулері"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"АТ әкімшісі жіберген ескертулер"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Дабылдар"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Бөлшек саудаға арналған демо нұсқасы"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Қолданба қосулы"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Батареяны пайдаланып жатқан қолданбалар"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ұлғайту"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Есту құрылғысы"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Арнайы мүмкіндіктерді қолдану"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Дисплей"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> батареяны пайдалануда"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Қолданбаны жүктеп алу"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Жаңа SIM салынды"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Оны орнату үшін түртіңіз"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Уақыт белдеуі өзгертілді"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Қазір <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) уақыт белдеуіндесіз."</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Уақытты реттеу"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Мезгілін реттеу"</string> <string name="date_time_set" msgid="4603445265164486816">"Орнату"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Бір қолмен басқару режимі"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Экранды қарайту"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Есту аппараттары"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ажыратылды"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Қосылды"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Белсенді"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Жүктеліп жатыр"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Пайдаланушы дыбыс деңгейі пернелерін басып ұстап тұрды. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> қосулы."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дыбыс деңгейі пернелерін басып тұрған соң, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өшірілді."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Дыбыс деңгейі пернелерін жіберіңіз. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> қызметін қосу үшін дыбыс деңгейі пернесінің екеуін де қайтадан 3 секундқа басып тұрыңыз."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Келесіде осы жылдам пәрменді қолданғанда, функция ашылады. 2 саусақпен экранның төменгі жағынан жоғары қарай сырғытып, жылдам жіберіп қалыңыз."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Келесіде осы жылдам пәрменді қолданғанда, функция ашылады. 3 саусақпен экранның төменгі жағынан жоғары қарай сырғытып, жылдам жіберіп қалыңыз."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ұлғайту"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Телефонның микрофонына ауысу керек пе?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Есту аппаратының микрофонына ауысу керек пе?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Дауыс жақсы шығу үшін немесе есту аппаратының батарея заряды аз болған жағдайда пайдалануға болады. Микрофонға тек қоңырау кезінде ауысады."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Дауыспен басқару арқылы қоңырау шалу үшін есту аппаратының микрофонын пайдалана аласыз. Микрофонға тек қоңырау кезінде ауысады."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Ауысу"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Параметрлер"</string> <string name="user_switched" msgid="7249833311585228097">"Ағымдағы пайдаланушы <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> профиліне ауысу…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> ішінен шығу…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Қауіпсіздік мақсатында қолданба контенті экранды көрсету кезінде жасырылды."</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Жерсерік қызметіне автоматты түрде қосылды"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Мобильдік не Wi-Fi желісіне қосылмастан хабар жібере аласыз және ала аласыз."</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Жерсерік арқылы хабар алмасасыз ба?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Хабарландыруларды мобильдік желіге немесе Wi-Fi желісіне қосылмай жіберіңіз және алыңыз."</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages қолданбасын ашу"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 737fe883930c..190693976be1 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"មិនអាចភ្ជាប់បណ្ដាញទូរសព្ទចល័តបានទេ"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"សាកល្បងប្ដូរទៅបណ្ដាញដែលចង់ប្រើ។ សូមចុចដើម្បីផ្លាស់ប្ដូរ។"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"មិនអាចប្រើការហៅបន្ទាន់បានទេ"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"កុំបង្ហាញទៀត"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"ការហៅទៅលេខសង្គ្រោះបន្ទាន់តម្រូវឱ្យមានបណ្ដាញទូរសព្ទចល័ត"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"ការជូនដំណឹង"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"ការបញ្ជូនការហៅទូរសព្ទបន្ត"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ការជូនដំណឹងអំពីបណ្តាញ"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"មានបណ្តាញ"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"ស្ថានភាព VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"ម៉ោង និងល្វែងម៉ោង"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"ការជូនដំណឹងពីអ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នក"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"ការជូនដំណឹង"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"របៀបដាក់បង្ហាញក្នុងហាង"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"កម្មវិធីដែលកំពុងដំណើរការ"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"កម្មវិធីដែលកំពុងប្រើថ្ម"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"ការពង្រីក"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"ឧបករណ៍ជំនួយការស្ដាប់"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ការប្រើប្រាស់ភាពងាយស្រួល"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ផ្ទាំងអេក្រង់"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> កំពុងប្រើថ្ម"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ទាញយកកម្មវិធី"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"ស៊ីមកាតថ្មីត្រូវបានស៊កចូល"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ប៉ះដើម្បីដំឡើង"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"ល្វែងម៉ោងរបស់អ្នកបានផ្លាស់ប្ដូរ"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"ឥឡូវនេះ អ្នកស្ថិតនៅ <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"កំណត់ម៉ោង"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"កំណត់កាលបរិច្ឆេទ"</string> <string name="date_time_set" msgid="4603445265164486816">"កំណត់"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"មុខងារប្រើដៃម្ខាង"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ងងឹតខ្លាំង"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ឧបករណ៍ជំនួយការស្ដាប់"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"បានផ្ដាច់"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"បានភ្ជាប់"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"សកម្ម"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"កំពុងផ្ទុក"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"បានសង្កត់គ្រាប់ចុចកម្រិតសំឡេងជាប់។ បានបិទ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>។"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"លែងគ្រាប់ចុចកម្រិតសំឡេង។ ដើម្បីបើក <xliff:g id="SERVICE_NAME">%1$s</xliff:g> សូមចុចគ្រាប់ចុចកម្រិតសំឡេងទាំងពីរឱ្យជាប់ម្ដងទៀតរយៈពេល 3 វិនាទី។"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"មុខងារនេះនឹងបើក ពេលអ្នកប្រើផ្លូវកាត់នេះនៅលើកក្រោយ។ អូសពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នកឡើងលើដោយប្រើម្រាមដៃ 2 ហើយលែងឱ្យរហ័ស។"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"មុខងារនេះនឹងបើក ពេលអ្នកប្រើផ្លូវកាត់នេះនៅលើកក្រោយ។ អូសពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នកឡើងលើដោយប្រើម្រាមដៃ 3 ហើយលែងឱ្យរហ័ស។"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ការពង្រីក"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ប្ដូរទៅមីក្រូហ្វូនទូរសព្ទឬ?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"ប្ដូរទៅមីក្រូហ្វូនឧបករណ៍ជំនួយការស្ដាប់ឬ?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"ដើម្បីទទួលបានសំឡេងកាន់តែប្រសើរ ឬប្រសិនបើថ្មឧបករណ៍ជំនួយការស្ដាប់របស់អ្នកជិតអស់។ ការធ្វើបែបនេះប្ដូរមីក្រូហ្វូនរបស់អ្នក ក្នុងអំឡុងការហៅទូរសព្ទតែប៉ុណ្ណោះ។"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"អ្នកអាចប្រើមីក្រូហ្វូនឧបករណ៍ជំនួយការស្ដាប់របស់អ្នកសម្រាប់ការហៅទូរសព្ទដោយមិនប្រើដៃ។ ការធ្វើបែបនេះប្ដូរមីក្រូហ្វូនរបស់អ្នក ក្នុងអំឡុងការហៅទូរសព្ទតែប៉ុណ្ណោះ។"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ប្ដូរ"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ការកំណត់"</string> <string name="user_switched" msgid="7249833311585228097">"អ្នកប្រើបច្ចុប្បន្ន <xliff:g id="NAME">%1$s</xliff:g> ។"</string> <string name="user_switching_message" msgid="1912993630661332336">"កំពុងប្ដូរទៅ <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"កំពុងចេញ <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"បានលាក់ខ្លឹមសារកម្មវិធីពីការបង្ហាញអេក្រង់ដើម្បីសុវត្ថិភាព"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"ភ្ជាប់ដោយស្វ័យប្រវត្តិទៅផ្កាយរណប"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"អ្នកអាចផ្ញើ និងទទួលសារដោយមិនប្រើបណ្តាញទូរសព្ទចល័ត ឬ Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"ប្រើការផ្ញើសារតាមផ្កាយរណបឬ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"ផ្ញើ និងទទួលសារដោយគ្មានបណ្ដាញ Wi-Fi ឬបណ្ដាញទូរសព្ទចល័ត"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"បើកកម្មវិធី Messages"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 87a0bef2ceb6..9c11160f502d 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ತಲುಪಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ಆದ್ಯತೆಗೊಳಿಸಿದ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಪ್ರಯತ್ನಿಸಿ. ಬದಲಾಯಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"ತುರ್ತು ಕರೆ ಮಾಡುವಿಕೆ ಲಭ್ಯವಿಲ್ಲ"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"ಪುನಃ ತೋರಿಸಬೇಡಿ"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"ತುರ್ತು ಕರೆಗಳಿಗೆ ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ನ ಅಗತ್ಯವಿದೆ"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"ಎಚ್ಚರಿಕೆಗಳು"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"ಕರೆ ಫಾರ್ವರ್ಡ್ ಮಾಡುವಿಕೆ"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ನೆಟ್ವರ್ಕ್ ಎಚ್ಚರಿಕೆಗಳು"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"ನೆಟ್ವರ್ಕ್ ಲಭ್ಯವಿದೆ"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN ಸ್ಥಿತಿ"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"ಸಮಯ ಹಾಗೂ ಸಮಯ ವಲಯಗಳು"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"ನಿಮ್ಮ IT ವಿಭಾಗದ ನಿರ್ವಾಹಕರಿಂದ ಎಚ್ಚರಿಕೆಗಳು"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"ಎಚ್ಚರಿಕೆಗಳು"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"ರಿಟೇಲ್ ಡೆಮೋ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App ರನ್ ಆಗುತ್ತಿದೆ"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ಅಪ್ಲಿಕೇಶನ್ಗಳು ಬ್ಯಾಟರಿಯನ್ನು ಉಪಯೋಗಿಸುತ್ತಿವೆ"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"ಹಿಗ್ಗಿಸುವಿಕೆ"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"ಹಿಯರಿಂಗ್ ಸಾಧನ"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ಪ್ರವೇಶಿಸುವಿಕೆಯ ಬಳಕೆ"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ಡಿಸ್ಪ್ಲೇ"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್, ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸುತ್ತಿದೆ"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ಆ್ಯಪ್ ಡೌನ್ಲೋಡ್ ಮಾಡಿ"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"ಹೊಸ ಸಿಮ್ ಸೇರಿಸಲಾಗಿದೆ"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ಇದನ್ನು ಸ್ಥಾಪಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"ನಿಮ್ಮ ಸಮಯವಲಯ ಬದಲಾಗಿದೆ."</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"ನೀವು ಈಗ <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) ನಲ್ಲಿದ್ದೀರಿ"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"ಸಮಯವನ್ನು ಸೆಟ್ ಮಾಡಿ"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"ದಿನಾಂಕವನ್ನು ಸೆಟ್ ಮಾಡಿ"</string> <string name="date_time_set" msgid="4603445265164486816">"ಹೊಂದಿಸು"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ಒಂದು ಕೈ ಮೋಡ್"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ಇನ್ನಷ್ಟು ಮಬ್ಬು"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ಶ್ರವಣ ಸಾಧನಗಳು"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ಡಿಸ್ಕನೆಕ್ಟ್ ಆಗಿದೆ"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"ಕನೆಕ್ಟ್ ಆಗಿದೆ"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"ಸಕ್ರಿಯವಾಗಿದೆ"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"ಲೋಡ್ ಆಗುತ್ತಿದೆ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದುಕೊಳ್ಳಿ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಲಾಗಿದೆ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ಆಫ್ ಮಾಡಲಾಗಿದೆ."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿ. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಲು, ಎರಡೂ ವಾಲ್ಯೂಮ್ ಕೀಗಳನ್ನು ಮತ್ತೊಮ್ಮೆ 3 ಸೆಕೆಂಡ್ಗಳ ಕಾಲ ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ಮುಂದಿನ ಬಾರಿ ನೀವು ಈ ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ಬಳಸುವಾಗ ಈ ಫೀಚರ್ ಆನ್ ಆಗುತ್ತದೆ. ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಕೆಳಗಿನಿಂದ 2 ಬೆರಳುಗಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಹಾಗೂ ತ್ವರಿತವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಿ."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ಮುಂದಿನ ಬಾರಿ ನೀವು ಈ ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ಬಳಸುವಾಗ ಈ ಫೀಚರ್ ಆನ್ ಆಗುತ್ತದೆ. ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಕೆಳಗಿನಿಂದ 3 ಬೆರಳುಗಳಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಹಾಗೂ ತ್ವರಿತವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಿ."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ಹಿಗ್ಗಿಸುವಿಕೆ"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ಫೋನ್ ಮೈಕ್ಗೆ ಬದಲಿಸಬೇಕೆ?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"ಶ್ರವಣ ಸಾಧನ ಮೈಕ್ಗೆ ಬದಲಿಸಬೇಕೆ?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"ಉತ್ತಮ ಧ್ವನಿಗಾಗಿ ಅಥವಾ ನಿಮ್ಮ ಶ್ರವಣ ಸಾಧನದ ಬ್ಯಾಟರಿ ಕಡಿಮೆಯಿದ್ದರೆ. ಇದು ಕರೆಯ ಸಮಯದಲ್ಲಿ ಮಾತ್ರ ನಿಮ್ಮ ಮೈಕ್ ಅನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"ಹ್ಯಾಂಡ್ಸ್-ಫ್ರೀ ಕರೆ ಮಾಡುವಿಕೆಗಾಗಿ ನಿಮ್ಮ ಶ್ರವಣ ಸಾಧನದ ಮೈಕ್ರೊಫೋನ್ ಅನ್ನು ನೀವು ಬಳಸಬಹುದು. ಇದು ಕರೆಯ ಸಮಯದಲ್ಲಿ ಮಾತ್ರ ನಿಮ್ಮ ಮೈಕ್ ಅನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ಬದಲಿಸಿ"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ಸೆಟ್ಟಿಂಗ್ಗಳು"</string> <string name="user_switched" msgid="7249833311585228097">"ಪ್ರಸ್ತುತ ಬಳಕೆದಾರರು <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>ಗೆ ಬದಲಾಯಿಸಲಾಗುತ್ತಿದೆ…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> ಅವರನ್ನು ಲಾಗ್ ಔಟ್ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ಭದ್ರತೆಗಾಗಿ ಸ್ಕ್ರೀನ್ ಹಂಚಿಕೊಳ್ಳುವಿಕೆಯಲ್ಲಿ ಆ್ಯಪ್ ಕಂಟೆಂಟ್ ಅನ್ನು ಮರೆಮಾಡಲಾಗಿದೆ"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"ಸ್ಯಾಟಲೈಟ್ಗೆ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕನೆಕ್ಟ್ ಆಗಿದೆ"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"ನೀವು ಮೊಬೈಲ್ ಅಥವಾ ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ ಇಲ್ಲದೆಯೇ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಬಹುದು ಮತ್ತು ಸ್ವೀಕರಿಸಬಹುದು"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"ಸ್ಯಾಟಲೈಟ್ ಮೆಸೇಜಿಂಗ್ ಅನ್ನು ಬಳಸಬೇಕೆ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"ಮೊಬೈಲ್ ಅಥವಾ ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ ಇಲ್ಲದೆಯೇ ಸಂದೇಶಗಳನ್ನು ಕಳುಹಿಸಿ ಮತ್ತು ಸ್ವೀಕರಿಸಿ"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ಅನ್ನು ತೆರೆಯಿರಿ"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 51921be8b6b4..1b302e633fa7 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"모바일 네트워크에 연결할 수 없습니다."</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"기본 네트워크를 변경해 보세요. 탭하여 변경할 수 있습니다."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"긴급 전화를 사용할 수 없습니다."</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"다시 표시 안 함"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"긴급 전화를 걸려면 모바일 네트워크 연결이 필요함"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"알림"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"착신전환"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"네트워크 알림"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"네트워크 사용 가능"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN 상태"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"시간 및 시간대"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"IT 관리자가 보낸 알림"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"알림"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"소매 데모"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"실행 중인 앱"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"배터리를 소모하는 앱"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"확대"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"청각 보조 기기"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"접근성 사용"</string> <string name="notification_channel_display" msgid="6905032605735615090">"디스플레이"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g>에서 배터리 사용 중"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"앱 다운로드"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"새 SIM이 삽입됨"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"탭하여 설정"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"시간대가 변경되었습니다"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"현재 시간대는 <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g>(<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)입니다."</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"시간 설정"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"날짜 설정"</string> <string name="date_time_set" msgid="4603445265164486816">"설정"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"한 손 모드"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"더 어둡게"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"청각 보조 기기"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"연결 끊김"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"연결됨"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"활성"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"로드 중"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 설정되었습니다."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"볼륨 키를 길게 눌렀습니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>이(가) 사용 중지되었습니다."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"볼륨 키에서 손을 뗍니다. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>을 켜려면 볼륨 키 2개를 3초 동안 길게 누르세요."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"다음번에 이 단축키를 사용할 때 이 기능이 열립니다. 화면 하단에서 손가락 두 개를 사용해 위로 스와이프했다가 빠르게 놓습니다."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"다음번에 이 단축키를 사용할 때 이 기능이 열립니다. 화면 하단에서 손가락 세 개를 사용해 위로 스와이프했다가 빠르게 놓습니다."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"확대"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"휴대전화 마이크로 전환하시겠습니까?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"보청기 마이크로 전환하시겠습니까?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"더 나은 음질을 원하거나 보청기 배터리가 부족한 경우 전환할 수 있습니다. 통화 중에만 마이크가 전환됩니다."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"보청기 마이크로 핸즈프리 통화 기능을 이용할 수 있습니다. 통화 중에만 마이크가 전환됩니다."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"전환"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"설정"</string> <string name="user_switched" msgid="7249833311585228097">"현재 사용자는 <xliff:g id="NAME">%1$s</xliff:g>님입니다."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>로 전환하는 중…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>님을 로그아웃하는 중…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"보안을 위해 화면 공유에서 앱 콘텐츠가 숨겨집니다."</string> <string name="satellite_notification_title" msgid="4026338973463121526">"위성에 자동 연결됨"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"모바일 또는 Wi-Fi 네트워크 없이 메시지를 주고 받을 수 있습니다"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"위성 메시지를 사용하시겠습니까?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"모바일 또는 Wi-Fi 네트워크 없이 메시지 주고받기"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"메시지 열기"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 7ca2092dddf0..58a6d8486caf 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Мобилдик тармакка туташпай жатат"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Тандалган тармакты өзгөртүп көрүңүз. Өзгөртүү үчүн таптаңыз."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Шашылыш чалуу жеткиликсиз"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Экинчи көрүнбөсүн"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Шашылыш чалуу үчүн мобилдик тармак талап кылынат"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Шашылыш билдирүүлөр"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Чалууну башка номерге багыттоо"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Тармактын эскертүүлөрү"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Жеткиликтүү тармактар"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN абалы"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Убакыт жана убакыт алкактары"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"IT администраторуңуздан келген билдирүүлөр"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Шашылыш билдирүүлөр"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Чекене соода дүкөнү үчүн демо режим"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Колдонмо иштеп жатат"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Колдонмолор батареяңызды коротууда"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Чоңойтуу"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Угуу аппараты"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Атайын мүмкүнчүлүктөрдүн колдонулушу"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Экран"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосу батареяны пайдаланып жатат"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Колдонмону жүктөп алуу"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Жаңы SIM карта салынды"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Аны жөндөө үчүн таптап коюңуз"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Убакыт алкагыңыз өзгөрдү"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Учурдагы убакыт алкагы: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Убакытты коюу"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Күндү коюу"</string> <string name="date_time_set" msgid="4603445265164486816">"Коюу"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Бир кол режими"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Кошумча караңгылатуу"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Угуу түзмөктөрү"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Ажыратылды"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Туташты"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Жигердүү"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Жүктөлүүдө"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> күйгүзүлдү."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Үндү катуулатуу/акырындатуу баскычтары басылып, <xliff:g id="SERVICE_NAME">%1$s</xliff:g> өчүрүлдү."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Үн баскычтарын коё бериңиз. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> кызматын күйгүзүү үчүн үн баскычтарын кайра 3 секунд коё бербей басып туруңуз."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Эми функция ушул ыкчам баскыч менен ачылат. Экранды 2 манжаңыз менен ылдыйдан өйдө карай сүрүп, тез коё бериңиз."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Эми функция ушул ыкчам баскыч менен ачылат. Экранды 3 манжаңыз менен ылдыйдан өйдө карай сүрүп, тез коё бериңиз."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Чоңойтуу"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Телефондун микрофонуна которуласызбы?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Угуу аппаратынын микрофонуна которуласызбы?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Үндүн сапатын жакшыртуу үчүн же угуу аппаратыңыздын батареясы аз болсо, телефондун микрофонун колдоно аласыз. Микрофонуңуз чалуу учурунда гана которулат."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Угуу аппаратыңыздын микрофонун үн режиминде чалуу үчүн колдоно аласыз. Микрофонуңуз чалуу учурунда гана которулат."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Которулуу"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Параметрлер"</string> <string name="user_switched" msgid="7249833311585228097">"Учурдагы колдонуучу <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> дегенге которулууда…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> чыгууда…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Коопсуздук үчүн колдонмодогу контент бөлүшүлгөн экрандан жашырылды"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Спутникке автоматтык түрдө туташтырылган"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Сиз мобилдик же Wi-Fi тармагы жок эле билдирүүлөрдү жөнөтүп, ала аласыз"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Спутник аркылуу байланышасызбы?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Мобилдик же Wi-Fi тармагына туташпай эле билдирүүлөрдү жөнөтүп, алыңыз"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Жазышуулар колдонмосун ачуу"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 32b0605b1128..3c3c58ba281a 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"ບໍ່ສາມາດຕິດຕໍ່ເຄືອຂ່າຍມືຖືໄດ້"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ໃຫ້ລອງປ່ຽນເຄືອຂ່າຍທີ່ຕ້ອງການ. ແຕະເພື່ອປ່ຽນ."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"ບໍ່ສາມາດໃຊ້ການໂທສຸກເສີນໄດ້"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"ບໍ່ຕ້ອງສະແດງອີກ"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"ໂທສຸກເສີນຕ້ອງໃຊ້ເຄືອຂ່າຍມືຖື"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"ການເຕືອນ"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"ການໂອນສາຍ"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ແຈ້ງເຕືອນເຄືອຂ່າຍ"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"ມີເຄືອຂ່າຍທີ່ສາມາດໃຊ້ໄດ້"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"ສະຖານະ VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"ເວລາ ແລະ ເຂດເວລາ"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"ການເຕືອນຈາກຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານ"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"ການເຕືອນ"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"ເດໂມສຳລັບຮ້ານຂາຍ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ແອັບກຳລັງເຮັດວຽກ"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ແອັບທີ່ກຳລັງໃຊ້ແບັດເຕີຣີ"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"ການຂະຫຍາຍ"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"ອຸປະກອນຊ່ວຍຟັງ"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ການໃຊ້ການຊ່ວຍເຂົ້າເຖິງ"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ຈໍສະແດງຜົນ"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ກຳລັງໃຊ້ແບັດເຕີຣີຢູ່"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ດາວໂຫລດແອັບ"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"ໃສ່ SIM ໃໝ່ແລ້ວ"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ແຕະເພື່ອຕັ້ງມັນ"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"ເຂດເວລາຂອງທ່ານມີການປ່ຽນແປງ"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"ຕອນນີ້ທ່ານຢູ່ໃນເຂດເວລາ <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"ຕັ້ງເວລາ"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"ກໍານົດວັນທີ"</string> <string name="date_time_set" msgid="4603445265164486816">"ຕັ້ງຄ່າ"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ໂໝດມືດຽວ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ຫຼຸດແສງເປັນພິເສດ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ອຸປະກອນຊ່ວຍຟັງ"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ຕັດການເຊື່ອມຕໍ່ແລ້ວ"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"ເຊື່ອມຕໍ່ແລ້ວ"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"ນຳໃຊ້ຢູ່"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"ກຳລັງໂຫຼດ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ເປີດໃຊ້ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ແລ້ວ."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ກົດປຸ່ມລະດັບສຽງຄ້າງໄວ້. ປິດ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ໄວ້ແລ້ວ."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ປ່ອຍປຸ່ມລະດັບສຽງ. ເພື່ອເປີດ <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, ໃຫ້ກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ 3 ວິນາທີ."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ຄຸນສົມບັດນີ້ຈະເປີດຂຶ້ນໃນເທື່ອຕໍ່ໄປທີ່ທ່ານໃຊ້ທາງລັດນີ້. ໃຊ້ 2 ນິ້ວປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍຂອງທ່ານແລ້ວປ່ອຍແບບໄວໆ."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ຄຸນສົມບັດນີ້ຈະເປີດຂຶ້ນໃນເທື່ອຕໍ່ໄປທີ່ທ່ານໃຊ້ທາງລັດນີ້. ໃຊ້ 3 ນິ້ວປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍຂອງທ່ານແລ້ວປ່ອຍແບບໄວໆ."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ການຂະຫຍາຍ"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ປ່ຽນໄປໃຊ້ໄມໂຄຣໂຟນຂອງໂທລະສັບບໍ?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"ປ່ຽນໄປໃຊ້ໄມໂຄຣໂຟນຂອງເຄື່ອງຊ່ວຍຟັງບໍ?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"ເພື່ອໃຫ້ສຽງດີຂຶ້ນ ຫຼື ໃນກໍລະນີທີ່ແບັດເຕີຣີຂອງເຄື່ອງຊ່ວຍຟັງຂອງທ່ານໃກ້ໝົດ. ການດຳເນີນການນີ້ພຽງແຕ່ປ່ຽນໄມໂຄຣໂຟນຂອງທ່ານໃນລະຫວ່າງການໂທເທົ່ານັ້ນ."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"ທ່ານສາມາດໃຊ້ໄມໂຄຣໂຟນຂອງເຄື່ອງຊ່ວຍຟັງເພື່ອການໂທແບບແຮນຟຣີໄດ້. ການດຳເນີນການນີ້ພຽງແຕ່ປ່ຽນໄມໂຄຣໂຟນຂອງທ່ານໃນລະຫວ່າງການໂທເທົ່ານັ້ນ."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ປ່ຽນ"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ການຕັ້ງຄ່າ"</string> <string name="user_switched" msgid="7249833311585228097">"ຜູ່ໃຊ້ປັດຈຸບັນ <xliff:g id="NAME">%1$s</xliff:g> ."</string> <string name="user_switching_message" msgid="1912993630661332336">"ກຳລັງສະຫຼັບໄປຫາ<xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"ກຳລັງອອກຈາກລະບົບ <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ເນື້ອຫາແອັບຖືກເຊື່ອງໄວ້ຈາກການແບ່ງປັນໜ້າຈໍເພື່ອຄວາມປອດໄພ"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"ເຊື່ອມຕໍ່ກັບດາວທຽມໂດຍອັດຕະໂນມັດ"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"ທ່ານສາມາດສົ່ງ ແລະ ຮັບຂໍ້ຄວາມໂດຍບໍ່ຕ້ອງໃຊ້ເຄືອຂ່າຍມືຖື ຫຼື Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"ໃຊ້ການຮັບສົ່ງຂໍ້ຄວາມຜ່ານດາວທຽມບໍ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"ຮັບ ແລະ ສົ່ງຂໍ້ຄວາມໂດຍບໍ່ຕ້ອງໃຊ້ເຄືອຂ່າຍໂທລະສັບມືຖື ຫຼື Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"ເປີດ Messages"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index ff7919e4e55a..3c56808d883e 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -89,8 +89,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Nepavyko pasiekti mobiliojo ryšio tinklo"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Pabandykite pakeisti pageidaujamą tinklą. Palieskite, kad pakeistumėte."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Skambučių pagalbos numeriu paslauga nepasiekiama"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Daugiau nerodyti"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Kad būtų galima skambinti pagalbos numeriais, būtina naudoti mobiliojo ryšio tinklą"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Įspėjimai"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Skambučio peradresavimas"</string> @@ -305,6 +304,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Tinklo įspėjimai"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Tinklas pasiekiamas"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN būsena"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Laikas ir laiko juostos"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"IT administratoriaus įspėjimai"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Įspėjimai"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demonstracinė versija mažmenininkams"</string> @@ -312,6 +312,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Programa paleista"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Programos, naudojančios akumuliatoriaus energiją"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Didinimas"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Klausos įrenginys"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Pritaikomumo funkcijų naudojimas"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Ekranas"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"„<xliff:g id="APP_NAME">%1$s</xliff:g>“ naudoja akumuliatoriaus energiją"</string> @@ -1409,6 +1410,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Atsisiųsti programą"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Įdėta nauja SIM kortelė"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Jei norite tai nustatyti, palieskite"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Jūsų laiko juosta pakeista"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Dabar esate <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Nustatyti laiką"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Nustatyti datą"</string> <string name="date_time_set" msgid="4603445265164486816">"Nustatyti"</string> @@ -1782,14 +1785,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Vienos rankos režimas"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Itin blanku"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Klausos įrenginiai"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Atjungta"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Prisijungta"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktyvus"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Įkeliama"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ įjungta."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Laikomi garsumo klavišai. „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“ išjungta."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Atleiskite garsumo klavišus. Kad įjungtumėte „<xliff:g id="SERVICE_NAME">%1$s</xliff:g>“, paspauskite ir 3 sekundes palaikykite garsumo klavišus."</string> @@ -1800,6 +1799,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija bus atidaryta kitą kartą, kai naudosite šį spartųjį klavišą. Perbraukite dviem pirštais aukštyn nuo ekrano apačios ir greitai atleiskite."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija bus atidaryta kitą kartą, kai naudosite šį spartųjį klavišą. Perbraukite trimis pirštais aukštyn nuo ekrano apačios ir greitai atleiskite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Didinimas"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Perjungti į telefono mikrofoną?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Perjungti į klausos aparato mikrofoną?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Kad būtų geresnis garsas arba jei klausos aparato akumuliatorius beveik išsikrovęs. Mikrofonas įjungiamas tik per skambutį."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Galite naudoti klausos aparato mikrofoną skambučiams laisvų rankų režimu. Mikrofonas įjungiamas tik per skambutį."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Perjungti"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Nustatymai"</string> <string name="user_switched" msgid="7249833311585228097">"Dabartinis naudotojas: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Perjungiama į <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Atsijungiama (<xliff:g id="NAME">%1$s</xliff:g>)…"</string> @@ -2456,6 +2461,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Programos turinys paslėptas bendrinant ekraną saugumo sumetimais"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatiškai prisijungta prie palydovinio ryšio"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Galite siųsti ir gauti pranešimus be mobiliojo ryšio ar „Wi-Fi“ tinklo"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Naudoti susirašinėjimą palydoviniais pranešimais?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Siųskite ir gaukite pranešimus be mobiliojo ryšio ar „Wi-Fi“ tinklo"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Atidaryti programą „Messages“"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index ab2c242cb55c..1870883fcc5e 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Nevar sasniegt mobilo tīklu"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Mēģiniet nomainīt vēlamo tīklu. Pieskarieties, lai to mainītu."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Nav pieejami ārkārtas izsaukumi"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Vairs nerādīt"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Lai veiktu ārkārtas zvanus, ir nepieciešams mobilais tīkls."</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Brīdinājumi"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Zvanu pāradresācija"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Tīkla brīdinājumi"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Tīkls ir pieejams"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN statuss"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Laiks un laika joslas"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Brīdinājumi no jūsu IT administratora"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Brīdinājumi"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demonstrācijas versija veikaliem"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Lietotne darbojas"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Lietotnes, kas patērē akumulatora jaudu"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Palielinājums"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Dzirdes aparāts"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Pieejamības lietojums"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Displejs"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> izmanto akumulatoru"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Lejupielādēt lietotni"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Ievietota jauna SIM karte"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Pieskarieties, lai to iestatītu."</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Jūsu laika josla ir mainīta"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Jūs tagad atrodaties šajā laika joslā: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Iestatīt laiku"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Datuma iestatīšana"</string> <string name="date_time_set" msgid="4603445265164486816">"Iestatīt"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Vienas rokas režīms"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Papildu aptumšošana"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dzirdes aparāti"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Atvienota"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Pievienota"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktīva"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Notiek ielāde"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika ieslēgts."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Turējāt nospiestas skaļuma pogas. Pakalpojums <xliff:g id="SERVICE_NAME">%1$s</xliff:g> tika izslēgts."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Atlaidiet skaļuma pogas. Lai ieslēgtu pakalpojumu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, vēlreiz nospiediet un trīs sekundes turiet nospiestas abas skaļuma pogas."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija tiks atvērta, kad nākamreiz izmantosiet šo saīsni. Velciet augšup ar diviem pirkstiem no ekrāna apakšdaļas un ātri atlaidiet."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija tiks atvērta, kad nākamreiz izmantosiet šo saīsni. Velciet augšup ar trim pirkstiem no ekrāna apakšdaļas un ātri atlaidiet."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Palielinājums"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Vai pārslēgt uz tālruņa mikrofonu?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Vai pārslēgt uz dzirdes aparāta mikrofonu?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Varat pārslēgt, lai iegūtu labāku skaņu vai ja dzirdes aparāta akumulatora uzlādes līmenis ir zems. Mikrofons tiek pārslēgts tikai zvana laikā."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Varat izmantot dzirdes aparāta mikrofonu zvaniem brīvroku režīmā. Mikrofons tiek pārslēgts tikai zvana laikā."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Pārslēgt"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Iestatījumi"</string> <string name="user_switched" msgid="7249833311585228097">"Pašreizējais lietotājs: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Notiek pāriešana uz: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Notiek lietotāja <xliff:g id="NAME">%1$s</xliff:g> atteikšanās…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Drošības nolūkos lietotnes saturs kopīgotajā ekrānā ir paslēpts"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automātiski izveidots savienojums ar satelītu"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Varat sūtīt un saņemt ziņojumus bez mobilā vai Wi-Fi tīkla."</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Vai izmantot satelīta ziņojumapmaiņu?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Sūtiet un saņemiet ziņojumus bez mobilā vai Wi‑Fi tīkla."</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Atvērt lietotni Ziņojumi"</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index c10b1ef78361..1c9e022ca3aa 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Мобилната мрежа е недостапна"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Сменете ја претпочитаната мрежа. Допрете за промена."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Итните повици се недостапни"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Не прикажувај повторно"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"За итните повици е потребна мобилна мрежа"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Предупредувања"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Проследување повик"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Известувања на мрежа"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Има достапна мрежа"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-статус"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Време и временски зони"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Предупредувања од администраторот за интернет"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Предупредувања"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Демонстрација за малопродажба"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Апликацијата работи"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Апликации што ја трошат батеријата"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Зголемување"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Слушен апарат"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Користење на пристапноста"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Екран"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> користи батерија"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Преземете апликација"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Вметната е нова SIM-картичка"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Допрете за да поставите"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Вашата временска зона се промени"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Во моментов сте во <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Постави време"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Постави датум"</string> <string name="date_time_set" msgid="4603445265164486816">"Постави"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим со една рака"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнително затемнување"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слушни помагала"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Не е поврзано"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Поврзано"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Активно"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Се вчитува"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е вклучена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ги задржавте копчињата за јачина на звук. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> е исклучена."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Ослободете ги копчињата за јачина на звукот. Притиснете ги и задржете ги двете копчиња за јачина на звукот во траење од 3 секунди за да вклучите <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функцијата ќе се отвори следниот пат кога ќе ја користите кратенкава. Повлечете нагоре со 2 прста од долниот дел на екранот и брзо отпуштете."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функцијата ќе се отвори следниот пат кога ќе ја користите кратенкава. Повлечете нагоре со 3 прста од долниот дел на екранот и брзо отпуштете."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Зголемување"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Да се префрли на микрофонот на телефонот?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Да се префрли на микрофонот на слушното помагало?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"За подобар звук или ако е слаба батеријата на вашето слушно помагало. Ова го префрла вашиот микрофон само за време на повикот."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Може да го користите вашиот микрофон на слушното помагало за повикување без користење раце. Ова го префрла вашиот микрофон само за време на повикот."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Префрли"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Поставки"</string> <string name="user_switched" msgid="7249833311585228097">"Тековен корисник <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Се префрла на <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> се одјавува…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Од безбедносни причини, содржините на апликацијата се скриени од споделувањето екран"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Поврзано со сателит автоматски"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Може да испраќате и примате пораки без мобилна или Wi-Fi мрежа"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Да се користи „Сателитска размена на пораки“?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Испраќајте и примајте пораки без мобилна или Wi-Fi мрежа"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Отворете ја Messages"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 3eef4930796f..85dd3362990c 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"മൊബൈൽ നെറ്റ്വർക്കിലേക്ക് കണക്റ്റ് ചെയ്യാനാവുന്നില്ല"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"തിരഞ്ഞെടുത്ത നെറ്റ്വർക്ക് മാറ്റുന്നത് പരീക്ഷിക്കുക. മാറ്റാൻ ടാപ്പ് ചെയ്യുക."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"എമർജൻസി കോളിംഗ് ലഭ്യമല്ല"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"വീണ്ടും കാണിക്കരുത്"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"എമർജൻസി കോളുകൾ ചെയ്യാൻ ഒരു മൊബൈൽ നെറ്റ്വർക്ക് ആവശ്യമാണ്"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"അലേർട്ടുകൾ"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"കോൾ ഫോർവേഡിംഗ്"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"നെറ്റ്വർക്ക് അലേർട്ടുകൾ"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"നെറ്റ്വർക്ക് ലഭ്യമല്ല"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN നില"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"സമയവും സമയമേഖലകളും"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"നിങ്ങളുടെ ഐടി അഡ്മിനിൽ നിന്നുള്ള മുന്നറിയിപ്പുകൾ"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"അലേർട്ടുകൾ"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"റീട്ടെയിൽ ഡെമോ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ആപ്പ് പ്രവർത്തിക്കുന്നു"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ആപ്പുകൾ ബാറ്ററി ഉപയോഗിക്കുന്നു"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"മാഗ്നിഫിക്കേഷൻ"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"കേൾവിക്കുള്ള ഉപകരണം"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ഉപയോഗസഹായി ഉപയോഗം"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ഡിസ്പ്ലേ"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ബാറ്ററി ഉപയോഗിക്കുന്നു"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ആപ്പ് ഡൗൺലോഡ് ചെയ്യുക"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"പുതിയ സിം ഇട്ടു"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ഇത് സജ്ജമാക്കുന്നതിന് ടാപ്പുചെയ്യുക"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"നിങ്ങളുടെ സമയമേഖല മാറി"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"നിങ്ങൾ ഇപ്പോൾ <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) എന്നതിൽ ആണ്"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"സമയം സജ്ജീകരിക്കുക"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"ദിവസം സജ്ജീകരിക്കുക"</string> <string name="date_time_set" msgid="4603445265164486816">"സജ്ജമാക്കുക"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ഒറ്റക്കൈ മോഡ്"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"കൂടുതൽ ഡിം ചെയ്യൽ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ശ്രവണ ഉപകരണങ്ങൾ"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"വിച്ഛേദിച്ചു"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"കണക്റ്റ് ചെയ്തു"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"സജീവം"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"ലോഡ് ചെയ്യുന്നു"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"വോളിയം കീകൾ പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓണാക്കി."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"വോളിയം കീകൾ അമർത്തിപ്പിടിച്ചു. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓഫാക്കി."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"വോളിയം കീകൾ വിടുക. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ഓണാക്കാൻ, രണ്ട് വോളിയം കീകളും വീണ്ടും മൂന്ന് സെക്കൻഡ് അമർത്തിപ്പിടിക്കുക."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"അടുത്ത തവണ നിങ്ങൾ ഈ കുറുക്കുവഴി ഉപയോഗിക്കുമ്പോൾ ഫീച്ചർ തുറക്കും. നിങ്ങളുടെ സ്ക്രീനിന്റെ താഴെ നിന്ന് 2 വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പെട്ടെന്ന് വിടുക."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"അടുത്ത തവണ നിങ്ങൾ ഈ കുറുക്കുവഴി ഉപയോഗിക്കുമ്പോൾ ഫീച്ചർ തുറക്കും. നിങ്ങളുടെ സ്ക്രീനിന്റെ താഴെ നിന്ന് 3 വിരലുകൾ ഉപയോഗിച്ച് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്ത് പെട്ടെന്ന് വിടുക."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"മാഗ്നിഫിക്കേഷൻ"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ഫോൺ മൈക്കിലേക്ക് മാറണോ?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"ശ്രവണ സഹായി മൈക്കിലേക്ക് മാറണോ?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"മികച്ച ശബ്ദത്തിന് അല്ലെങ്കിൽ നിങ്ങളുടെ ശ്രവണ സഹായിയുടെ ബാറ്ററി കുറവാണെങ്കിൽ. ഇത് കോൾ സമയത്ത് മാത്രം നിങ്ങളുടെ മൈക്ക് മാറ്റുന്നു."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"ഹാൻഡ്സ്-ഫ്രീ ആയി കോൾ ചെയ്യാൻ നിങ്ങളുടെ ശ്രവണ സഹായി മൈക്രോഫോൺ ഉപയോഗിക്കാം. ഇത് കോൾ സമയത്ത് മാത്രം നിങ്ങളുടെ മൈക്ക് മാറ്റുന്നു."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"മാറുക"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ക്രമീകരണം"</string> <string name="user_switched" msgid="7249833311585228097">"നിലവിലെ ഉപയോക്താവ് <xliff:g id="NAME">%1$s</xliff:g> ആണ്."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> എന്ന ഉപയോക്താവിലേക്ക് മാറുന്നു…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> ലോഗൌട്ട് ചെയ്യുന്നു…"</string> @@ -2454,6 +2459,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"സുരക്ഷയ്ക്കായി സ്ക്രീൻ പങ്കിടലിൽ നിന്ന് ആപ്പ് ഉള്ളടക്കം മറച്ചിരിക്കുന്നു"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"സാറ്റലൈറ്റിലേക്ക് സ്വയമേവ കണക്റ്റ് ചെയ്തു"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"മൊബൈലോ വൈഫൈ നെറ്റ്വർക്കോ ഇല്ലാതെ തന്നെ സന്ദേശങ്ങൾ അയയ്ക്കാനും സ്വീകരിക്കാനും നിങ്ങൾക്ക് കഴിയും"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"നിങ്ങൾക്ക് സാറ്റലൈറ്റ് വഴി സന്ദേശങ്ങൾ അയയ്ക്കാനും സ്വീകരിക്കാനും പരിമിതമായ ഡാറ്റ ഉപയോഗിക്കാനും കഴിയും"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"സാറ്റലൈറ്റ് സന്ദേശമയയ്ക്കൽ ഉപയോഗിക്കണോ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"മൊബൈൽ അല്ലെങ്കിൽ വൈഫൈ നെറ്റ്വർക്ക് ഇല്ലാതെ സന്ദേശങ്ങൾ അയയ്ക്കുകയും സ്വീകരിക്കുകയും ചെയ്യുക"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages തുറക്കുക"</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index f81cff89ca21..e70a95ce77d2 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Хөдөлгөөнт холбооны сүлжээнд холбогдох боломжгүй байна"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Сонгосон сүлжээг өөрчлөхөөр оролдоно уу. Өөрчлөхийн тулд товшино уу."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Яаралтай дуудлага хийх боломжгүй"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Дахиж бүү харуул"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Яаралтай дуудлагуудад хөдөлгөөнт холбооны сүлжээ шаардлагатай"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Сануулга"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Дуудлага шилжүүлэх"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Сүлжээний сануулга"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Сүлжээ боломжтой"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN төлөв"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Цаг, цагийн бүс"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Таны IT админаас илгээсэн сэрэмжлүүлэг"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Сануулга"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Жижиглэнгийн жишээ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Апп ажиллаж байна"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Апп батарей ашиглаж байна"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Томруулах"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Сонсголын төхөөрөмж"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Хандалтын ашиглалт"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Дэлгэц"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> батарей ашиглаж байна"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Апп татаж авах"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Шинэ SIM-г оруулсан"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Үүнийг тохируулахын тулд дарна уу"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Таны цагийн бүс өөрчлөгдсөн"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Та одоо <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)-д байна"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Цагийн тохируулах"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Огноо оруулах"</string> <string name="date_time_set" msgid="4603445265164486816">"Тохируулах"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Нэг гарын горим"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Хэт бүүдгэр"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Сонсголын төхөөрөмжүүд"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Салсан"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Холбогдсон"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Идэвхтэй"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Ачаалж байна"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаалаа."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Дууны түвшний түлхүүрийг удаан дарсан. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г унтраалаа."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Дууны түвшний товчнуудыг суллана уу. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>-г асаахын тулд дууны түвшний 2 товчийг зэрэг 3 секундийн турш удаан дарна уу."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Таныг дараагийн удаа энэ товчлолыг ашиглах үед тус онцлог нээгдэнэ. Дэлгэцийнхээ доод талаас 2 хуруугаараа дээш шудраад, түргэн суллана уу."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Таныг дараагийн удаа энэ товчлолыг ашиглах үед тус онцлог нээгдэнэ. Дэлгэцийнхээ доод талаас 3 хуруугаараа дээш шудраад, түргэн суллана уу."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Томруулах"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Утасны микрофон руу сэлгэх үү?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Сонсголын төхөөрөмжийн микрофон руу сэлгэх үү?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Дуу чимээг сайжруулахын тулд эсвэл таны сонсголын төхөөрөмжийн батарей бага бол. Энэ нь зөвхөн дуудлагын үеэр таны микрофоныг сэлгэнэ."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Та гараас хамаарахгүй дуудлагад сонсголын төхөөрөмжийнхөө микрофоныг ашиглаж болно. Энэ нь зөвхөн дуудлагын үеэр таны микрофоныг сэлгэнэ."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Сэлгэх"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Тохиргоо"</string> <string name="user_switched" msgid="7249833311585228097">"Одоогийн хэрэглэгч <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> руу сэлгэж байна…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>-с гарч байна…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Аюулгүй байдлын үүднээс аппын контентыг дэлгэц хуваалцахаас нуусан"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Хиймэл дагуулд автоматаар холбогдсон"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Та мобайл эсвэл Wi-Fi сүлжээгүйгээр мессеж илгээх болон хүлээн авах боломжтой"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Хиймэл дагуулаар дамжин мессеж бичихийг ашиглах уу?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Хөдөлгөөнт холбооны эсвэл Wi-Fi сүлжээгүйгээр мессеж илгээх болон хүлээн авах"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Мессежийг нээх"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 98fedef134b9..cbe6b979d1d8 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"मोबाइल नेटवर्क उपलब्ध नाही"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"प्राधान्य दिलेले नेटवर्क बदलण्याचा प्रयत्न करा. बदलण्यासाठी टॅप करा."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"आणीबाणी कॉलिंग अनुपलब्ध"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"पुन्हा दाखवू नका"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"आणीबाणी कॉलसाठी मोबाइल नेटवर्क आवश्यक आहे"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"अलर्ट"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"कॉल फॉरवर्डिंग"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"नेटवर्क सूचना"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"नेटवर्क उपलब्ध"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN स्थिती"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"वेळ आणि टाइम झोन"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"तुमच्या IT ॲडमिनकडून आलेल्या सूचना"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"सूचना"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"रीटेल डेमो"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"APP चालत आहे"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"बॅटरी लवकर संपवणारी अॅप्स"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"मॅग्निफिकेशन"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"श्रवणयंत्र"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"अॅक्सेसिबिलिटी वापर"</string> <string name="notification_channel_display" msgid="6905032605735615090">"डिस्प्ले"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> बॅटरी वापरत आहे"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"अॅप डाउनलोड करा"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"नवीन सिम घाला"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ते सेट करण्यासाठी टॅप करा"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"तुमचा टाइम झोन बदलला आहे"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"आता तुम्ही <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) मध्ये आहात."</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"वेळ सेट करा"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"तारीख सेट करा"</string> <string name="date_time_set" msgid="4603445265164486816">"सेट करा"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"एकहाती मोड"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"आणखी डिम"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"श्रवणयंत्रे"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"डिस्कनेक्ट केले आहे"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"कनेक्ट केले आहे"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"अॅक्टिव्ह"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"लोड करत आहे"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सुरू केला आहे."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"धरून ठेवलेल्या व्हॉल्यूम की. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> बंद केले आहे."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"व्हॉल्यूम की रिलीझ करा. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> सुरू करण्यासाठी, दोन्ही व्हॉल्यूम की पुन्हा प्रेस करा आणि तीन सेकंदांसाठी धरून ठेवा."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"तुम्ही पुढील वेळी हा शॉर्टकट वापराल, तेव्हा वैशिष्ट्य उघडेल. २ बोटांनी तुमच्या स्क्रीनच्या तळापासून वर स्वाइप करा आणि पटकन रिलीझ करा."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"तुम्ही पुढील वेळी हा शॉर्टकट वापराल, तेव्हा वैशिष्ट्य उघडेल. ३ बोटांनी तुमच्या स्क्रीनच्या तळापासून वर स्वाइप करा आणि पटकन रिलीझ करा."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"मॅग्निफिकेशन"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"फोनच्या माइकवर स्विच करायचे आहे का?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"श्रवणयंत्राच्या माइकवर स्विच करायचे आहे का?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"चांगल्या आवाजासाठी किंवा तुमच्या श्रवणयंत्राची बॅटरी कमी असल्यास. यामुळे कॉलदरम्यान फक्त तुमचा माइक स्विच केला जातो."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"हँड्स-फ्री कॉलिंगसाठी तुम्ही तुमच्या श्रवणयंत्राचा मायक्रोफोन वापरू शकता. यामुळे कॉलदरम्यान फक्त तुमचा माइक स्विच केला जातो."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"स्विच करा"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"सेटिंग्ज"</string> <string name="user_switched" msgid="7249833311585228097">"वर्तमान वापरकर्ता <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> वर स्विच करत आहे…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> लॉग आउट करत आहे…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"स्क्रीन शेअर करताना सुरक्षेसाठी अॅपमधील आशय लपवला आहे"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"उपग्रहाशी आपोआप कनेक्ट केलेले आहे"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"तुम्ही मोबाइल किंवा वाय-फाय नेटवर्कशिवाय मेसेज पाठवू आणि मिळवू शकता"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"सॅटेलाइट मेसेजिंग वापरायचे आहे का?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"मोबाइल किंवा वाय-फाय नेटवर्कशिवाय मेसेज पाठवणे आणि मिळवणे"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages उघडा"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index 2ce54d0ffc39..5cb9defbcd3e 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Tidak dapat mencapai rangkaian mudah alih"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Cuba tukar rangkaian pilihan. Ketik untuk menukar."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Panggilan kecemasan tidak tersedia"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Jangan Tunjukkan Lagi"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Rangkaian mudah alih diperlukan untuk membuat panggilan kecemasan"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Makluman"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Pemajuan panggilan"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Makluman rangkaian"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Rangkaian tersedia"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Status VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Masa dan zon waktu"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Makluman daripada pentadbir IT anda"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Makluman"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Tunjuk cara runcit"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Apl berjalan"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apl yang menggunakan bateri"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Pembesaran"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Peranti pendengaran"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Penggunaan kebolehaksesan"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Paparan"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> sedang menggunakan bateri"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Muat turun apl"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"SIM baharu dimasukkan"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Ketik untuk menyediakannya"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Zon waktu anda berubah"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Kini anda berada dalam <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Tetapkan masa"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Tetapkan tarikh"</string> <string name="date_time_set" msgid="4603445265164486816">"Tetapkan"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Mod sebelah tangan"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Amat malap"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Peranti pendengaran"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Diputuskan sambungan"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Disambungkan"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktif"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Memuatkan"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dihidupkan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Kekunci kelantangan ditahan. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> dimatikan."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Lepaskan kekunci kelantangan. Untuk menghidupkan <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, sila tekan dan tahan kedua-dua kekunci kelantangan sekali lagi selama 3 saat."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Ciri ini akan dibuka pada kali seterusnya anda menggunakan pintasan ini. Leret ke atas menggunakan 2 jari dari bahagian bawah skrin anda dan lepaskan dengan cepat."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Ciri ini akan dibuka pada kali seterusnya anda menggunakan pintasan ini. Leret ke atas menggunakan 3 jari dari bahagian bawah skrin anda dan lepaskan dengan cepat."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Pembesaran"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Tukar kepada mikrofon telefon?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Tukar kepada mikrofon alat bantu pendengaran?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Untuk mendapatkan bunyi yang lebih baik atau jika bateri alat bantu pendengaran anda lemah. Tindakan ini hanya menukar mikrofon anda semasa panggilan."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Anda boleh menggunakan mikrofon alat bantu pendengaran anda untuk membuat panggilan bebas tangan. Tindakan ini hanya menukar mikrofon anda semasa panggilan."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Tukar"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Tetapan"</string> <string name="user_switched" msgid="7249833311585228097">"Pengguna semasa <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Beralih kepada <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Log keluar daripada <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Kandungan apl disembunyikan daripada perkongsian skrin untuk keselamatan"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Disambungkan secara automatik kepada satelit"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Anda boleh menghantar dan menerima mesej tanpa rangkaian mudah alih atau Wi-Fi"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"Anda boleh menghantar dan menerima mesej serta menggunakan data terhad melalui satelit"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Gunakan pemesejan satelit?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Hantar dan terima mesej tanpa rangkaian mudah alih atau Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Buka Messages"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index 3e0187a225a0..432f7f9c6aa0 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"မိုဘိုင်းကွန်ရက် လိုင်းမရပါ"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ဦးစားပေးကွန်ရက်သို့ ပြောင်းကြည့်ပါ။ ပြောင်းရန် တို့ပါ။"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"အရေးပေါ်ခေါ်ဆိုမှု မရနိုင်ပါ"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"ထပ်မပြပါနှင့်"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"အရေးပေါ်ဖုန်းခေါ်ရန် မိုဘိုင်းကွန်ရက် လိုအပ်သည်"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"သတိပေးချက်များ"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"အဝင်ခေါ်ဆိုမှုအား ထပ်ဆင့်ပို့ခြင်း"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ကွန်ရက် သတိပေးချက်များ"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"ကွန်ရက်ချိတ်ဆက်မှု ရရှိနိုင်ပါသည်"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN အခြေအနေ"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"အချိန်နှင့် ဒေသစံတော်ချိန်များ"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"သင်၏ IT စီမံခန့်ခွဲသူထံမှ သတိပေးချက်များ"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"သတိပေးချက်များ"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"လက်လီအရောင်းဆိုင် သရုပ်ပြမှု"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"APP လုပ်ဆောင်နေသည်"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"အက်ပ်များက ဘက်ထရီကုန်စေသည်"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"ချဲ့ခြင်း"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"နားကြားကိရိယာ"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"အများသုံးစွဲနိုင်မှုကို အသုံးပြုမှု"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ဖန်သားပြင်"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> က ဘက်ထရီကို အသုံးပြုနေသည်"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"အက်ပ် ဒေါင်းလုဒ်လုပ်ရန်"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"SIM အသစ်ထည့်သွင်းလိုက်ပါသည်"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"၎င်းကိုတပ်ဆင်ရန် တို့ပါ"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"သင်၏ဒေသစံတော်ချိန် ပြောင်းသွားပါပြီ"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"သင်သည် ယခု <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) တွင် ရှိနေသည်"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"အချိန်သတ်မှတ်ရန်"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"ရက်စွဲ အတည်ပြုရန်"</string> <string name="date_time_set" msgid="4603445265164486816">"သတ်မှတ်ရန်"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"လက်တစ်ဖက်သုံးမုဒ်"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ပိုမှိန်ခြင်း"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"နားကြားကိရိယာ"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ချိတ်ဆက်မထားပါ"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"ချိတ်ဆက်ထားသည်"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"သုံးနေသည်"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"ဖွင့်နေသည်"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ဖွင့်လိုက်သည်။"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"အသံခလုတ်များကို ဖိထားသည်။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ပိတ်လိုက်သည်။"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"အသံထိန်းခလုတ်များကို လွှတ်လိုက်ပါ။ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ဖွင့်ရန် အသံထိန်းခလုတ်နှစ်ခုစလုံးကို ၃ စက္ကန့်ကြာအောင် ထပ်နှိပ်ပါ။"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"နောက်တစ်ကြိမ်တွင် ဤဖြတ်လမ်းကို သုံးသည့်အခါ ဤဝန်ဆောင်မှု ပွင့်လာမည်။ သင့်ဖန်သားပြင်အောက်ခြေမှ အပေါ်သို့ လက် ၂ ချောင်းဖြင့် ပွတ်ဆွဲ၍ အမြန်လွှတ်လိုက်ပါ။"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"နောက်တစ်ကြိမ်တွင် ဤဖြတ်လမ်းကို သုံးသည့်အခါ ဤဝန်ဆောင်မှု ပွင့်လာမည်။ သင့်ဖန်သားပြင်အောက်ခြေမှ အပေါ်သို့ လက် ၃ ချောင်းဖြင့် ပွတ်ဆွဲ၍ အမြန်လွှတ်လိုက်ပါ။"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ချဲ့ခြင်း"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ဖုန်း၏မိုက်သို့ ပြောင်းမလား။"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"နားကြားကိရိယာ၏မိုက်သို့ ပြောင်းမလား။"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"အသံပိုကောင်းစေရန် (သို့) နားကြားကိရိယာ၏ ဘက်ထရီ နည်းနေပါက။ ခေါ်ဆိုနေစဉ်သာ သင့်မိုက်ကို ပြောင်းပေးသည်။"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"လက်လွတ်ခေါ်ဆိုခြင်းအတွက် နားကြားကိရိယာ၏ မိုက်ခရိုဖုန်းကို သုံးနိုင်သည်။ ခေါ်ဆိုနေစဉ်သာ သင့်မိုက်ကို ပြောင်းပေးသည်။"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ပြောင်းရန်"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ဆက်တင်များ"</string> <string name="user_switched" msgid="7249833311585228097">"လက်ရှိအသုံးပြုနေသူ <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>သို့ ပြောင်းနေသည်…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>ကို ထွက်ပစ်ပါတော့မည်..."</string> @@ -1949,13 +1954,13 @@ <string name="data_saver_enable_title" msgid="7080620065745260137">"ဒေတာချွေတာမှုစနစ် ဖွင့်မလား။"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"ဖွင့်ရန်"</string> <string name="zen_mode_duration_minutes_summary" msgid="4555514757230849789">"{count,plural, =1{တစ်မိနစ်ကြာ ({formattedTime} အထိ)}other{# မိနစ်ကြာ ({formattedTime} အထိ)}}"</string> - <string name="zen_mode_duration_minutes_summary_short" msgid="1187553788355486950">"{count,plural, =1{1 မိနစ်ကြာ ({formattedTime} အထိ)}other{# မိနစ်ကြာ ({formattedTime} အထိ)}}"</string> - <string name="zen_mode_duration_hours_summary" msgid="3866333100793277211">"{count,plural, =1{1 နာရီကြာ ({formattedTime} အထိ)}other{# နာရီကြာ ({formattedTime} အထိ)}}"</string> - <string name="zen_mode_duration_hours_summary_short" msgid="687919813833347945">"{count,plural, =1{1 နာရီကြာ ({formattedTime} အထိ)}other{# နာရီကြာ ({formattedTime} အထိ)}}"</string> + <string name="zen_mode_duration_minutes_summary_short" msgid="1187553788355486950">"{count,plural, =1{၁ မိနစ်ကြာ ({formattedTime} အထိ)}other{# မိနစ်ကြာ ({formattedTime} အထိ)}}"</string> + <string name="zen_mode_duration_hours_summary" msgid="3866333100793277211">"{count,plural, =1{၁ နာရီကြာ ({formattedTime} အထိ)}other{# နာရီကြာ ({formattedTime} အထိ)}}"</string> + <string name="zen_mode_duration_hours_summary_short" msgid="687919813833347945">"{count,plural, =1{၁ နာရီကြာ ({formattedTime} အထိ)}other{# နာရီကြာ ({formattedTime} အထိ)}}"</string> <string name="zen_mode_duration_minutes" msgid="2340007982276569054">"{count,plural, =1{တစ်မိနစ်ကြာ}other{# မိနစ်ကြာ}}"</string> <string name="zen_mode_duration_minutes_short" msgid="2435756450204526554">"{count,plural, =1{1 မိနစ်ကြာ}other{# မိနစ်ကြာ}}"</string> - <string name="zen_mode_duration_hours" msgid="7841806065034711849">"{count,plural, =1{1 နာရီကြာ}other{# နာရီကြာ}}"</string> - <string name="zen_mode_duration_hours_short" msgid="3666949653933099065">"{count,plural, =1{1 နာရီကြာ}other{# နာရီကြာ}}"</string> + <string name="zen_mode_duration_hours" msgid="7841806065034711849">"{count,plural, =1{၁ နာရီကြာ}other{# နာရီကြာ}}"</string> + <string name="zen_mode_duration_hours_short" msgid="3666949653933099065">"{count,plural, =1{1၁ နာရီကြာ}other{# နာရီကြာ}}"</string> <string name="zen_mode_until_next_day" msgid="1403042784161725038">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> အထိ"</string> <string name="zen_mode_until" msgid="2250286190237669079">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>အထိ"</string> <string name="zen_mode_alarm" msgid="7046911727540499275">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g> အထိ (လာမည့် နှိုးစက်)"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"လုံခြုံရေးအတွက် အက်ပ်အကြောင်းအရာကို ဖန်သားပြင် မျှဝေခြင်းတွင် ဖျောက်ထားသည်"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"ဂြိုဟ်တုနှင့် အလိုအလျောက် ချိတ်ဆက်ထားသည်"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"မိုဘိုင်း (သို့) Wi-Fi ကွန်ရက်မရှိဘဲ မက်ဆေ့ဂျ်များကို ပို့နိုင်၊ လက်ခံနိုင်သည်"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"ဂြိုဟ်တုမှတစ်ဆင့် မက်ဆေ့ဂျ်ပို့ခြင်း သုံးမလား။"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"မိုဘိုင်း (သို့) Wi-Fi ကွန်ရက်မရှိဘဲ မက်ဆေ့ဂျ်များ ပို့နိုင်၊ လက်ခံနိုင်သည်"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ဖွင့်ရန်"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index d21296d28696..c80a9605fcde 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Får ikke kontakt med mobilnettverket"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Prøv å endre foretrukket nettverk. Trykk for å endre."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Nødanrop er utilgjengelig"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ikke vis dette igjen"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Du må være koblet til et mobilnettverk for å utføre nødanrop"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Varsler"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Viderekobling"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Nettverksvarsler"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Nettverk er tilgjengelig"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Tid og tidssoner"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Varsler fra IT-administratoren din"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Varsler"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Butikkdemo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App kjører"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apper bruker batteri"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Forstørring"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Høreapparat"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Bruk av Tilgjengelighet"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Skjerm"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> bruker batteri"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Last ned appen"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Et nytt SIM-kort er satt inn"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Konfigurer"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Tidssonen er endret"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Nå er du i <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Angi tidspunkt"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Angi dato"</string> <string name="date_time_set" msgid="4603445265164486816">"Lagre"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhåndsmodus"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dimmet"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Høreapparater"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Frakoblet"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Tilkoblet"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiv"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Laster inn"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått av."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Slipp opp volumtastene. For å slå på <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, trykk og hold på begge volumtastene igjen i 3 sekunder."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funksjonen åpnes neste gang du bruker denne snarveien. Sveip opp med 2 fingre fra nederst på skjermen, og slipp raskt opp."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funksjonen åpnes neste gang du bruker denne snarveien. Sveip opp med 3 fingre fra nederst på skjermen, og slipp raskt opp."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Forstørring"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Vil du bytte til mikrofonen i telefonen?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Vil du bytte til mikrofonen i høreapparatet?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"For bedre lyd eller hvis høreapparatet har lite batteri. Dette fører bare til at mikrofonen byttes under samtalen."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Du kan bruke mikrofonen i høreapparatet til å ringe håndfritt. Dette fører bare til at mikrofonen byttes under samtalen."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Bytt"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Innstillinger"</string> <string name="user_switched" msgid="7249833311585228097">"Gjeldende bruker: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Bytter til <xliff:g id="NAME">%1$s</xliff:g> …"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Logger av <xliff:g id="NAME">%1$s</xliff:g> …"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Av sikkerhetsgrunner er appinnholdet skjult for skjermdelingen"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatisk tilkoblet satellitt"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan sende og motta meldinger uten mobil- eller wifi-nettverk"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Vil du bruke satellittmeldinger?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Send og motta meldinger uten mobil- eller wifi-nettverk"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Åpne Meldinger"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index c524a4847c69..bf7bbaf872be 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"मोबाइल नेटवर्कमाथि पहुँच राख्न सकिएन"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"रुचाइएको नेटवर्क परिवर्तन गरी हेर्नुहोस्। परिवर्तन गर्न ट्याप गर्नुहोस्।"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"आपत्कालीन कल सेवा अनुपलब्ध छ"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"फेरि नदेखाउनुहोस्"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"आपत्कालीन कलहरू गर्न मोबाइल नेटवर्क चाहिन्छ"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"अलर्टहरू"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"कल फर्वार्ड गर्ने सेवा"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"नेटवर्कका अलर्टहरू"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"नेटवर्क उपलब्ध छ"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN को स्थिति"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"समय र प्रामाणिक समय"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"तपाईंको IT प्रशासकबाट प्राप्त सतर्कताहरू"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"अलर्टहरू"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"खुद्रा बिक्री सम्बन्धी डेमो"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"एप चलिरहेको छ"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"एपहरूले ब्याट्री खपत गर्दै छन्"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"जुम इन गर्ने सुविधा"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"श्रवण यन्त्र"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"सर्वसुलभतासम्बन्धी सेवाहरूको प्रयोग"</string> <string name="notification_channel_display" msgid="6905032605735615090">"डिस्प्ले"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ले ब्याट्री प्रयोग गर्दै छ"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"एप डाउनलोड गर्नुहोस्"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"नयाँ SIM घुसाइयो"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"यसलाई सेटअप गर्न ट्याप गर्नुहोस्"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"तपाईंको प्रामाणिक समय परिवर्तन गरिएको छ"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"तपाईं अहिले <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) मा हुनुहुन्छ"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"समय मिलाउनुहोस्"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"मिति मिलाउनुहोस्"</string> <string name="date_time_set" msgid="4603445265164486816">"सेट गर्नुहोस्"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"एक हाते मोड"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"अझै मधुरो"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"हियरिङ डिभाइसहरू"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"डिस्कनेक्ट गरिएको"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"कनेक्ट गरिएको"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"सक्रिय"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"लोड हुँदै छ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अन भयो।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"तपाईंले भोल्युम बटनहरू थिचिराख्नुभयो। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अफ भयो।"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"भोल्युम बटनहरू थिच्न छाड्नुहोस्। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> अन गर्न दुवै भोल्युम बटन फेरि ३ सेकेन्डसम्म थिचिराख्नुहोस्।"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"तपाईंले अर्को पटक यो सर्टकट प्रयोग गर्दा यो सुविधा खुल्ने छ। २ वटा औँलाले स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस् र तुरुन्तै औँला उठाउनुहोस्।"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"तपाईंले अर्को पटक यो सर्टकट प्रयोग गर्दा यो सुविधा खुल्ने छ। ३ वटा औँलाले स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस् र तुरुन्तै औँला उठाउनुहोस्।"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"म्याग्निफिकेसन"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"फोनको माइक प्रयोग गर्ने हो?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"श्रवण यन्त्रको माइक प्रयोग गर्ने हो?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"अझ राम्रो आवाज सुनाउन वा तपाईंको श्रवण यन्त्रको ब्याट्री कम भएका खण्डमा। यसले कल भइरहेका बेला मात्र तपाईंको माइक बदल्छ।"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"तपाईं ह्यान्ड्सफ्री तरिकाले कल गर्न आफ्नो श्रवण यन्त्रको माइक्रोफोन प्रयोग गर्न सक्नुहुन्छ। यसले कल भइरहेका बेला मात्र तपाईंको माइक बदल्छ।"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"बदल्नुहोस्"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"सेटिङ"</string> <string name="user_switched" msgid="7249833311585228097">"अहिलेको प्रयोगकर्ता <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="1912993630661332336">"स्विच गरेर <xliff:g id="NAME">%1$s</xliff:g> बनाइँदै..."</string> <string name="user_logging_out_message" msgid="7216437629179710359">"लग आउट गर्दै <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"स्क्रिन सेयर गर्दा सुरक्षाका लागि एपमा भएको सामग्री लुकाइएको छ"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"स्याटलाइटमा स्वतः कनेक्ट गरियो"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"तपाईं मोबाइल वा Wi-Fi नेटवर्कविनै म्यासेज पठाउन र प्राप्त गर्न सक्नुहुन्छ"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"स्याटलाइटमार्फत म्यासेज पठाउने सुविधा प्रयोग गर्ने हो?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"मोबाइल वा Wi-Fi नेटवर्कविनै म्यासेजहरू पठाउनुहोस् र प्राप्त गर्नुहोस्"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages खोल्नुहोस्"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 609d642a5672..695a706dcdb4 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Kan mobiel netwerk niet bereiken"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Probeer een ander voorkeursnetwerk. Tik om te wijzigen."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Noodoproepen niet beschikbaar"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Niet meer tonen"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Voor noodoproepen is een mobiel netwerk vereist"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Meldingen"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Gesprek doorschakelen"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Netwerkmeldingen"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Netwerk beschikbaar"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Tijd en tijdzones"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Meldingen van je IT-team"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Meldingen"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo voor de detailhandel"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App actief"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps die de batterij gebruiken"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Vergroting"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hoortoestel"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Toegankelijkheidsgebruik"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Scherm"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> gebruikt de batterij"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"App downloaden"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nieuwe simkaart geplaatst"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tik om dit in te stellen"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Je tijdzone is gewijzigd"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Je bent nu in <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Tijd instellen"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Datum instellen"</string> <string name="date_time_set" msgid="4603445265164486816">"Instellen"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Bediening met 1 hand"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dimmen"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hoortoestellen"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Verbinding verbroken"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Verbonden"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Actief"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Laden"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat aan."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumetoetsen ingedrukt gehouden. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> staat uit."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Laat de volumeknoppen los. Als je <xliff:g id="SERVICE_NAME">%1$s</xliff:g> wilt aanzetten, houd je beide volumeknoppen weer 3 seconden ingedrukt."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"De functie opent de volgende keer dat je deze snelkoppeling gebruikt. Swipe met 2 vingers omhoog vanaf de onderkant van je scherm en laat snel los."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"De functie opent de volgende keer dat je deze snelkoppeling gebruikt. Swipe met 3 vingers omhoog vanaf de onderkant van je scherm en laat snel los."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Vergroting"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Wisselen naar microfoon van telefoon?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Wisselen naar microfoon van hoortoestel?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Voor beter geluid of als de batterij van je hoortoestel bijna leeg is. Hiermee wordt de microfoon alleen gewisseld tijdens het gesprek."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Je kunt de microfoon van je hoortoestel gebruiken om handsfree te bellen. Hiermee wordt de microfoon alleen gewisseld tijdens het gesprek."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Wisselen"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Instellingen"</string> <string name="user_switched" msgid="7249833311585228097">"Huidige gebruiker <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Overschakelen naar <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> uitloggen…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Vanwege beveiligingsrisico\'s is app-content verborgen voor scherm delen"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatisch verbonden met satelliet"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Je kunt berichten sturen en krijgen zonder een mobiel of wifi-netwerk"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Satellietberichten gebruiken?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Stuur en krijg berichten zonder mobiel of wifi-netwerk"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Berichten openen"</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 51c4e3143586..de95a033ec20 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"ମୋବାଇଲ୍ ନେଟ୍ୱର୍କ ମିଳୁନାହିଁ"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ନିଜ ପସନ୍ଦର ନେଟ୍ୱର୍କକୁ ଯିବାପାଇଁ ଚେଷ୍ଟା କରନ୍ତୁ। ବଦଳାଇବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"ଜରୁରୀକାଳୀନ କଲ୍ ଉପଲବ୍ଧ ନାହିଁ"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"ପୁଣି ଦେଖାନ୍ତୁ ନାହିଁ"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"ଜରୁରୀକାଳୀନ କଲ କରିବା ପାଇଁ ଏକ ମୋବାଇଲ ନେଟୱାର୍କ ଆବଶ୍ୟକ"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"ଆଲର୍ଟ"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"କଲ୍ ଫରୱାର୍ଡିଂ"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ନେଟୱର୍କ ଅଲର୍ଟ"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"ନେଟ୍ୱର୍କ ଉପଲବ୍ଧ ଅଛି"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN ସ୍ଥିତି"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"ସମୟ ଏବଂ ଟାଇମ ଜୋନ"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"ଆପଣଙ୍କର ଆଇଟି ଆଡ୍ମିନ୍ଙ୍କ ଠାରୁ ଆଲର୍ଟ"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"ଆଲର୍ଟ"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"ରିଟେଲ୍ ଡେମୋ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ଆପ୍ ଚାଲୁଛି"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ଆପ୍ଗୁଡ଼ିକ ବ୍ୟାଟେରୀ ଖର୍ଚ୍ଚ କରିଥା\'ନ୍ତି"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"ମେଗ୍ନିଫିକେସନ"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"ଶ୍ରବଣ ଡିଭାଇସ"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ଆକ୍ସେସିବିଲିଟୀ ବ୍ୟବହାର"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ଡିସପ୍ଲେ"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବ୍ୟାଟେରୀ ବ୍ୟବହାର କରୁଛି"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ଆପ୍ ଡାଉନଲୋଡ କରନ୍ତୁ"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"ନୂଆ SIM କାର୍ଡ ଭର୍ତ୍ତି କରାଗଲା"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ଏହା ସେଟଅପ୍ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"ଆପଣଙ୍କର ଟାଇମ ଜୋନ ବଦଳିଛି"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"ଆପଣ ବର୍ତ୍ତମାନ <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)ରେ ଅଛନ୍ତି"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"ସମୟ ସେଟ୍ କରନ୍ତୁ"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"ତାରିଖ ସେଟ୍ କରନ୍ତୁ"</string> <string name="date_time_set" msgid="4603445265164486816">"ସେଟ୍ କରନ୍ତୁ"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ଏକ-ହାତ ମୋଡ୍"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ଅତ୍ୟଧିକ ଡିମ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ଶ୍ରବଣ ଡିଭାଇସଗୁଡ଼ିକ"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ଡିସକନେକ୍ଟ କରାଯାଇଛି"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"କନେକ୍ଟ କରାଯାଇଛି"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"ସକ୍ରିୟ"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"ଲୋଡ ହେଉଛି"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ଚାଲୁ ହୋଇଛି।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ଭଲ୍ୟୁମ୍ କୀ\'ଗୁଡ଼ିକୁ ଧରି ରଖାଯାଇଛି। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ବନ୍ଦ ହୋଇଛି।"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ଭଲ୍ୟୁମ କୀ\'ଗୁଡ଼ିକୁ ରିଲିଜ କରନ୍ତୁ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g>କୁ ଚାଲୁ କରିବା ପାଇଁ ଉଭୟ ଭଲ୍ୟୁମ କୀ\'କୁ ପୁଣି 3 ସେକେଣ୍ଡ ପାଇଁ ଦବାଇ ଧରି ରଖନ୍ତୁ।"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ଆପଣ ଆଗାମୀ ଥର ଏହି ସର୍ଟକଟକୁ ବ୍ୟବହାର କଲେ ଏହି ଫିଚରଟି ଖୋଲିବ। ଆପଣଙ୍କ ସ୍କ୍ରିନର ନିମ୍ନଭାଗରୁ 2 ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ କରି ଶୀଘ୍ର ରିଲିଜ କରନ୍ତୁ।"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ଆପଣ ଆଗାମୀ ଥର ଏହି ସର୍ଟକଟକୁ ବ୍ୟବହାର କଲେ ଏହି ଫିଚରଟି ଖୋଲିବ। ଆପଣଙ୍କ ସ୍କ୍ରିନର ନିମ୍ନଭାଗରୁ 3 ଆଙ୍ଗୁଠିରେ ଉପରକୁ ସ୍ୱାଇପ କରି ଶୀଘ୍ର ରିଲିଜ କରନ୍ତୁ।"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ମେଗ୍ନିଫିକେସନ"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ଫୋନ ମାଇକକୁ ସୁଇଚ କରିବେ?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"ଶ୍ରବଣ ଯନ୍ତ୍ର ମାଇକକୁ ସୁଇଚ କରିବେ?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"ଭଲ ସାଉଣ୍ଡ ପାଇଁ କିମ୍ବା ଯଦି ଆପଣଙ୍କର ଶ୍ରବଣ ଯନ୍ତ୍ର ବ୍ୟାଟେରୀ କମ ଥିଲେ। କଲ ସମୟରେ ଏହା କେବଳ ଆପଣଙ୍କର ମାଇକ ସୁଇଚ କରିଥାଏ।"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"ହେଣ୍ଡସ-ଫ୍ରି କଲିଂ ପାଇଁ ଆପଣ ଆପଣଙ୍କର ଶ୍ରବଣ ଯନ୍ତ୍ର ମାଇକ୍ରୋଫୋନ ବ୍ୟବହାର କରିପାରିବେ। କଲ ସମୟରେ ଏହା କେବଳ ଆପଣଙ୍କର ମାଇକ ସୁଇଚ କରିଥାଏ।"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ସ୍ୱିଚ କରନ୍ତୁ"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ସେଟିଂସ"</string> <string name="user_switched" msgid="7249833311585228097">"ବର୍ତ୍ତମାନର ୟୁଜର୍ ହେଉଛନ୍ତି <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>ରେ ସ୍ୱିଚ କରନ୍ତୁ…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>ଙ୍କୁ ଲଗଆଉଟ୍ କରାଯାଉଛି…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ସୁରକ୍ଷା ପାଇଁ ସ୍କ୍ରିନ ସେୟାରରୁ ଆପ ବିଷୟବସ୍ତୁକୁ ଲୁଚାଯାଇଛି"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"ସାଟେଲାଇଟ ସହ ସ୍ୱତଃ କନେକ୍ଟ ହୋଇଛି"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"ଏକ ମୋବାଇଲ କିମ୍ବା ୱାଇ-ଫାଇ ନେଟୱାର୍କ ବିନା ଆପଣ ମେସେଜ ପଠାଇପାରିବେ ଏବଂ ପାଇପାରିବେ"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"ସେଟେଲାଇଟ ମେସେଜିଂକୁ ବ୍ୟବହାର କରିବେ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"ଏକ ମୋବାଇଲ କିମ୍ବା ୱାଇ-ଫାଇ ନେଟୱାର୍କ ବିନା ମେସେଜ ପଠାନ୍ତୁ ଏବଂ ପାଆନ୍ତୁ"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ଖୋଲନ୍ତୁ"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index 12f4e901ce07..4d4b10bb25db 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ਤਰਜੀਹੀ ਨੈੱਟਵਰਕ ਨੂੰ ਬਦਲ ਕੇ ਦੇਖੋ। ਬਦਲਣ ਲਈ ਟੈਪ ਕਰੋ।"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"ਸੰਕਟਕਾਲੀਨ ਕਾਲਿੰਗ ਉਪਲਬਧ ਨਹੀਂ"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"ਦੁਬਾਰਾ ਨਾ ਦਿਖਾਓ"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"ਐਮਰਜੈਂਸੀ ਕਾਲਾਂ ਲਈ ਕਿਸੇ ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"ਅਲਰਟ"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"ਕਾਲ ਫਾਰਵਰਡਿੰਗ"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ਨੈੱਟਵਰਕ ਅਲਰਟ"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"ਨੈੱਟਵਰਕ ਉਪਲਬਧ ਹੈ"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN ਅਵਸਥਾ"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"ਸਮਾਂ ਅਤੇ ਸਮਾਂ ਖੇਤਰ"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਅਲਰਟ"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"ਅਲਰਟ"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"ਪ੍ਰਚੂਨ ਸਟੋਰਾਂ ਲਈ ਡੈਮੋ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ਚੱਲ ਰਹੀ ਐਪ"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ਬੈਟਰੀ ਦੀ ਖਪਤ ਕਰਨ ਵਾਲੀਆਂ ਐਪਾਂ"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"ਵੱਡਦਰਸ਼ੀਕਰਨ"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"ਸੁਣਨ ਵਾਲਾ ਡੀਵਾਈਸ"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ਪਹੁੰਚਯੋਗਤਾ ਵਰਤੋਂ"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ਡਿਸਪਲੇ"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਵੱਲੋਂ ਬੈਟਰੀ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ਐਪ ਡਾਊਨਲੋਡ ਕਰੋ"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"ਨਵੀਂ SIM ਦਾਖਲ ਕੀਤੀ ਗਈ"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"ਇਸ ਨੂੰ ਸੈੱਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"ਤੁਹਾਡਾ ਸਮਾਂ ਖੇਤਰ ਬਦਲ ਗਿਆ ਹੈ"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"ਹੁਣ ਤੁਸੀਂ <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) ਵਿੱਚ ਹੋ"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"ਸਮਾਂ ਸੈੱਟ ਕਰੋ"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"ਤਾਰੀਖ ਸੈੱਟ ਕਰੋ"</string> <string name="date_time_set" msgid="4603445265164486816">"ਸੈੱਟ ਕਰੋ"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ਇੱਕ ਹੱਥ ਮੋਡ"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ਜ਼ਿਆਦਾ ਘੱਟ ਚਮਕ"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ਸੁਣਨ ਵਾਲੇ ਡੀਵਾਈਸ"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"ਡਿਸਕਨੈਕਟ ਹੋ ਗਿਆ"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"ਕਨੈਕਟ ਹੈ"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"ਕਿਰਿਆਸ਼ੀਲ"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ।"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ਅਵਾਜ਼ੀ ਕੁੰਜੀਆਂ ਦਬਾ ਕੇ ਰੱਖੀਆਂ ਗਈਆਂ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ ਛੱਡੋ। <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ਨੂੰ ਚਾਲੂ ਕਰਨ ਲਈ, ਦੋਵੇਂ ਅਵਾਜ਼ ਕੁੰਜੀਆਂ ਨੂੰ 3 ਸਕਿੰਟਾਂ ਲਈ ਦੁਬਾਰਾ ਦਬਾਈ ਰੱਖੋ।"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਇਸ ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ, ਤਾਂ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਖੁੱਲ੍ਹ ਜਾਵੇਗੀ। 2 ਉਂਗਲਾਂ ਨਾਲ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਤੁਰੰਤ ਛੱਡੋ।"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਇਸ ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰੋਗੇ, ਤਾਂ ਇਹ ਵਿਸ਼ੇਸ਼ਤਾ ਖੁੱਲ੍ਹ ਜਾਵੇਗੀ। 3 ਉਂਗਲਾਂ ਨਾਲ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਤੁਰੰਤ ਛੱਡੋ।"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"ਵੱਡਦਰਸ਼ੀਕਰਨ"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ਕੀ ਫ਼ੋਨ ਦੇ ਮਾਈਕ \'ਤੇ ਸਵਿੱਚ ਕਰਨਾ ਹੈ?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"ਕੀ ਸੁਣਨ ਦੇ ਸਾਧਨ ਦੇ ਮਾਈਕ \'ਤੇ ਸਵਿੱਚ ਕਰਨਾ ਹੈ?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"ਬਿਹਤਰ ਧੁਨੀ ਲਈ ਜਾਂ ਜੇ ਤੁਹਾਡੇ ਸੁਣਨ ਦੇ ਸਾਧਨ ਦੀ ਬੈਟਰੀ ਘੱਟ ਹੈ। ਇਹ ਸਿਰਫ਼ ਕਾਲ ਦੌਰਾਨ ਹੀ ਤੁਹਾਡੇ ਮਾਈਕ ਨੂੰ ਸਵਿੱਚ ਕਰਦਾ ਹੈ।"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"ਤੁਸੀਂ ਹੱਥ-ਰਹਿਤ ਕਾਲਿੰਗ ਲਈ ਆਪਣੇ ਸੁਣਨ ਦੇ ਸਾਧਨ ਦੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਇਹ ਸਿਰਫ਼ ਕਾਲ ਦੌਰਾਨ ਹੀ ਤੁਹਾਡੇ ਮਾਈਕ ਨੂੰ ਸਵਿੱਚ ਕਰਦਾ ਹੈ।"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"ਸਵਿੱਚ ਕਰੋ"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ਸੈਟਿੰਗਾਂ"</string> <string name="user_switched" msgid="7249833311585228097">"ਮੌਜੂਦਾ ਉਪਭੋਗਤਾ <xliff:g id="NAME">%1$s</xliff:g>।"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> \'ਤੇ ਸਵਿੱਚ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> ਨੂੰ ਲਾਗ-ਆਉਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ …"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ਐਪ ਸਮੱਗਰੀ ਨੂੰ ਸੁਰੱਖਿਆ ਲਈ ਸਕ੍ਰੀਨ ਸਾਂਝਾਕਰਨ ਤੋਂ ਲੁਕਾਇਆ ਗਿਆ ਹੈ"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"ਸੈਟੇਲਾਈਟ ਨਾਲ ਸਵੈ-ਕਨੈਕਟ ਹੋਇਆ"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"ਤੁਸੀਂ ਮੋਬਾਈਲ ਜਾਂ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਤੋਂ ਬਿਨਾਂ ਸੁਨੇਹੇ ਭੇਜ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"ਕੀ ਸੈਟੇਲਾਈਟ ਸੁਨੇਹੇ ਦੀ ਵਰਤੋਂ ਕਰਨੀ ਹੈ?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"ਮੋਬਾਈਲ ਜਾਂ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਤੋਂ ਬਿਨਾਂ ਸੁਨੇਹੇ ਭੇਜੋ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰੋ"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ਐਪ ਖੋਲ੍ਹੋ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 113ffa37084e..810aa325e48a 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -89,8 +89,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Brak zasięgu sieci komórkowej"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Spróbuj zmienić preferowaną sieć. Kliknij, by zmienić."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Połączenia alarmowe są niedostępne"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Nie pokazuj ponownie"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Połączenia alarmowe wymagają sieci komórkowej"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alerty"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Przekierowanie połączeń"</string> @@ -305,6 +304,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alerty dotyczące sieci"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Sieć dostępna"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Stan sieci VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Godzina i strefy czasowe"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alerty od administratora IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alerty"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Tryb demo dla sklepów"</string> @@ -312,6 +312,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Działa aplikacja"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikacje zużywające baterię"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Powiększenie"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Urządzenie słuchowe"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Użycie ułatwień dostępu"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Wyświetlacz"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> zużywa baterię"</string> @@ -1409,6 +1410,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Pobierz aplikację"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Włożono nową kartę SIM"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Kliknij, by skonfigurować"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Zmieniła się Twoja strefa czasowa"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Jesteś teraz w strefie <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Ustaw godzinę"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Ustaw datę"</string> <string name="date_time_set" msgid="4603445265164486816">"Ustaw"</string> @@ -1782,14 +1785,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Tryb jednej ręki"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Dodatkowe przyciemnienie"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Urządzenia słuchowe"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Rozłączone"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Połączone"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktywne"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Wczytuję"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została włączona."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Przytrzymano klawisze głośności. Usługa <xliff:g id="SERVICE_NAME">%1$s</xliff:g> została wyłączona."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Zwolnij przyciski głośności. Aby włączyć usługę <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, naciśnij i przytrzymaj oba przyciski głośności przez 3 sekundy."</string> @@ -1800,6 +1799,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcja otworzy się, gdy następnym razem użyjesz tego skrótu. Przesuń 2 palcami z dołu ekranu i szybko je unieś."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcja otworzy się, gdy następnym razem użyjesz tego skrótu. Przesuń 3 palcami z dołu ekranu i szybko je unieś."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Powiększenie"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Przełączyć na mikrofon w telefonie?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Przełączyć na mikrofon w aparacie słuchowym?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Skorzystaj z tej opcji, aby uzyskać lepszy dźwięk lub jeśli kończy się bateria w aparacie słuchowym. Mikrofon zostanie przełączony tylko na czas połączenia."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Możesz używać mikrofonu w aparacie słuchowym, aby dzwonić bez użycia rąk. Mikrofon zostanie przełączony tylko na czas połączenia."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Przełącz"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Ustawienia"</string> <string name="user_switched" msgid="7249833311585228097">"Bieżący użytkownik: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Przełączam na użytkownika <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Wylogowuję użytkownika <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2456,6 +2461,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Ze względów bezpieczeństwa zawartość aplikacji jest niewidoczna podczas udostępniania ekranu"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatycznie połączono z satelitą"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Możesz wymieniać wiadomości bez dostępu do sieci komórkowej lub Wi-Fi"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"Przez satelitę możesz wysyłać i odbierać wiadomości oraz w ograniczonym stopniu korzystać z transmisji danych"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Przesyłać wiadomości przez satelitę?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Wysyłaj i odbieraj wiadomości bez sieci komórkowej czy Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Otwórz Wiadomości"</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 2daa730b4a31..cc4b251c7713 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Não foi possível acessar a rede móvel"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Tente alterar a rede preferencial. Toque para alterar."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Chamadas de emergência indisponíveis"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Não mostrar de novo"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"As chamadas de emergência exigem uma rede móvel"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertas"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Encaminhamento de chamada"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertas de rede"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Rede disponível"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Status de VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Hora e fusos horários"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertas do administrador de TI"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertas"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demonstração na loja"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App em execução"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps que estão consumindo a bateria"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ampliação"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Aparelho auditivo"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Uso de acessibilidade"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Tela"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está consumindo a bateria"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Baixar o app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Novo chip inserido"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Toque para configurar"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Seu fuso horário mudou"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Agora você está em <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Definir hora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Definir data"</string> <string name="date_time_set" msgid="4603445265164486816">"Definir"</string> @@ -1779,16 +1782,12 @@ <string name="color_inversion_feature_name" msgid="2672824491933264951">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="7975133554160979214">"Correção de cor"</string> <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> - <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Escurecer ainda mais a tela"</string> + <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Tela ainda mais escura"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Aparelhos auditivos"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Ativo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Carregando"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Solte as teclas de volume. Para ativar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, toque e pressione as duas teclas de volume por três segundos."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"O recurso será aberto na próxima vez que você usar este atalho. Deslize com 2 dedos de baixo para cima na tela e solte rapidamente."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"O recurso será aberto na próxima vez que você usar este atalho. Deslize com 3 dedos de baixo para cima na tela e solte rapidamente."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliação"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Trocar para o microfone do smartphone?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Trocar para o microfone do aparelho auditivo?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Para melhorar o som ou se a bateria do aparelho auditivo estiver fraca. A troca do microfone só será feita durante a ligação."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Você pode usar o microfone do aparelho auditivo para fazer ligações sem usar as mãos. A troca do microfone só será feita durante a ligação."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Trocar"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Configurações"</string> <string name="user_switched" msgid="7249833311585228097">"Usuário atual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Mudando para <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Desconectando <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Conteúdo oculto no compartilhamento de tela por segurança"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Conectado automaticamente ao satélite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Você pode enviar e receber mensagens sem um dispositivo móvel ou uma rede Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Usar mensagens via satélite?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Enviar e receber mensagens sem uma rede móvel ou Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir o app Mensagens"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 5572de130221..af76e3f1ad03 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Não é possível estabelecer ligação à rede móvel."</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Experimente alterar a rede preferida. Toque para alterar."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Chamadas de emergência indisponíveis"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Não mostrar novamente"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"As chamadas de emergência requerem uma rede móvel"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertas"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Reencaminhamento de chamadas"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertas da rede"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Rede disponível"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Estado da VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Hora e fusos horários"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertas do seu administrador de TI"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertas"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demonstração para retalho"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplicação em execução"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps que estão a consumir bateria"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ampliação"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Dispositivo auditivo"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Utilização da acessibilidade"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Ecrã"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> está a consumir bateria."</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Transferir app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Novo SIM inserido"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Toque para configurar"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"O seu fuso horário foi alterado"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Está agora em <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Definir hora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Definir data"</string> <string name="date_time_set" msgid="4603445265164486816">"Definir"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Dispositivos auditivos"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desligado"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ligado"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Ativo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"A carregar"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Solte as teclas de volume. Para ativar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, prima sem soltar ambas as teclas de volume novamente durante 3 segundos."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"A funcionalidade vai ser aberta da próxima vez que usar este atalho. Deslize com 2 dedos a partir da parte inferior do ecrã e solte rapidamente."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"A funcionalidade vai ser aberta da próxima vez que usar este atalho. Deslize para cima com 3 dedos a partir da parte inferior do ecrã e solte rapidamente."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliação"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Mudar para o microfone do telemóvel?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Mudar para o microfone do aparelho auditivo?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Para um som melhor ou se a bateria do aparelho auditivo estiver fraca. Esta ação apenas muda o microfone durante a chamada."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Pode usar o microfone do aparelho auditivo para chamadas mãos-livres. Esta ação apenas muda o microfone durante a chamada."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Mudar"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Definições"</string> <string name="user_switched" msgid="7249833311585228097">"<xliff:g id="NAME">%1$s</xliff:g> do utilizador atual."</string> <string name="user_switching_message" msgid="1912993630661332336">"A mudar para <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"A terminar a sessão de <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,7 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Conteúdo da app ocultado da partilha de ecrã por motivos de segurança"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Ligação de satélite estabelecida automaticamente"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Pode enviar e receber mensagens sem uma rede móvel ou Wi-Fi"</string> + <string name="satellite_notification_summary_with_data" msgid="6486843676720429049">"Pode enviar e receber mensagens, e usar dados limitados, por satélite"</string> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Quer usar as mensagens por satélite?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Envie e receba mensagens sem uma rede móvel ou Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Abre a app Mensagens"</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 2daa730b4a31..cc4b251c7713 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Não foi possível acessar a rede móvel"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Tente alterar a rede preferencial. Toque para alterar."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Chamadas de emergência indisponíveis"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Não mostrar de novo"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"As chamadas de emergência exigem uma rede móvel"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertas"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Encaminhamento de chamada"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alertas de rede"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Rede disponível"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Status de VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Hora e fusos horários"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alertas do administrador de TI"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alertas"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demonstração na loja"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App em execução"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Apps que estão consumindo a bateria"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ampliação"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Aparelho auditivo"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Uso de acessibilidade"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Tela"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> está consumindo a bateria"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Baixar o app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Novo chip inserido"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Toque para configurar"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Seu fuso horário mudou"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Agora você está em <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Definir hora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Definir data"</string> <string name="date_time_set" msgid="4603445265164486816">"Definir"</string> @@ -1779,16 +1782,12 @@ <string name="color_inversion_feature_name" msgid="2672824491933264951">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="7975133554160979214">"Correção de cor"</string> <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modo para uma mão"</string> - <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Escurecer ainda mais a tela"</string> + <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Tela ainda mais escura"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Aparelhos auditivos"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Desconectado"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectado"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Ativo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Carregando"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas de volume pressionadas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume pressionadas. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Solte as teclas de volume. Para ativar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, toque e pressione as duas teclas de volume por três segundos."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"O recurso será aberto na próxima vez que você usar este atalho. Deslize com 2 dedos de baixo para cima na tela e solte rapidamente."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"O recurso será aberto na próxima vez que você usar este atalho. Deslize com 3 dedos de baixo para cima na tela e solte rapidamente."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ampliação"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Trocar para o microfone do smartphone?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Trocar para o microfone do aparelho auditivo?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Para melhorar o som ou se a bateria do aparelho auditivo estiver fraca. A troca do microfone só será feita durante a ligação."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Você pode usar o microfone do aparelho auditivo para fazer ligações sem usar as mãos. A troca do microfone só será feita durante a ligação."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Trocar"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Configurações"</string> <string name="user_switched" msgid="7249833311585228097">"Usuário atual <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Mudando para <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Desconectando <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Conteúdo oculto no compartilhamento de tela por segurança"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Conectado automaticamente ao satélite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Você pode enviar e receber mensagens sem um dispositivo móvel ou uma rede Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Usar mensagens via satélite?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Enviar e receber mensagens sem uma rede móvel ou Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Abrir o app Mensagens"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index cf0f771b190c..25b0471347c9 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Nu se poate stabili conexiunea la rețeaua mobilă"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Încearcă să schimbi rețeaua preferată. Atinge pentru a schimba."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Apelurile de urgență nu sunt disponibile"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Nu mai afișa"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Apelurile de urgență necesită o rețea mobilă"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Alerte"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Redirecționarea apelurilor"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Alerte privind rețeaua"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Rețea disponibilă"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Stare VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Ora și fusurile orare"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Alerte de la administratorul IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Alerte"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demonstrație comercială"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplicația rulează"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplicațiile consumă bateria"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Mărire"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Aparat auditiv"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Folosirea accesibilității"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Ecran"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> folosește bateria"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Descarcă aplicația"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"S-a introdus un card SIM nou"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Atinge pentru a-l configura"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Fusul orar s-a schimbat"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Acum te afli în <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Setează ora"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Setează data"</string> <string name="date_time_set" msgid="4603445265164486816">"Setează"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modul cu o mână"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Luminozitate redusă suplimentar"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Aparate auditive"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Deconectat"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Conectat"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Activ"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Se încarcă"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"S-au apăsat lung tastele de volum. S-a activat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"S-au apăsat lung tastele de volum. S-a dezactivat <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Eliberează butoanele de volum. Pentru a activa <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, apasă lung pe ambele butoane de volum timp de trei secunde încă o dată."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funcția se va deschide data viitoare când folosești această comandă rapidă. Glisează în sus cu două degete din partea de jos a ecranului și ridică-le rapid."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funcția se va deschide data viitoare când folosești această comandă rapidă. Glisează în sus cu trei degete din partea de jos a ecranului și ridică-le rapid."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Mărire"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Comuți la microfonul telefonului?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Comuți la microfonul aparatului auditiv?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Pentru un sunet mai bun sau dacă bateria aparatului auditiv este descărcată. Astfel, microfonul pornește numai în timpul apelului."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Poți folosi microfonul aparatului auditiv pentru apelarea hands-free. Astfel, microfonul pornește numai în timpul apelului."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Schimbă"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Setări"</string> <string name="user_switched" msgid="7249833311585228097">"Utilizator curent: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Se comută la <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Se deconectează utilizatorul <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Conținutul aplicației este ascuns de permiterea accesului la ecran din motive de securitate"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"S-a conectat automat la satelit"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Poți să trimiți și să primești mesaje fără o rețea mobilă sau Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Folosești mesajele prin satelit?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Trimite și primește mesaje fără o rețea mobilă sau Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Deschide Mesaje"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 387cd338bb9c..1efa10593edc 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -89,8 +89,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Мобильная сеть недоступна"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Нажмите, чтобы выбрать другую сеть."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Экстренные вызовы недоступны"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Больше не показывать"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Для экстренных вызовов нужна мобильная сеть."</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Оповещения"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Переадресация вызовов"</string> @@ -305,6 +304,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Оповещения сети"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Сеть доступна"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Статус VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Время и часовые пояса"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Уведомления от вашего администратора"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Уведомления"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Деморежим для магазина"</string> @@ -312,6 +312,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Приложение активно"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Приложения, расходующие заряд"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Увеличение"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Слуховой аппарат"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Сервисы специальных возможностей"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Экран"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" расходует заряд"</string> @@ -1409,6 +1410,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Скачать приложение"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Установлена новая SIM-карта"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Нажмите, чтобы настроить."</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Ваш часовой пояс изменился"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Новый часовой пояс: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)."</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Настройка времени"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Настройка даты"</string> <string name="date_time_set" msgid="4603445265164486816">"Установить"</string> @@ -1782,14 +1785,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим управления одной рукой"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Дополнительное уменьшение яркости"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слуховые аппараты"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Отключено"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Подключено"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Активно"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Загрузка…"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" включена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Использован жест с кнопками регулировки громкости. Функция \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\" отключена."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Отпустите кнопки громкости. Чтобы включить <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, нажмите и удерживайте обе кнопки регулировки громкости в течение трех секунд."</string> @@ -1800,6 +1799,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функция теперь будет включаться при выполнении действия быстрого запуска. Проведите двумя пальцами по экрану снизу вверх."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функция теперь будет включаться при выполнении действия быстрого запуска. Проведите тремя пальцами по экрану снизу вверх."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Увеличение"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Переключиться на микрофон телефона?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Переключиться на микрофон слухового аппарата?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Вы можете использовать микрофон телефона, если вас не устраивает качество звука или если у слухового аппарата низкий заряд батареи. Микрофон будет переключен только на время звонка."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Вы можете использовать микрофон слухового аппарата, когда разговариваете по телефону. Микрофон будет переключен только на время звонка."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Переключиться"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Настройки"</string> <string name="user_switched" msgid="7249833311585228097">"Выбран аккаунт пользователя <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Смена профиля на \"<xliff:g id="NAME">%1$s</xliff:g>\"…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Выход из аккаунта <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2456,6 +2461,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Для безопасности содержимое приложения при демонстрации экрана скрыто."</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Автоматически подключено к системам спутниковой связи"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Вы можете отправлять и получать сообщения без доступа к мобильной сети или Wi-Fi."</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Включить спутниковый обмен сообщениями?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Отправляйте и получайте сообщения без подключения к мобильной сети или Wi-Fi."</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Открыть Сообщения"</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 9fd63e471962..57f89a230384 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"ජංගම ජාලය වෙත ළඟා විය නොහැකිය"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"කැමති ජාලය වෙනස් කිරීමට උත්සාහ කරන්න. වෙනස් කිරීමට තට්ටු කරන්න."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"හදිසි ඇමතුම් ලබා ගත නොහැකිය"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"නැවතත් නොපෙන්වන්න"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"හදිසි ඇමතුම් සඳහා ජංගම ජාලයක් අවශ්ය වේ"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"ඇඟවීම්"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"ඇමතුම ප්රතියොමු කිරීම"</string> @@ -303,6 +302,8 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"ජාල ඇඟවීම්"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"ජාලය ලබා ගැනීමට හැකිය"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN තත්ත්වය"</string> + <!-- no translation found for notification_channel_system_time (1660313368058030441) --> + <skip /> <string name="notification_channel_device_admin" msgid="6384932669406095506">"ඔබේ තොරතුරු තාක්ෂණ පරිපාලක වෙතින් ඇඟවීම්"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"ඇඟවීම්"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"සිල්ලර ආදර්ශනය"</string> @@ -310,6 +311,8 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"යෙදුම ධාවනය කරමින්"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"බැටරිය භාවිත කරන යෙදුම්"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"විශාලනය"</string> + <!-- no translation found for notification_channel_accessibility_hearing_device (7816963856388758952) --> + <skip /> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ප්රවේශ්යතා භාවිතය"</string> <string name="notification_channel_display" msgid="6905032605735615090">"සංදර්ශකය"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> බැටරිය භාවිත කරයි"</string> @@ -1407,6 +1410,10 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"යෙදුම බාගන්න"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"නව SIM ඇතුළු කරන්න"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"එය පිහිටුවීමට තට්ටු කරන්න"</string> + <!-- no translation found for time_zone_change_notification_title (5232503069219193218) --> + <skip /> + <!-- no translation found for time_zone_change_notification_body (6135793674904665585) --> + <skip /> <string name="time_picker_dialog_title" msgid="9053376764985220821">"වේලාව සකසන්න"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"දිනය සැකසීම"</string> <string name="date_time_set" msgid="4603445265164486816">"සකසන්න"</string> @@ -1780,14 +1787,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"තනි අත් ප්රකාරය"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"තවත් අඳුරු"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"ශ්රවණ උපාංග"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"විසන්ධි විය"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"සම්බන්ධිතයි"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"සක්රිය"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"පූරණය වේ"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාත්මකයි."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"හඬ පරිමා යතුරු අල්ලා ගන්න <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ක්රියාවිරහිතයි."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"හඬ පරිමා යතුරු මුදා හරින්න. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> සක්රීය කිරීමට, හඬ පරිමා යතුරු දෙකම නැවත තත්පර 3ක් ඔබා අල්ලා සිටින්න."</string> @@ -1798,6 +1801,18 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ඔබ මෙම කෙටිමඟ භාවිතා කරන මීළඟ වතාවේ විශේෂාංගය විවෘත වනු ඇත. ඔබේ තිරයෙහි පහළ සිට ඇඟිලි 2කින් ඉහළට ස්වයිප් කර ඉක්මනින් නිදහස් කරන්න."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ඔබ මෙම කෙටිමඟ භාවිතා කරන මීළඟ වතාවේ විශේෂාංගය විවෘත වනු ඇත. ඔබේ තිරයෙහි පහළ සිට ඇඟිලි 3කින් ඉහළට ස්වයිප් කර ඉක්මනින් නිදහස් කරන්න."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"විශාලනය"</string> + <!-- no translation found for hearing_device_switch_phone_mic_notification_title (6645178038359708836) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_title (4612074852145289569) --> + <skip /> + <!-- no translation found for hearing_device_switch_phone_mic_notification_text (1332426273666077412) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_text (8288368365767284208) --> + <skip /> + <!-- no translation found for hearing_device_notification_switch_button (3619524619430941300) --> + <skip /> + <!-- no translation found for hearing_device_notification_settings_button (6673651052880279178) --> + <skip /> <string name="user_switched" msgid="7249833311585228097">"දැනට සිටින පරිශීලකයා <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> වෙත මාරු කරමින්…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> වරමින්…"</string> @@ -2454,6 +2469,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ආරක්ෂාව සඳහා යෙදුම් අන්තර්ගතය තිරය බෙදා ගැනීමෙන් සඟවා ඇත"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"චන්ද්රිකාවට ස්වයංක්රීයව සම්බන්ධ වේ"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"ඔබට ජංගම හෝ Wi-Fi ජාලයක් නොමැතිව පණිවිඩ යැවීමට සහ ලැබීමට හැක"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"චන්ද්රිකා පණිවිඩ යැවීම භාවිතා කරන්න ද?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"ජංගම හෝ Wi-Fi ජාලයකින් තොරව පණිවිඩ යැවීම සහ ලැබීම"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages විවෘත කරන්න"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 35283675c9ef..c50773d594a9 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -89,8 +89,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Nepodarilo sa pripojiť k mobilnej sieti"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Skúste zmeniť predvolenú sieť. Zmeníte ju klepnutím."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Tiesňové volania nie sú k dispozícii"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Nabudúce nezobrazovať"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Tiesňové volania vyžadujú mobilnú sieť"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Upozornenia"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Presmerovanie hovorov"</string> @@ -305,6 +304,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Upozornenia týkajúce sa siete"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Sieť je k dispozícii"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Stav pripojenia VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Čas a časové pásma"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Upozornenia od vášho správcu IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Upozornenia"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Predajná ukážka"</string> @@ -312,6 +312,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplikácia je spustená"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikácie spotrebúvajúce batériu"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Zväčšenie"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Načúvacie zariadenie"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Využitie dostupnosti"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Obrazovka"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> používa batériu"</string> @@ -1409,6 +1410,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Stiahnuť aplikáciu"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Bola vložená nová SIM karta"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Nastavte ju klepnutím"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Vaše časové pásmo sa zmenilo"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Teraz ste v oblasti <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Nastaviť čas"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Nastaviť dátum"</string> <string name="date_time_set" msgid="4603445265164486816">"Nastaviť"</string> @@ -1782,14 +1785,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Režim jednej ruky"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mimoriadne stmavenie"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Načúvacie zariadenia"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Odpojené"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Pripojené"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktívne"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Načítava sa"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je zapnutá."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pridržali ste tlačidlá hlasitosti. Služba <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vypnutá."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Uvoľnite tlačidlá hlasitosti. Ak chcete zapnúť službu <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, znova pridržte tri sekundy obe tlačidlá hlasitosti."</string> @@ -1800,6 +1799,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Táto funkcia sa otvorí, keď nabudúce použijete túto skratku. Potiahnite zdola obrazovky dvoma prstami nahor a rýchlo uvoľnite."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Táto funkcia sa otvorí, keď nabudúce použijete túto skratku. Potiahnite zdola obrazovky troma prstami nahor a rýchlo uvoľnite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Zväčšenie"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Chcete prepnúť na mikrofón telefónu?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Chcete prepnúť na mikrofón načúvadla?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Keď chcete zlepšiť zvuk alebo ak je batéria načúvadla slabá. Týmto iba prepnete mikrofón počas hovoru."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Volať handsfree môžete pomocou mikrofónu načúvadla. Týmto iba prepnete mikrofón počas hovoru."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Prepnúť"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Nastavenia"</string> <string name="user_switched" msgid="7249833311585228097">"Aktuálny používateľ je <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Prepína sa na účet <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Prebieha odhlásenie používateľa <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2456,6 +2461,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Obsah aplikácie je z bezpečnostných dôvodov pri zdieľaní obrazovky skrytý"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automaticky pripojené k satelitu"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Správy môžete odosielať a prijímať bez mobilnej siete či siete Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Chcete používať správy cez satelit?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Odosielajte a prijímajte správy bez mobilnej siete či siete Wi‑Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Otvoriť Správy"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index af6c95c70db4..134ee9df3f3d 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -89,8 +89,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobilnega omrežja ni mogoče doseči"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Poskusite spremeniti prednostno omrežje. Dotaknite se, če ga želite spremeniti."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Klicanje v sili ni na voljo"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ne prikaži več"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Za klice v sili potrebujete mobilno omrežje"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Opozorila"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Preusmerjanje klicev"</string> @@ -305,6 +304,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Opozorila omrežja"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Omrežje je na voljo"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Stanje omrežja VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Ura in časovni pasovi"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Opozorila skrbnika za IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Opozorila"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Predstavitev za maloprodajo"</string> @@ -312,6 +312,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplikacija se izvaja"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikacije, ki porabljajo energijo baterije"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Povečava"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Slušni pripomoček"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Uporaba funkcij za dostopnost"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Zaslon"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> porablja energijo baterije"</string> @@ -1409,6 +1410,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Prenos aplikacije"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nova kartica SIM je vstavljena"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Dotaknite se za nastavitev"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Časovni pas se je spremenil"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Zdaj ste v časovnem pasu <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Nastavi uro"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Nastavi datum"</string> <string name="date_time_set" msgid="4603445265164486816">"Nastavi"</string> @@ -1782,14 +1785,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enoročni način"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Zelo zatemnjen zaslon"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Slušni pripomočki"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Brez povezave"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Povezano"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktivno"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Nalaganje"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je vklopljena."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tipki za glasnost sta pridržani. Storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g> je izklopljena."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Spustite gumba za glasnost. Če želite vklopiti storitev <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, znova pritisnite in 3 sekunde pridržite oba gumba za glasnost."</string> @@ -1800,6 +1799,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funkcija se bo odprla, ko boste naslednjič uporabili to bližnjico. Z dvema prstoma povlecite navzgor z dna zaslona in hitro spustite."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funkcija se bo odprla, ko boste naslednjič uporabili to bližnjico. S tremi prsti povlecite navzgor z dna zaslona in hitro spustite."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Povečava"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Želite preklopiti na mikrofon telefona?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Želite preklopiti na mikrofon za slušni aparat?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Za boljši zvok ali pri skoraj prazni bateriji slušnega aparata. S tem preklopite mikrofon samo med klicem."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Mikrofon za slušni aparat lahko uporabljate za prostoročno klicanje. S tem preklopite mikrofon samo med klicem."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Preklopi"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Nastavitve"</string> <string name="user_switched" msgid="7249833311585228097">"Trenutni uporabnik <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Preklapljanje na uporabnika <xliff:g id="NAME">%1$s</xliff:g> …"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Odjavljanje uporabnika <xliff:g id="NAME">%1$s</xliff:g> …"</string> @@ -2456,6 +2461,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Pri deljenju zaslona je vsebina aplikacije skrita zaradi varnosti"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Samodejno vzpostavljena povezava s satelitom"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Sporočila SMS lahko pošiljate in prejemate brez mobilnega omrežja ali omrežja Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Želite uporabiti satelitsko pošiljanje sporočil?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Pošiljanje in prejemanje sporočil brez mobilnega omrežja ali omrežja Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Odpri Sporočila"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index d8fdb9a30d56..0a87e39e16df 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Rrjeti celular është i paarritshëm"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Provo të ndryshosh rrjetin e preferuar. Trokit për ta ndryshuar."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Telefonatat e urgjencës nuk ofrohen"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Mos e shfaq më"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Telefonatat e urgjencës kërkojnë një rrjet celular"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Sinjalizimet"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Transferimi i telefonatave"</string> @@ -303,6 +302,8 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Sinjalizimet e rrjetit"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Ka rrjet të disponueshëm"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Statusi i VPN-së"</string> + <!-- no translation found for notification_channel_system_time (1660313368058030441) --> + <skip /> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Sinjalizimet nga administratori i teknologjisë së informacionit"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Sinjalizimet"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demonstrimi i shitjes me pakicë"</string> @@ -310,6 +311,8 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Aplikacioni është në ekzekutim"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Aplikacionet që konsumojnë baterinë"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Zmadhimi"</string> + <!-- no translation found for notification_channel_accessibility_hearing_device (7816963856388758952) --> + <skip /> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Përdorimi i qasshmërisë"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Ekrani"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> po përdor baterinë"</string> @@ -1407,6 +1410,10 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Shkarko aplikacionin"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Është futur kartë e re SIM"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Trokit për ta konfiguruar"</string> + <!-- no translation found for time_zone_change_notification_title (5232503069219193218) --> + <skip /> + <!-- no translation found for time_zone_change_notification_body (6135793674904665585) --> + <skip /> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Cakto kohën"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Vendos datën"</string> <string name="date_time_set" msgid="4603445265164486816">"Cakto"</string> @@ -1780,14 +1787,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Modaliteti i përdorimit me një dorë"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Shumë më i zbehtë"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Pajisjet e dëgjimit"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Shkëputur"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Lidhur"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktive"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Po ngarkohet"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tastet e volumit të mbajtura shtypur. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> i aktivizuar."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tastet e volumit të mbajtura shtypur. U çaktivizua \"<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\"."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Lësho tastet e volumit. Për të aktivizuar <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, shtyp dhe mbaj shtypur të dy tastet e volumit sërish për 3 sekonda."</string> @@ -1798,6 +1801,18 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Veçoria do të hapet herën tjetër kur të përdorësh këtë shkurtore. Rrëshqit shpejt lart me 2 gishta nga fundi i ekranit dhe lëshoje me shpejtësi."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Veçoria do të hapet herën tjetër kur të përdorësh këtë shkurtore. Rrëshqit shpejt lart me 3 gishta nga fundi i ekranit dhe lëshoje me shpejtësi."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Zmadhimi"</string> + <!-- no translation found for hearing_device_switch_phone_mic_notification_title (6645178038359708836) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_title (4612074852145289569) --> + <skip /> + <!-- no translation found for hearing_device_switch_phone_mic_notification_text (1332426273666077412) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_text (8288368365767284208) --> + <skip /> + <!-- no translation found for hearing_device_notification_switch_button (3619524619430941300) --> + <skip /> + <!-- no translation found for hearing_device_notification_settings_button (6673651052880279178) --> + <skip /> <string name="user_switched" msgid="7249833311585228097">"Emri i përdoruesit aktual: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"Po kalon në \"<xliff:g id="NAME">%1$s</xliff:g>\"…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> po del…"</string> @@ -2454,6 +2469,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Përmbajtja e aplikacionit është fshehur nga ndarja e ekranit për arsye sigurie"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"U lidh automatikisht me satelitin"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Mund të dërgosh dhe të marrësh mesazhe pa një rrjet celular apo rrjet Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Të përdoret shkëmbimi i mesazheve nëpërmjet satelitit?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Dërgo dhe merr mesazhe pa një rrjet celular ose Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Hap \"Mesazhet\""</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 146855e730bb..33150dc3c3c2 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -88,8 +88,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Повезивање са мобилном мрежом није успело"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Пробајте да промените жељену мрежу. Додирните да бисте променили."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Хитни позиви нису доступни"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Не приказуј поново"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Хитни позиви захтевају мобилну мрежу"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Упозорења"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Преусмеравање позива"</string> @@ -304,6 +303,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Обавештења у вези са мрежом"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Мрежа је доступна"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Статус VPN-а"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Време и временске зоне"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Обавештења од ИТ администратора"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Упозорења"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Режим демонстрације за малопродајне објекте"</string> @@ -311,6 +311,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Активна апликација"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Апликације које троше батерију"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Увећање"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Слушни апарат"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Коришћење Приступачности"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Екран"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> користи батерију"</string> @@ -1408,6 +1409,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Преузмите апликацију"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Нова SIM картица је уметнута"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Додирните за подешавање"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Временска зона је промењена"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Сада сте у временској зони <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Подесите време"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Подешавање датума"</string> <string name="date_time_set" msgid="4603445265164486816">"Подеси"</string> @@ -1781,14 +1784,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим једном руком"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додатно затамни"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слушни апарати"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Веза је прекинута"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Повезано"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Активно"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Учитава се"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је укључена."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Држали сте тастере за јачину звука. Услуга <xliff:g id="SERVICE_NAME">%1$s</xliff:g> је искључена."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Пустите тастере за јачину звука. Да бисте укључили <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, поново притисните и задржите оба тастера за јачину звука 3 секунде."</string> @@ -1799,6 +1798,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функција ће се отворити када следећи пут будете користили ову пречицу. Превуците нагоре од дна екрана са 2 прста и брзо пустите."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функција ће се отворити када следећи пут будете користили ову пречицу. Превуците нагоре од дна екрана са 3 прста и брзо пустите."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Увећање"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Желите да пређете на микрофон телефона?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Желите да пређете на микрофон слушног апарата?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"За бољи звук или ако је батерија слушног апарата скоро празна. Тиме се микрофон мења само током позива."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Можете да користите микрофон слушног апарата за хендсфри позивање. Тиме се микрофон мења само током позива."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Промени"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Подешавања"</string> <string name="user_switched" msgid="7249833311585228097">"Актуелни корисник <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Пребацивање на <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Одјављује се <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2455,6 +2460,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Садржај апликације је скривен за дељење садржаја екрана због безбедности"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Аутоматски повезано са сателитом"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Можете да шаљете и примате поруке без мобилне или WiFi мреже"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Желите да користите сателитску размену порука?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Шаљите и примајте поруке без мобилне или WiFi мреже"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Отвори Messages"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index ecb3c79cff45..ceb0fe1d6654 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Det går inte att nå mobilnätverket"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Testa att byta föredraget nätverk. Tryck om du vill ändra."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Det går inte att ringa nödsamtal"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Visa inte igen"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Mobilnätverk krävs för att ringa nödsamtal"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Aviseringar"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Vidarekoppla samtal"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Nätverksvarningar"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Nätverk tillgängligt"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN-status"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Tid och tidszoner"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Aviseringar från IT-administratören"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Varningar"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo för återförsäljare"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"App körs"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Appar som drar batteri"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Förstoring"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hörhjälpmedel"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Tillgänglighetsanvändning"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Skärm"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> drar batteri"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Ladda ned appen"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nytt SIM-kort har satts in"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Tryck om du vill konfigurera"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Din tidszon har ändrats"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Du befinner dig nu i <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Ange tid"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Ange datum"</string> <string name="date_time_set" msgid="4603445265164486816">"Ställ in"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Enhandsläge"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extradimmat"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Hörhjälpmedel"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Frånkopplad"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ansluten"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktiv"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Läser in"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har aktiverats."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volymknapparna har tryckts ned. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> har inaktiverats."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Släpp volymknapparna. Du kan aktivera <xliff:g id="SERVICE_NAME">%1$s</xliff:g> genom att hålla båda volymknapparna nedtryckta i tre sekunder igen."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Funktionen öppnas nästa gång du använder kortkommandot. Svep uppåt med två fingrar från skärmens nederkant och släpp snabbt."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Funktionen öppnas nästa gång du använder kortkommandot. Svep uppåt med tre fingrar från skärmens nederkant och släpp snabbt."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Förstoring"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Vill du byta till telefonens mikrofon?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Vill du byta till hörapparatens mikrofon?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"För bättre ljud eller om hörapparaten har lite batteri. Detta byter bara mikrofon under samtalet."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Du kan använda hörapparatens mikrofon för handsfree-samtal. Detta byter bara mikrofon under samtalet."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Byt"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Inställningar"</string> <string name="user_switched" msgid="7249833311585228097">"Nuvarande användare: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Byter till <xliff:g id="NAME">%1$s</xliff:g> …"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Loggar ut <xliff:g id="NAME">%1$s</xliff:g> …"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Av säkerhetsskäl döljs appinnehållet vid skärmdelning"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Automatiskt ansluten till satellit"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Du kan skicka och ta emot meddelanden utan mobil- eller wifi-nätverk"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Vill du använda satellitmeddelanden?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Skicka och ta emot meddelanden utan ett mobil- eller wifi-nätverk"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Öppna Messages"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 98c973140a65..58d71817a078 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Imeshindwa kufikia mtandao wa simu"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Jaribu kutumia mtandao unaopendelea. Gusa ili ubadilishe."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Huduma ya kupiga simu za dharura haipatikani"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Usionyeshe Tena"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Huduma ya kupiga simu za dharura inahitaji mtandao wa simu"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Arifa"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Kupeleka simu kwenye namba nyingine"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Arifa za mtandao"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Mtandao unapatikana"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Hali ya VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Saa na saa za maeneo"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Arifa kutoka kwa Msimamizi wako wa TEHAMA"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Arifa"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Onyesho la duka la rejareja"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Programu inaendelea kutekelezwa"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Programu zinazotumia betri"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ukuzaji"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Vifaa vya kusikilizia"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Matumizi ya zana za ufikivu"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Skrini"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> inatumia betri"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Pakua programu"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"SIM mpya imewekwa"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Gusa ili uiweke"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Saa za eneo lako zimebadilika"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Sasa unatumia saa za eneo za <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Weka saa"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Weka tarehe"</string> <string name="date_time_set" msgid="4603445265164486816">"Weka"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Hali ya kutumia kwa mkono mmoja"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Kipunguza mwangaza zaidi"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Vifaa vya kusaidia kusikia"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Haijaunganishwa"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Imeunganishwa"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Inatumika"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Inapakia"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Vitufe vya sauti vilivyoshikiliwa. Umewasha <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Vitufe vya sauti vimeshikiliwa. Umezima <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Achilia vitufe vya sauti. Ili uwashe <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, bonyeza na ushikilie tena vitufe vyote vya sauti kwa sekunde 3."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Kipengele kitafunguka utakapotumia tena njia hii ya mkato. Telezesha vidole 2 kuanzia sehemu ya chini ya skrini yako kwenda juu kisha uachilie haraka."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Kipengele kitafunguka utakapotumia tena njia hii ya mkato. Telezesha vidole 3 kuanzia sehemu ya chini ya skrini yako kwenda juu kisha uachilie haraka."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ukuzaji"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Ungependa kubadilisha utumie maikrofoni ya simu?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Ungependa kubadilisha utumie maikrofoni ya visaidizi vya kusikia?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Kwa sauti bora au iwapo chaji ya betri ya visaidizi vyako vya kusikia imepungua. Hali hii hubadilisha maikrofoni yako tu wakati unapiga simu."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Unaweza kutumia maikrofoni ya visaidizi vyako vya kusikia ili kupiga simu bila kugusa. Hali hii hubadilisha maikrofoni yako tu wakati unapiga simu."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Badilisha"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Mipangilio"</string> <string name="user_switched" msgid="7249833311585228097">"Mtumiaji wa sasa <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Inaenda kwa <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Inamwondoa <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Maudhui ya programu yamefichwa ili yasionekane kwenye skrini ya pamoja kwa sababu za kiusalama"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Imeunganishwa kiotomatiki na satelaiti"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Unaweza kutuma na kupokea ujumbe bila mtandao wa simu au Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Ungependa kutuma ujumbe kupitia setilaiti?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Tuma na upokee ujumbe bila kutumia mtandao wa simu wala Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Fungua Programu ya Messages"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index f8b2bbc35b7d..59668bbff71d 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"மொபைல் நெட்வொர்க் கிடைக்கவில்லை"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"விருப்ப நெட்வொர்க்கை மாற்றவும். மாற்ற, தட்டவும்."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"அவசர அழைப்பைச் செய்ய முடியாது"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"மீண்டும் காட்டாதே"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"அவசர அழைப்புகளுக்கு மொபைல் நெட்வொர்க் தேவை"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"விழிப்பூட்டல்கள்"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"அழைப்பு திருப்பிவிடுதல்"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"நெட்வொர்க் விழிப்பூட்டல்கள்"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"நெட்வொர்க் உள்ளது"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN நிலை"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"நேரம் மற்றும் நேர மண்டலங்கள்"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"IT நிர்வாகியிடம் இருந்து வரும் விழிப்பூட்டல்கள்"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"விழிப்பூட்டல்கள்"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"விற்பனையாளர் டெமோ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ஆப்ஸ் இயங்குகிறது"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"பேட்டரியைப் பயன்படுத்தும் ஆப்ஸ்"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"பெரிதாக்கல்"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"செவித்துணைக் கருவி"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"அணுகல்தன்மை உபயோகம்"</string> <string name="notification_channel_display" msgid="6905032605735615090">"டிஸ்ப்ளே"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் பேட்டரியைப் பயன்படுத்துகிறது"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"பயன்பாட்டைப் பதிவிறக்கு"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"புதிய சிம் செருகப்பட்டது"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"அமைக்க, தட்டவும்"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"உங்கள் நேர மண்டலம் மாற்றப்பட்டது"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"நீங்கள் இப்போது இருப்பது: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"நேரத்தை அமை"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"தேதியை அமை"</string> <string name="date_time_set" msgid="4603445265164486816">"அமை"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ஒற்றைக் கைப் பயன்முறை"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"மிகக் குறைவான வெளிச்சம்"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"செவித்துணைக் கருவிகள்"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"இணைப்புநீக்கப்பட்டது"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"இணைக்கப்பட்டுள்ளது"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"செயலில் உள்ளது"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"ஏற்றுகிறது"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆன் செய்யப்பட்டது."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"ஒலியளவுக்கான விசைகளைப் பிடித்திருந்தீர்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ஆஃப் செய்யப்பட்டது."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ஒலியளவு பட்டன்களை அழுத்துவதை நிறுத்துங்கள். <xliff:g id="SERVICE_NAME">%1$s</xliff:g> சேவையை இயக்க, ஒலியளவு பட்டன்கள் இரண்டையும் 3 வினாடிகளுக்கு மீண்டும் அழுத்திப் பிடிக்கவும்."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"அடுத்த முறை இந்த ஷார்ட்கட்டை நீங்கள் பயன்படுத்தும்போது அம்சம் திறக்கும். 2 விரல்களால் திரையின் கீழிருந்து மேல்நோக்கி ஸ்வைப் செய்து விரைவாக விரல்களை எடுக்கவும்."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"அடுத்த முறை இந்த ஷார்ட்கட்டை நீங்கள் பயன்படுத்தும்போது அம்சம் திறக்கும். 3 விரல்களால் திரையின் கீழிருந்து மேல்நோக்கி ஸ்வைப் செய்து விரைவாக விரல்களை எடுக்கவும்."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"பெரிதாக்கல்"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ஃபோன் மைக்கிற்கு மாறவா?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"செவித்துணைக் கருவியின் மைக்கிற்கு மாறவா?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"மேம்பட்ட ஒலிக்கோ செவித்துணைக் கருவியில் பேட்டரி குறைவாக இருந்தாலோ. அழைப்பின்போது உங்கள் மைக்கை மட்டுமே இது மாற்றுகிறது."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"கைகளைப் பயன்படுத்தாமல் அழைக்க உங்கள் செவித்துணைக் கருவியின் மைக்ரோஃபோனைப் பயன்படுத்தலாம். அழைப்பின்போது உங்கள் மைக்கை மட்டுமே இது மாற்றுகிறது."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"மாற்று"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"அமைப்புகள்"</string> <string name="user_switched" msgid="7249833311585228097">"நடப்பு பயனர் <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g>க்கு மாறுகிறது…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> வெளியேறுகிறார்…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"பாதுகாப்பிற்காக, திரைப் பகிர்வில் இருந்து ஆப்ஸ் உள்ளடக்கம் மறைக்கப்பட்டுள்ளது"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"சாட்டிலைட்டுடன் தானாக இணைக்கப்பட்டது"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"மொபைல்/வைஃபை நெட்வொர்க் இல்லாமல் நீங்கள் மெசேஜ்களை அனுப்பலாம் பெறலாம்"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"சாட்டிலைட் மெசேஜிங்கைப் பயன்படுத்தவா?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"மொபைல்/வைஃபை நெட்வொர்க் இல்லாமல் மெசேஜ்களை அனுப்பலாம், பெறலாம்"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messages ஆப்ஸைத் திறக்கவும்"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index bcd2865173d4..6285d776cfab 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"మొబైల్ నెట్వర్క్ అందుబాటులో లేదు"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ప్రాధాన్య నెట్వర్క్ను మార్చుకోవడానికి ప్రయత్నించండి. మార్చడానికి నొక్కండి."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"అత్యవసర కాలింగ్ అందుబాటులో లేదు"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"మళ్లీ చూపవద్దు"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"ఎమర్జెన్సీ కాల్స్కు మొబైల్ నెట్వర్క్ అవసరమవుతుంది"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"అలర్ట్లు"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"కాల్ ఫార్వార్డింగ్"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"నెట్వర్క్ హెచ్చరికలు"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"నెట్వర్క్ అందుబాటులో ఉంది"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN స్టేటస్"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"టైమ్, టైమ్ జోన్లు"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"మీ IT నిర్వాహకుల నుండి వచ్చే హెచ్చరికలు"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"అలర్ట్లు"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"రిటైల్ డెమో"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"యాప్ అమలవుతోంది"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"బ్యాటరీని ఉపయోగిస్తున్న యాప్లు"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"మ్యాగ్నిఫికేషన్"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"వినికిడి పరికరం"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"యాక్సెసిబిలిటీ వినియోగం"</string> <string name="notification_channel_display" msgid="6905032605735615090">"డిస్ప్లే చేయండి"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> బ్యాటరీని ఉపయోగిస్తోంది"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"యాప్ని డౌన్లోడ్ చేయి"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"కొత్త SIM చొప్పించారు"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"దీన్ని సెటప్ చేయడానికి నొక్కండి"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"మీ టైమ్ జోన్ మారింది"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"మీరు ఇప్పుడు <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g>లో (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) ఉన్నారు"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"సమయాన్ని సెట్ చేయండి"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"తేదీని సెట్ చేయండి"</string> <string name="date_time_set" msgid="4603445265164486816">"సెట్ చేయి"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"వన్-హ్యాండెడ్ మోడ్"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"ఎక్స్ట్రా డిమ్"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"వినికిడి పరికరాలు"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"డిస్కనెక్ట్ అయింది"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"కనెక్ట్ చేయబడింది"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"యాక్టివ్"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"లోడ్ అవుతోంది"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆన్ చేయబడింది"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"వాల్యూమ్ కీలు నొక్కి ఉంచబడ్డాయి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ఆఫ్ చేయబడింది"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"వాల్యూమ్ కీలను రిలీజ్ చేయండి. <xliff:g id="SERVICE_NAME">%1$s</xliff:g>ను ఆన్ చేయడానికి, రెండు వాల్యూమ్ కీలను మళ్లీ 3 సెకన్ల పాటు నొక్కి పట్టుకోండి."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"తర్వాతిసారి మీరు ఈ షార్ట్కట్ను ఉపయోగించినప్పుడు ఈ ఫీచర్ తెరుచుకుంటుంది. మీ స్క్రీన్ దిగువ నుండి 2 వేళ్లతో పైకి స్వైప్ చేసి, వెంటనే వదలండి."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"తర్వాతిసారి మీరు ఈ షార్ట్కట్ను ఉపయోగించినప్పుడు ఈ ఫీచర్ తెరుచుకుంటుంది. మీ స్క్రీన్ దిగువ నుండి 3 వేళ్లతో పైకి స్వైప్ చేసి, వెంటనే వదలండి."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"మ్యాగ్నిఫికేషన్"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"ఫోన్ మైక్కు మారాలా?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"వినికిడి పరికరం మైక్కు మారాలా?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"మెరుగైన సౌండ్ కోసం లేదా మీ వినికిడి పరికరం బ్యాటరీ తక్కువగా ఉన్నప్పుడు. ఇది కాల్ సమయంలో మాత్రమే మీ మైక్ను మారుస్తుంది."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"హ్యాండ్స్-ఫ్రీ కాలింగ్ కోసం మీరు మీ వినికిడి పరికరాన్ని ఉపయోగించవచ్చు. ఇది కాల్ సమయంలో మాత్రమే మీ మైక్ను మారుస్తుంది."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"మారండి"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"సెట్టింగ్లు"</string> <string name="user_switched" msgid="7249833311585228097">"ప్రస్తుత వినియోగదారు <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> యూజర్కు స్విచ్ అవుతోంది…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g>ని లాగ్ అవుట్ చేస్తోంది…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"సెక్యూరిటీ కోసం స్క్రీన్ షేర్ నుండి యాప్ కంటెంట్ దాచబడింది"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"శాటిలైట్కు ఆటోమేటిక్గా కనెక్ట్ చేయబడింది"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"మీరు మొబైల్ లేదా Wi-Fi నెట్వర్క్ లేకుండా మెసేజ్లను పంపవచ్చు, స్వీకరించవచ్చు"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"శాటిలైట్ మెసేజింగ్ను ఉపయోగించాలనుకుంటున్నారా?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"మొబైల్ లేదా Wi-Fi నెట్వర్క్ లేకుండా మెసేజ్లను పంపండి, స్వీకరించండి"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Messagesను తెరవండి"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 0e66e371f722..557286128053 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"เชื่อมต่อเครือข่ายมือถือไม่ได้"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ลองเปลี่ยนเครือข่ายที่ต้องการ แตะเพื่อเปลี่ยน"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"โทรหาหมายเลขฉุกเฉินไม่ได้"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"ไม่ต้องแสดงอีก"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"การโทรหาหมายเลขฉุกเฉินต้องใช้เครือข่ายมือถือ"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"การแจ้งเตือน"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"การโอนสาย"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"การแจ้งเตือนเครือข่าย"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"มีเครือข่ายพร้อมใช้งาน"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"สถานะ VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"เวลาและเขตเวลา"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"การแจ้งเตือนจากผู้ดูแลระบบไอทีของคุณ"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"การแจ้งเตือน"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"การสาธิตสำหรับผู้ค้าปลีก"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"แอปที่ทำงานอยู่"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"แอปหลายแอปกำลังใช้แบตเตอรี่"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"การขยาย"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"เครื่องช่วยฟัง"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"การใช้งานการช่วยเหลือพิเศษ"</string> <string name="notification_channel_display" msgid="6905032605735615090">"จอแสดงผล"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> กำลังใช้แบตเตอรี่"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ดาวน์โหลดแอป"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"ใส่ซิมใหม่แล้ว"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"แตะเพื่อตั้งค่า"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"เขตเวลามีการเปลี่ยนแปลง"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"ตอนนี้คุณอยู่ในเขตเวลา <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"ตั้งเวลา"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"ตั้งวันที่"</string> <string name="date_time_set" msgid="4603445265164486816">"ตั้งค่า"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"โหมดมือเดียว"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"หรี่แสงเพิ่มเติม"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"เครื่องช่วยฟัง"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"เลิกเชื่อมต่อแล้ว"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"เชื่อมต่อแล้ว"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"ใช้งานอยู่"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"กำลังโหลด"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว เปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"กดปุ่มปรับระดับเสียงค้างไว้แล้ว ปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> แล้ว"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"ปล่อยปุ่มปรับระดับเสียง หากต้องการเปิด <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ให้กดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มค้างไว้อีกครั้งเป็นเวลา 3 วินาที"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"ฟีเจอร์นี้จะเปิดขึ้นในครั้งถัดไปที่คุณใช้ทางลัดนี้ ใช้ 2 นิ้วปัดขึ้นจากด้านล่างของหน้าจอและปล่อยอย่างรวดเร็ว"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"ฟีเจอร์นี้จะเปิดขึ้นในครั้งถัดไปที่คุณใช้ทางลัดนี้ ใช้ 3 นิ้วปัดขึ้นจากด้านล่างของหน้าจอและปล่อยอย่างรวดเร็ว"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"การขยาย"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"เปลี่ยนไปใช้ไมโครโฟนของโทรศัพท์ไหม"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"เปลี่ยนไปใช้ไมโครโฟนของเครื่องช่วยฟังไหม"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"เพื่อให้เสียงดีขึ้นหรือในกรณีที่แบตเตอรี่ของเครื่องช่วยฟังใกล้หมด การดำเนินการนี้เพียงแค่เปลี่ยนไมโครโฟนระหว่างการโทรเท่านั้น"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"คุณใช้ไมโครโฟนของเครื่องช่วยฟังเพื่อโทรแบบแฮนด์ฟรีได้ การดำเนินการนี้เพียงแค่เปลี่ยนไมโครโฟนระหว่างการโทรเท่านั้น"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"เปลี่ยน"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"การตั้งค่า"</string> <string name="user_switched" msgid="7249833311585228097">"ผู้ใช้ปัจจุบัน <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_switching_message" msgid="1912993630661332336">"กำลังเปลี่ยนเป็น<xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"กำลังออกจากระบบ <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"ซ่อนเนื้อหาแอปจากการแชร์หน้าจอแล้วเพื่อความปลอดภัย"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"เชื่อมต่อกับดาวเทียมโดยอัตโนมัติ"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"คุณรับส่งข้อความผ่านดาวเทียมได้โดยไม่ต้องใช้เครือข่ายมือถือหรือ Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"ใช้การรับส่งข้อความผ่านดาวเทียมไหม"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"รับและส่งข้อความโดยไม่ต้องใช้เครือข่ายมือถือหรือ Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"เปิด Messages"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 0ab4fb2901b6..44832c87a3a7 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Hindi makakonekta sa mobile network"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Subukang baguhin ang gustong network. I-tap para baguhin."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Hindi available ang pang-emergency na pagtawag"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Huwag Ipakita Ulit"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Kailangan ng mobile network para sa mga emergency na tawag"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Mga Alerto"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Pagpasa ng tawag"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Mga alerto sa network"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Available ang network"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Status ng VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Oras at mga time zone"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Mga alerto mula sa iyong IT admin"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Mga Alerto"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Retail demo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Tumatakbo ang app"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Mga app na kumokonsumo ng baterya"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Pag-magnify"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Hearing device"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Paggamit sa pagiging accessible"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Display"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Gumagamit ng baterya ang <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> @@ -880,7 +881,7 @@ <item msgid="7740243458912727194">"Mobile"</item> <item msgid="8526146065496663766">"Trabaho"</item> <item msgid="8150904584178569699">"Fax sa Trabaho"</item> - <item msgid="4537253139152229577">"Fax sa Tahanan"</item> + <item msgid="4537253139152229577">"Home Fax"</item> <item msgid="6751245029698664340">"Pager"</item> <item msgid="1692790665884224905">"Iba pa"</item> <item msgid="6216981255272016212">"Custom"</item> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"I-download ang app"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Nakalagay na ang bagong SIM"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"I-tap upang i-set up ito"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Nagbago ang iyong time zone"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Nasa <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) ka na ngayon."</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Magtakda ng oras"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Itakda ang petsa"</string> <string name="date_time_set" msgid="4603445265164486816">"Itakda"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"One-Hand mode"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Extra dim"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Mga hearing device"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Nadiskonekta"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Nakakonekta"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Aktibo"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Naglo-load"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Pinindot nang matagal ang volume keys. Na-on ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Pinindot nang matagal ang volume keys. Na-off ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Bitawan ang mga volume key. Para i-on ang <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, muling pindutin nang matagal ang dalawang volume key sa loob ng 3 segundo."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Magbubukas ang feature sa susunod na gamitin mo ang shortcut na ito. Mag-swipe pataas gamit ang 2 daliri mula sa ibaba ng iyong screen at mabilis na i-release."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Magbubukas ang feature sa susunod na gamitin mo ang shortcut na ito. Mag-swipe pataas gamit ang 3 daliri mula sa ibaba ng iyong screen at mabilis na i-release."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Pag-magnify"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Lumipat sa mikropono ng telepono?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Lumipat sa mikropono ng hearing aid?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Para sa mas malinaw na tunog o kung paubos na ang baterya ng iyong hearing aid. Inililipat lang nito ang iyong mikropono habang nasa tawag ka."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Puwede mong gamitin ang mikropono ng iyong hearing aid para sa hands-free na pagtawag. Inililipat lang nito ang iyong mikropono habang nasa tawag ka."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Lumipat"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Mga Setting"</string> <string name="user_switched" msgid="7249833311585228097">"Kasalukuyang user <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Lumilipat kay <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Nila-log out si <xliff:g id="NAME">%1$s</xliff:g>..."</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Nakatago ang content ng app mula sa pagbabahagi ng screen para sa seguridad"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Awtomatikong nakakonekta sa satellite"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Puwede kang magpadala at tumanggap ng mga mensahe nang walang mobile o Wi-Fi network"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Gumamit ng satellite messaging?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Magpadala at tumanggap ng mga mensahe nang walang mobile o Wi-Fi network"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Buksan ang Messages"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 78ce9d4d3ae5..1a8d373a2aa2 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobil ağa erişilemiyor"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Tercih edilen ağı değiştirmeyi deneyin. Değiştirmek için dokunun."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Acil durum çağrısı kullanılamaz"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Bir daha gösterme"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Acil durum aramaları için mobil ağ gereklidir"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Uyarılar"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Çağrı yönlendirme"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Ağ uyarıları"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Ağ mevcut"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN durumu"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Saat ve saat dilimleri"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"IT yöneticinizden uyarılar"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Uyarılar"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Mağaza demo"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Uygulama çalışıyor"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Pil kullanan uygulamalar"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Büyütme"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"İşitme cihazı"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Erişilebilirlik kullanımı"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Ekran"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> pil kullanıyor"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Uygulama indir"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Yeni SIM kart takıldı"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Kurmak için dokunun"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Saat diliminiz değişti"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Artık <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) saat dilimindesiniz"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Saati ayarlayın"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Tarihi ayarlayın"</string> <string name="date_time_set" msgid="4603445265164486816">"Ayarla"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Tek El modu"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra loş"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"İşitme cihazları"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Bağlı değil"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Bağlı"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Etkin"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Yükleniyor"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> açıldı."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ses tuşlarını basılı tuttunuz. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> kapatıldı."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Ses seviyesi tuşlarını bırakın. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> hizmetini etkinleştirmek için her iki ses seviyesi tuşuna yeniden basıp 3 saniye boyunca basılı tutun."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Özellik, bu kısayolu bir sonraki kullanışınızda açılır. Ekranın alt kısmından 2 parmağınızla yukarı doğru kaydırın ve hızlıca bırakın."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Özellik, bu kısayolu bir sonraki kullanışınızda açılır. Ekranın alt kısmından 3 parmağınızla yukarı doğru kaydırın ve hızlıca bırakın."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Büyütme"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Telefon mikrofonuna geçilsin mi?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"İşitme cihazı mikrofonuna geçilsin mi?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Daha iyi ses kalitesi için veya işitme cihazınızın pili azaldığında Bu işlem yalnızca görüşme sırasında mikrofonunuzu değiştirir."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Eller serbest modunda arama yapmak için işitme cihazı mikrofonunu kullanabilirsiniz. Bu işlem yalnızca görüşme sırasında mikrofonunuzu değiştirir."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Geçiş yap"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Ayarlar"</string> <string name="user_switched" msgid="7249833311585228097">"Geçerli kullanıcı: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> adlı kullanıcıya geçiliyor…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> hesabından çıkış yapılıyor…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Uygulama içerikleri, güvenlik nedeniyle ekran paylaşımında gizlendi"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Uyduya otomatik olarak bağlandı"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil veya kablosuz ağa bağlı olmadan mesaj alıp gönderebilirsiniz"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Uydu üzerinden mesajlaşma kullanılsın mı?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Mobil veya kablosuz ağ kullanmadan mesaj gönderip alın"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Mesajlar\'ı aç"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index a98fda433f8f..5e6f9ec90037 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -89,8 +89,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Не вдається під’єднатися до мобільної мережі"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Спробуйте змінити вибрану мережу. Торкніться, щоб це зробити."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Екстрені виклики недоступні"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Більше не показувати"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Щоб здійснювати екстрені виклики, потрібне з’єднання з мобільною мережею"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Сповіщення"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Переадресація виклику"</string> @@ -305,6 +304,8 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Сповіщення мережі"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Мережа доступна"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Статус мережі VPN"</string> + <!-- no translation found for notification_channel_system_time (1660313368058030441) --> + <skip /> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Сповіщення від ІТ-адміністратора"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Сповіщення"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Демо-режим для роздрібної торгівлі"</string> @@ -312,6 +313,8 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Працює додаток"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Додатки, що використовують заряд акумулятора"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Збільшення"</string> + <!-- no translation found for notification_channel_accessibility_hearing_device (7816963856388758952) --> + <skip /> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Використання спеціальних можливостей"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Дисплей"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> використовує заряд акумулятора"</string> @@ -1409,6 +1412,10 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Завантажити додаток"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Вставлено нову SIM-карту"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Торкніться, щоб налаштувати"</string> + <!-- no translation found for time_zone_change_notification_title (5232503069219193218) --> + <skip /> + <!-- no translation found for time_zone_change_notification_body (6135793674904665585) --> + <skip /> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Установити час"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Установити дату"</string> <string name="date_time_set" msgid="4603445265164486816">"Застосувати"</string> @@ -1782,14 +1789,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Режим керування однією рукою"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Додаткове зменшення яскравості"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Слухові апарати"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Від’єднано"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Під’єднано"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Активний"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Завантаження"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> увімкнено."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Утримано клавіші гучності. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> вимкнено."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Відпустіть клавіші гучності. Щоб увімкнути сервіс <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, натисніть і втримуйте обидві клавіші гучності протягом 3 секунд."</string> @@ -1800,6 +1803,18 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Функція відкриється, коли ви наступного разу скористаєтеся цією швидкою командою. Проведіть двома пальцями вгору від низу екрана й швидко відпустіть."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Функція відкриється, коли ви наступного разу скористаєтеся цією швидкою командою. Проведіть трьома пальцями вгору від низу екрана й швидко відпустіть."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Збільшення"</string> + <!-- no translation found for hearing_device_switch_phone_mic_notification_title (6645178038359708836) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_title (4612074852145289569) --> + <skip /> + <!-- no translation found for hearing_device_switch_phone_mic_notification_text (1332426273666077412) --> + <skip /> + <!-- no translation found for hearing_device_switch_hearing_mic_notification_text (8288368365767284208) --> + <skip /> + <!-- no translation found for hearing_device_notification_switch_button (3619524619430941300) --> + <skip /> + <!-- no translation found for hearing_device_notification_settings_button (6673651052880279178) --> + <skip /> <string name="user_switched" msgid="7249833311585228097">"Поточний користувач: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Перехід у режим \"<xliff:g id="NAME">%1$s</xliff:g>\"…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Вихід з облікового запису користувача <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2456,6 +2471,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"З міркувань безпеки вміст додатка приховано під час показу екрана"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Автоматично підключено до супутника"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Ви можете надсилати й отримувати повідомлення, не використовуючи Wi-Fi або мобільну мережу"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Скористатися супутниковим обміном повідомленнями?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Надсилайте й отримуйте текстові повідомлення без мобільної мережі або Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Відкрийте Повідомлення"</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 0a0047422a74..7ddd7cb8a02a 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"موبائل نیٹ ورک تک رسائی نہیں ہو سکتی"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"ترجیحی نیٹ ورک تبدیل کر کے دیکھیں۔ تبدیل کرنے کے لیے تھپتھپائیں۔"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"ایمرجنسی کالنگ دستیاب نہیں ہے"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"دوبارہ نہ دکھائیں"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"ہنگامی کالز کو موبائل نیٹ ورک کی ضرورت ہے"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"الرٹس"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"کال فارورڈنگ"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"نیٹ ورک الرٹس"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"نیٹ ورک دستیاب ہے"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN اسٹیٹس"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"وقت اور ٹائم زونز"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"آپ کے IT منتظم کی جانب سے الرٹس"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"الرٹس"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"ریٹیل ڈیمو"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"ایپ چل رہی ہے"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"ایپس بیٹری خرچ کر رہی ہیں"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"میگنیفکیشن"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"آلہ سماعت"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"ایکسیسبیلٹی کا استعمال"</string> <string name="notification_channel_display" msgid="6905032605735615090">"ڈسپلے"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> بیٹری کا استعمال کر رہی ہے"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"ایپ ڈاؤن لوڈ کریں"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"نئی SIM داخل ہو گئی"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"اسے سیٹ اپ کرنے کیلئے تھپتھپائیں"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"آپ کا ٹائم زون تبدیل ہو گیا"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"آپ اب <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>) میں ہیں"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"وقت سیٹ کریں"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"تاریخ سیٹ کریں"</string> <string name="date_time_set" msgid="4603445265164486816">"سیٹ کریں"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"ایک ہاتھ کی وضع"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"اضافی مدھم"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"سماعتی آلات"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"غیر منسلک ہے"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"منسلک ہے"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"فعال"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"لوڈ ہو رہا ہے"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آن ہے۔"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"والیوم کی کلیدوں کو دبائے رکھا گیا۔ <xliff:g id="SERVICE_NAME">%1$s</xliff:g> آف ہے۔"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"والیوم کی کلیدوں کو ریلیز کریں <xliff:g id="SERVICE_NAME">%1$s</xliff:g> کو آن کرنے کے لیے، والیوم کی دونوں کلیدوں کو دوبارہ 3 سیکنڈ تک چھوئیں اور دبائے رکھیں۔"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"اگلی بار جب آپ یہ شارٹ کٹ استعمال کریں گے تو خصوصیت کھل جائے گی۔ اپنی اسکرین کے نیچے سے 2 انگلیوں سے اوپر کی طرف سوائپ کریں اور تیزی سے ریلیز کریں۔"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"اگلی بار جب آپ یہ شارٹ کٹ استعمال کریں گے تو خصوصیت کھل جائے گی۔ اپنی اسکرین کے نیچے سے 3 انگلیوں سے اوپر کی طرف سوائپ کریں اور تیزی سے ریلیز کریں۔"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"میگنیفکیشن"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"فون کے مائیک پر سوئچ کریں؟"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"سماعتی آلہ کے مائیک پر سوئچ کریں؟"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"بہتر آواز کے لیے یا اگر آپ کے سماعتی آلہ کی بیٹری کم ہے۔ یہ صرف کال کے دوران آپ کا مائیک سوئچ کرتا ہے۔"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"آپ ہینڈز فری کالنگ کے لیے اپنا سماعتی آلہ مائیکروفون استعمال کر سکتے ہیں۔ یہ صرف کال کے دوران آپ کا مائیک سوئچ کرتا ہے۔"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"سوئچ کریں"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"ترتیبات"</string> <string name="user_switched" msgid="7249833311585228097">"موجودہ صارف <xliff:g id="NAME">%1$s</xliff:g>۔"</string> <string name="user_switching_message" msgid="1912993630661332336">"<xliff:g id="NAME">%1$s</xliff:g> پر سوئچ کیا جا رہا ہے…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> لاگ آؤٹ ہو رہا ہے…"</string> @@ -1974,7 +1979,7 @@ <string name="zen_mode_implicit_activated" msgid="2634285680776672994">"آن ہے"</string> <string name="zen_mode_implicit_deactivated" msgid="8688441768371501750">"آف ہے"</string> <string name="zen_mode_trigger_summary_divider_text" msgid="7461583466043698862">"، "</string> - <string name="zen_mode_trigger_summary_range_symbol_combination" msgid="1804900738798069619">"<xliff:g id="START">%1$s</xliff:g> - <xliff:g id="END">%2$s</xliff:g>"</string> + <string name="zen_mode_trigger_summary_range_symbol_combination" msgid="1804900738798069619">"<xliff:g id="START">%1$s</xliff:g> - <xliff:g id="END">%2$s</xliff:g>"</string> <string name="zen_mode_trigger_summary_range_words" msgid="7228261413029290750">"<xliff:g id="START">%1$s</xliff:g> تا <xliff:g id="END">%2$s</xliff:g>"</string> <string name="zen_mode_trigger_summary_combined" msgid="6492381546327807669">"<xliff:g id="DAYS">%1$s</xliff:g>، <xliff:g id="TIMES">%2$s</xliff:g>"</string> <string name="zen_mode_trigger_event_calendar_any" msgid="2086784607921121803">"کوئی بھی کیلنڈر"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"سیکیورٹی کے مد نظر ایپ کا مواد اسکرین کے اشتراک سے چھپا ہوا ہے"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"سٹلائٹ سے خودکار طور پر منسلک ہے"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"آپ موبائل یا Wi-Fi نیٹ ورک کے بغیر پیغامات بھیج اور موصول کر سکتے ہیں"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"سیٹلائٹ پیغام رسانی کا استعمال کریں؟"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"موبائل یا Wi-Fi نیٹ ورک کے بغیر پیغامات بھیجیں اور موصول کریں"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"پیغامات ایپ کو کھولیں"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 2f158f411a47..c1697953eb53 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Mobil tarmoqqa ulanib bo‘lmadi"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Tarmoq turini almashtiring. Almashtirish uchun bosing."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Favqulodda chaqiruv ishlamayapti"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Boshqa koʻrsatilmasin"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Favqulodda chaqiruvlar uchun mobil tarmoq zarur"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Ogohlantirishlar"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Chaqiruvlarni uzatish"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Tarmoqqa oid bildirgilar"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Tarmoq mavjud"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN holati"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Vaqt va vaqt mintaqalari"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Administratordan xabarlar"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Ogohlantirishlar"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Demo rejim"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Ilova faol"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Batareya quvvatini sarflayotgan ilovalar"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Kattalashtirish"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Eshitish qurilmasi"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Qulayliklar ishlatilishi"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Displey"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi batareya quvvatini sarflamoqda"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Ilovani yuklab olish"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Yangi SIM karta solindi"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Sozlash uchun bosing"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Vaqt mintaqangiz oʻzgardi"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Endi bu yerdasiz: <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Vaqtni o‘rnatish"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Sanani kiritish"</string> <string name="date_time_set" msgid="4603445265164486816">"O‘rnatish"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Ixcham rejim"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Juda xira"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Eshitish qurilmalari"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Uzildi"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ulandi"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Faol"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Yuklanmoqda"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> yoqildi."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Tovush tugmalari bosib turildi. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> faolsizlantirildi."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Tovush tugmalarini qoʻyib yuboring. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> xizmatini yoqish uchun ikkala tovush tugmasini 3 soniya bosib turing."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Keyingi safar shu buyruqdan foydalanganingizda funksiya ochiladi. Ekranning pastidan 2 barmoq bilan tepaga suring va darhol qoʻyib yuboring."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Keyingi safar shu buyruqdan foydalanganingizda funksiya ochiladi. Ekranning pastidan 3 barmoq bilan tepaga suring va darhol qoʻyib yuboring."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Kattalashtirish"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Telefon mikrofoniga almashtirilsinmi?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Eshitish moslamasi mikrofoniga almashtirilsinmi?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Tovush yaxshilanishi uchun yoki eshitish moslamasi batareyasi quvvati kam boʻlsa. Bu faqat chaqiruv paytida mikrofonni almashtiradi."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Garniturali chaqiruv uchun eshitish moslamasi mikrofonidan foydalanish mumkin. Bu faqat chaqiruv paytida mikrofonni almashtiradi."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Almashtirish"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Sozlamalar"</string> <string name="user_switched" msgid="7249833311585228097">"Joriy foydalanuvchi <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Bunga almashilmoqda: <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> hisobidan chiqilmoqda…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Ekran namoyishida xavfsizlik maqsadida ilova kontenti berkitildi"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Sputnikka avtomatik ulandi"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Mobil yoki Wi-Fi tarmoqsiz xabarlarni yuborishingiz va qabul qilishingiz mumkin"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Sputnik orqali xabarlashuv ishlatilsinmi?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Mobil yoki Wi-Fi tarmoq blan aloqa yoʻqligida xabar yuboring va qabul qiling"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Xabarlar ilovasini ochish"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index adb3e023d59a..11b57703d339 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Không thể kết nối với mạng di động"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Hãy thử thay đổi mạng ưu tiên. Nhấn để thay đổi."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Không có dịch vụ gọi khẩn cấp"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Không hiện lại"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Cần có mạng di động để thực hiện các cuộc gọi khẩn cấp"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Thông báo"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Chuyển tiếp cuộc gọi"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Cảnh báo mạng"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Có mạng"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Trạng thái VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Thời gian và múi giờ"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Thông báo từ quản trị viên CNTT của bạn"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Cảnh báo"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Giới thiệu bán lẻ"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Ứng dụng đang chạy"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Các ứng dụng tiêu thụ pin"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Phóng to"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Thiết bị trợ thính"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Việc sử dụng tính năng hỗ trợ tiếp cận"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Hiển thị"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> đang sử dụng pin"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Tải xuống ứng dụng"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Đã lắp SIM mới"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Nhấn để thiết lập"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Múi giờ của bạn đã thay đổi"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Bạn đang ở múi giờ <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Đặt giờ"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Đặt ngày"</string> <string name="date_time_set" msgid="4603445265164486816">"Đặt"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Chế độ một tay"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Siêu tối"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Thiết bị trợ thính"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Đã ngắt kết nối"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Đã kết nối"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Đang hoạt động"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Đang tải"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã bật."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Bạn đã giữ các phím âm lượng. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> đã tắt."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Thả phím âm lượng. Để bật <xliff:g id="SERVICE_NAME">%1$s</xliff:g>, hãy nhấn và giữ cả 2 phím âm lượng trong 3 giây một lần nữa."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Tính năng này sẽ được mở vào lần tới bạn dùng lối tắt này. Hãy dùng 2 ngón tay vuốt từ cuối màn hình lên rồi thả tay nhanh."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Tính năng này sẽ được mở vào lần tới bạn dùng lối tắt này. Hãy dùng 3 ngón tay vuốt từ cuối màn hình lên rồi thả tay nhanh."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Phóng to"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Chuyển sang micrô trên điện thoại?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Chuyển sang micrô của thiết bị trợ thính?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Để có âm thanh tốt hơn hoặc nếu thiết bị trợ thính của bạn sắp hết pin. Thao tác này chỉ chuyển micrô của bạn trong cuộc gọi."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Bạn có thể sử dụng micrô của thiết bị trợ thính để gọi điện mà không cần dùng tay. Thao tác này chỉ chuyển micrô của bạn trong cuộc gọi."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Chuyển"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Cài đặt"</string> <string name="user_switched" msgid="7249833311585228097">"Người dùng hiện tại <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Đang chuyển sang <xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Đang đăng xuất <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Nội dung ứng dụng bị ẩn khỏi tính năng chia sẻ màn hình vì lý do bảo mật"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Đã tự động kết nối với vệ tinh"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Bạn có thể gửi và nhận tin nhắn mà không cần có mạng di động hoặc mạng Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Sử dụng tính năng nhắn tin qua vệ tinh?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Gửi và nhận tin nhắn mà không cần mạng di động hoặc Wi-Fi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Mở ứng dụng Tin nhắn"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index dd90e25114d8..4a38b933b000 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"无法连接到移动网络"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"请尝试更改首选网络。点按即可更改。"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"无法使用紧急呼救服务"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"不再显示"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"紧急呼叫需要使用移动网络"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"提醒"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"来电转接"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"网络提醒"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"有可用的网络"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN 状态"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"时间和时区"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"您的 IT 管理员发来的提醒"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"提醒"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"零售演示模式"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"应用正在运行中"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"消耗电量的应用"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"放大功能"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"助听装置"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"无障碍功能使用情况"</string> <string name="notification_channel_display" msgid="6905032605735615090">"显示屏"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g>正在消耗电量"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"下载应用"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"已插入新 SIM 卡"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"点按即可进行设置"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"您的时区已更改"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"您现在位于<xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"设置时间"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"设置日期"</string> <string name="date_time_set" msgid="4603445265164486816">"设置"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"单手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"极暗"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"助听装置"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"已断开连接"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"已连接"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"活跃"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"正在加载"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已开启。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量键。<xliff:g id="SERVICE_NAME">%1$s</xliff:g>已关闭。"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"松开音量键。如要启用 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>,请再次同时按住两个音量键 3 秒。"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"下次使用此快捷手势时,将打开此功能。用 2 根手指从画面底部向上滑动,然后快速松开。"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"下次使用此快捷手势时,将打开此功能。用 3 根手指从画面底部向上滑动,然后快速松开。"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"放大功能"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"要切换为手机麦克风吗?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"要切换为助听器麦克风吗?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"可改善音质,或在助听器电池电量不足时使用。此操作只会切换通话期间的麦克风。"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"您可以使用助听器麦克风进行免提通话。此操作只会切换通话期间的麦克风。"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"切换"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"设置"</string> <string name="user_switched" msgid="7249833311585228097">"当前用户是<xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="1912993630661332336">"正在切换为<xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"正在将<xliff:g id="NAME">%1$s</xliff:g>退出账号…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"为安全起见,屏幕共享画面已隐藏此应用的内容"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"自动连接到卫星"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"您无需使用移动网络或 WLAN 网络便能收发消息"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"使用卫星消息功能?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"即使没有移动网络或 WLAN 网络,也能收发消息"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"打开“信息”应用"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index d34ed3d68dbc..cd428895c4d0 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"無法連線至流動網絡"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"請嘗試變更偏好的網絡。輕按即可變更。"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"無法撥打緊急電話"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"不要再顯示"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"撥打緊急電話需要使用流動網絡"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"通知"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"來電轉駁"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"網絡通知"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"有可用的網絡"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN 狀態"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"時間和時區"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"來自 IT 管理員的通知"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"通知"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"零售示範"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"應用程式正在執行"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"耗用電量的應用程式"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"放大"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"助聽器"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"無障礙功能使用情況"</string> <string name="notification_channel_display" msgid="6905032605735615090">"顯示屏"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在使用電量"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"下載應用程式"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"已插入新的 SIM 卡"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"輕按即可設定"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"你的時區已變更"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"你現在處於 <xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"設定時間"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"日期設定"</string> <string name="date_time_set" msgid="4603445265164486816">"設定"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"助聽器"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"已中斷連線"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"已連線"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"運作中"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"正在載入"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已開啟。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。<xliff:g id="SERVICE_NAME">%1$s</xliff:g> 已關閉。"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"鬆開音量鍵。如果要開 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>,請同時㩒住兩個音量鍵 3 秒。"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"下次使用此快速鍵時,就會開啟此功能。請用 2 隻手指從螢幕底部向上滑動並快速放開。"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"下次使用此快速鍵時,就會開啟此功能。請用 3 隻手指從螢幕底部向上滑動並快速放開。"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"放大"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"要切換至手機麥克風嗎?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"要切換至助聽器麥克風嗎?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"可改善音質,也在助聽器電量不足時適用。此操作只會切換通話期間的麥克風。"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"你可使用助聽器麥克風進行免提通話。此操作只會切換通話期間的麥克風。"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"切換"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"設定"</string> <string name="user_switched" msgid="7249833311585228097">"目前的使用者是<xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="1912993630661332336">"正在切換至<xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"正在登出 <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"為安全起見,應用程式內容已從分享螢幕畫面隱藏"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"已自動連線至衛星"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"你可在沒有流動/Wi-Fi 網絡的情況下收發訊息"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"要使用衛星訊息嗎?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"在沒有流動網絡或 Wi-Fi 網絡的情況下收發短訊"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"開啟「訊息」"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 09d1a7b4e1ce..c8ae6793a4e3 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"無法連上行動網路"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"請嘗試變更偏好的網路。輕觸即可變更。"</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"無法撥打緊急電話"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"不要再顯示"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"撥打緊急電話需要使用行動網路"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"快訊"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"來電轉接"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"網路警示"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"有可用的網路"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"VPN 狀態"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"時間和時區"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"來自 IT 管理員的快訊"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"快訊"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"零售商展示模式"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"應用程式執行中"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"正在耗用電量的應用程式"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"放大"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"助聽器"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"無障礙功能使用情形"</string> <string name="notification_channel_display" msgid="6905032605735615090">"螢幕"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」正在耗用電量"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"下載應用程式"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"已插入新的 SIM 卡"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"輕觸這裡即可進行設定"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"時區已變更"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"現在位於<xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"設定時間"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"日期設定"</string> <string name="date_time_set" msgid="4603445265164486816">"設定"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"單手模式"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"超暗"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"助聽器"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"連線中斷"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"已連線"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"運作中"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"載入中"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已開啟。"</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"已按住音量鍵。「<xliff:g id="SERVICE_NAME">%1$s</xliff:g>」已關閉。"</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"放開音量鍵。如要開啟 <xliff:g id="SERVICE_NAME">%1$s</xliff:g>,請同時按住音量調高鍵和調低鍵 3 秒。"</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"下次使用這個捷徑時,就會開啟這項功能。請用 2 指從螢幕底部向上滑動並快速放開。"</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"下次使用這個捷徑時,就會開啟這項功能。請用 3 指從螢幕底部向上滑動並快速放開。"</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"放大"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"要切換到手機麥克風嗎?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"要切換到助聽器麥克風嗎?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"可享更好的音質,或在助聽器電量過低時使用。麥克風只會在通話期間切換。"</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"免持通話時,可以使用助聽器麥克風。麥克風只會在通話期間切換。"</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"切換"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"設定"</string> <string name="user_switched" msgid="7249833311585228097">"目前的使用者是 <xliff:g id="NAME">%1$s</xliff:g>。"</string> <string name="user_switching_message" msgid="1912993630661332336">"正在切換至<xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"正在將<xliff:g id="NAME">%1$s</xliff:g>登出帳戶…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"為安全起見,分享螢幕畫面隱藏了這個應用程式的內容"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"已自動連上衛星"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"你可以收發訊息,沒有行動/Wi-Fi 網路也無妨"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"要使用衛星訊息功能嗎?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"即使沒有行動或 Wi-Fi 網路,還是可以收發訊息"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"開啟「訊息」應用程式"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index cfc060ac4bab..7658189f3f55 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -87,8 +87,7 @@ <string name="NetworkPreferenceSwitchTitle" msgid="1008329951315753038">"Ayikwazi ukufinyelela kunethiwekhi yeselula"</string> <string name="NetworkPreferenceSwitchSummary" msgid="2086506181486324860">"Zama ukushintsha inethiwekhi encanyelwayo. Thepha ukuze ushintshe."</string> <string name="EmergencyCallWarningTitle" msgid="1615688002899152860">"Ukushaya okuphuthumayo akutholakali"</string> - <!-- no translation found for emergency_calling_do_not_show_again (5034171343309733068) --> - <skip /> + <string name="emergency_calling_do_not_show_again" msgid="5034171343309733068">"Ungaphindi Ubonise Futhi"</string> <string name="EmergencyCallWarningSummary" msgid="9102799172089265268">"Amakholi aphuthumayo adinga inethiwekhi yeselula"</string> <string name="notification_channel_network_alert" msgid="4788053066033851841">"Izexwayiso"</string> <string name="notification_channel_call_forward" msgid="8230490317314272406">"Ukudlulisa ikholi"</string> @@ -303,6 +302,7 @@ <string name="notification_channel_network_alerts" msgid="6312366315654526528">"Izexwayiso zenethiwekhi"</string> <string name="notification_channel_network_available" msgid="6083697929214165169">"Inethiwekhi iyatholakala"</string> <string name="notification_channel_vpn" msgid="1628529026203808999">"Isimo se-VPN"</string> + <string name="notification_channel_system_time" msgid="1660313368058030441">"Isikhathi nezoni yesikhathi"</string> <string name="notification_channel_device_admin" msgid="6384932669406095506">"Izxwayiso kusuka kumlawuli wakho we-IT"</string> <string name="notification_channel_alerts" msgid="5070241039583668427">"Izexwayiso"</string> <string name="notification_channel_retail_mode" msgid="3732239154256431213">"Idemo yokuthenga"</string> @@ -310,6 +310,7 @@ <string name="notification_channel_heavy_weight_app" msgid="17455756500828043">"Uhlelo loksuebenza olusebenzayo"</string> <string name="notification_channel_foreground_service" msgid="7102189948158885178">"Izinhlelo zokusebenza ezidla ibhethri"</string> <string name="notification_channel_accessibility_magnification" msgid="1707913872219798098">"Ukukhuliswa"</string> + <string name="notification_channel_accessibility_hearing_device" msgid="7816963856388758952">"Insizakuzwa"</string> <string name="notification_channel_accessibility_security_policy" msgid="1727787021725251912">"Ukusetshenziswa kokufinyeleleka"</string> <string name="notification_channel_display" msgid="6905032605735615090">"Bonisa"</string> <string name="foreground_service_app_in_background" msgid="1439289699671273555">"<xliff:g id="APP_NAME">%1$s</xliff:g> isebenzisa ibhethri"</string> @@ -1407,6 +1408,8 @@ <string name="install_carrier_app_notification_button" msgid="6257740533102594290">"Landa uhlelo lokusebenza"</string> <string name="carrier_app_notification_title" msgid="5815477368072060250">"Kufakwe i-SIM entsha"</string> <string name="carrier_app_notification_text" msgid="6567057546341958637">"Thepha ukuze uyisethe"</string> + <string name="time_zone_change_notification_title" msgid="5232503069219193218">"Izoni yakho yesikhathi ishintshile"</string> + <string name="time_zone_change_notification_body" msgid="6135793674904665585">"Manje sewuku-<xliff:g id="TIME_ZONE_DISPLAY_NAME">%1$s</xliff:g> (<xliff:g id="TIME_ZONE_OFFSET">%2$s</xliff:g>)"</string> <string name="time_picker_dialog_title" msgid="9053376764985220821">"Hlela isikhathi"</string> <string name="date_picker_dialog_title" msgid="5030520449243071926">"Setha idethi"</string> <string name="date_time_set" msgid="4603445265164486816">"Hlela"</string> @@ -1780,14 +1783,10 @@ <string name="one_handed_mode_feature_name" msgid="2334330034828094891">"Imodi yesandla esisodwa"</string> <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ukufiphaza okwengeziwe"</string> <string name="hearing_aids_feature_name" msgid="1125892105105852542">"Amadivayizi okuzwa"</string> - <!-- no translation found for hearing_device_status_disconnected (497547752953543832) --> - <skip /> - <!-- no translation found for hearing_device_status_connected (2149385149669918764) --> - <skip /> - <!-- no translation found for hearing_device_status_active (4770378695482566032) --> - <skip /> - <!-- no translation found for hearing_device_status_loading (5717083847663109747) --> - <skip /> + <string name="hearing_device_status_disconnected" msgid="497547752953543832">"Inqamukile"</string> + <string name="hearing_device_status_connected" msgid="2149385149669918764">"Ixhunyiwe"</string> + <string name="hearing_device_status_active" msgid="4770378695482566032">"Kuyasebenza"</string> + <string name="hearing_device_status_loading" msgid="5717083847663109747">"Iyalayisha"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivuliwe."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Ubambe okhiye bevolumu. I-<xliff:g id="SERVICE_NAME">%1$s</xliff:g> ivaliwe."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="3760999147597564314">"Khipha okhiye bevolumu. Ukuze uvule i-<xliff:g id="SERVICE_NAME">%1$s</xliff:g>, cindezela bese ubamba bobabili okhiye bevolumu futhi imizuzwana emi-3."</string> @@ -1798,6 +1797,12 @@ <string name="accessibility_gesture_instructional_text" msgid="4133877896011098550">"Lesi sakhi sizovuleka ngokulandelayo uma usebenzisa lesi sinqamuleli. Swayiphela phezulu ngeminwe engu-2 kusukela ngaphansi kwesikrini sakho uphinde udedele ngokushesha."</string> <string name="accessibility_gesture_3finger_instructional_text" msgid="1124458279366968154">"Lesi sakhi sizovuleka ngokulandelayo uma usebenzisa lesi sinqamuleli. Swayiphela phezulu ngeminwe engu-3 kusukela ngaphansi kwesikrini sakho uphinde udedele ngokushesha."</string> <string name="accessibility_magnification_chooser_text" msgid="1502075582164931596">"Ukukhuliswa"</string> + <string name="hearing_device_switch_phone_mic_notification_title" msgid="6645178038359708836">"Shintshela kumakrofoni yefoni?"</string> + <string name="hearing_device_switch_hearing_mic_notification_title" msgid="4612074852145289569">"Shintshela kumakrofoni yomshini wendlebe?"</string> + <string name="hearing_device_switch_phone_mic_notification_text" msgid="1332426273666077412">"Ukuze uthole umsindo ongcono noma uma ibhethri lakho lomshini wendlebe liphansi. Lokhu kushintsha kuphela imakrofoni yakho ngesikhathi sekholi."</string> + <string name="hearing_device_switch_hearing_mic_notification_text" msgid="8288368365767284208">"Ungasebenzisa imakrofoni yakho yomshini wendlebe ekufoneni ngehands-free. Lokhu kushintsha kuphela imakrofoni yakho ngesikhathi sekholi."</string> + <string name="hearing_device_notification_switch_button" msgid="3619524619430941300">"Shintsha"</string> + <string name="hearing_device_notification_settings_button" msgid="6673651052880279178">"Amasethingi"</string> <string name="user_switched" msgid="7249833311585228097">"Umsebenzisi wamanje <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"Ishintshela ku-<xliff:g id="NAME">%1$s</xliff:g>…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"Iyaphuma <xliff:g id="NAME">%1$s</xliff:g>…"</string> @@ -2454,6 +2459,8 @@ <string name="screen_not_shared_sensitive_content" msgid="7058419185079565001">"Okuqukethwe kwe-app kufihliwe kusuka ekwabelaneni kwesikrini ngokuvikelwa"</string> <string name="satellite_notification_title" msgid="4026338973463121526">"Ixhumeke ngokuzenzakalelayo kusathelayithi"</string> <string name="satellite_notification_summary" msgid="5207364139430767162">"Ungathumela futhi wamukele imilayezo ngaphandle kwenethiwekhi yeselula noma ye-Wi-Fi"</string> + <!-- no translation found for satellite_notification_summary_with_data (6486843676720429049) --> + <skip /> <string name="satellite_notification_manual_title" msgid="1097504441849466279">"Sebenzisa ukuthumela umyalezo ngesethelayithi?"</string> <string name="satellite_notification_manual_summary" msgid="901206289846283445">"Thumela futhi wamukele imilayezo ngaphandle kwenethiwekhi yeselula noma yeWiFi"</string> <string name="satellite_notification_open_message" msgid="4149234979688273729">"Vula Imilayezo"</string> diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 8bf61bbcf55e..bd1d3033165e 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2737,7 +2737,7 @@ The default is true. --> <attr name="windowIsFrameRatePowerSavingsBalanced" format="boolean"/> - <!-- Flag indicating whether this window would opt-out the edge-to-edge enforcement. + <!-- Flag indicating whether this window would opt out the edge-to-edge enforcement. <p>If this is false, the edge-to-edge enforcement will be applied to the window if it belongs to an app targeting @@ -2757,8 +2757,9 @@ The Configuration will be stable regardless of the system insets change. </ul> - <p>If this is true, the edge-to-edge enforcement won't be applied. However, this - attribute will be deprecated and disabled in a future SDK level. + <p>If this is true, the edge-to-edge enforcement won't be applied. But if the window + belongs to an app targeting {@link android.os.Build.VERSION_CODES#BAKLAVA BAKLAVA} or + above, this attribute is ignored and the enforcement is applied regardless. <p>This is false by default. --> <attr name="windowOptOutEdgeToEdgeEnforcement" format="boolean"/> diff --git a/core/tests/coretests/src/android/provider/SettingsProviderTest.java b/core/tests/coretests/src/android/provider/SettingsProviderTest.java index 133177935984..c58d53ba967c 100644 --- a/core/tests/coretests/src/android/provider/SettingsProviderTest.java +++ b/core/tests/coretests/src/android/provider/SettingsProviderTest.java @@ -20,6 +20,7 @@ import static org.hamcrest.Matchers.aMapWithSize; import static org.hamcrest.Matchers.greaterThanOrEqualTo; import static org.junit.Assert.assertThat; +import android.app.UiAutomation; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; @@ -38,6 +39,7 @@ import android.test.AndroidTestCase; import androidx.test.filters.MediumTest; import androidx.test.filters.SmallTest; import androidx.test.filters.Suppress; +import androidx.test.platform.app.InstrumentationRegistry; import java.util.HashMap; import java.util.List; @@ -447,4 +449,50 @@ public class SettingsProviderTest extends AndroidTestCase { r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, newName, null); } } + + @SmallTest + public void testCall_putOverrideConfig() throws Exception { + // The shell user is restricted to a set of allowlisted flags / namespaces that can be + // written. When an flag override is requested, the flag is rewritten to be in the form: + // device_config_overrides/namespace:flagname + // To avoid requiring allowlisting both the base flag and the override version, + // SettingsProvider will parse out the overridden flag and check if it has been allowlisted. + // This test verifies that this is properly handled for both the good case as well as when + // the overridden flag is not in the proper format by ensuring a SecurityException is not + // thrown since these flags have been allowlisted. + UiAutomation uiAutomation = + InstrumentationRegistry.getInstrumentation().getUiAutomation(); + uiAutomation.adoptShellPermissionIdentity(); + ContentResolver r = getContext().getContentResolver(); + String overridesNamespace = "device_config_overrides"; + String namespace = "namespace1"; + String flagName = "key1"; + String validFlag = overridesNamespace + "/" + namespace + ":" + flagName; + String invalidFlag1 = overridesNamespace + "/"; + String invalidFlag2 = overridesNamespace + "/" + namespace + ":"; + String invalidFlag3 = overridesNamespace + "/" + ":"; + String value = "value1"; + Bundle args = new Bundle(); + args.putString(Settings.NameValueTable.VALUE, value); + + try { + r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_PUT_CONFIG, validFlag, args); + r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_PUT_CONFIG, invalidFlag1, + args); + r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_PUT_CONFIG, invalidFlag2, + args); + r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_PUT_CONFIG, invalidFlag3, + args); + } finally { + r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, validFlag, + null); + r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, invalidFlag1, + null); + r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, invalidFlag2, + null); + r.call(Settings.Config.CONTENT_URI, Settings.CALL_METHOD_DELETE_CONFIG, invalidFlag3, + null); + uiAutomation.dropShellPermissionIdentity(); + } + } } diff --git a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt index c45f6903c2e1..117ede0d0ac8 100644 --- a/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt +++ b/libs/WindowManager/Shell/multivalentTests/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelperTest.kt @@ -290,11 +290,10 @@ class BubbleBarAnimationHelperTest { assertThat(semaphore.tryAcquire(5, TimeUnit.SECONDS)).isTrue() - val bbevBottom = bbev.contentBottomOnScreen + bubblePositioner.insets.top activityScenario.onActivity { // notify that the IME top coordinate is greater than the bottom of the expanded view. // there's no overlap so it should not be clipped. - animationHelper.onImeTopChanged(bbevBottom * 2) + animationHelper.onImeTopChanged(bbev.contentBottomOnScreen * 2) } val outline = Outline() bbev.outlineProvider.getOutline(bbev, outline) diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml index 6f18eda13caf..cf9c18b43a5e 100644 --- a/libs/WindowManager/Shell/res/values-iw/strings.xml +++ b/libs/WindowManager/Shell/res/values-iw/strings.xml @@ -23,7 +23,7 @@ <string name="pip_menu_title" msgid="5393619322111827096">"תפריט"</string> <string name="pip_menu_accessibility_title" msgid="8129016817688656249">"תפריט \'תמונה בתוך תמונה\'"</string> <string name="pip_notification_title" msgid="1347104727641353453">"<xliff:g id="NAME">%s</xliff:g> במצב תמונה בתוך תמונה"</string> - <string name="pip_notification_message" msgid="8854051911700302620">"אם אינך רוצה שהתכונה הזו תשמש את <xliff:g id="NAME">%s</xliff:g>, יש להקיש כדי לפתוח את ההגדרות ולהשבית את התכונה."</string> + <string name="pip_notification_message" msgid="8854051911700302620">"אם אינך רוצה שהתכונה הזו תשמש את <xliff:g id="NAME">%s</xliff:g>, יש ללחוץ כדי לפתוח את ההגדרות ולהשבית את התכונה."</string> <string name="pip_play" msgid="3496151081459417097">"הפעלה"</string> <string name="pip_pause" msgid="690688849510295232">"השהיה"</string> <string name="pip_skip_to_next" msgid="8403429188794867653">"אפשר לדלג אל הבא"</string> @@ -53,7 +53,7 @@ <string name="accessibility_split_top" msgid="2789329702027147146">"פיצול למעלה"</string> <string name="accessibility_split_bottom" msgid="8694551025220868191">"פיצול למטה"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"איך להשתמש בתכונה \'מצב שימוש ביד אחת\'"</string> - <string name="one_handed_tutorial_description" msgid="3486582858591353067">"כדי לצאת, יש להחליק למעלה מתחתית המסך או להקיש במקום כלשהו במסך מעל האפליקציה"</string> + <string name="one_handed_tutorial_description" msgid="3486582858591353067">"כדי לצאת, יש להחליק למעלה מתחתית המסך או ללחוץ במקום כלשהו במסך מעל האפליקציה"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"הפעלה של מצב שימוש ביד אחת"</string> <string name="accessibility_action_stop_one_handed" msgid="1369940261782179442">"יציאה ממצב שימוש ביד אחת"</string> <string name="bubbles_settings_button_description" msgid="1301286017420516912">"הגדרות לבועות של <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> @@ -76,33 +76,33 @@ <string name="bubble_fullscreen_text" msgid="1006758103218086231">"הצגה במסך מלא"</string> <string name="bubbles_dont_bubble_conversation" msgid="310000317885712693">"אין להציג בועות לשיחה"</string> <string name="bubbles_user_education_title" msgid="2112319053732691899">"לדבר בבועות"</string> - <string name="bubbles_user_education_description" msgid="4215862563054175407">"שיחות חדשות מופיעות כסמלים צפים, או בועות. יש להקיש כדי לפתוח בועה. יש לגרור כדי להזיז אותה."</string> + <string name="bubbles_user_education_description" msgid="4215862563054175407">"שיחות חדשות מופיעות כסמלים צפים, או בועות. יש ללחוץ כדי לפתוח בועה. יש לגרור כדי להזיז אותה."</string> <string name="bubbles_user_education_manage_title" msgid="7042699946735628035">"שליטה בבועות, בכל זמן"</string> - <string name="bubbles_user_education_manage" msgid="3460756219946517198">"יש להקיש על \'ניהול\' כדי להשבית את הבועות מהאפליקציה הזו"</string> + <string name="bubbles_user_education_manage" msgid="3460756219946517198">"יש ללחוץ על \'ניהול\' כדי להשבית את הבועות מהאפליקציה הזו"</string> <string name="bubbles_user_education_got_it" msgid="3382046149225428296">"הבנתי"</string> <string name="bubble_overflow_empty_title" msgid="2397251267073294968">"אין בועות מהזמן האחרון"</string> <string name="bubble_overflow_empty_subtitle" msgid="2627417924958633713">"בועות אחרונות ובועות שנסגרו יופיעו כאן"</string> <string name="bubble_bar_education_stack_title" msgid="2486903590422497245">"צ\'אט בבועות"</string> - <string name="bubble_bar_education_stack_text" msgid="2446934610817409820">"שיחות חדשות מופיעות כסמלים בפינה התחתונה של המסך. אפשר להקיש כדי להרחיב אותן או לגרור כדי לסגור אותן."</string> + <string name="bubble_bar_education_stack_text" msgid="2446934610817409820">"שיחות חדשות מופיעות כסמלים בפינה התחתונה של המסך. אפשר ללחוץ כדי להרחיב אותן או לגרור כדי לסגור אותן."</string> <string name="bubble_bar_education_manage_title" msgid="6148404487810835924">"שליטה בבועות בכל זמן"</string> - <string name="bubble_bar_education_manage_text" msgid="3199732148641842038">"אפשר להקיש כאן כדי לקבוע אילו אפליקציות ושיחות יוכלו להופיע בבועות"</string> + <string name="bubble_bar_education_manage_text" msgid="3199732148641842038">"אפשר ללחוץ כאן כדי לקבוע אילו אפליקציות ושיחות יוכלו להופיע בבועות"</string> <string name="notification_bubble_title" msgid="6082910224488253378">"בועה"</string> <string name="manage_bubbles_text" msgid="7730624269650594419">"ניהול"</string> <string name="accessibility_bubble_dismissed" msgid="8367471990421247357">"הבועה נסגרה."</string> <string name="bubble_shortcut_label" msgid="666269077944378311">"בועות"</string> <string name="bubble_shortcut_long_label" msgid="6088437544312894043">"הצגת הבועות"</string> - <string name="restart_button_description" msgid="4564728020654658478">"כדי לראות טוב יותר יש להקיש ולהפעיל את האפליקציה הזו מחדש"</string> + <string name="restart_button_description" msgid="4564728020654658478">"כדי לראות טוב יותר יש ללחוץ ולהפעיל את האפליקציה הזו מחדש"</string> <string name="user_aspect_ratio_settings_button_hint" msgid="734835849600713016">"אפשר לשנות את יחס הגובה-רוחב של האפליקציה הזו ב\'הגדרות\'"</string> <string name="user_aspect_ratio_settings_button_description" msgid="4315566801697411684">"שינוי יחס גובה-רוחב"</string> - <string name="camera_compat_treatment_suggested_button_description" msgid="8103916969024076767">"בעיות במצלמה?\nאפשר להקיש כדי לבצע התאמה מחדש"</string> - <string name="camera_compat_treatment_applied_button_description" msgid="2944157113330703897">"הבעיה לא נפתרה?\nאפשר להקיש כדי לחזור לגרסה הקודמת"</string> - <string name="camera_compat_dismiss_button_description" msgid="2795364433503817511">"אין בעיות במצלמה? אפשר להקיש כדי לסגור."</string> + <string name="camera_compat_treatment_suggested_button_description" msgid="8103916969024076767">"בעיות במצלמה?\nאפשר ללחוץ כדי לבצע התאמה מחדש"</string> + <string name="camera_compat_treatment_applied_button_description" msgid="2944157113330703897">"הבעיה לא נפתרה?\nאפשר ללחוץ כדי לחזור לגרסה הקודמת"</string> + <string name="camera_compat_dismiss_button_description" msgid="2795364433503817511">"אין בעיות במצלמה? אפשר ללחוץ כדי לסגור."</string> <string name="windowing_app_handle_education_tooltip" msgid="2929643449849791854">"תפריט האפליקציה נמצא כאן"</string> <string name="windowing_desktop_mode_image_button_education_tooltip" msgid="2523468503353474095">"כדי לפתוח כמה אפליקציות יחד, צריך לעבור למצב תצוגה למחשב"</string> <string name="windowing_desktop_mode_exit_education_tooltip" msgid="5225660258192054132">"אפשר לחזור למסך מלא בכל שלב מתפריט האפליקציה"</string> <string name="letterbox_education_dialog_title" msgid="7739895354143295358">"רוצה לראות ולעשות יותר?"</string> <string name="letterbox_education_split_screen_text" msgid="449233070804658627">"צריך לגרור אפליקציה אחרת כדי להשתמש במסך המפוצל"</string> - <string name="letterbox_education_reposition_text" msgid="4589957299813220661">"צריך להקיש הקשה כפולה מחוץ לאפליקציה כדי למקם אותה מחדש"</string> + <string name="letterbox_education_reposition_text" msgid="4589957299813220661">"צריך ללחוץ לחיצה כפולה מחוץ לאפליקציה כדי למקם אותה מחדש"</string> <string name="letterbox_education_got_it" msgid="4057634570866051177">"הבנתי"</string> <string name="letterbox_education_expand_button_description" msgid="1729796567101129834">"מרחיבים כדי לקבל מידע נוסף."</string> <string name="letterbox_restart_dialog_title" msgid="8543049527871033505">"להפעיל מחדש לתצוגה טובה יותר?"</string> @@ -110,7 +110,7 @@ <string name="letterbox_restart_cancel" msgid="1342209132692537805">"ביטול"</string> <string name="letterbox_restart_restart" msgid="8529976234412442973">"הפעלה מחדש"</string> <string name="letterbox_restart_dialog_checkbox_title" msgid="5252918008140768386">"לא להציג שוב"</string> - <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"אפשר להקיש הקשה כפולה כדי\nלהעביר את האפליקציה למקום אחר"</string> + <string name="letterbox_reachability_reposition_text" msgid="3522042240665748268">"אפשר ללחוץ לחיצה כפולה כדי\nלהעביר את האפליקציה למקום אחר"</string> <string name="maximize_button_text" msgid="1650859196290301963">"הגדלה"</string> <string name="minimize_button_text" msgid="271592547935841753">"מזעור"</string> <string name="close_button_text" msgid="2913281996024033299">"סגירה"</string> diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml index 9e0f107f7e55..abc4d08cd3ca 100644 --- a/libs/WindowManager/Shell/res/values-te/strings.xml +++ b/libs/WindowManager/Shell/res/values-te/strings.xml @@ -25,7 +25,7 @@ <string name="pip_notification_title" msgid="1347104727641353453">"<xliff:g id="NAME">%s</xliff:g> చిత్రంలో చిత్రం రూపంలో ఉంది"</string> <string name="pip_notification_message" msgid="8854051911700302620">"<xliff:g id="NAME">%s</xliff:g> ఈ లక్షణాన్ని ఉపయోగించకూడదు అని మీరు అనుకుంటే, సెట్టింగ్లను తెరవడానికి ట్యాప్ చేసి, దీన్ని ఆఫ్ చేయండి."</string> <string name="pip_play" msgid="3496151081459417097">"ప్లే చేయి"</string> - <string name="pip_pause" msgid="690688849510295232">"పాజ్ చేయి"</string> + <string name="pip_pause" msgid="690688849510295232">"పాజ్ చేయండి"</string> <string name="pip_skip_to_next" msgid="8403429188794867653">"దాటవేసి తర్వాత దానికి వెళ్లు"</string> <string name="pip_skip_to_prev" msgid="7172158111196394092">"దాటవేసి మునుపటి దానికి వెళ్లు"</string> <string name="accessibility_action_pip_resize" msgid="4623966104749543182">"సైజ్ మార్చు"</string> diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java index e073b02dc630..ac5b9c9866ed 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarExpandedView.java @@ -674,9 +674,7 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView if (mTaskView != null) { mTaskView.getBoundsOnScreen(mTempBounds); } - // return the bottom of the content rect, adjusted for insets so the result is in screen - // coordinate - return mTempBounds.bottom + mPositioner.getInsets().top; + return mTempBounds.bottom; } /** Update the amount by which to clip the expanded view at the bottom. */ diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt index cdfa14bbc4e2..9b9988457808 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeShellCommandHandler.kt @@ -16,6 +16,7 @@ package com.android.wm.shell.desktopmode +import com.android.window.flags.Flags import com.android.wm.shell.shared.desktopmode.DesktopModeTransitionSource.UNKNOWN import com.android.wm.shell.sysui.ShellCommandHandler import java.io.PrintWriter @@ -26,35 +27,28 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl override fun onShellCommand(args: Array<String>, pw: PrintWriter): Boolean = when (args[0]) { - "moveToDesktop" -> { - if (!runMoveToDesktop(args, pw)) { - pw.println("Task not found. Please enter a valid taskId.") - false - } else { - true - } - } - "moveToNextDisplay" -> { - if (!runMoveToNextDisplay(args, pw)) { - pw.println("Task not found. Please enter a valid taskId.") - false - } else { - true - } - } + "moveTaskToDesk" -> runMoveTaskToDesk(args, pw) + "moveToNextDisplay" -> runMoveToNextDisplay(args, pw) + "createDesk" -> runCreateDesk(args, pw) + "activateDesk" -> runActivateDesk(args, pw) + "removeDesk" -> runRemoveDesk(args, pw) + "removeAllDesks" -> runRemoveAllDesks(args, pw) + "moveTaskToFront" -> runMoveTaskToFront(args, pw) + "moveTaskOutOfDesk" -> runMoveTaskOutOfDesk(args, pw) + "canCreateDesk" -> runCanCreateDesk(args, pw) + "getActiveDeskId" -> runGetActiveDeskId(args, pw) else -> { pw.println("Invalid command: ${args[0]}") false } } - private fun runMoveToDesktop(args: Array<String>, pw: PrintWriter): Boolean { + private fun runMoveTaskToDesk(args: Array<String>, pw: PrintWriter): Boolean { if (args.size < 2) { // First argument is the action name. pw.println("Error: task id should be provided as arguments") return false } - val taskId = try { args[1].toInt() @@ -62,7 +56,22 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl pw.println("Error: task id should be an integer") return false } - return controller.moveTaskToDesktop(taskId, transitionSource = UNKNOWN) + if (!Flags.enableMultipleDesktopsBackend()) { + return controller.moveTaskToDesktop(taskId, transitionSource = UNKNOWN) + } + if (args.size < 3) { + pw.println("Error: desk id should be provided as arguments") + return false + } + val deskId = + try { + args[2].toInt() + } catch (e: NumberFormatException) { + pw.println("Error: desk id should be an integer") + return false + } + pw.println("Not implemented.") + return false } private fun runMoveToNextDisplay(args: Array<String>, pw: PrintWriter): Boolean { @@ -84,10 +93,184 @@ class DesktopModeShellCommandHandler(private val controller: DesktopTasksControl return true } + private fun runCreateDesk(args: Array<String>, pw: PrintWriter): Boolean { + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("Not supported.") + return false + } + if (args.size < 2) { + // First argument is the action name. + pw.println("Error: desk id should be provided as arguments") + return false + } + val displayId = + try { + args[1].toInt() + } catch (e: NumberFormatException) { + pw.println("Error: display id should be an integer") + return false + } + pw.println("Not implemented.") + return false + } + + private fun runActivateDesk(args: Array<String>, pw: PrintWriter): Boolean { + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("Not supported.") + return false + } + if (args.size < 2) { + // First argument is the action name. + pw.println("Error: desk id should be provided as arguments") + return false + } + val deskId = + try { + args[1].toInt() + } catch (e: NumberFormatException) { + pw.println("Error: desk id should be an integer") + return false + } + pw.println("Not implemented.") + return false + } + + private fun runRemoveDesk(args: Array<String>, pw: PrintWriter): Boolean { + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("Not supported.") + return false + } + if (args.size < 2) { + // First argument is the action name. + pw.println("Error: desk id should be provided as arguments") + return false + } + val deskId = + try { + args[1].toInt() + } catch (e: NumberFormatException) { + pw.println("Error: desk id should be an integer") + return false + } + pw.println("Not implemented.") + return false + } + + private fun runRemoveAllDesks(args: Array<String>, pw: PrintWriter): Boolean { + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("Not supported.") + return false + } + pw.println("Not implemented.") + return false + } + + private fun runMoveTaskToFront(args: Array<String>, pw: PrintWriter): Boolean { + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("Not supported.") + return false + } + if (args.size < 2) { + // First argument is the action name. + pw.println("Error: task id should be provided as arguments") + return false + } + val taskId = + try { + args[1].toInt() + } catch (e: NumberFormatException) { + pw.println("Error: task id should be an integer") + return false + } + pw.println("Not implemented.") + return false + } + + private fun runMoveTaskOutOfDesk(args: Array<String>, pw: PrintWriter): Boolean { + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("Not supported.") + return false + } + if (args.size < 2) { + // First argument is the action name. + pw.println("Error: task id should be provided as arguments") + return false + } + val taskId = + try { + args[1].toInt() + } catch (e: NumberFormatException) { + pw.println("Error: task id should be an integer") + return false + } + pw.println("Not implemented.") + return false + } + + private fun runCanCreateDesk(args: Array<String>, pw: PrintWriter): Boolean { + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("Not supported.") + return false + } + val displayId = + try { + args[1].toInt() + } catch (e: NumberFormatException) { + pw.println("Error: display id should be an integer") + return false + } + pw.println("Not implemented.") + return false + } + + private fun runGetActiveDeskId(args: Array<String>, pw: PrintWriter): Boolean { + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("Not supported.") + return false + } + if (args.size < 2) { + // First argument is the action name. + pw.println("Error: task id should be provided as arguments") + return false + } + val displayId = + try { + args[1].toInt() + } catch (e: NumberFormatException) { + pw.println("Error: display id should be an integer") + return false + } + pw.println("Not implemented.") + return false + } + override fun printShellCommandHelp(pw: PrintWriter, prefix: String) { - pw.println("$prefix moveToDesktop <taskId> ") - pw.println("$prefix Move a task with given id to desktop mode.") - pw.println("$prefix moveToNextDisplay <taskId> ") + if (!Flags.enableMultipleDesktopsBackend()) { + pw.println("$prefix moveTaskToDesk <taskId> ") + pw.println("$prefix Move a task with given id to desktop mode.") + pw.println("$prefix moveToNextDisplay <taskId> ") + pw.println("$prefix Move a task with given id to next display.") + return + } + pw.println("$prefix moveTaskToDesk <taskId> <deskId>") + pw.println("$prefix Move a task with given id to the given desk and activate it.") + pw.println("$prefix moveToNextDisplay <taskId>") pw.println("$prefix Move a task with given id to next display.") + pw.println("$prefix createDesk <displayId>") + pw.println("$prefix Creates a desk on the given display.") + pw.println("$prefix activateDesk <deskId>") + pw.println("$prefix Activates the given desk.") + pw.println("$prefix removeDesk <deskId> ") + pw.println("$prefix Removes the given desk and all of its windows.") + pw.println("$prefix removeAllDesks") + pw.println("$prefix Removes all the desks and their windows across all displays") + pw.println("$prefix moveTaskToFront <taskId>") + pw.println("$prefix Moves a task in front of its siblings.") + pw.println("$prefix moveTaskOutOfDesk <taskId>") + pw.println("$prefix Moves the given desktop task out of the desk into fullscreen mode.") + pw.println("$prefix canCreateDesk <displayId>") + pw.println("$prefix Whether creating a new desk in the given display is allowed.") + pw.println("$prefix getActivateDeskId <displayId>") + pw.println("$prefix Print the id of the active desk in the given display.") } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java index 6d01e247b48d..e04682a4b86f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/FocusTransitionObserver.java @@ -17,6 +17,8 @@ package com.android.wm.shell.transition; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.Display.INVALID_DISPLAY; +import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_OPEN; import static android.window.TransitionInfo.FLAG_IS_DISPLAY; import static android.window.TransitionInfo.FLAG_MOVED_TO_TOP; @@ -66,36 +68,45 @@ public class FocusTransitionObserver { if (!enableDisplayFocusInShellTransitions()) { return; } + final SparseArray<RunningTaskInfo> lastTransitionFocusedTasks = + mFocusedTaskOnDisplay.clone(); + final List<TransitionInfo.Change> changes = info.getChanges(); for (int i = changes.size() - 1; i >= 0; i--) { final TransitionInfo.Change change = changes.get(i); final RunningTaskInfo task = change.getTaskInfo(); - if (task != null - && (change.hasFlags(FLAG_MOVED_TO_TOP) || change.getMode() == TRANSIT_OPEN)) { - final RunningTaskInfo lastFocusedTaskOnDisplay = - mFocusedTaskOnDisplay.get(task.displayId); - if (lastFocusedTaskOnDisplay != null) { - mTmpTasksToBeNotified.add(lastFocusedTaskOnDisplay); + if (task != null) { + if (change.hasFlags(FLAG_MOVED_TO_TOP) || change.getMode() == TRANSIT_OPEN) { + updateFocusedTaskPerDisplay(task, task.displayId); + } else { + // Update focus assuming that any task moved to another display is focused in + // the new display. + // TODO(sahok): remove this logic when b/388665104 is fixed + final boolean isBeyondDisplay = change.getStartDisplayId() != INVALID_DISPLAY + && change.getEndDisplayId() != INVALID_DISPLAY + && change.getStartDisplayId() != change.getEndDisplayId(); + + RunningTaskInfo lastTransitionFocusedTaskOnStartDisplay = + lastTransitionFocusedTasks.get(change.getStartDisplayId()); + final boolean isLastTransitionFocused = + lastTransitionFocusedTaskOnStartDisplay != null + && task.taskId + == lastTransitionFocusedTaskOnStartDisplay.taskId; + if (change.getMode() == TRANSIT_CHANGE && isBeyondDisplay + && isLastTransitionFocused) { + // The task have moved to another display and keeps its focus. + // MOVE_TO_TOP is not reported but we need to update the focused task in + // the end display. + updateFocusedTaskPerDisplay(task, change.getEndDisplayId()); + } } - mTmpTasksToBeNotified.add(task); - mFocusedTaskOnDisplay.put(task.displayId, task); } + if (change.hasFlags(FLAG_IS_DISPLAY) && change.hasFlags(FLAG_MOVED_TO_TOP)) { if (mFocusedDisplayId != change.getEndDisplayId()) { - final RunningTaskInfo lastGloballyFocusedTask = - mFocusedTaskOnDisplay.get(mFocusedDisplayId); - if (lastGloballyFocusedTask != null) { - mTmpTasksToBeNotified.add(lastGloballyFocusedTask); - } - mFocusedDisplayId = change.getEndDisplayId(); - notifyFocusedDisplayChanged(); - final RunningTaskInfo currentGloballyFocusedTask = - mFocusedTaskOnDisplay.get(mFocusedDisplayId); - if (currentGloballyFocusedTask != null) { - mTmpTasksToBeNotified.add(currentGloballyFocusedTask); - } + updateFocusedDisplay(change.getEndDisplayId()); } } } @@ -103,6 +114,31 @@ public class FocusTransitionObserver { mTmpTasksToBeNotified.clear(); } + private void updateFocusedTaskPerDisplay(RunningTaskInfo task, int displayId) { + final RunningTaskInfo lastFocusedTaskOnDisplay = + mFocusedTaskOnDisplay.get(displayId); + if (lastFocusedTaskOnDisplay != null) { + mTmpTasksToBeNotified.add(lastFocusedTaskOnDisplay); + } + mTmpTasksToBeNotified.add(task); + mFocusedTaskOnDisplay.put(displayId, task); + } + + private void updateFocusedDisplay(int endDisplayId) { + final RunningTaskInfo lastGloballyFocusedTask = + mFocusedTaskOnDisplay.get(mFocusedDisplayId); + if (lastGloballyFocusedTask != null) { + mTmpTasksToBeNotified.add(lastGloballyFocusedTask); + } + mFocusedDisplayId = endDisplayId; + notifyFocusedDisplayChanged(); + final RunningTaskInfo currentGloballyFocusedTask = + mFocusedTaskOnDisplay.get(mFocusedDisplayId); + if (currentGloballyFocusedTask != null) { + mTmpTasksToBeNotified.add(currentGloballyFocusedTask); + } + } + /** * Sets the focus transition listener that receives any transitions resulting in focus switch. * This is for calls from outside the Shell, within the host process. diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/FocusTransitionObserverTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/FocusTransitionObserverTest.java index 015ea20767e9..74c2f0e6753a 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/FocusTransitionObserverTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/transition/FocusTransitionObserverTest.java @@ -17,7 +17,9 @@ package com.android.wm.shell.transition; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_OPEN; +import static android.view.WindowManager.TRANSIT_TO_FRONT; import static android.window.TransitionInfo.FLAG_IS_DISPLAY; import static android.window.TransitionInfo.FLAG_MOVED_TO_TOP; @@ -127,19 +129,136 @@ public class FocusTransitionObserverTest extends ShellTestCase { true /* isFocusedOnDisplay */, false /* isFocusedGlobally */); } + @Test + public void testTaskFocusSwitch() throws RemoteException { + final SurfaceControl.Transaction tx = mock(SurfaceControl.Transaction.class); + + // Open 2 tasks on the default display. + TransitionInfo info = mock(TransitionInfo.class); + final List<TransitionInfo.Change> changes = new ArrayList<>(); + setupTaskChange(changes, 1 /* taskId */, TRANSIT_OPEN, + DEFAULT_DISPLAY, true /* focused */); + when(info.getChanges()).thenReturn(changes); + mFocusTransitionObserver.updateFocusState(info); + mShellExecutor.flushAll(); + verify(mListener, never()).onFocusedDisplayChanged(anyInt()); + verify(mListener, times(1)).onFocusedTaskChanged(1 /* taskId */, + true /* isFocusedOnDisplay */, true /* isFocusedGlobally */); + clearInvocations(mListener); + changes.clear(); + + setupTaskChange(changes, 2 /* taskId */, TRANSIT_OPEN, + DEFAULT_DISPLAY, true /* focused */); + when(info.getChanges()).thenReturn(changes); + mFocusTransitionObserver.updateFocusState(info); + mShellExecutor.flushAll(); + verify(mListener, times(1)).onFocusedTaskChanged(1 /* taskId */, + false /* isFocusedOnDisplay */, false /* isFocusedGlobally */); + verify(mListener, times(1)).onFocusedTaskChanged(2 /* taskId */, + true /* isFocusedOnDisplay */, true /* isFocusedGlobally */); + clearInvocations(mListener); + changes.clear(); + + // Moving a task to front. + changes.clear(); + setupTaskChange(changes, 1 /* taskId */, TRANSIT_TO_FRONT, + DEFAULT_DISPLAY, true /* focused */); + when(info.getChanges()).thenReturn(changes); + mFocusTransitionObserver.updateFocusState(info); + mShellExecutor.flushAll(); + verify(mListener, times(1)).onFocusedTaskChanged(1 /* taskId */, + true /* isFocusedOnDisplay */, true /* isFocusedGlobally */); + verify(mListener, times(1)).onFocusedTaskChanged(2 /* taskId */, + false /* isFocusedOnDisplay */, false /* isFocusedGlobally */); + } + + + @Test + public void testTaskMoveToAnotherDisplay() throws RemoteException { + final SurfaceControl.Transaction tx = mock(SurfaceControl.Transaction.class); + + // First, open a task on the default display. + TransitionInfo info = mock(TransitionInfo.class); + final List<TransitionInfo.Change> changes = new ArrayList<>(); + setupTaskChange(changes, 1 /* taskId */, TRANSIT_OPEN, + DEFAULT_DISPLAY, true /* focused */); + when(info.getChanges()).thenReturn(changes); + mFocusTransitionObserver.updateFocusState(info); + mShellExecutor.flushAll(); + verify(mListener, never()).onFocusedDisplayChanged(anyInt()); + verify(mListener, times(1)).onFocusedTaskChanged(1 /* taskId */, + true /* isFocusedOnDisplay */, true /* isFocusedGlobally */); + clearInvocations(mListener); + changes.clear(); + + // Open 2 tasks on the secondary display. + setupTaskChange(changes, 2 /* taskId */, TRANSIT_OPEN, + SECONDARY_DISPLAY_ID, true /* focused */); + setupDisplayToTopChange(changes, SECONDARY_DISPLAY_ID); + when(info.getChanges()).thenReturn(changes); + mFocusTransitionObserver.updateFocusState(info); + mShellExecutor.flushAll(); + verify(mListener, times(1)) + .onFocusedDisplayChanged(SECONDARY_DISPLAY_ID); + verify(mListener, times(1)).onFocusedTaskChanged(1 /* taskId */, + true /* isFocusedOnDisplay */, false /* isFocusedGlobally */); + verify(mListener, times(1)).onFocusedTaskChanged(2 /* taskId */, + true /* isFocusedOnDisplay */, true /* isFocusedGlobally */); + clearInvocations(mListener); + changes.clear(); + + setupTaskChange(changes, 3 /* taskId */, TRANSIT_OPEN, + SECONDARY_DISPLAY_ID, true /* focused */); + setupDisplayToTopChange(changes, SECONDARY_DISPLAY_ID); + when(info.getChanges()).thenReturn(changes); + mFocusTransitionObserver.updateFocusState(info); + mShellExecutor.flushAll(); + verify(mListener, times(1)).onFocusedTaskChanged(2 /* taskId */, + false /* isFocusedOnDisplay */, false /* isFocusedGlobally */); + verify(mListener, times(1)).onFocusedTaskChanged(3 /* taskId */, + true /* isFocusedOnDisplay */, true /* isFocusedGlobally */); + clearInvocations(mListener); + changes.clear(); + + // Move focused task in the secondary display to the default display + setupTaskChange(changes, 3 /* taskId */, TRANSIT_CHANGE, + SECONDARY_DISPLAY_ID, DEFAULT_DISPLAY, true /* focused */); + setupTaskChange(changes, 2 /* taskId */, TRANSIT_TO_FRONT, + SECONDARY_DISPLAY_ID, true /* focused */); + setupDisplayToTopChange(changes, DEFAULT_DISPLAY); + when(info.getChanges()).thenReturn(changes); + mFocusTransitionObserver.updateFocusState(info); + mShellExecutor.flushAll(); + verify(mListener, times(1)).onFocusedTaskChanged(1 /* taskId */, + false /* isFocusedOnDisplay */, false /* isFocusedGlobally */); + verify(mListener, times(1)).onFocusedTaskChanged(2 /* taskId */, + true /* isFocusedOnDisplay */, false /* isFocusedGlobally */); + verify(mListener, times(1)).onFocusedTaskChanged(3 /* taskId */, + true /* isFocusedOnDisplay */, true /* isFocusedGlobally */); + clearInvocations(mListener); + } + private void setupTaskChange(List<TransitionInfo.Change> changes, int taskId, @TransitionMode int mode, int displayId, boolean focused) { + setupTaskChange(changes, taskId, mode, displayId, displayId, focused); + } + + private void setupTaskChange(List<TransitionInfo.Change> changes, int taskId, + @TransitionMode int mode, int startDisplayId, int endDisplayId, boolean focused) { TransitionInfo.Change change = mock(TransitionInfo.Change.class); RunningTaskInfo taskInfo = mock(RunningTaskInfo.class); taskInfo.taskId = taskId; taskInfo.isFocused = focused; when(change.hasFlags(FLAG_MOVED_TO_TOP)).thenReturn(focused); - taskInfo.displayId = displayId; + taskInfo.displayId = endDisplayId; + when(change.getStartDisplayId()).thenReturn(startDisplayId); + when(change.getEndDisplayId()).thenReturn(endDisplayId); when(change.getTaskInfo()).thenReturn(taskInfo); when(change.getMode()).thenReturn(mode); changes.add(change); } + private void setupDisplayToTopChange(List<TransitionInfo.Change> changes, int displayId) { TransitionInfo.Change change = mock(TransitionInfo.Change.class); when(change.hasFlags(FLAG_MOVED_TO_TOP)).thenReturn(true); diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt index b5e8cebc1277..40015eece15c 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModelTestsBase.kt @@ -177,6 +177,7 @@ open class DesktopModeWindowDecorViewModelTestsBase : ShellTestCase() { spyContext.addMockSystemService(InputManager::class.java, mockInputManager) desktopModeEventLogger = mock<DesktopModeEventLogger>() whenever(mockDesktopUserRepositories.current).thenReturn(mockDesktopRepository) + whenever(mockDisplayController.getDisplayContext(any())).thenReturn(spyContext) whenever(mockDesktopUserRepositories.getProfile(anyInt())) .thenReturn(mockDesktopRepository) desktopModeWindowDecorViewModel = DesktopModeWindowDecorViewModel( diff --git a/libs/hwui/aconfig/hwui_flags.aconfig b/libs/hwui/aconfig/hwui_flags.aconfig index 5e71d3360f39..2851dd8b1003 100644 --- a/libs/hwui/aconfig/hwui_flags.aconfig +++ b/libs/hwui/aconfig/hwui_flags.aconfig @@ -42,6 +42,16 @@ flag { } flag { + name: "high_contrast_text_inner_text_color" + namespace: "accessibility" + description: "Render text color by modifying its brightness instead of defaulting to black and white" + bug: "384793956" + metadata { + purpose: PURPOSE_BUGFIX + } +} + +flag { name: "hdr_10bit_plus" namespace: "core_graphics" description: "Use 10101010 and FP16 formats for HDR-UI when available" diff --git a/libs/hwui/hwui/DrawTextFunctor.h b/libs/hwui/hwui/DrawTextFunctor.h index e05c3d695463..008b693edf02 100644 --- a/libs/hwui/hwui/DrawTextFunctor.h +++ b/libs/hwui/hwui/DrawTextFunctor.h @@ -37,6 +37,9 @@ namespace flags { constexpr bool high_contrast_text_small_text_rect() { return false; } +constexpr bool high_contrast_text_inner_text_color() { + return false; +} } // namespace flags #endif @@ -126,7 +129,25 @@ public: // inner gDrawTextBlobMode = DrawTextBlobMode::HctInner; Paint innerPaint(paint); - simplifyPaint(darken ? SK_ColorBLACK : SK_ColorWHITE, &innerPaint); + if (flags::high_contrast_text_inner_text_color()) { + // Preserve some color information while still ensuring sufficient contrast. + // Thus we increase the lightness to make the color stand out against a black + // background, and vice-versa. For grayscale, we retain some gray to indicate + // states like disabled or to distinguish links. + bool isGrayscale = abs(lab.a) < 1 && abs(lab.b) < 1; + if (isGrayscale) { + if (darken) { + lab.L = lab.L < 40 ? 0 : 20; + } else { + lab.L = lab.L > 60 ? 100 : 80; + } + } else { + lab.L = darken ? 20 : 90; + } + simplifyPaint(uirenderer::LabToSRGB(lab, SK_AlphaOPAQUE), &innerPaint); + } else { + simplifyPaint(darken ? SK_ColorBLACK : SK_ColorWHITE, &innerPaint); + } innerPaint.setStyle(SkPaint::kFill_Style); canvas->drawGlyphs(glyphFunc, glyphCount, innerPaint, x, y, totalAdvance); gDrawTextBlobMode = DrawTextBlobMode::Normal; diff --git a/media/java/android/media/MediaRoute2ProviderService.java b/media/java/android/media/MediaRoute2ProviderService.java index f42017dc835a..3104f9d42891 100644 --- a/media/java/android/media/MediaRoute2ProviderService.java +++ b/media/java/android/media/MediaRoute2ProviderService.java @@ -503,7 +503,10 @@ public abstract class MediaRoute2ProviderService extends Service { String sessionId = sessionInfo.getId(); synchronized (mSessionLock) { - if (mSessionInfos.containsKey(sessionId)) { + var mediaStreams = mOngoingMediaStreams.get(sessionId); + if (Flags.enableMirroringInMediaRouter2() && mediaStreams != null) { + mediaStreams.mSessionInfo = sessionInfo; + } else if (mSessionInfos.containsKey(sessionId)) { mSessionInfos.put(sessionId, sessionInfo); } else { Log.w(TAG, "notifySessionUpdated: Ignoring unknown session info."); @@ -836,6 +839,9 @@ public abstract class MediaRoute2ProviderService extends Service { List<RoutingSessionInfo> sessions; synchronized (mSessionLock) { sessions = new ArrayList<>(mSessionInfos.values()); + if (Flags.enableMirroringInMediaRouter2()) { + mOngoingMediaStreams.values().forEach(it -> sessions.add(it.mSessionInfo)); + } } try { @@ -888,7 +894,13 @@ public abstract class MediaRoute2ProviderService extends Service { Log.w(TAG, description + ": Ignoring empty sessionId from system service."); return false; } - if (getSessionInfo(sessionId) == null) { + boolean idMatchesSystemSession = false; + if (Flags.enableMirroringInMediaRouter2()) { + synchronized (mSessionLock) { + idMatchesSystemSession = mOngoingMediaStreams.containsKey(sessionId); + } + } + if (!idMatchesSystemSession && getSessionInfo(sessionId) == null) { Log.w(TAG, description + ": Ignoring unknown session from system service. " + "sessionId=" + sessionId); return false; @@ -1079,8 +1091,8 @@ public abstract class MediaRoute2ProviderService extends Service { * * @hide */ - @GuardedBy("MediaRoute2ProviderService.this.mSessionLock") @NonNull + // Access guarded by mSessionsLock, but it's not convenient to enforce through @GuardedBy. private RoutingSessionInfo mSessionInfo; // TODO: b/380431086: Add the video equivalent. diff --git a/media/java/android/media/tv/flags/media_tv.aconfig b/media/java/android/media/tv/flags/media_tv.aconfig index 3451dfc559ee..28da55656177 100644 --- a/media/java/android/media/tv/flags/media_tv.aconfig +++ b/media/java/android/media/tv/flags/media_tv.aconfig @@ -120,3 +120,13 @@ flag { description: "Collect physical address from HDMI-CEC messages in metrics" bug: "376001043" } + +flag { + name: "tif_extension_standardization_bugfix" + namespace: "tv_os" + description: "Bug fix flag for standardizing AIDL extension interface of TIS" + bug: "389779152" + metadata { + purpose: PURPOSE_BUGFIX + } +}
\ No newline at end of file diff --git a/native/android/TEST_MAPPING b/native/android/TEST_MAPPING index 70560a84b88e..456c719effc0 100644 --- a/native/android/TEST_MAPPING +++ b/native/android/TEST_MAPPING @@ -25,5 +25,19 @@ "name": "NativeThermalUnitTestCases", "file_patterns": ["thermal.cpp"] } + ], + "postsubmit": [ + { + "file_patterns": ["system_health.cpp"], + "name": "NativeSystemHealthUnitTestCases" + }, + { + "file_patterns": ["system_health.cpp"], + "name": "CtsSystemHealthTestCases", + "options": [ + {"exclude-annotation": "androidx.test.filters.FlakyTest"}, + {"exclude-annotation": "org.junit.Ignore"} + ] + } ] } diff --git a/native/graphics/jni/Android.bp b/native/graphics/jni/Android.bp index 4180710534c3..bc273c2d0833 100644 --- a/native/graphics/jni/Android.bp +++ b/native/graphics/jni/Android.bp @@ -102,8 +102,13 @@ cc_defaults { static_libs: ["libarect"], fuzz_config: { cc: [ + // Alphabetical order -- assign to skia-android-triage@google.com + "danieldilan@google.com", "dichenzhang@google.com", - "scroggo@google.com", + "fmalita@google.com", + "jreck@google.com", + "nscobie@google.com", + "skia-android-triage@google.com", ], asan_options: [ "detect_odr_violation=1", diff --git a/packages/CarrierDefaultApp/res/values-iw/strings.xml b/packages/CarrierDefaultApp/res/values-iw/strings.xml index 9e5a8b55bae6..9db81e0dded5 100644 --- a/packages/CarrierDefaultApp/res/values-iw/strings.xml +++ b/packages/CarrierDefaultApp/res/values-iw/strings.xml @@ -5,7 +5,7 @@ <string name="android_system_label" msgid="2797790869522345065">"ספק שירות לנייד"</string> <string name="portal_notification_id" msgid="5155057562457079297">"ניצלת את מכסת הנתונים הסלולריים"</string> <string name="no_data_notification_id" msgid="668400731803969521">"חבילת הגלישה שלך הושבתה"</string> - <string name="portal_notification_detail" msgid="2295729385924660881">"הקש כדי לעבור לאתר של %s"</string> + <string name="portal_notification_detail" msgid="2295729385924660881">"יש ללחוץ כדי לעבור לאתר של %s"</string> <string name="no_data_notification_detail" msgid="3112125343857014825">"פנה לספק השירות %s"</string> <string name="no_mobile_data_connection_title" msgid="7449525772416200578">"אין חיבור לחבילת גלישה"</string> <string name="no_mobile_data_connection" msgid="544980465184147010">"אפשר להוסיף חבילת גלישה או חבילת נדידה באמצעות %s"</string> diff --git a/packages/CompanionDeviceManager/res/values-af/strings.xml b/packages/CompanionDeviceManager/res/values-af/strings.xml index ba02bf696407..9476dc55e86a 100644 --- a/packages/CompanionDeviceManager/res/values-af/strings.xml +++ b/packages/CompanionDeviceManager/res/values-af/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Metgeseltoestel-bestuurder"</string> <string name="confirmation_title" msgid="2244241995958340998">"Gee die app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> toegang tot <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Maak seker dat hierdie <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> se <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> aangeskakel is en hou jou <xliff:g id="PROFILE_NAME">%3$s</xliff:g> byderhand."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Geen toestelle gevind nie. Probeer later weer."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth en wi-fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"horlosie"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Kies ’n toestel wat <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> moet bestuur"</string> <string name="chooser_title" msgid="2235819929238267637">"Kies ’n <xliff:g id="PROFILE_NAME">%1$s</xliff:g> om op te stel"</string> + <string name="single_device_title" msgid="4199861437545438606">"Soek tans vir ’n <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Hierdie app sal toegelaat word om inligting te sinkroniseer, soos die naam van iemand wat bel, en sal toegang tot hierdie toestemmings op jou <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> hê"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Laat <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> toe om <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> te bestuur?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"toestel"</string> diff --git a/packages/CompanionDeviceManager/res/values-am/strings.xml b/packages/CompanionDeviceManager/res/values-am/strings.xml index a6b78cb6dcb7..e53efcedd8cc 100644 --- a/packages/CompanionDeviceManager/res/values-am/strings.xml +++ b/packages/CompanionDeviceManager/res/values-am/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"አጃቢ የመሣሪያ አስተዳዳሪ"</string> <string name="confirmation_title" msgid="2244241995958340998">"መተግበሪያው <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>ን እንዲደርስ ይፈቀድለት?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ይህ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> እንደበራለት ያረጋግጡ እና የእርስዎን <xliff:g id="PROFILE_NAME">%3$s</xliff:g> በአቅራቢያ ያቆዩ።"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"ምንም መሣሪያዎች አልተገኙም። እባክዎ ቆይተው እንደገና ይሞክሩ።"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ብሉቱዝ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ብሉቱዝ እና Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ሰዓት"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> የሚያስተዳድረው መሣሪያ ይምረጡ"</string> <string name="chooser_title" msgid="2235819929238267637">"የሚያዋቅሩት <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ይምረጡ"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> በመፈለግ ላይ"</string> <string name="summary_watch" msgid="8134580124808507407">"ይህ መተግበሪያ እንደ የሚደውል ሰው ስም ያለ መረጃን እንዲያሰምር እና እነዚህን ፈቃዶች በእርስዎ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ላይ እንዲደርስ ይፈቀድለታል"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>ን እንዲያስተዳድር ይፈቅዳሉ?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"መሣሪያ"</string> diff --git a/packages/CompanionDeviceManager/res/values-ar/strings.xml b/packages/CompanionDeviceManager/res/values-ar/strings.xml index 5c07f3a16337..efbc6d92981a 100644 --- a/packages/CompanionDeviceManager/res/values-ar/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ar/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"تطبيق \"مدير الجهاز المصاحب\""</string> <string name="confirmation_title" msgid="2244241995958340998">"هل تريد السماح لـ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> بالوصول إلى <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>؟"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"يُرجى التأكّد من أنّ <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> مفعَّل في <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>، وجعل <xliff:g id="PROFILE_NAME">%3$s</xliff:g> بالقرب منك."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"لم يتم العثور على أي أجهزة. يُرجى إعادة المحاولة لاحقًا."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"البلوتوث"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"البلوتوث وWi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"الساعة"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"اختيار جهاز ليديره تطبيق <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"اختيار \"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>\" للإعداد"</string> + <string name="single_device_title" msgid="4199861437545438606">"جارٍ البحث عن <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"سيتم السماح لهذا التطبيق بمزامنة المعلومات، مثلاً اسم المتصل، واستخدام هذه الأذونات على <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"هل تريد السماح لتطبيق <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> بإدارة <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>؟"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"جهاز"</string> diff --git a/packages/CompanionDeviceManager/res/values-as/strings.xml b/packages/CompanionDeviceManager/res/values-as/strings.xml index c07602afc050..9001a2c5e758 100644 --- a/packages/CompanionDeviceManager/res/values-as/strings.xml +++ b/packages/CompanionDeviceManager/res/values-as/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"কম্পেনিয়ন ডিভাইচ মেনেজাৰ"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> এপ্টোক <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> এক্সেছ কৰিবলৈ দিবনে?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"এই <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>টোৰ <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> অন হৈ থকাটো নিশ্চিত কৰক আৰু আপোনাৰ <xliff:g id="PROFILE_NAME">%3$s</xliff:g> আশে-পাশে ৰাখক।"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"কোনো ডিভাইচ বিচাৰি পোৱা নগ’ল। অনুগ্ৰহ কৰি পাছত পুনৰ চেষ্টা কৰক।"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ব্লুটুথ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"ৱাই-ফাই"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ব্লুটুথ আৰু ৱাই-ফাই"</string> <string name="profile_name_watch" msgid="576290739483672360">"ঘড়ী"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>এ পৰিচালনা কৰিবলগীয়া এটা ডিভাইচ বাছনি কৰক"</string> <string name="chooser_title" msgid="2235819929238267637">"ছেট আপ কৰিবলৈ এটা <xliff:g id="PROFILE_NAME">%1$s</xliff:g> বাছনি কৰক"</string> + <string name="single_device_title" msgid="4199861437545438606">"কোনো <xliff:g id="PROFILE_NAME">%1$s</xliff:g> বিচাৰি থকা হৈছে"</string> <string name="summary_watch" msgid="8134580124808507407">"এই এপ্টোক ফ’ন কৰা লোকৰ নামৰ দৰে তথ্য ছিংক কৰিবলৈ আৰু আপোনাৰ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>ত এই অনুমতিসমূহ এক্সেছ কৰিবলৈ অনুমতি দিয়া হ’ব"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>ক <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> পৰিচালনা কৰিবলৈ দিবনে?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ডিভাইচ"</string> diff --git a/packages/CompanionDeviceManager/res/values-az/strings.xml b/packages/CompanionDeviceManager/res/values-az/strings.xml index f053aa85a28f..2ffe84ead5b0 100644 --- a/packages/CompanionDeviceManager/res/values-az/strings.xml +++ b/packages/CompanionDeviceManager/res/values-az/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Kompanyon Cihaz Meneceri"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> tətbiqinə <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> cihazına daxil olmaq icazəsi verilsin?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Bu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> cihazında <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> yandırılmalı və <xliff:g id="PROFILE_NAME">%3$s</xliff:g> yaxınlıqda saxlanılmalıdır."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Cihaz tapılmadı. Sonra cəhd edin."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth və Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"izləyin"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> tərəfindən idarə ediləcək cihaz seçin"</string> <string name="chooser_title" msgid="2235819929238267637">"Ayarlamaq üçün <xliff:g id="PROFILE_NAME">%1$s</xliff:g> seçin"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> axtarılır"</string> <string name="summary_watch" msgid="8134580124808507407">"Bu tətbiq zəng edənin adı kimi məlumatları sinxronlaşdıra, <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> cihazında bu icazələrə daxil ola biləcək"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> tətbiqinə <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> cihazını idarə etmək icazəsi verilsin?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"cihazda"</string> diff --git a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml index 621ea2102747..ab52c39b34b9 100644 --- a/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml +++ b/packages/CompanionDeviceManager/res/values-b+sr+Latn/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Menadžer pridruženog uređaja"</string> <string name="confirmation_title" msgid="2244241995958340998">"Dozvolite da aplikacija <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> pristupa uređaju <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Uverite se da je za <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> uključen <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> i da u blizini imate <xliff:g id="PROFILE_NAME">%3$s</xliff:g>."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nije pronađen nijedan uređaj. Probajte ponovo kasnije."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"WiFi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth i WiFi"</string> <string name="profile_name_watch" msgid="576290739483672360">"sat"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Odaberite uređaj kojim će upravljati aplikacija <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Odaberite profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g> koji želite da podesite"</string> + <string name="single_device_title" msgid="4199861437545438606">"Traži se <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Ovoj aplikaciji će biti dozvoljeno da sinhronizuje podatke, poput imena pozivaoca, i pristupa tim dozvolama na uređaju <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Želite li da dozvolite da <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> upravlja uređajem <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"uređaj"</string> diff --git a/packages/CompanionDeviceManager/res/values-be/strings.xml b/packages/CompanionDeviceManager/res/values-be/strings.xml index 0cdebcdbeffe..884101fe718d 100644 --- a/packages/CompanionDeviceManager/res/values-be/strings.xml +++ b/packages/CompanionDeviceManager/res/values-be/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Менеджар спадарожнай прылады"</string> <string name="confirmation_title" msgid="2244241995958340998">"Дазволіць праграме <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> доступ да прылады <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Упэўніцеся, што на гэтай прыладзе (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) уключаны <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>, і трымайце <xliff:g id="PROFILE_NAME">%3$s</xliff:g> паблізу."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Прылады не знойдзены. Паўтарыце спробу пазней."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth і Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"гадзіннік"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Выберыце прыладу (<xliff:g id="APP_NAME">%1$s</xliff:g>), якой будзе кіраваць праграма <strong></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Выберыце імя <xliff:g id="PROFILE_NAME">%1$s</xliff:g> для наладжвання"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>: ідзе пошук"</string> <string name="summary_watch" msgid="8134580124808507407">"Гэта праграма зможа сінхранізаваць інфармацыю (напрыклад, імя таго, хто звоніць) на вашай прыладзе тыпу \"<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>\" і атрымае наступныя дазволы"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Дазволіць праграме <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> кіраваць прыладай <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"прылада"</string> diff --git a/packages/CompanionDeviceManager/res/values-bg/strings.xml b/packages/CompanionDeviceManager/res/values-bg/strings.xml index f522ab4807ae..9c3b94e6a0fe 100644 --- a/packages/CompanionDeviceManager/res/values-bg/strings.xml +++ b/packages/CompanionDeviceManager/res/values-bg/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Да се разреши ли на приложението <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> да осъществява достъп до устройството <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Функцията за <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> на <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> трябва да е включена и <xliff:g id="PROFILE_NAME">%3$s</xliff:g> да е близо."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Няма намерени устройства. Моля, опитайте отново по-късно."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth и Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"часовник"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Изберете устройство, което да се управлява от <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Изберете <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, за да го настроите"</string> + <string name="single_device_title" msgid="4199861437545438606">"Търси се <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Това приложение ще получи право да синхронизира различна информация, като например името на обаждащия се, и достъп до следните разрешения за вашия <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Разрешавате ли на <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> да управлява устройството <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"устройство"</string> diff --git a/packages/CompanionDeviceManager/res/values-bn/strings.xml b/packages/CompanionDeviceManager/res/values-bn/strings.xml index 61ec8c9bdf28..88db2a5d0975 100644 --- a/packages/CompanionDeviceManager/res/values-bn/strings.xml +++ b/packages/CompanionDeviceManager/res/values-bn/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> অ্যাক্সেস করার জন্য <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> অ্যাপকে কি অনুমতি দিতে চান?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-এর <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> চালু আছে কিনা তা ভালোভাবে দেখে নিন এবং আপনার <xliff:g id="PROFILE_NAME">%3$s</xliff:g> কাছাকাছি রাখুন।"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"কোনও ডিভাইস খুঁজে পাওয়া যায়নি। পরে আবার চেষ্টা করুন।"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ব্লুটুথ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"ওয়াই-ফাই"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ব্লুটুথ ও ওয়াই-ফাই"</string> <string name="profile_name_watch" msgid="576290739483672360">"ঘড়ি"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ম্যানেজ করা যাবে এমন একটি ডিভাইস বেছে নিন"</string> <string name="chooser_title" msgid="2235819929238267637">"সেট-আপ করতে কোনও <xliff:g id="PROFILE_NAME">%1$s</xliff:g> বেছে নিন"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> খোঁজা হচ্ছে"</string> <string name="summary_watch" msgid="8134580124808507407">"কল করছেন এমন কোনও ব্যক্তির নামের মতো তথ্য সিঙ্ক ও আপনার <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-এ এইসব অনুমতি অ্যাক্সেস করার জন্য, এই অ্যাপকে অনুমতি দেওয়া হবে"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"আপনি কি <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ম্যানেজ করার জন্য <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>-কে অনুমতি দেবেন?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ডিভাইস"</string> diff --git a/packages/CompanionDeviceManager/res/values-bs/strings.xml b/packages/CompanionDeviceManager/res/values-bs/strings.xml index 00205f257315..e7f9b146133e 100644 --- a/packages/CompanionDeviceManager/res/values-bs/strings.xml +++ b/packages/CompanionDeviceManager/res/values-bs/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Prateći upravitelj uređaja"</string> <string name="confirmation_title" msgid="2244241995958340998">"Dozvoliti aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> da pristupa uređaju <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Provjerite ima li <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> uključen <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> i približite <xliff:g id="PROFILE_NAME">%3$s</xliff:g>."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nije pronađen nijedan uređaj. Pokušajte ponovo kasnije."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"WiFi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth i WiFi"</string> <string name="profile_name_watch" msgid="576290739483672360">"sat"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Odaberite uređaj kojim će upravljati aplikacija <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Odaberite <xliff:g id="PROFILE_NAME">%1$s</xliff:g> da postavite"</string> + <string name="single_device_title" msgid="4199861437545438606">"Traži se <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Aplikaciji će biti dozvoljeno da sinhronizira informacije, kao što je ime osobe koja upućuje poziv, i pristupa ovim odobrenjima koje sadržava vaš <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Dozvoliti aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> da upravlja uređajem <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"uređaj"</string> diff --git a/packages/CompanionDeviceManager/res/values-ca/strings.xml b/packages/CompanionDeviceManager/res/values-ca/strings.xml index 662e297ae00c..8c0b117f29ea 100644 --- a/packages/CompanionDeviceManager/res/values-ca/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ca/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gestor de dispositius complementaris"</string> <string name="confirmation_title" msgid="2244241995958340998">"Vols permetre que l\'aplicació <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> accedeixi a <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Assegura\'t que aquest dispositiu (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) hagi activat <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> i mantén el <xliff:g id="PROFILE_NAME">%3$s</xliff:g> a prop."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"No s\'ha trobat cap dispositiu. Torna-ho a provar més tard."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"el Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"la Wi‑Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"el Bluetooth i la Wi‑Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"rellotge"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Tria un dispositiu perquè el gestioni <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Tria un <xliff:g id="PROFILE_NAME">%1$s</xliff:g> per configurar"</string> + <string name="single_device_title" msgid="4199861437545438606">"S\'està cercant un <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Aquesta aplicació podrà sincronitzar informació, com ara el nom d\'algú que truca, i accedir a aquests permisos al <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permet que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> gestioni <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispositiu"</string> diff --git a/packages/CompanionDeviceManager/res/values-cs/strings.xml b/packages/CompanionDeviceManager/res/values-cs/strings.xml index 6b110d3ae7b1..cde31af7ec97 100644 --- a/packages/CompanionDeviceManager/res/values-cs/strings.xml +++ b/packages/CompanionDeviceManager/res/values-cs/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Správce doprovodných zařízení"</string> <string name="confirmation_title" msgid="2244241995958340998">"Povolit aplikaci <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> přístup k <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Zkontrolujte, zda je na tomto zařízení typu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> zapnutá funkce <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> a mějte své zařízení typu <xliff:g id="PROFILE_NAME">%3$s</xliff:g> poblíž."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nebyla nalezena žádná zařízení. Zkuste to znovu později."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth a Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"hodinky"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Vyberte zařízení, které chcete spravovat pomocí aplikace <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Vyberte zařízení <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, které chcete nastavit"</string> + <string name="single_device_title" msgid="4199861437545438606">"Vyhledávání zařízení typu <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Tato aplikace bude moct synchronizovat údaje, jako je jméno volajícího, a získat na zařízení typu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> přístup k těmto oprávněním"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Povolit aplikaci <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> spravovat zařízení <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"zařízení"</string> diff --git a/packages/CompanionDeviceManager/res/values-da/strings.xml b/packages/CompanionDeviceManager/res/values-da/strings.xml index bbd01105c538..08a1ae1a8623 100644 --- a/packages/CompanionDeviceManager/res/values-da/strings.xml +++ b/packages/CompanionDeviceManager/res/values-da/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Medfølgende enhedsadministrator"</string> <string name="confirmation_title" msgid="2244241995958340998">"Vil du give appen <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> adgang til <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Sørg for, at <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> er aktiveret på denne <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>, og sørg for, at dit <xliff:g id="PROFILE_NAME">%3$s</xliff:g> er i nærheden."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Der blev ikke fundet nogen enheder. Prøv igen senere."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth og Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ur"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Vælg en enhed, som skal administreres af <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Vælg en <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, som du vil konfigurere"</string> + <string name="single_device_title" msgid="4199861437545438606">"Søger efter et <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Denne app får tilladelse til at synkronisere oplysninger, f.eks. navne på dem, der ringer, og adgang til disse tilladelser på din <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vil du tillade, at <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> administrerer <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"enhed"</string> diff --git a/packages/CompanionDeviceManager/res/values-de/strings.xml b/packages/CompanionDeviceManager/res/values-de/strings.xml index 3eecfe71f6b6..30528c528518 100644 --- a/packages/CompanionDeviceManager/res/values-de/strings.xml +++ b/packages/CompanionDeviceManager/res/values-de/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Begleitgerät-Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Zulassen, dass <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> auf <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> zugreifen darf?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Achte darauf, dass die Option „<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>“ auf diesem <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> aktiviert ist und dein Begleitgerät vom Typ „<xliff:g id="PROFILE_NAME">%3$s</xliff:g>“ in der Nähe ist."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Keine Geräte gefunden. Bitte versuche es später noch einmal."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"WLAN"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth & WLAN"</string> <string name="profile_name_watch" msgid="576290739483672360">"Smartwatch"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Gerät auswählen, das von <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> verwaltet werden soll"</string> <string name="chooser_title" msgid="2235819929238267637">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> zum Einrichten auswählen"</string> + <string name="single_device_title" msgid="4199861437545438606">"Nach einem Begleitgerät vom Typ „<xliff:g id="PROFILE_NAME">%1$s</xliff:g>“ suchen"</string> <string name="summary_watch" msgid="8134580124808507407">"Diese App darf dann Daten wie den Namen eines Anrufers synchronisieren und auf diese Berechtigungen auf deinem Gerät (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) zugreifen"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Zulassen, dass <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> das Gerät <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> verwalten darf?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"Gerät"</string> diff --git a/packages/CompanionDeviceManager/res/values-el/strings.xml b/packages/CompanionDeviceManager/res/values-el/strings.xml index a26162f4e077..cffb365974f4 100644 --- a/packages/CompanionDeviceManager/res/values-el/strings.xml +++ b/packages/CompanionDeviceManager/res/values-el/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Διαχείριση συνοδευτικής εφαρμογής"</string> <string name="confirmation_title" msgid="2244241995958340998">"Να επιτρέπεται στην εφαρμογή <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> να έχει πρόσβαση στη συσκευή <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>;"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Βεβαιωθείτε ότι αυτή η συσκευή <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> έχει ενεργοποιημένο το <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> και κρατήστε τη συσκευή <xliff:g id="PROFILE_NAME">%3$s</xliff:g> κοντά."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Δεν βρέθηκαν συσκευές. Δοκιμάστε ξανά αργότερα."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth και Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ρολόι"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Επιλέξτε μια συσκευή για διαχείριση μέσω της εφαρμογής <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Επιλέξτε ένα προφίλ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> για ρύθμιση"</string> + <string name="single_device_title" msgid="4199861437545438606">"Αναζήτηση για <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Αυτή η εφαρμογή θα μπορεί να συγχρονίζει πληροφορίες, όπως το όνομα ενός ατόμου που σας καλεί, και να αποκτά πρόσβαση σε αυτές τις άδειες στη συσκευή <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Να επιτρέπεται στην εφαρμογή <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> να διαχειρίζεται τη συσκευή <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ;"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"συσκευή"</string> diff --git a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml index b5fea9f22c15..8590e9f96f1c 100644 --- a/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml +++ b/packages/CompanionDeviceManager/res/values-en-rAU/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Allow the app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to access <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Make sure that this <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> has <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> turned on and keep your <xliff:g id="PROFILE_NAME">%3$s</xliff:g> nearby."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"No devices found. Please try again later."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth and Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"watch"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Choose a device to be managed by <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Choose a <xliff:g id="PROFILE_NAME">%1$s</xliff:g> to set up"</string> + <string name="single_device_title" msgid="4199861437545438606">"Looking for a <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"This app will be allowed to sync info, like the name of someone calling, and access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Allow <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to manage <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"device"</string> diff --git a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml index 42c6b888cddc..041966ec0ce4 100644 --- a/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml +++ b/packages/CompanionDeviceManager/res/values-en-rCA/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Allow the app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to access <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Make sure this <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> has <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> turned on, and keep your <xliff:g id="PROFILE_NAME">%3$s</xliff:g> nearby."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"No devices found. Please try again later."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth and Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"watch"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Choose a device to be managed by <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Choose a <xliff:g id="PROFILE_NAME">%1$s</xliff:g> to set up"</string> + <string name="single_device_title" msgid="4199861437545438606">"Looking for a <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"This app will be allowed to sync info, like the name of someone calling, and access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Allow <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to manage <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"device"</string> diff --git a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml index b5fea9f22c15..8590e9f96f1c 100644 --- a/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml +++ b/packages/CompanionDeviceManager/res/values-en-rGB/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Allow the app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to access <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Make sure that this <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> has <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> turned on and keep your <xliff:g id="PROFILE_NAME">%3$s</xliff:g> nearby."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"No devices found. Please try again later."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth and Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"watch"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Choose a device to be managed by <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Choose a <xliff:g id="PROFILE_NAME">%1$s</xliff:g> to set up"</string> + <string name="single_device_title" msgid="4199861437545438606">"Looking for a <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"This app will be allowed to sync info, like the name of someone calling, and access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Allow <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to manage <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"device"</string> diff --git a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml index b5fea9f22c15..8590e9f96f1c 100644 --- a/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml +++ b/packages/CompanionDeviceManager/res/values-en-rIN/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Allow the app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to access <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Make sure that this <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> has <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> turned on and keep your <xliff:g id="PROFILE_NAME">%3$s</xliff:g> nearby."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"No devices found. Please try again later."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth and Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"watch"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Choose a device to be managed by <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Choose a <xliff:g id="PROFILE_NAME">%1$s</xliff:g> to set up"</string> + <string name="single_device_title" msgid="4199861437545438606">"Looking for a <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"This app will be allowed to sync info, like the name of someone calling, and access these permissions on your <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Allow <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> to manage <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"device"</string> diff --git a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml index a5d00a3186e0..88ae3ed0356b 100644 --- a/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml +++ b/packages/CompanionDeviceManager/res/values-es-rUS/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Administrador de dispositivo complementario"</string> <string name="confirmation_title" msgid="2244241995958340998">"¿Quieres permitir que la app de <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acceda a <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Asegúrate de que este <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> tenga activado el <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> y mantén cerca tu <xliff:g id="PROFILE_NAME">%3$s</xliff:g>."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"No se encontraron dispositivos. Vuelve a intentarlo más tarde."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth y Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"reloj"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Elige un dispositivo para que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> lo administre"</string> <string name="chooser_title" msgid="2235819929238267637">"Elige un <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para configurar"</string> + <string name="single_device_title" msgid="4199861437545438606">"Buscando un <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Esta app podrá sincronizar información, como el nombre de alguien cuando te llame, y acceder a los siguientes permisos en tu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permite que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> administre <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string> diff --git a/packages/CompanionDeviceManager/res/values-es/strings.xml b/packages/CompanionDeviceManager/res/values-es/strings.xml index fc6e6c55557a..ac8c79a61496 100644 --- a/packages/CompanionDeviceManager/res/values-es/strings.xml +++ b/packages/CompanionDeviceManager/res/values-es/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gestor de dispositivos complementario"</string> <string name="confirmation_title" msgid="2244241995958340998">"¿Permitir que la aplicación <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acceda a <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Asegúrate de que este dispositivo (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) tenga el <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> activado y mantén tu <xliff:g id="PROFILE_NAME">%3$s</xliff:g> cerca."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"No se ha encontrado ningún dispositivo. Inténtalo de nuevo más tarde."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth y Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"reloj"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Elige un dispositivo para que lo gestione <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Elige el <xliff:g id="PROFILE_NAME">%1$s</xliff:g> que quieras configurar"</string> + <string name="single_device_title" msgid="4199861437545438606">"Buscando <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Esta aplicación podrá sincronizar información, como el nombre de la persona que llama, y acceder a estos permisos de tu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"¿Permitir que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> gestione <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string> diff --git a/packages/CompanionDeviceManager/res/values-et/strings.xml b/packages/CompanionDeviceManager/res/values-et/strings.xml index 2cbb44134d31..9c22847df868 100644 --- a/packages/CompanionDeviceManager/res/values-et/strings.xml +++ b/packages/CompanionDeviceManager/res/values-et/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Kaasseadme haldur"</string> <string name="confirmation_title" msgid="2244241995958340998">"Kas anda rakendusele <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> juurdepääs seadmele <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Veenduge, et seadmes <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> oleks <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> sisse lülitatud, ja hoidke oma seade <xliff:g id="PROFILE_NAME">%3$s</xliff:g> läheduses."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Seadmeid ei leitud. Proovige hiljem uuesti."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"WiFi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth ja WiFi"</string> <string name="profile_name_watch" msgid="576290739483672360">"käekell"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Valige seade, mida haldab rakendus <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Valige <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, mis seadistada"</string> + <string name="single_device_title" msgid="4199861437545438606">"Seadme <xliff:g id="PROFILE_NAME">%1$s</xliff:g> otsimine"</string> <string name="summary_watch" msgid="8134580124808507407">"Sellel rakendusel lubatakse sünkroonida teavet (nt helistaja nime) ja antakse juurdepääs nendele lubadele, mille asukoht on teie <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Lubage rakendusel <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> hallata seadet <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"seade"</string> diff --git a/packages/CompanionDeviceManager/res/values-eu/strings.xml b/packages/CompanionDeviceManager/res/values-eu/strings.xml index 3a49cf94ca6b..c52c2b982f02 100644 --- a/packages/CompanionDeviceManager/res/values-eu/strings.xml +++ b/packages/CompanionDeviceManager/res/values-eu/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gailu osagarriaren kudeatzailea"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> gailua erabiltzeko baimena eman nahi diozu <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> aplikazioari?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Ziurtatu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> honen <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> aktibatuta dagoela, eta eduki <xliff:g id="PROFILE_NAME">%3$s</xliff:g> hurbil."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Ez da aurkitu gailurik. Saiatu berriro geroago."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetootha"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wifia"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetootha eta wifia"</string> <string name="profile_name_watch" msgid="576290739483672360">"erlojua"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Aukeratu <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> aplikazioak kudeatu behar duen gailua"</string> <string name="chooser_title" msgid="2235819929238267637">"Aukeratu konfiguratu nahi duzun <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> baten bila"</string> <string name="summary_watch" msgid="8134580124808507407">"Informazioa sinkronizatzeko (esate baterako, deitzaileen izenak) eta hauetarako baimenak izango ditu aplikazioak <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> erabiltzean:"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> kudeatzeko baimena eman nahi diozu <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> aplikazioari?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"gailua"</string> diff --git a/packages/CompanionDeviceManager/res/values-fa/strings.xml b/packages/CompanionDeviceManager/res/values-fa/strings.xml index 481522500140..2f4f9380171e 100644 --- a/packages/CompanionDeviceManager/res/values-fa/strings.xml +++ b/packages/CompanionDeviceManager/res/values-fa/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"مدیر دستگاه مرتبط"</string> <string name="confirmation_title" msgid="2244241995958340998">"به برنامه <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> اجازه داده شود به <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> دسترسی پیدا کند؟"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"مطمئن شوید <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> در این <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> روشن باشد و <xliff:g id="PROFILE_NAME">%3$s</xliff:g> را نزدیک نگه دارید."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"دستگاهی پیدا نشد. لطفاً بعداً دوباره امتحان کنید."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"بلوتوث"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"بلوتوث و Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ساعت"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"انتخاب دستگاه برای مدیریت کردن با <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"انتخاب <xliff:g id="PROFILE_NAME">%1$s</xliff:g> برای راهاندازی"</string> + <string name="single_device_title" msgid="4199861437545438606">"درحال یافتن <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"به این برنامه اجازه داده میشود اطلاعاتی مثل نام تماسگیرنده را همگامسازی کند و به این اجازهها در <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> شما دسترسی داشته باشد"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"به <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> اجازه داده شود <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> را مدیریت کند؟"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"دستگاه"</string> diff --git a/packages/CompanionDeviceManager/res/values-fi/strings.xml b/packages/CompanionDeviceManager/res/values-fi/strings.xml index 6e13d6cf542e..be4076abde4b 100644 --- a/packages/CompanionDeviceManager/res/values-fi/strings.xml +++ b/packages/CompanionDeviceManager/res/values-fi/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Sallitaanko, että soellus (<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>) saa pääsyn laitteeseen: <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Varmista, että <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> on päällä laitteella (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>), ja pidä <xliff:g id="PROFILE_NAME">%3$s</xliff:g> lähellä."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Laitteita ei löydy. Yritä myöhemmin uudelleen."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth ja Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"kello"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Valitse laite, jota <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> hallinnoi"</string> <string name="chooser_title" msgid="2235819929238267637">"Valitse <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, niin voit suorittaa käyttöönoton"</string> + <string name="single_device_title" msgid="4199861437545438606">"Etsitään tätä: <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Sovellus saa luvan synkronoida tietoja (esimerkiksi soittajan nimen) ja pääsyn näihin lupiin laitteella (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Salli, että <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> saa ylläpitää laitetta: <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"laite"</string> diff --git a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml index 73a180b586d3..0aa462bee90e 100644 --- a/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml +++ b/packages/CompanionDeviceManager/res/values-fr-rCA/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gestionnaire d\'appareil compagnon"</string> <string name="confirmation_title" msgid="2244241995958340998">"Autoriser l\'appli <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> à accéder à <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Assurez-vous que le <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> est activé sur cet appareil (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) et gardez votre <xliff:g id="PROFILE_NAME">%3$s</xliff:g> à proximité."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Aucun appareil détecté. Veuillez réessayer plus tard."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth et Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"montre"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Choisir un appareil qui sera géré par <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Choisir un appareil (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>) pour le configurer"</string> + <string name="single_device_title" msgid="4199861437545438606">"À la recherche de l\'appareil suivant : <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Cette appli sera autorisée à synchroniser des informations, comme le nom de l\'appelant, et à accéder à ces autorisations sur votre <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Autoriser <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> à gérer <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"appareil"</string> diff --git a/packages/CompanionDeviceManager/res/values-fr/strings.xml b/packages/CompanionDeviceManager/res/values-fr/strings.xml index 0c0ae7912dc4..e7741c42850e 100644 --- a/packages/CompanionDeviceManager/res/values-fr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-fr/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gestionnaire d\'appareils associés"</string> <string name="confirmation_title" msgid="2244241995958340998">"Autoriser l\'appli <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> à accéder à <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Assurez-vous que le <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> de votre <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> est activé et gardez votre <xliff:g id="PROFILE_NAME">%3$s</xliff:g> à proximité."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Aucun appareil trouvé. Veuillez réessayer plus tard."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth et Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"montre"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Sélectionner l\'appareil qui sera géré par <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Sélectionner votre <xliff:g id="PROFILE_NAME">%1$s</xliff:g> à configurer"</string> + <string name="single_device_title" msgid="4199861437545438606">"Recherche de l\'appareil suivant : <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Cette appli sera autorisée à synchroniser des infos (comme le nom de l\'appelant) et disposera de ces autorisations sur votre <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Autoriser <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> à gérer <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"appareil"</string> diff --git a/packages/CompanionDeviceManager/res/values-gl/strings.xml b/packages/CompanionDeviceManager/res/values-gl/strings.xml index 71eb86ff32f3..bf58761da26f 100644 --- a/packages/CompanionDeviceManager/res/values-gl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-gl/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Xestor de dispositivos complementarios"</string> <string name="confirmation_title" msgid="2244241995958340998">"Queres permitir que a aplicación <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acceda ao dispositivo <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Cómpre que este <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> teña activada a conexión <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> e que estea preto do <xliff:g id="PROFILE_NAME">%3$s</xliff:g>."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Non se atopou ningún dispositivo. Téntao de novo máis tarde."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wifi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth e wifi"</string> <string name="profile_name_watch" msgid="576290739483672360">"reloxo"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Escolle un dispositivo para que o xestione a aplicación <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Escolle o perfil (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>) que queiras configurar"</string> + <string name="single_device_title" msgid="4199861437545438606">"Buscando <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Esta aplicación poderá sincronizar información (por exemplo, o nome de quen chama) e acceder a estes permisos do dispositivo (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Queres permitir que <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> xestione o dispositivo (<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>)?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string> diff --git a/packages/CompanionDeviceManager/res/values-gu/strings.xml b/packages/CompanionDeviceManager/res/values-gu/strings.xml index 9b20886bc0af..d3db96eedb6b 100644 --- a/packages/CompanionDeviceManager/res/values-gu/strings.xml +++ b/packages/CompanionDeviceManager/res/values-gu/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"કમ્પેનિયન ડિવાઇસ મેનેજર"</string> <string name="confirmation_title" msgid="2244241995958340998">"શું <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>ને ઍક્સેસ કરવા માટે, <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ઍપને મંજૂરી આપીએ?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ખાતરી કરો કે આ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> દ્વારા <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ચાલુ કરવામાં આવી છે અને તમારી <xliff:g id="PROFILE_NAME">%3$s</xliff:g> નજીકમાં રાખો."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"કોઈ ડિવાઇસ મળ્યું નથી. કૃપા કરીને થોડા સમય પછી ફરી પ્રયાસ કરો."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"બ્લૂટૂથ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"વાઇ-ફાઇ"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"બ્લૂટૂથ અને વાઇ-ફાઇ"</string> <string name="profile_name_watch" msgid="576290739483672360">"સ્માર્ટવૉચ"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> દ્વારા મેનેજ કરવા માટે કોઈ ડિવાઇસ પસંદ કરો"</string> <string name="chooser_title" msgid="2235819929238267637">"સેટઅપ કરવા માટે કોઈ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> પસંદ કરો"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> શોધી રહ્યાં છીએ"</string> <string name="summary_watch" msgid="8134580124808507407">"આ ઍપને, કૉલ કરનાર વ્યક્તિનું નામ જેવી માહિતી સિંક કરવાની અને તમારા <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> પર આ પરવાનગીઓ ઍક્સેસ કરવાની મંજૂરી આપવામાં આવશે"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>ને <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> મેનેજ કરવા માટે મંજૂરી આપીએ?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ડિવાઇસ"</string> diff --git a/packages/CompanionDeviceManager/res/values-hi/strings.xml b/packages/CompanionDeviceManager/res/values-hi/strings.xml index 7224896392e4..2d38a00e9fcb 100644 --- a/packages/CompanionDeviceManager/res/values-hi/strings.xml +++ b/packages/CompanionDeviceManager/res/values-hi/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"कंपैनियन डिवाइस मैनेजर"</string> <string name="confirmation_title" msgid="2244241995958340998">"क्या <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> को ऐक्सेस करने के लिए <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ऐप्लिकेशन को अनुमति देनी है?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"पक्का करें कि इस <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> का <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> चालू हो और <xliff:g id="PROFILE_NAME">%3$s</xliff:g> आपके आस-पास हो."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"कोई डिवाइस नहीं मिला. कृपया बाद में कोशिश करें."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ब्लूटूथ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"वाई-फ़ाई"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ब्लूटूथ और वाई-फ़ाई"</string> <string name="profile_name_watch" msgid="576290739483672360">"स्मार्टवॉच"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> से मैनेज किया जाने वाला डिवाइस चुनें"</string> <string name="chooser_title" msgid="2235819929238267637">"सेट अप करने के लिए कोई <xliff:g id="PROFILE_NAME">%1$s</xliff:g> चुनें"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> को ढूंढा जा रहा है"</string> <string name="summary_watch" msgid="8134580124808507407">"यह ऐप्लिकेशन, आपके <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> पर इन अनुमतियों को ऐक्सेस करने के साथ-साथ कॉल करने वाले व्यक्ति के नाम जैसी जानकारी सिंक कर पाएगा"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"क्या <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> को <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> मैनेज करने की अनुमति देनी है?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"डिवाइस"</string> diff --git a/packages/CompanionDeviceManager/res/values-hr/strings.xml b/packages/CompanionDeviceManager/res/values-hr/strings.xml index 0b769f036f32..d002c9ce0f82 100644 --- a/packages/CompanionDeviceManager/res/values-hr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-hr/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Upravitelj popratnih uređaja"</string> <string name="confirmation_title" msgid="2244241995958340998">"Želite li dopustiti aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> da pristupa <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Provjerite je li na uređaju <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> uključen <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> i držite <xliff:g id="PROFILE_NAME">%3$s</xliff:g> u blizini."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nije pronađen nijedan uređaj. Pokušajte ponovo kasnije."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth i Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"satom"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Odaberite uređaj kojim će upravljati aplikacija <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Odaberite profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g> koji želite postaviti"</string> + <string name="single_device_title" msgid="4199861437545438606">"Traži se <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Aplikacija će moći sinkronizirati podatke kao što je ime pozivatelja i pristupiti tim dopuštenjima na vašem uređaju <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Dopustiti aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> da upravlja uređajem <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"uređaj"</string> diff --git a/packages/CompanionDeviceManager/res/values-hu/strings.xml b/packages/CompanionDeviceManager/res/values-hu/strings.xml index 69bd41b28f63..8b11dac56f9c 100644 --- a/packages/CompanionDeviceManager/res/values-hu/strings.xml +++ b/packages/CompanionDeviceManager/res/values-hu/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Társeszközök kezelője"</string> <string name="confirmation_title" msgid="2244241995958340998">"Engedélyezi a(z) <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> alkalmazás számára, hogy hozzáférjen a következőhöz: <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Győződjön meg arról, hogy a <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> be van kapcsolva ezen a(z) <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> eszközön, és hogy a(z) <xliff:g id="PROFILE_NAME">%3$s</xliff:g> eszköz a közelben van."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nem található eszköz. Próbálja újra később."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth és Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"óra"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"A(z) <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> alkalmazással kezelni kívánt eszköz kiválasztása"</string> <string name="chooser_title" msgid="2235819929238267637">"Válassza ki a beállítani kívánt <xliff:g id="PROFILE_NAME">%1$s</xliff:g> nevet."</string> + <string name="single_device_title" msgid="4199861437545438606">"Keresés – <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Ez az alkalmazás képes lesz szinkronizálni információkat (például a hívó fél nevét), és hozzáférhet majd ezekhez az engedélyekhez a következőn: <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Engedélyezi, hogy a(z) <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> kezelje a következő eszközt: <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"eszköz"</string> diff --git a/packages/CompanionDeviceManager/res/values-hy/strings.xml b/packages/CompanionDeviceManager/res/values-hy/strings.xml index 27cd9751d824..9d45928eeb5f 100644 --- a/packages/CompanionDeviceManager/res/values-hy/strings.xml +++ b/packages/CompanionDeviceManager/res/values-hy/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Թույլատրե՞լ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> հավելվածին կառավարել <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> սարքը"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Համոզվեք, որ այս <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> սարքի <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>-ը միացված է, և ձեր <xliff:g id="PROFILE_NAME">%3$s</xliff:g>-ը մոտ պահեք։"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Սարքեր չեն գտնվել։ Փորձեք ավելի ուշ։"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth և Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ժամացույց"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Ընտրեք սարքը, որը պետք է կառավարվի <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> հավելվածի միջոցով"</string> <string name="chooser_title" msgid="2235819929238267637">"Կարգավորելու համար ընտրեք <xliff:g id="PROFILE_NAME">%1$s</xliff:g>ը"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> սարքի որոնում"</string> <string name="summary_watch" msgid="8134580124808507407">"Այս հավելվածը կկարողանա համաժամացնել տվյալները, օր․՝ զանգողի անունը, և կստանա հետևյալ թույլտվությունները ձեր <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>ում"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Թույլատրե՞լ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> հավելվածին կառավարել <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> սարքը"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"սարք"</string> diff --git a/packages/CompanionDeviceManager/res/values-in/strings.xml b/packages/CompanionDeviceManager/res/values-in/strings.xml index 6ec3392a02ad..9c9144c4f63d 100644 --- a/packages/CompanionDeviceManager/res/values-in/strings.xml +++ b/packages/CompanionDeviceManager/res/values-in/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Pengelola Perangkat Pendamping"</string> <string name="confirmation_title" msgid="2244241995958340998">"Izinkan aplikasi <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> mengakses <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Pastikan <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ini mengaktifkan <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>, dan letakkan <xliff:g id="PROFILE_NAME">%3$s</xliff:g> di dekat Anda."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Perangkat tidak ditemukan. Coba lagi nanti."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth dan Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"smartwatch"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Pilih perangkat untuk dikelola oleh <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Pilih <xliff:g id="PROFILE_NAME">%1$s</xliff:g> untuk disiapkan"</string> + <string name="single_device_title" msgid="4199861437545438606">"Mencari <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Aplikasi ini akan diizinkan menyinkronkan info, seperti nama penelepon, dan mengakses izin ini di <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> Anda"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Izinkan <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> mengelola <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"perangkat"</string> diff --git a/packages/CompanionDeviceManager/res/values-is/strings.xml b/packages/CompanionDeviceManager/res/values-is/strings.xml index f1b6ced64d69..1247aaef319f 100644 --- a/packages/CompanionDeviceManager/res/values-is/strings.xml +++ b/packages/CompanionDeviceManager/res/values-is/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Stjórnun fylgdartækja"</string> <string name="confirmation_title" msgid="2244241995958340998">"Veita forritinu <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> aðgang að <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Gakktu úr skugga um að kveikt sé á <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> í <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> og hafðu <xliff:g id="PROFILE_NAME">%3$s</xliff:g> nálægt."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Engin tæki fundust. Reyndu aftur síðar."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth og Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"úr"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Veldu tæki sem <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> á að stjórna"</string> <string name="chooser_title" msgid="2235819929238267637">"Veldu <xliff:g id="PROFILE_NAME">%1$s</xliff:g> til að setja upp"</string> + <string name="single_device_title" msgid="4199861437545438606">"Leitar að <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Þetta forrit fær heimild til að samstilla upplýsingar, t.d. nafn þess sem hringir, og fær aðgang að eftirfarandi heimildum í <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Leyfa <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> að stjórna <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"tæki"</string> diff --git a/packages/CompanionDeviceManager/res/values-it/strings.xml b/packages/CompanionDeviceManager/res/values-it/strings.xml index 2afdcbaab8bf..3fa0419832e8 100644 --- a/packages/CompanionDeviceManager/res/values-it/strings.xml +++ b/packages/CompanionDeviceManager/res/values-it/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gestione dispositivi associati"</string> <string name="confirmation_title" msgid="2244241995958340998">"Vuoi consentire all\'app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> di accedere a <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Assicurati che il <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> abbia il <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> attivo e tieni l’<xliff:g id="PROFILE_NAME">%3$s</xliff:g> vicino."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nessun dispositivo trovato. Riprova più tardi."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth e Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"orologio"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Scegli un dispositivo che sia gestito da <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Scegli un <xliff:g id="PROFILE_NAME">%1$s</xliff:g> da configurare"</string> + <string name="single_device_title" msgid="4199861437545438606">"Ricerca di un <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Questa app potrà sincronizzare informazioni, ad esempio il nome di un chiamante, e accedere alle seguenti autorizzazioni <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vuoi consentire all\'app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> di gestire <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string> diff --git a/packages/CompanionDeviceManager/res/values-iw/strings.xml b/packages/CompanionDeviceManager/res/values-iw/strings.xml index 4181e6278d4f..f775a7f16f81 100644 --- a/packages/CompanionDeviceManager/res/values-iw/strings.xml +++ b/packages/CompanionDeviceManager/res/values-iw/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"ניהול מכשיר מותאם"</string> <string name="confirmation_title" msgid="2244241995958340998">"לאפשר לאפליקציה <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> לגשת אל <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"צריך לוודא שה-<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> מופעל ב<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>, ושה<xliff:g id="PROFILE_NAME">%3$s</xliff:g> בקרבת מקום."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"לא נמצאו מכשירים. אפשר לנסות שוב מאוחר יותר."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"חיבור Wi-Fi ו-Bluetooth"</string> <string name="profile_name_watch" msgid="576290739483672360">"שעון"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"בחירה של מכשיר לניהול באמצעות <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"בחירת <xliff:g id="PROFILE_NAME">%1$s</xliff:g> להגדרה"</string> + <string name="single_device_title" msgid="4199861437545438606">"מתבצע חיפוש של <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"האפליקציה הזו תוכל לסנכרן מידע, כמו השם של מישהו שמתקשר, ולגשת להרשאות האלה ב<xliff:g id="DEVICE_TYPE">%1$s</xliff:g> שלך"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"מתן הרשאה לאפליקציה <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong&g; לנהל את <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"מכשיר"</string> diff --git a/packages/CompanionDeviceManager/res/values-ja/strings.xml b/packages/CompanionDeviceManager/res/values-ja/strings.xml index 5974c6b1679c..0ad41cd72916 100644 --- a/packages/CompanionDeviceManager/res/values-ja/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ja/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"コンパニオン デバイス マネージャー"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> アプリに <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> へのアクセスを許可しますか?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"この<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>の<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>が ON であることを確認し、<xliff:g id="PROFILE_NAME">%3$s</xliff:g>を近くに置いてください。"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"デバイスが見つかりません。しばらくしてからもう一度お試しください。"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth、Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ウォッチ"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> の管理対象となるデバイスの選択"</string> <string name="chooser_title" msgid="2235819929238267637">"設定する<xliff:g id="PROFILE_NAME">%1$s</xliff:g>の選択"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>を探しています"</string> <string name="summary_watch" msgid="8134580124808507407">"このアプリは、通話相手の名前などの情報を同期したり、<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>の以下の権限にアクセスしたりできるようになります"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> に <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> の管理を許可しますか?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"デバイス"</string> diff --git a/packages/CompanionDeviceManager/res/values-ka/strings.xml b/packages/CompanionDeviceManager/res/values-ka/strings.xml index de1c8e1a19b7..d9bc50a4f9f5 100644 --- a/packages/CompanionDeviceManager/res/values-ka/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ka/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"კომპანიონი მოწყობილობების მენეჯერი"</string> <string name="confirmation_title" msgid="2244241995958340998">"ნებას რთავთ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> აპს, წვდომა ჰქონდეს <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> მოწყობილობაზე?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"დარწმუნდით, რომ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-ზე ჩართულია <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> და <xliff:g id="PROFILE_NAME">%3$s</xliff:g> იქონიეთ ახლოს."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"მოწყობილობები ვერ მოიძებნა. ცადეთ მოგვიანებით."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth და Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"საათი"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"აირჩიეთ მოწყობილობა, რომელიც უნდა მართოს <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> აპმა"</string> <string name="chooser_title" msgid="2235819929238267637">"აირჩიეთ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> დასაყენებლად"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>-ის ძებნა"</string> <string name="summary_watch" msgid="8134580124808507407">"ეს აპი შეძლებს ინფორმაციის (მაგალითად, იმ ადამიანის სახელი, რომელიც გირეკავთ) სინქრონიზებას და თქვენს <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-ზე არსებულ ამ ნებართვებზე წვდომას"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"ნება დართეთ <strong><xliff:g id="APP_NAME">%1$s</xliff:g>-ს</strong> მართოს <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"მოწყობილობა"</string> diff --git a/packages/CompanionDeviceManager/res/values-kk/strings.xml b/packages/CompanionDeviceManager/res/values-kk/strings.xml index 27492a035e8a..2fd8d96dfd7f 100644 --- a/packages/CompanionDeviceManager/res/values-kk/strings.xml +++ b/packages/CompanionDeviceManager/res/values-kk/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> қолданбасына <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>? құрылғысына кіруге рұқсат беріңіз"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Құрылғыдағы (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> қосулы болуын тексеріп, <xliff:g id="PROFILE_NAME">%3$s</xliff:g> құрылғысын маңайында ұстаңыз."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Ешқандай құрылғы табылмады. Кейінірек қайталап көріңіз."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth және Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"сағат"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> арқылы басқарылатын құрылғыны таңдаңыз"</string> <string name="chooser_title" msgid="2235819929238267637">"Реттеу үшін <xliff:g id="PROFILE_NAME">%1$s</xliff:g> таңдаңыз"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> құрылғысын іздеу"</string> <string name="summary_watch" msgid="8134580124808507407">"Бұл қолданба қоңырау шалушының аты сияқты деректі синхрондай алады және құрылғыдағы (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) осы рұқсаттарды пайдалана алады."</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> қолданбасына <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> құрылғысын басқаруға рұқсат беру керек пе?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"құрылғы"</string> diff --git a/packages/CompanionDeviceManager/res/values-km/strings.xml b/packages/CompanionDeviceManager/res/values-km/strings.xml index 55216e590683..77e2396cd3c9 100644 --- a/packages/CompanionDeviceManager/res/values-km/strings.xml +++ b/packages/CompanionDeviceManager/res/values-km/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"កម្មវិធីគ្រប់គ្រងឧបករណ៍ដៃគូ"</string> <string name="confirmation_title" msgid="2244241995958340998">"អនុញ្ញាតឱ្យកម្មវិធី <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ចូលប្រើ <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ឬ?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"សូមប្រាកដថា<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>នេះបានបើក<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> និងទុក<xliff:g id="PROFILE_NAME">%3$s</xliff:g>នៅជិតអ្នក។"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"រកមិនឃើញឧបករណ៍ទេ។ សូមព្យាយាមម្ដងទៀតនៅពេលក្រោយ។"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ប៊្លូធូស"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ប៊្លូធូស និង Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"នាឡិកា"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"ជ្រើសរើសឧបករណ៍ ដើម្បីដាក់ក្រោមការគ្រប់គ្រងរបស់ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"ជ្រើសរើស <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ដើម្បីរៀបចំ"</string> + <string name="single_device_title" msgid="4199861437545438606">"កំពុងស្វែងរក<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"កម្មវិធីនេះនឹងត្រូវបានអនុញ្ញាតឱ្យធ្វើសមកាលកម្មព័ត៌មាន ដូចជាឈ្មោះមនុស្សដែលហៅទូរសព្ទជាដើម និងចូលប្រើការអនុញ្ញាតទាំងនេះនៅលើ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> របស់អ្នក"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"អនុញ្ញាតឱ្យ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> គ្រប់គ្រង <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ឬ?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ឧបករណ៍"</string> diff --git a/packages/CompanionDeviceManager/res/values-kn/strings.xml b/packages/CompanionDeviceManager/res/values-kn/strings.xml index 7dcb4e379637..8320708da102 100644 --- a/packages/CompanionDeviceManager/res/values-kn/strings.xml +++ b/packages/CompanionDeviceManager/res/values-kn/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"ಕಂಪ್ಯಾನಿಯನ್ ಸಾಧನ ನಿರ್ವಾಹಕರು"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ಅನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸಬೇಕೆ?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ಈ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ನಲ್ಲಿ <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ಆನ್ ಆಗಿದೆಯೇ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ ಮತ್ತು ನಿಮ್ಮ <xliff:g id="PROFILE_NAME">%3$s</xliff:g> ಅನ್ನು ಸಮೀಪಲ್ಲಿಡಿ."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"ಯಾವುದೇ ಸಾಧನಗಳು ಕಂಡುಬಂದಿಲ್ಲ. ನಂತರ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ಬ್ಲೂಟೂತ್"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"ವೈ-ಫೈ"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ಬ್ಲೂಟೂತ್ ಮತ್ತು ವೈ-ಫೈ"</string> <string name="profile_name_watch" msgid="576290739483672360">"ವೀಕ್ಷಿಸಿ"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ಮೂಲಕ ನಿರ್ವಹಿಸಬೇಕಾದ ಸಾಧನವನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string> <string name="chooser_title" msgid="2235819929238267637">"ಸೆಟಪ್ ಮಾಡಲು <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ಅನ್ನು ಆರಿಸಿ"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> ಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ"</string> <string name="summary_watch" msgid="8134580124808507407">"ಯಾರೋ ಕರೆ ಮಾಡುವವರ ಹೆಸರಿನಂತಹ ಮಾಹಿತಿಯನ್ನು ಸಿಂಕ್ ಮಾಡಲು ಮತ್ತು <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ನಲ್ಲಿ ಈ ಅನುಮತಿಗಳನ್ನು ಆ್ಯಕ್ಸೆಸ್ ಮಾಡಲು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸಲಾಗುತ್ತದೆ"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>? ನಿರ್ವಹಿಸಲು <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ಗೆ ಅನುಮತಿಸಬೇಕೇ?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ಸಾಧನ"</string> diff --git a/packages/CompanionDeviceManager/res/values-ko/strings.xml b/packages/CompanionDeviceManager/res/values-ko/strings.xml index ff8ed1638062..ee4db7d681ad 100644 --- a/packages/CompanionDeviceManager/res/values-ko/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ko/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"부속 기기 관리자"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> 앱에서 <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>에 액세스하도록 허용하시겠습니까?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"이 <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>에서 <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> 기능을 사용 설정하고 <xliff:g id="PROFILE_NAME">%3$s</xliff:g> 기기를 근처에 두세요."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"기기를 찾을 수 없습니다. 나중에 다시 시도해 주세요."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"블루투스"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"블루투스 및 Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"시계"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>에서 관리할 기기 선택"</string> <string name="chooser_title" msgid="2235819929238267637">"설정할 <xliff:g id="PROFILE_NAME">%1$s</xliff:g> 선택"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> 찾는 중"</string> <string name="summary_watch" msgid="8134580124808507407">"이 앱이 정보(예: 발신자 이름)를 동기화하고 <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>에서 이러한 권한에 액세스할 수 있게 됩니다."</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>에서 <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> 기기를 관리하도록 허용하시겠습니까?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"기기"</string> diff --git a/packages/CompanionDeviceManager/res/values-ky/strings.xml b/packages/CompanionDeviceManager/res/values-ky/strings.xml index 8c39dd2dea6f..af01cf7c8d7d 100644 --- a/packages/CompanionDeviceManager/res/values-ky/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ky/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> колдонмосуна <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> түзмөгүнө кирүүгө уруксат бересизби?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"<xliff:g id="DEVICE_TYPE">%1$s</xliff:g> түзмөгүңүздөгү <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>ыкмасын күйгүзүп, <xliff:g id="PROFILE_NAME">%3$s</xliff:g> профилиңизди жакын кармаңыз."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Түзмөктөр табылган жок. Кийинчерээк кайталап көрүңүз."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth жана Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"саат"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> аркылуу башкарыла турган түзмөктү тандаңыз"</string> <string name="chooser_title" msgid="2235819929238267637">"Тууралоо үчүн <xliff:g id="PROFILE_NAME">%1$s</xliff:g> тандаңыз"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> профилин издөө"</string> <string name="summary_watch" msgid="8134580124808507407">"Бул колдонмого маалыматты, мисалы, чалып жаткан адамдын аты-жөнүн шайкештирүүгө жана <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> түзмөгүңүздө төмөнкүлөрдү аткарууга уруксат берилет"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> колдонмосуна <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> түзмөгүн тескөөгө уруксат бересизби?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"түзмөк"</string> diff --git a/packages/CompanionDeviceManager/res/values-lo/strings.xml b/packages/CompanionDeviceManager/res/values-lo/strings.xml index a7cc51e55c2d..d7f777d3c8f1 100644 --- a/packages/CompanionDeviceManager/res/values-lo/strings.xml +++ b/packages/CompanionDeviceManager/res/values-lo/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"ຕົວຈັດການອຸປະກອນປະກອບ"</string> <string name="confirmation_title" msgid="2244241995958340998">"ອະນຸຍາດໃຫ້ແອັບ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ເຂົ້າເຖິງ <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ບໍ?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ກວດສອບໃຫ້ໝັ້ນໃຈວ່າ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ເຄື່ອງນີ້ເປີດ <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ຢູ່ ແລະ ໃຫ້ຢູ່ໃກ້ກັບ <xliff:g id="PROFILE_NAME">%3$s</xliff:g>."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"ບໍ່ພົບອຸປະກອນ. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth ແລະ Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ໂມງ"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"ເລືອກອຸປະກອນທີ່ຈະໃຫ້ມີການຈັດການໂດຍ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"ເລືອກ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ທີ່ຈະຕັ້ງຄ່າ"</string> + <string name="single_device_title" msgid="4199861437545438606">"ກຳລັງຊອກຫາ <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"ແອັບນີ້ຈະໄດ້ຮັບອະນຸຍາດໃຫ້ຊິ້ງຂໍ້ມູນ ເຊັ່ນ: ຊື່ຂອງຄົນທີ່ໂທເຂົ້າ ແລະ ສິດເຂົ້າເຖິງການອະນຸຍາດເຫຼົ່ານີ້ຢູ່ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ຂອງທ່ານ"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"ອະນຸຍາດ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ຈັດການ <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ບໍ?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ອຸປະກອນ"</string> diff --git a/packages/CompanionDeviceManager/res/values-lt/strings.xml b/packages/CompanionDeviceManager/res/values-lt/strings.xml index b537508b8f7b..9fcf0fa22c67 100644 --- a/packages/CompanionDeviceManager/res/values-lt/strings.xml +++ b/packages/CompanionDeviceManager/res/values-lt/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Leisti programai <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> pasiekti <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Įsitikinkite, kad šiame įrenginyje (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) įjungta <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ir kad <xliff:g id="PROFILE_NAME">%3$s</xliff:g> yra netoliese."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nerasta jokių įrenginių. Vėliau bandykite dar kartą."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"„Bluetooth“ ir „Wi-Fi“"</string> <string name="profile_name_watch" msgid="576290739483672360">"laikrodį"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Įrenginio, kuris bus valdomas naudojant programą <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>, pasirinkimas"</string> <string name="chooser_title" msgid="2235819929238267637">"Norimo nustatyti <xliff:g id="PROFILE_NAME">%1$s</xliff:g> pasirinkimas"</string> + <string name="single_device_title" msgid="4199861437545438606">"Ieškoma <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Šiai programai bus leidžiama sinchronizuoti tam tikrą informaciją, pvz., skambinančio asmens vardą, ir pasiekti toliau nurodytus <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> leidimus"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Leisti <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> valdyti <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"įrenginio"</string> diff --git a/packages/CompanionDeviceManager/res/values-lv/strings.xml b/packages/CompanionDeviceManager/res/values-lv/strings.xml index e310fe2ca887..39b158d58666 100644 --- a/packages/CompanionDeviceManager/res/values-lv/strings.xml +++ b/packages/CompanionDeviceManager/res/values-lv/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Palīgierīču pārzinis"</string> <string name="confirmation_title" msgid="2244241995958340998">"Vai atļaut lietotnei <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> piekļūt lietotnei <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Noteikti ieslēdziet šajā ierīcē (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> un gādājiet, lai <xliff:g id="PROFILE_NAME">%3$s</xliff:g> būtu tuvumā."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nav atrasta neviena ierīce. Lūdzu, vēlāk mēģiniet vēlreiz."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi‑Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth un Wi‑Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"pulkstenis"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Izvēlieties ierīci, ko pārvaldīt lietotnē <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Jāizvēlas <xliff:g id="PROFILE_NAME">%1$s</xliff:g> iestatīšanai"</string> + <string name="single_device_title" msgid="4199861437545438606">"Tiek meklēta ierīce (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>)…"</string> <string name="summary_watch" msgid="8134580124808507407">"Šī lietotne drīkstēs sinhronizēt informāciju, piemēram, zvanītāja vārdu, un piekļūt šīm <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> atļaujām."</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vai atļaut lietotnei <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> piekļūt ierīcei <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ierīce"</string> diff --git a/packages/CompanionDeviceManager/res/values-mk/strings.xml b/packages/CompanionDeviceManager/res/values-mk/strings.xml index 08b422bc12cf..107895d5a8da 100644 --- a/packages/CompanionDeviceManager/res/values-mk/strings.xml +++ b/packages/CompanionDeviceManager/res/values-mk/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Дозволувате апликацијата <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> да пристапува до <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Погрижете се <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> да биде вклучен на овој <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> и вашиот <xliff:g id="PROFILE_NAME">%3$s</xliff:g> да биде во близина."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Не се најдени уреди. Обидете се повторно подоцна."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth и Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"часовник"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Изберете уред со којшто ќе управува <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Изберете <xliff:g id="PROFILE_NAME">%1$s</xliff:g> за поставување"</string> + <string name="single_device_title" msgid="4199861437545438606">"Се бара <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Оваа апликација ќе има дозвола да ги синхронизира податоците како што се имињата на јавувачите и да пристапува до следниве дозволи на вашиот <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Ќе дозволите <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> да управува со <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"уред"</string> diff --git a/packages/CompanionDeviceManager/res/values-ml/strings.xml b/packages/CompanionDeviceManager/res/values-ml/strings.xml index ab9671ed540f..de50fc721522 100644 --- a/packages/CompanionDeviceManager/res/values-ml/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ml/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"കമ്പാനിയൻ ഉപകരണ മാനേജർ"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ആക്സസ് ചെയ്യാൻ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> എന്ന ആപ്പിനെ അനുവദിക്കണോ?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ഈ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> എന്നതിൽ <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ഓണാക്കിയിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തുക, നിങ്ങളുടെ <xliff:g id="PROFILE_NAME">%3$s</xliff:g> സമീപം വയ്ക്കുക."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"ഉപകരണങ്ങളൊന്നും കണ്ടെത്തിയില്ല. പിന്നീട് വീണ്ടും ശ്രമിക്കുക."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"വൈഫൈ"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth-ഉം വൈഫൈയും"</string> <string name="profile_name_watch" msgid="576290739483672360">"വാച്ച്"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ഉപയോഗിച്ച് മാനേജ് ചെയ്യുന്നതിന് ഒരു ഉപകരണം തിരഞ്ഞെടുക്കുക"</string> <string name="chooser_title" msgid="2235819929238267637">"സജ്ജീകരിക്കാൻ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> തിരഞ്ഞെടുക്കുക"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> തിരയുകയാണ്"</string> <string name="summary_watch" msgid="8134580124808507407">"വിളിക്കുന്നയാളുടെ പേര് പോലുള്ള വിവരങ്ങൾ സമന്വയിപ്പിക്കാനും നിങ്ങളുടെ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> എന്നതിൽ ഈ അനുമതികൾ ആക്സസ് ചെയ്യാനും ഈ ആപ്പിനെ അനുവദിക്കും"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>? മാനേജ് ചെയ്യാൻ, <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> എന്നതിനെ അനുവദിക്കുക"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ഉപകരണം"</string> diff --git a/packages/CompanionDeviceManager/res/values-mn/strings.xml b/packages/CompanionDeviceManager/res/values-mn/strings.xml index 7b0a08ae1aca..e76f68843f59 100644 --- a/packages/CompanionDeviceManager/res/values-mn/strings.xml +++ b/packages/CompanionDeviceManager/res/values-mn/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>-д <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> аппыг хандахыг зөвшөөрөх үү?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Энэ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>-д <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>-г асаасан эсэхийг нягталж, өөрийн <xliff:g id="PROFILE_NAME">%3$s</xliff:g>-г ойр байлгана уу."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Ямар ч төхөөрөмж олдсонгүй. Дараа дахин оролдоно уу."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth, Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"цаг"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>-н удирдах төхөөрөмжийг сонгоно уу"</string> <string name="chooser_title" msgid="2235819929238267637">"Тохируулахын тулд <xliff:g id="PROFILE_NAME">%1$s</xliff:g> сонгоно уу"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g>-г хайж байна"</string> <string name="summary_watch" msgid="8134580124808507407">"Энэ аппад залгаж буй хэн нэгний нэр зэрэг мэдээллийг синк хийх болон таны <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> дээрх эдгээр зөвшөөрөлд хандахыг зөвшөөрнө"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>-д <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>-г удирдахыг зөвшөөрөх үү?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"төхөөрөмж"</string> diff --git a/packages/CompanionDeviceManager/res/values-mr/strings.xml b/packages/CompanionDeviceManager/res/values-mr/strings.xml index e18f86e5cdfb..722156213623 100644 --- a/packages/CompanionDeviceManager/res/values-mr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-mr/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"सहयोगी डिव्हाइस व्यवस्थापक"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> अॅपला <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> अॅक्सेस करण्याची अनुमती द्यायची आहे का?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"या <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> चे <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> सुरू असल्याची खात्री करा आणि तुमचे<xliff:g id="PROFILE_NAME">%3$s</xliff:g> जवळ ठेवा."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"डिव्हाइस आढळली नाहीत. कृपया नंतर पुन्हा प्रयत्न करा."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ब्लूटूथ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"वाय-फाय"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ब्लूटूथ आणि वाय-फाय"</string> <string name="profile_name_watch" msgid="576290739483672360">"वॉच"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> द्वारे व्यवस्थापित करण्यासाठी डिव्हाइस निवडा"</string> <string name="chooser_title" msgid="2235819929238267637">"सेट करण्यासाठी <xliff:g id="PROFILE_NAME">%1$s</xliff:g> निवडा"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> शोधत आहे"</string> <string name="summary_watch" msgid="8134580124808507407">"या अॅपला कॉल करत असलेल्या एखाद्या व्यक्तीचे नाव यासारखी माहिती सिंक करण्याची आणि तुमच्या <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> वर पुढील परवानग्या अॅक्सेस करण्याची अनुमती दिली जाईल"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ला <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> व्यवस्थापित करण्याची अनुमती द्यायची आहे?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"डिव्हाइस"</string> diff --git a/packages/CompanionDeviceManager/res/values-ms/strings.xml b/packages/CompanionDeviceManager/res/values-ms/strings.xml index 31cb3b756c6f..ca41c6fe58d2 100644 --- a/packages/CompanionDeviceManager/res/values-ms/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ms/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Pengurus Peranti Rakan"</string> <string name="confirmation_title" msgid="2244241995958340998">"Benarkan apl <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> mengakses <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Pastikan <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> telah dihidupkan pada <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ini dan pastikan <xliff:g id="PROFILE_NAME">%3$s</xliff:g> berada berdekatan."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Tiada peranti ditemukan. Sila cuba sebentar lagi."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth dan Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"jam tangan"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Pilih peranti untuk diurus oleh <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Pilih <xliff:g id="PROFILE_NAME">%1$s</xliff:g> untuk disediakan"</string> + <string name="single_device_title" msgid="4199861437545438606">"Mencari <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Apl ini akan dibenarkan untuk menyegerakkan maklumat, seperti nama individu yang membuat panggilan dan mengakses kebenaran ini pada <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> anda"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Benarkan <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> mengurus <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"peranti"</string> diff --git a/packages/CompanionDeviceManager/res/values-my/strings.xml b/packages/CompanionDeviceManager/res/values-my/strings.xml index 0b0273f67aae..f03048bbc997 100644 --- a/packages/CompanionDeviceManager/res/values-my/strings.xml +++ b/packages/CompanionDeviceManager/res/values-my/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"တွဲဖက်ကိရိယာ မန်နေဂျာ"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ကို သုံးရန် <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> အက်ပ်ကို ခွင့်ပြုမလား။"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ဤ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> သည် <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ဖွင့်ထားပြီး သင့် <xliff:g id="PROFILE_NAME">%3$s</xliff:g> အနီးတွင်ရှိကြောင်း သေချာပါစေ။"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"မည်သည့်စက်မျှ မတွေ့ပါ။ နောက်မှ ထပ်စမ်းကြည့်ပါ။"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ဘလူးတုသ်"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ဘလူးတုသ်၊ Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"နာရီ"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> က စီမံခန့်ခွဲရန် စက်တစ်ခုကို ရွေးပါ"</string> <string name="chooser_title" msgid="2235819929238267637">"စနစ်ထည့်သွင်းရန် <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ကို ရွေးပါ"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> ကို ရှာနေသည်"</string> <string name="summary_watch" msgid="8134580124808507407">"ခေါ်ဆိုသူ၏အမည်ကဲ့သို့ အချက်အလက်ကို စင့်ခ်လုပ်ရန်နှင့် သင့် <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> တွင် ၎င်းခွင့်ပြုချက်များရယူရန် ဤအက်ပ်ကိုခွင့်ပြုမည်"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ကို <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> အား စီမံခွင့်ပြုမလား။"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"စက်"</string> diff --git a/packages/CompanionDeviceManager/res/values-nb/strings.xml b/packages/CompanionDeviceManager/res/values-nb/strings.xml index ccb2c572f6f7..1d62349da406 100644 --- a/packages/CompanionDeviceManager/res/values-nb/strings.xml +++ b/packages/CompanionDeviceManager/res/values-nb/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Vil du gi <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>-appen tilgang til <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Sørg for at <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> har <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> slått på, og hold <xliff:g id="PROFILE_NAME">%3$s</xliff:g> i nærheten."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Fant ingen enheter. Prøv på nytt senere."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wifi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth og wifi"</string> <string name="profile_name_watch" msgid="576290739483672360">"klokke"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Velg en enhet som skal administreres av <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Velg <xliff:g id="PROFILE_NAME">%1$s</xliff:g> som skal konfigureres"</string> + <string name="single_device_title" msgid="4199861437545438606">"Ser etter en <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Denne appen får tillatelse til å synkronisere informasjon, for eksempel navnet til folk som ringer, og har disse tillatelsene på <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vil du la <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> administrere <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"enheten"</string> diff --git a/packages/CompanionDeviceManager/res/values-ne/strings.xml b/packages/CompanionDeviceManager/res/values-ne/strings.xml index 203eaeedbd4c..b363c4bdcfbb 100644 --- a/packages/CompanionDeviceManager/res/values-ne/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ne/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"सहयोगी डिभाइसको प्रबन्धक"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> एपलाई <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> प्रयोग गर्ने अनुमति दिने हो?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"यो <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> को <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> अन गरिएको छ भन्ने कुरा सुनिश्चित गर्नुहोस् अनि आफ्नो <xliff:g id="PROFILE_NAME">%3$s</xliff:g> नजिकै राख्नुहोस्।"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"कुनै पनि डिभाइस भेटिएन। कृपया पछि फेरि प्रयास गर्नुहोस्।"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ब्लुटुथ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ब्लुटुथ तथा Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"घडी"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"आफूले <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> प्रयोग गरी व्यवस्थापन गर्न चाहेको डिभाइस चयन गर्नुहोस्"</string> <string name="chooser_title" msgid="2235819929238267637">"सेट अप गर्नका लागि <xliff:g id="PROFILE_NAME">%1$s</xliff:g> छनौट गर्नुहोस्"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> खोजिँदै छ"</string> <string name="summary_watch" msgid="8134580124808507407">"तपाईंको <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> मा यो एपलाई कल गर्ने व्यक्तिको नाम जस्ता जानकारी सिंक गर्ने र यी कुराहरू गर्ने अनुमति दिइने छ"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> लाई <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> व्यवस्थापन गर्ने अनुमति दिने हो?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"डिभाइस"</string> diff --git a/packages/CompanionDeviceManager/res/values-nl/strings.xml b/packages/CompanionDeviceManager/res/values-nl/strings.xml index 069c00c85cfc..5e389611eaa4 100644 --- a/packages/CompanionDeviceManager/res/values-nl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-nl/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Toestaan dat de app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> toegang heeft tot de <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Zorg dat <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> aanstaat op deze <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> en houd je <xliff:g id="PROFILE_NAME">%3$s</xliff:g> in de buurt."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Geen apparaten gevonden. Probeer het later opnieuw."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wifi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth en wifi"</string> <string name="profile_name_watch" msgid="576290739483672360">"smartwatch"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Een apparaat kiezen om te beheren met <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Een <xliff:g id="PROFILE_NAME">%1$s</xliff:g> kiezen om in te stellen"</string> + <string name="single_device_title" msgid="4199861437545438606">"Zoeken naar een <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Deze app kan informatie synchroniseren (zoals de naam van iemand die belt) en krijgt toegang tot deze rechten op je <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> toestaan <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> te beheren?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"apparaat"</string> diff --git a/packages/CompanionDeviceManager/res/values-or/strings.xml b/packages/CompanionDeviceManager/res/values-or/strings.xml index a1a6c9023503..14dcc18a532d 100644 --- a/packages/CompanionDeviceManager/res/values-or/strings.xml +++ b/packages/CompanionDeviceManager/res/values-or/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"ସହଯୋଗୀ ଡିଭାଇସ୍ ପରିଚାଳକ"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>କୁ ଆକ୍ସେସ କରିବା ପାଇଁ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ଆପକୁ ଅନୁମତି ଦେବେ?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ସୁନିଶ୍ଚିତ ହୁଏନ୍ତୁ ଏହି <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>ରେ <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ଚାଲୁ କରାଯାଇଛି ଏବଂ ଆପଣଙ୍କର <xliff:g id="PROFILE_NAME">%3$s</xliff:g> ଆଖପାଖରେ ରଖନ୍ତୁ।"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"କୌଣସି ଡିଭାଇସ ମିଳିଲା ନାହିଁ। ଦୟାକରି ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ବ୍ଲୁଟୁଥ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"ୱାଇ-ଫାଇ"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ବ୍ଲୁଟୁଥ ଏବଂ ୱାଇ-ଫାଇ"</string> <string name="profile_name_watch" msgid="576290739483672360">"ୱାଚ୍"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ଦ୍ୱାରା ପରିଚାଳିତ ହେବା ପାଇଁ ଏକ ଡିଭାଇସ ବାଛନ୍ତୁ"</string> <string name="chooser_title" msgid="2235819929238267637">"ସେଟ ଅପ କରିବାକୁ ଏକ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ବାଛନ୍ତୁ"</string> + <string name="single_device_title" msgid="4199861437545438606">"ଏକ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ଖୋଜୁଛନ୍ତି"</string> <string name="summary_watch" msgid="8134580124808507407">"କଲ କରୁଥିବା ଯେ କୌଣସି ବ୍ୟକ୍ତିଙ୍କ ନାମ ପରି ସୂଚନା ସିଙ୍କ କରିବାକୁ ଏବଂ ଆପଣଙ୍କ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>ରେ ଏହି ଅନୁମତିଗୁଡ଼ିକୁ ଆକ୍ସେସ କରିବା ପାଇଁ ଏହି ଆପକୁ ଅନୁମତି ଦିଆଯିବ"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>କୁ ପରିଚାଳନା କରିବା ପାଇଁ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>କୁ ଅନୁମତି ଦେବେ?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ଡିଭାଇସ"</string> diff --git a/packages/CompanionDeviceManager/res/values-pa/strings.xml b/packages/CompanionDeviceManager/res/values-pa/strings.xml index cd40ec7a5579..c2db62f88248 100644 --- a/packages/CompanionDeviceManager/res/values-pa/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pa/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"ਸੰਬੰਧੀ ਡੀਵਾਈਸ ਪ੍ਰਬੰਧਕ"</string> <string name="confirmation_title" msgid="2244241995958340998">"ਕੀ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ਐਪ ਨੂੰ <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ਪੱਕਾ ਕਰੋ ਕਿ ਇਸ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ਦਾ <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ਚਾਲੂ ਹੋਵੇ ਅਤੇ <xliff:g id="PROFILE_NAME">%3$s</xliff:g> ਨੂੰ ਆਪਣੇ ਨਜ਼ਦੀਕ ਰੱਖੋ।"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"ਕੋਈ ਡੀਵਾਈਸ ਨਹੀਂ ਮਿਲਿਆ। ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"ਬਲੂਟੁੱਥ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"ਵਾਈ-ਫਾਈ"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"ਬਲੂਟੁੱਥ ਅਤੇ ਵਾਈ-ਫਾਈ"</string> <string name="profile_name_watch" msgid="576290739483672360">"ਸਮਾਰਟ-ਵਾਚ"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤੇ ਜਾਣ ਲਈ ਕੋਈ ਡੀਵਾਈਸ ਚੁਣੋ"</string> <string name="chooser_title" msgid="2235819929238267637">"ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ਚੁਣੋ"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> ਨੂੰ ਲੱਭਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string> <string name="summary_watch" msgid="8134580124808507407">"ਇਸ ਐਪ ਨੂੰ ਤੁਹਾਡੇ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> \'ਤੇ ਕਾਲਰ ਦੇ ਨਾਮ ਵਰਗੀ ਜਾਣਕਾਰੀ ਨੂੰ ਸਿੰਕ ਕਰਨ ਅਤੇ ਇਨ੍ਹਾਂ ਇਜਾਜ਼ਤਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦੀ ਆਗਿਆ ਹੋਵੇਗੀ"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"ਕੀ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ਨੂੰ <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"ਡੀਵਾਈਸ"</string> diff --git a/packages/CompanionDeviceManager/res/values-pl/strings.xml b/packages/CompanionDeviceManager/res/values-pl/strings.xml index b16776631dfc..90bc1e3bc34b 100644 --- a/packages/CompanionDeviceManager/res/values-pl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pl/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Menedżer urządzeń towarzyszących"</string> <string name="confirmation_title" msgid="2244241995958340998">"Zezwolić aplikacji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> na dostęp do urządzenia <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Upewnij się, że <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ma włączoną funkcję <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>, i trzymaj urządzenie <xliff:g id="PROFILE_NAME">%3$s</xliff:g> w pobliżu."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nie znaleziono urządzeń. Spróbuj ponownie później."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth i Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"zegarek"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Wybierz urządzenie, którym ma zarządzać aplikacja <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Wybierz profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, aby go skonfigurować"</string> + <string name="single_device_title" msgid="4199861437545438606">"Szukam: <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Aplikacja będzie mogła synchronizować informacje takie jak nazwa dzwoniącego oraz korzystać z tych uprawnień na Twoim urządzeniu (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Zezwolić na dostęp aplikacji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> do urządzenia <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"urządzenie"</string> diff --git a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml index a6c09d06f143..073fa260c401 100644 --- a/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pt-rBR/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gerenciador de dispositivos complementar"</string> <string name="confirmation_title" msgid="2244241995958340998">"Permitir que o app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acesse o dispositivo <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Confira se o <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> tem o <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ativado e se o <xliff:g id="PROFILE_NAME">%3$s</xliff:g> está por perto."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nenhum dispositivo foi encontrado. Tente de novo mais tarde."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth e Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"relógio"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Escolha um dispositivo para ser gerenciado pelo app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Escolha um <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para configurar"</string> + <string name="single_device_title" msgid="4199861437545438606">"Procurando um <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"O app poderá sincronizar informações, como o nome de quem está ligando, e acessar estas permissões no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permitir que o app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> gerencie o dispositivo <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string> diff --git a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml index 01af6df4f89d..bec6f11edf51 100644 --- a/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pt-rPT/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gestor de dispositivos associados"</string> <string name="confirmation_title" msgid="2244241995958340998">"Permitir que a app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> aceda ao <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Certifique-se de que este <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> tem o <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ativado e mantenha o <xliff:g id="PROFILE_NAME">%3$s</xliff:g> próximo."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nenhum dispositivo encontrado. Tente mais tarde."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth e Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"relógio"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Escolha um dispositivo para ser gerido pela app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Escolha um perfil de <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para configurar"</string> + <string name="single_device_title" msgid="4199861437545438606">"À procura de um <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Esta app vai poder sincronizar informações, como o nome do autor de uma chamada, e aceder a estas autorizações no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permita que a app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> faça a gestão do dispositivo <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string> diff --git a/packages/CompanionDeviceManager/res/values-pt/strings.xml b/packages/CompanionDeviceManager/res/values-pt/strings.xml index a6c09d06f143..073fa260c401 100644 --- a/packages/CompanionDeviceManager/res/values-pt/strings.xml +++ b/packages/CompanionDeviceManager/res/values-pt/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Gerenciador de dispositivos complementar"</string> <string name="confirmation_title" msgid="2244241995958340998">"Permitir que o app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> acesse o dispositivo <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Confira se o <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> tem o <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ativado e se o <xliff:g id="PROFILE_NAME">%3$s</xliff:g> está por perto."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nenhum dispositivo foi encontrado. Tente de novo mais tarde."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth e Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"relógio"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Escolha um dispositivo para ser gerenciado pelo app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Escolha um <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para configurar"</string> + <string name="single_device_title" msgid="4199861437545438606">"Procurando um <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"O app poderá sincronizar informações, como o nome de quem está ligando, e acessar estas permissões no seu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permitir que o app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> gerencie o dispositivo <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispositivo"</string> diff --git a/packages/CompanionDeviceManager/res/values-ro/strings.xml b/packages/CompanionDeviceManager/res/values-ro/strings.xml index 2b8b5e10b792..40ae72e6f10d 100644 --- a/packages/CompanionDeviceManager/res/values-ro/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ro/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Manager de dispozitiv Companion"</string> <string name="confirmation_title" msgid="2244241995958340998">"Permiți ca <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> să acceseze dispozitivul <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Asigură-te că dispozitivul <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> are activat <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> și ține <xliff:g id="PROFILE_NAME">%3$s</xliff:g> în apropiere."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nu s-au găsit dispozitive. Încearcă din nou mai târziu."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth și Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ceas"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Alege un dispozitiv pe care să îl gestioneze <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Alege un <xliff:g id="PROFILE_NAME">%1$s</xliff:g> de configurat"</string> + <string name="single_device_title" msgid="4199861437545438606">"Se caută un <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Aplicația va putea să sincronizeze informații, cum ar fi numele unui apelant, și să acceseze aceste permisiuni pe <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Permiți ca <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> să gestioneze <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"dispozitiv"</string> diff --git a/packages/CompanionDeviceManager/res/values-ru/strings.xml b/packages/CompanionDeviceManager/res/values-ru/strings.xml index 605fbd9bbc60..42acfb7a4d36 100644 --- a/packages/CompanionDeviceManager/res/values-ru/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ru/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Управление подключенными устройствами"</string> <string name="confirmation_title" msgid="2244241995958340998">"Разрешить приложению <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> доступ к устройству <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Убедитесь, что <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> может устанавливать соединение с другими устройствами по <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> и что нужные настройки включены. Не убирайте <xliff:g id="PROFILE_NAME">%3$s</xliff:g> далеко от него."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Устройства не найдены. Повторите попытку позже."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth и Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"часы"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Выберите устройство, которым будет управлять приложение <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Выберите <xliff:g id="PROFILE_NAME">%1$s</xliff:g> для настройки"</string> + <string name="single_device_title" msgid="4199861437545438606">"Поиск устройства (<xliff:g id="PROFILE_NAME">%1$s</xliff:g>)"</string> <string name="summary_watch" msgid="8134580124808507407">"Это приложение сможет синхронизировать данные, например имена звонящих, и получит такие же разрешения на вашем устройстве (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>)."</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Разрешить приложению <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> управлять устройством <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"устройстве"</string> diff --git a/packages/CompanionDeviceManager/res/values-si/strings.xml b/packages/CompanionDeviceManager/res/values-si/strings.xml index 63024cac9c25..cc04f4b197c9 100644 --- a/packages/CompanionDeviceManager/res/values-si/strings.xml +++ b/packages/CompanionDeviceManager/res/values-si/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"සහායක උපාංග කළමනාකරු"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> යෙදුමට <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> වෙත ප්රවේශ වීමට ඉඩ දෙන්න ද?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"මෙම <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ක්රියාත්මක කර ඇති බවට වග බලා ගන්න, සහ ඔබේ <xliff:g id="PROFILE_NAME">%3$s</xliff:g> ළඟ තබා ගන්න."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"උපාංග හමු නොවිණි. පසුව නැවත උත්සාහ කරන්න."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"බ්ලූටූත්"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"බ්ලූටූත් සහ Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ඔරලෝසුව"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> විසින් කළමනා කරනු ලැබීමට උපාංගයක් තෝරන්න"</string> <string name="chooser_title" msgid="2235819929238267637">"සැකසීමට <xliff:g id="PROFILE_NAME">%1$s</xliff:g>ක් තෝරන්න"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> සඳහා සොයමින්"</string> <string name="summary_watch" msgid="8134580124808507407">"මෙම යෙදුමට අමතන කෙනෙකුගේ නම වැනි, තතු සමමුහුර්ත කිරීමට, සහ ඔබේ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> මත මෙම අවසර වෙත ප්රවේශ වීමට ඉඩ දෙනු ඇත"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> හට <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> කළමනා කිරීමට ඉඩ දෙන්න ද?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"උපාංගය"</string> diff --git a/packages/CompanionDeviceManager/res/values-sk/strings.xml b/packages/CompanionDeviceManager/res/values-sk/strings.xml index f80ceca5ead9..9ee2ce574cc0 100644 --- a/packages/CompanionDeviceManager/res/values-sk/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sk/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Správca sprievodných zariadení"</string> <string name="confirmation_title" msgid="2244241995958340998">"Chcete povoliť aplikácii <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> prístup k zariadeniu <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Uistite sa, že tento typ zariadenia (<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>) má zapnutú funkciu <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>, a majte <xliff:g id="PROFILE_NAME">%3$s</xliff:g> nablízku."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nenašli sa žiadne zariadenia. Skúste to neskôr."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth a Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"hodinky"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Vyberte zariadenie, ktoré bude spravovať aplikácia <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Vyberte profil <xliff:g id="PROFILE_NAME">%1$s</xliff:g>, ktorý nastavíte"</string> + <string name="single_device_title" msgid="4199861437545438606">"Hľadá sa zariadenie <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Táto aplikácia bude môcť synchronizovať informácie, napríklad meno volajúceho, a získavať prístup k týmto povoleniam v zariadení <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Chcete povoliť aplikácii <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> spravovať zariadenie <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"zariadenie"</string> diff --git a/packages/CompanionDeviceManager/res/values-sl/strings.xml b/packages/CompanionDeviceManager/res/values-sl/strings.xml index 2db2b7861003..3d08276d0e19 100644 --- a/packages/CompanionDeviceManager/res/values-sl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sl/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Upravitelj spremljevalnih naprav"</string> <string name="confirmation_title" msgid="2244241995958340998">"Želite aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> dovoliti dostop do naprave <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Poskrbite, da je v napravi <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> vklopljena nastavitev »<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>«, in napravo <xliff:g id="PROFILE_NAME">%3$s</xliff:g> imejte v bližini."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Ni naprav. Poskusite znova pozneje."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth in Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ura"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Izbira naprave, ki jo bo upravljala aplikacija <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Izberite profil naprave »<xliff:g id="PROFILE_NAME">%1$s</xliff:g>« za nastavitev"</string> + <string name="single_device_title" msgid="4199861437545438606">"Iskanje naprave <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Ta aplikacija bo lahko sinhronizirala podatke, na primer ime klicatelja, in dostopala do teh dovoljenj v napravi »<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>«."</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Želite aplikaciji <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> dovoliti upravljanje naprave <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"naprava"</string> diff --git a/packages/CompanionDeviceManager/res/values-sq/strings.xml b/packages/CompanionDeviceManager/res/values-sq/strings.xml index 45f008db9594..de3232201da0 100644 --- a/packages/CompanionDeviceManager/res/values-sq/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sq/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Menaxheri i pajisjes shoqëruese"</string> <string name="confirmation_title" msgid="2244241995958340998">"T\'i lejohet aplikacionit <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> qasja te <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Sigurohu që ky <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> të ketë të aktivizuar<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> dhe mbaje <xliff:g id="PROFILE_NAME">%3$s</xliff:g> tënde pranë."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Nuk u gjet asnjë pajisje. Provo përsëri më vonë."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth-in"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth-in dhe Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"ora inteligjente"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Zgjidh një pajisje që do të menaxhohet nga <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Zgjidh një <xliff:g id="PROFILE_NAME">%1$s</xliff:g> për konfigurimin"</string> + <string name="single_device_title" msgid="4199861437545438606">"Po kërkon për një <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Këtij aplikacioni do t\'i lejohet të sinkronizojë informacione, si p.sh. emrin e dikujt që po telefonon, si dhe të ketë qasje në këto leje te <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Të lejohet që <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> të menaxhojë <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"pajisje"</string> diff --git a/packages/CompanionDeviceManager/res/values-sr/strings.xml b/packages/CompanionDeviceManager/res/values-sr/strings.xml index 650d2d892e90..a86d1e1a5639 100644 --- a/packages/CompanionDeviceManager/res/values-sr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sr/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Менаџер придруженог уређаја"</string> <string name="confirmation_title" msgid="2244241995958340998">"Дозволите да апликација <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> приступа уређају <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Уверите се да је за <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> укључен <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> и да у близини имате <xliff:g id="PROFILE_NAME">%3$s</xliff:g>."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Није пронађен ниједан уређај. Пробајте поново касније."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"WiFi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth и WiFi"</string> <string name="profile_name_watch" msgid="576290739483672360">"сат"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Одаберите уређај којим ће управљати апликација <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Одаберите профил <xliff:g id="PROFILE_NAME">%1$s</xliff:g> који желите да подесите"</string> + <string name="single_device_title" msgid="4199861437545438606">"Тражи се <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Овој апликацији ће бити дозвољено да синхронизује податке, попут имена позиваоца, и приступа тим дозволама на уређају <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Желите ли да дозволите да <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> управља уређајем <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"уређај"</string> diff --git a/packages/CompanionDeviceManager/res/values-sv/strings.xml b/packages/CompanionDeviceManager/res/values-sv/strings.xml index d28bff87b674..779079092f50 100644 --- a/packages/CompanionDeviceManager/res/values-sv/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sv/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Vill du tillåta att appen <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> får åtkomst till <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Se till att <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> har <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> aktiverat och håll <xliff:g id="PROFILE_NAME">%3$s</xliff:g> i närheten."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Inga enheter hittades. Försök igen senare."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wifi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth och wifi"</string> <string name="profile_name_watch" msgid="576290739483672360">"klocka"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Välj en enhet för hantering av <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Välj en <xliff:g id="PROFILE_NAME">%1$s</xliff:g> för konfigurering"</string> + <string name="single_device_title" msgid="4199861437545438606">"Söker efter ett <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Appen får synkronisera information, till exempel namnet på någon som ringer, och får åtkomst till dessa behörigheter på din <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Tillåt att <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> hanterar <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"enhet"</string> diff --git a/packages/CompanionDeviceManager/res/values-sw/strings.xml b/packages/CompanionDeviceManager/res/values-sw/strings.xml index afa3ea63b5bf..c0108372a318 100644 --- a/packages/CompanionDeviceManager/res/values-sw/strings.xml +++ b/packages/CompanionDeviceManager/res/values-sw/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Kidhibiti cha Vifaa Visaidizi"</string> <string name="confirmation_title" msgid="2244241995958340998">"Ungependa kuruhusu <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ifikie <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Hakikisha kuwa umewasha <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> kwenye <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> na uweke <xliff:g id="PROFILE_NAME">%3$s</xliff:g> karibu nawe."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Hakuna vifaa vilivyopatikana. Tafadhali jaribu tena baadaye."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth na Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"saa"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Chagua kifaa cha kudhibitiwa na <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Chagua <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ili uweke mipangilio"</string> + <string name="single_device_title" msgid="4199861437545438606">"Inatafuta <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Programu hii itaruhusiwa kusawazisha maelezo, kama vile jina la mtu anayepiga simu na kufikia ruhusa hizi kwenye <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> yako"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Ungependa kuruhusu <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> idhibiti <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"kifaa"</string> diff --git a/packages/CompanionDeviceManager/res/values-ta/strings.xml b/packages/CompanionDeviceManager/res/values-ta/strings.xml index fd2038a07dd6..96f7d6310a07 100644 --- a/packages/CompanionDeviceManager/res/values-ta/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ta/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"கம்பேனியன் சாதன நிர்வாகி"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> சாதனத்தை அணுக <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ஆப்ஸை அனுமதிக்கவா?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"இந்த <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> சாதனத்தின் <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ஆன் செய்யப்பட்டு, அதன் அருகில் உங்கள் <xliff:g id="PROFILE_NAME">%3$s</xliff:g> இருப்பதை உறுதிசெய்துகொள்ளவும்."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"சாதனங்கள் எதுவும் கண்டறியப்படவில்லை. பிறகு முயலவும்."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"புளூடூத்"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"வைஃபை"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"புளூடூத் மற்றும் வைஃபை"</string> <string name="profile_name_watch" msgid="576290739483672360">"வாட்ச்"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ஆப்ஸால் நிர்வகிக்கப்பட வேண்டிய சாதனத்தைத் தேர்வுசெய்யுங்கள்"</string> <string name="chooser_title" msgid="2235819929238267637">"அமைக்க <xliff:g id="PROFILE_NAME">%1$s</xliff:g> ஐத் தேர்வுசெய்யவும்"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> ஐத் தேடுகிறது"</string> <string name="summary_watch" msgid="8134580124808507407">"அழைப்பவரின் பெயர் போன்ற தகவல்களை ஒத்திசைக்கவும் உங்கள் <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> சாதனத்தில் இந்த அனுமதிகளை அணுகவும் இந்த ஆப்ஸ் அனுமதிக்கப்படும்"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong&gt சாதனத்தை நிர்வகிக்க <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ஆப்ஸை அனுமதிக்கவா?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"சாதனம்"</string> diff --git a/packages/CompanionDeviceManager/res/values-te/strings.xml b/packages/CompanionDeviceManager/res/values-te/strings.xml index 8466921f3634..b39b58a39df7 100644 --- a/packages/CompanionDeviceManager/res/values-te/strings.xml +++ b/packages/CompanionDeviceManager/res/values-te/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"సహచర పరికర మేనేజర్"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>ను యాక్సెస్ చేయడానికి <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> యాప్ను అనుమతించాలా?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ఈ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>లో <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> ఆన్లో ఉందని నిర్ధారించుకోండి, అలాగే మీ <xliff:g id="PROFILE_NAME">%3$s</xliff:g>ను దగ్గరగా ఉంచుకోండి."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"పరికరాలు ఏవీ కనుగొనబడలేదు. దయచేసి తర్వాత మళ్లీ ట్రై చేయండి."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"బ్లూటూత్"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"బ్లూటూత్, Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"వాచ్"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ద్వారా మేనేజ్ చేయబడే పరికరాన్ని ఎంచుకోండి"</string> <string name="chooser_title" msgid="2235819929238267637">"సెటప్ చేయడానికి <xliff:g id="PROFILE_NAME">%1$s</xliff:g>ను ఎంచుకోండి"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> కోసం స్కాన్ చేస్తోంది"</string> <string name="summary_watch" msgid="8134580124808507407">"కాల్ చేస్తున్న వారి పేరు వంటి సమాచారాన్ని సింక్ చేయడానికి, మీ <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>లో ఈ అనుమతులను యాక్సెస్ చేయడానికి ఈ యాప్ అనుమతించబడుతుంది"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>ను మేనేజ్ చేయడానికి <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>ను అనుమతించాలా?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"పరికరం"</string> diff --git a/packages/CompanionDeviceManager/res/values-th/strings.xml b/packages/CompanionDeviceManager/res/values-th/strings.xml index 2e7ba3c6a37a..6a38c999ee4b 100644 --- a/packages/CompanionDeviceManager/res/values-th/strings.xml +++ b/packages/CompanionDeviceManager/res/values-th/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"อนุญาตให้แอป <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> เข้าถึง <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ใช่ไหม"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"ตรวจสอบว่า<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>เครื่องนี้เปิด<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>อยู่ และให้อยู่ใกล้กับ<xliff:g id="PROFILE_NAME">%3$s</xliff:g>"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"ไม่พบอุปกรณ์ โปรดลองอีกครั้งในภายหลัง"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"บลูทูธ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"บลูทูธและ Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"นาฬิกา"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"เลือกอุปกรณ์ที่จะให้มีการจัดการโดย <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"เลือก<xliff:g id="PROFILE_NAME">%1$s</xliff:g>ที่จะตั้งค่า"</string> + <string name="single_device_title" msgid="4199861437545438606">"กำลังค้นหา<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"แอปนี้จะได้รับอนุญาตให้ซิงค์ข้อมูล เช่น ชื่อของบุคคลที่โทรเข้ามา และมีสิทธิ์เข้าถึงข้อมูลเหล่านี้ใน<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>ของคุณ"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"อนุญาตให้ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> จัดการ <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> ไหม"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"อุปกรณ์"</string> diff --git a/packages/CompanionDeviceManager/res/values-tl/strings.xml b/packages/CompanionDeviceManager/res/values-tl/strings.xml index 3f4e2af77df9..9150a48fafdd 100644 --- a/packages/CompanionDeviceManager/res/values-tl/strings.xml +++ b/packages/CompanionDeviceManager/res/values-tl/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Kasamang Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"Payagan ang app na <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> na i-access ang <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Siguraduhing naka-on ang <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> sa <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> na ito, at panatilihing nasa malapit ang iyong <xliff:g id="PROFILE_NAME">%3$s</xliff:g>."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Walang nakitang device. Pakisubukan ulit sa ibang pagkakataon."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth at Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"relo"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Pumili ng device na papamahalaan ng <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Pumili ng <xliff:g id="PROFILE_NAME">%1$s</xliff:g> para mag-set up"</string> + <string name="single_device_title" msgid="4199861437545438606">"Hinahanap ang <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Papayagan ang app na ito na mag-sync ng impormasyon, tulad ng pangalan ng isang taong tumatawag, at ma-access ang mga pahintulot na ito sa iyong <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Payagan ang <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> na pamahalaan ang <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"device"</string> diff --git a/packages/CompanionDeviceManager/res/values-tr/strings.xml b/packages/CompanionDeviceManager/res/values-tr/strings.xml index 3e4603bea751..8ba76bc40653 100644 --- a/packages/CompanionDeviceManager/res/values-tr/strings.xml +++ b/packages/CompanionDeviceManager/res/values-tr/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> cihazına erişmesi için <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> uygulamasına izin verin"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Bu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> cihazında <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> özelliğinin etkinleştirildiğinden emin olun ve <xliff:g id="PROFILE_NAME">%3$s</xliff:g> cihazınızı yakında tutun."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Cihaz bulunamadı. Lütfen daha sonra tekrar deneyin."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Kablosuz"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth ve Kablosuz"</string> <string name="profile_name_watch" msgid="576290739483672360">"saat"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> tarafından yönetilecek bir cihaz seçin"</string> <string name="chooser_title" msgid="2235819929238267637">"Ayarlamak için bir <xliff:g id="PROFILE_NAME">%1$s</xliff:g> seçin"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> aranıyor"</string> <string name="summary_watch" msgid="8134580124808507407">"Bu uygulamanın arayan kişinin adı gibi bilgileri senkronize etmesine ve <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> cihazınızda aşağıdaki izinlere erişmesine izin verilir"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> uygulamasına <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> cihazını yönetmesi için izin verilsin mi?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"Cihaz"</string> diff --git a/packages/CompanionDeviceManager/res/values-uk/strings.xml b/packages/CompanionDeviceManager/res/values-uk/strings.xml index 18adf00c8c5b..ff93a657455d 100644 --- a/packages/CompanionDeviceManager/res/values-uk/strings.xml +++ b/packages/CompanionDeviceManager/res/values-uk/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Диспетчер супутніх пристроїв"</string> <string name="confirmation_title" msgid="2244241995958340998">"Дозволити додатку <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> доступ до інформації на пристрої <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Перевірте цей <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> і переконайтеся, що на ньому ввімкнено <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>, а тоді тримайте <xliff:g id="PROFILE_NAME">%3$s</xliff:g> поблизу."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Пристрої не знайдено. Повторіть спробу пізніше."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth і Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"годинник"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Виберіть пристрій, яким керуватиме додаток <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Виберіть <xliff:g id="PROFILE_NAME">%1$s</xliff:g> для налаштування"</string> + <string name="single_device_title" msgid="4199861437545438606">"Шукаємо <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Цей додаток зможе синхронізувати інформацію (наприклад, ім’я абонента, який викликає) і отримає доступ до перелічених нижче дозволів на вашому <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Дозволити додатку <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> керувати пристроєм <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"пристрій"</string> diff --git a/packages/CompanionDeviceManager/res/values-ur/strings.xml b/packages/CompanionDeviceManager/res/values-ur/strings.xml index cb1a5278dfc1..e502a792d23b 100644 --- a/packages/CompanionDeviceManager/res/values-ur/strings.xml +++ b/packages/CompanionDeviceManager/res/values-ur/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"ساتھی آلہ مینیجر"</string> <string name="confirmation_title" msgid="2244241995958340998">"ایپ <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> کو <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> تک رسائی کی اجازت دیں؟"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"یقینی بنائیں کہ اس <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> کا <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> آن ہے اور اپنی <xliff:g id="PROFILE_NAME">%3$s</xliff:g> کو قریب رکھیں۔"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"کوئی آلہ نہیں ملا۔ براہ کرم بعد میں دوبارہ کوشش کریں۔"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"بلوٹوتھ"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"بلوٹوتھ اور Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"دیکھیں"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> کے ذریعے منتخب کیے جانے کیلئے آلہ منتخب کریں"</string> <string name="chooser_title" msgid="2235819929238267637">"سیٹ اپ کرنے کے لیے <xliff:g id="PROFILE_NAME">%1$s</xliff:g> کا انتخاب کریں"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> کو تلاش کیا جا رہا ہے"</string> <string name="summary_watch" msgid="8134580124808507407">"اس ایپ کو آپ کے <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> پر کسی کال کرنے والے کے نام جیسی معلومات کی مطابقت پذیری کرنے اور ان اجازتوں تک رسائی کی اجازت ہوگی"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> کو <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> کا نظم کرنے کی اجازت دیں؟"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"آلہ"</string> diff --git a/packages/CompanionDeviceManager/res/values-uz/strings.xml b/packages/CompanionDeviceManager/res/values-uz/strings.xml index 993c50226103..076bb74d6bf6 100644 --- a/packages/CompanionDeviceManager/res/values-uz/strings.xml +++ b/packages/CompanionDeviceManager/res/values-uz/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Companion Device Manager"</string> <string name="confirmation_title" msgid="2244241995958340998">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ilovasiga <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> qurilmasidan foydalanishga ruxsat berilsinmi?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Bu <xliff:g id="DEVICE_TYPE">%1$s</xliff:g>da <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> yoqilganini tekshiring va <xliff:g id="PROFILE_NAME">%3$s</xliff:g>ni tayyor tuting."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Hech qanday qurilma topilmadi. Keyinroq qayta urining."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth va Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"soat"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> boshqaradigan qurilmani tanlang"</string> <string name="chooser_title" msgid="2235819929238267637">"Sozlash uchun <xliff:g id="PROFILE_NAME">%1$s</xliff:g> profilini tanlang"</string> + <string name="single_device_title" msgid="4199861437545438606">"<xliff:g id="PROFILE_NAME">%1$s</xliff:g> qidirilmoqda"</string> <string name="summary_watch" msgid="8134580124808507407">"Bu ilovaga chaqiruvchining ismi kabi maʼlumotlarni sinxronlash va <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> qurilmasida quyidagi amallarni bajarishga ruxsat beriladi"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ilovasiga <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong> qurilmasini boshqarish uchun ruxsat berilsinmi?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"qurilma"</string> diff --git a/packages/CompanionDeviceManager/res/values-vi/strings.xml b/packages/CompanionDeviceManager/res/values-vi/strings.xml index dee65de16b73..a44af74b1182 100644 --- a/packages/CompanionDeviceManager/res/values-vi/strings.xml +++ b/packages/CompanionDeviceManager/res/values-vi/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Trình quản lý thiết bị đồng hành"</string> <string name="confirmation_title" msgid="2244241995958340998">"Cho phép ứng dụng <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> truy cập vào <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Hãy đảm bảo rằng <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> này đã bật <xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g> và được đặt gần <xliff:g id="PROFILE_NAME">%3$s</xliff:g> của bạn."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Không tìm thấy thiết bị nào. Vui lòng thử lại sau."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"Bluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"Bluetooth và Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"đồng hồ"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Chọn một thiết bị sẽ do <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> quản lý"</string> <string name="chooser_title" msgid="2235819929238267637">"Chọn một <xliff:g id="PROFILE_NAME">%1$s</xliff:g> để thiết lập"</string> + <string name="single_device_title" msgid="4199861437545438606">"Đang tìm <xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Ứng dụng này sẽ được phép đồng bộ hoá thông tin (chẳng hạn như tên của người đang gọi điện) và dùng những quyền sau trên <xliff:g id="DEVICE_TYPE">%1$s</xliff:g> của bạn"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Cho phép <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> quản lý <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"thiết bị"</string> diff --git a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml index 605cab7185d8..4360092564ea 100644 --- a/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml +++ b/packages/CompanionDeviceManager/res/values-zh-rCN/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"配套设备管理器"</string> <string name="confirmation_title" msgid="2244241995958340998">"允许应用<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>访问<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"请确保此<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>已开启<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>,并将<xliff:g id="PROFILE_NAME">%3$s</xliff:g>放在附近。"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"找不到设备,请稍后重试。"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"蓝牙"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"WLAN"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"蓝牙和 WLAN"</string> <string name="profile_name_watch" msgid="576290739483672360">"手表"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"选择要由<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>管理的设备"</string> <string name="chooser_title" msgid="2235819929238267637">"选择 <xliff:g id="PROFILE_NAME">%1$s</xliff:g> 进行设置"</string> + <string name="single_device_title" msgid="4199861437545438606">"寻找<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"该应用将能同步信息(例如来电者的姓名),并能获得您<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>上的以下权限"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"允许<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>管理<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"设备"</string> diff --git a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml index d1c73e538981..3dcaa9f7e5d6 100644 --- a/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml +++ b/packages/CompanionDeviceManager/res/values-zh-rHK/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"隨附裝置管理工具"</string> <string name="confirmation_title" msgid="2244241995958340998">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」應用程式<strong></strong>存取「<xliff:g id="DEVICE_NAME">%2$s</xliff:g>」<strong></strong>嗎?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"請確保你已開啟此<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>的<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>,並將<xliff:g id="PROFILE_NAME">%3$s</xliff:g>放在附近。"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"找不到任何裝置,請稍後再試。"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"藍牙"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"藍牙和 Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"手錶"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"選擇要讓 <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> 管理的裝置"</string> <string name="chooser_title" msgid="2235819929238267637">"選擇要設定的<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> + <string name="single_device_title" msgid="4199861437545438606">"正在搜尋<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"此應用程式將可同步資訊 (例如來電者的名稱),並可在<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>上取得以下權限"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<strong></strong>管理「<xliff:g id="DEVICE_NAME">%2$s</xliff:g>」<strong></strong>嗎?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"裝置"</string> diff --git a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml index c675fedb1dbd..2bfcaf296420 100644 --- a/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml +++ b/packages/CompanionDeviceManager/res/values-zh-rTW/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"隨附裝置管理工具"</string> <string name="confirmation_title" msgid="2244241995958340998">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<strong></strong>應用程式存取「<xliff:g id="DEVICE_NAME">%2$s</xliff:g>」<strong></strong>嗎?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"請確認這個<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>已開啟<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>,並將<xliff:g id="PROFILE_NAME">%3$s</xliff:g>放在附近。"</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"找不到裝置,請稍後再試。"</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"藍牙"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"藍牙和 Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"手錶"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"選擇要讓「<xliff:g id="APP_NAME">%1$s</xliff:g>」<strong></strong>管理的裝置"</string> <string name="chooser_title" msgid="2235819929238267637">"選擇要設定的<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> + <string name="single_device_title" msgid="4199861437545438606">"尋找<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"這個應用程式將可同步處理資訊 (例如來電者名稱) 及取得<xliff:g id="DEVICE_TYPE">%1$s</xliff:g>上的這些權限"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"要允許「<xliff:g id="APP_NAME">%1$s</xliff:g>」<strong></strong>管理「<xliff:g id="DEVICE_NAME">%2$s</xliff:g>」<strong></strong>嗎?"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"裝置"</string> diff --git a/packages/CompanionDeviceManager/res/values-zu/strings.xml b/packages/CompanionDeviceManager/res/values-zu/strings.xml index 365b2f4753d0..bc7bb819b1c1 100644 --- a/packages/CompanionDeviceManager/res/values-zu/strings.xml +++ b/packages/CompanionDeviceManager/res/values-zu/strings.xml @@ -18,9 +18,15 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="app_label" msgid="4470785958457506021">"Isiphathi sedivayisi esihambisanayo"</string> <string name="confirmation_title" msgid="2244241995958340998">"Vumela i-app <strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ukufinyelela <strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>?"</string> + <string name="message_discovery_soft_timeout" msgid="473346859407859161">"Qinisekisa ukuthi le-<xliff:g id="DEVICE_TYPE">%1$s</xliff:g> ivule i-<xliff:g id="DISCOVERY_METHOD">%2$s</xliff:g>, futhi ugcine i-<xliff:g id="PROFILE_NAME">%3$s</xliff:g> yakho iseduze."</string> + <string name="message_discovery_hard_timeout" msgid="677514663495711424">"Awekho amadivayisi atholiwe. Sicela uzame futhi kamuva."</string> + <string name="discovery_bluetooth" msgid="5693557668470016164">"IBluetooth"</string> + <string name="discovery_wifi" msgid="1551782459721758773">"I-Wi-Fi"</string> + <string name="discovery_mixed" msgid="7071466134150760127">"IBluetooth ne-Wi-Fi"</string> <string name="profile_name_watch" msgid="576290739483672360">"buka"</string> <string name="chooser_title_non_profile" msgid="6035023914517087400">"Khetha idivayisi engaphathwa nge-<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong>"</string> <string name="chooser_title" msgid="2235819929238267637">"Khetha i-<xliff:g id="PROFILE_NAME">%1$s</xliff:g> ukusetha"</string> + <string name="single_device_title" msgid="4199861437545438606">"Ufuna i-<xliff:g id="PROFILE_NAME">%1$s</xliff:g>"</string> <string name="summary_watch" msgid="8134580124808507407">"Le app izovunyelwa ukuvumelanisa ulwazi, olufana negama lomuntu ofonayo, iphinde ifinyelele lezi zimvume ku-<xliff:g id="DEVICE_TYPE">%1$s</xliff:g> yakho"</string> <string name="confirmation_title_glasses" msgid="8288346850537727333">"Vumela i-<strong><xliff:g id="APP_NAME">%1$s</xliff:g></strong> ukuthi ifinyelele i-<strong><xliff:g id="DEVICE_NAME">%2$s</xliff:g></strong>"</string> <string name="profile_name_glasses" msgid="3506504967216601277">"idivayisi"</string> diff --git a/packages/CrashRecovery/framework/java/android/service/watchdog/ExplicitHealthCheckService.java b/packages/CrashRecovery/framework/java/android/service/watchdog/ExplicitHealthCheckService.java deleted file mode 100644 index fdb0fc538fdf..000000000000 --- a/packages/CrashRecovery/framework/java/android/service/watchdog/ExplicitHealthCheckService.java +++ /dev/null @@ -1,359 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.service.watchdog; - -import static android.os.Parcelable.Creator; - -import android.annotation.CallbackExecutor; -import android.annotation.FlaggedApi; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.SdkConstant; -import android.annotation.SuppressLint; -import android.annotation.SystemApi; -import android.app.Service; -import android.content.Intent; -import android.content.pm.PackageManager; -import android.crashrecovery.flags.Flags; -import android.os.Bundle; -import android.os.Handler; -import android.os.IBinder; -import android.os.Looper; -import android.os.Parcel; -import android.os.Parcelable; -import android.os.RemoteCallback; -import android.os.RemoteException; -import android.util.Log; - -import com.android.internal.util.Preconditions; - -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.concurrent.Executor; -import java.util.concurrent.TimeUnit; -import java.util.function.Consumer; - -/** - * A service to provide packages supporting explicit health checks and route checks to these - * packages on behalf of the package watchdog. - * - * <p>To extend this class, you must declare the service in your manifest file with the - * {@link android.Manifest.permission#BIND_EXPLICIT_HEALTH_CHECK_SERVICE} permission, - * and include an intent filter with the {@link #SERVICE_INTERFACE} action. In adddition, - * your implementation must live in - * {@link PackageManager#getServicesSystemSharedLibraryPackageName()}. - * For example:</p> - * <pre> - * <service android:name=".FooExplicitHealthCheckService" - * android:exported="true" - * android:priority="100" - * android:permission="android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE"> - * <intent-filter> - * <action android:name="android.service.watchdog.ExplicitHealthCheckService" /> - * </intent-filter> - * </service> - * </pre> - * @hide - */ -@SystemApi -public abstract class ExplicitHealthCheckService extends Service { - - private static final String TAG = "ExplicitHealthCheckService"; - - /** - * {@link Bundle} key for a {@link List} of {@link PackageConfig} value. - * - * {@hide} - */ - public static final String EXTRA_SUPPORTED_PACKAGES = - "android.service.watchdog.extra.supported_packages"; - - /** - * {@link Bundle} key for a {@link List} of {@link String} value. - * - * {@hide} - */ - public static final String EXTRA_REQUESTED_PACKAGES = - "android.service.watchdog.extra.requested_packages"; - - /** - * {@link Bundle} key for a {@link String} value. - */ - @FlaggedApi(Flags.FLAG_ENABLE_CRASHRECOVERY) - public static final String EXTRA_HEALTH_CHECK_PASSED_PACKAGE = - "android.service.watchdog.extra.HEALTH_CHECK_PASSED_PACKAGE"; - - /** - * The Intent action that a service must respond to. Add it to the intent filter of the service - * in its manifest. - */ - @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION) - public static final String SERVICE_INTERFACE = - "android.service.watchdog.ExplicitHealthCheckService"; - - /** - * The permission that a service must require to ensure that only Android system can bind to it. - * If this permission is not enforced in the AndroidManifest of the service, the system will - * skip that service. - */ - public static final String BIND_PERMISSION = - "android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE"; - - private final ExplicitHealthCheckServiceWrapper mWrapper = - new ExplicitHealthCheckServiceWrapper(); - - /** - * Called when the system requests an explicit health check for {@code packageName}. - * - * <p> When {@code packageName} passes the check, implementors should call - * {@link #notifyHealthCheckPassed} to inform the system. - * - * <p> It could take many hours before a {@code packageName} passes a check and implementors - * should never drop requests unless {@link onCancel} is called or the service dies. - * - * <p> Requests should not be queued and additional calls while expecting a result for - * {@code packageName} should have no effect. - */ - public abstract void onRequestHealthCheck(@NonNull String packageName); - - /** - * Called when the system cancels the explicit health check request for {@code packageName}. - * Should do nothing if there are is no active request for {@code packageName}. - */ - public abstract void onCancelHealthCheck(@NonNull String packageName); - - /** - * Called when the system requests for all the packages supporting explicit health checks. The - * system may request an explicit health check for any of these packages with - * {@link #onRequestHealthCheck}. - * - * @return all packages supporting explicit health checks - */ - @NonNull public abstract List<PackageConfig> onGetSupportedPackages(); - - /** - * Called when the system requests for all the packages that it has currently requested - * an explicit health check for. - * - * @return all packages expecting an explicit health check result - */ - @NonNull public abstract List<String> onGetRequestedPackages(); - - private final Handler mHandler = Handler.createAsync(Looper.getMainLooper()); - @Nullable private Consumer<Bundle> mHealthCheckResultCallback; - @Nullable private Executor mCallbackExecutor; - - @Override - @NonNull - public final IBinder onBind(@NonNull Intent intent) { - return mWrapper; - } - - /** - * Sets a callback to be invoked when an explicit health check passes for a package. - * <p> - * The callback will receive a {@link Bundle} containing the package name that passed the - * health check, identified by the key {@link #EXTRA_HEALTH_CHECK_PASSED_PACKAGE}. - * <p> - * <b>Note:</b> This API is primarily intended for testing purposes. Calling this outside of a - * test environment will override the default callback mechanism used to notify the system - * about health check results. Use with caution in production code. - * - * @param executor The executor on which the callback should be invoked. If {@code null}, the - * callback will be executed on the main thread. - * @param callback A callback that receives a {@link Bundle} containing the package name that - * passed the health check. - */ - @FlaggedApi(Flags.FLAG_ENABLE_CRASHRECOVERY) - public final void setHealthCheckPassedCallback(@CallbackExecutor @Nullable Executor executor, - @Nullable Consumer<Bundle> callback) { - mCallbackExecutor = executor; - mHealthCheckResultCallback = callback; - } - - private void executeCallback(@NonNull String packageName) { - if (mHealthCheckResultCallback != null) { - Objects.requireNonNull(packageName, - "Package passing explicit health check must be non-null"); - Bundle bundle = new Bundle(); - bundle.putString(EXTRA_HEALTH_CHECK_PASSED_PACKAGE, packageName); - mHealthCheckResultCallback.accept(bundle); - } else { - Log.wtf(TAG, "System missed explicit health check result for " + packageName); - } - } - - /** - * Implementors should call this to notify the system when explicit health check passes - * for {@code packageName}; - */ - public final void notifyHealthCheckPassed(@NonNull String packageName) { - if (mCallbackExecutor != null) { - mCallbackExecutor.execute(() -> executeCallback(packageName)); - } else { - mHandler.post(() -> executeCallback(packageName)); - } - } - - /** - * A PackageConfig contains a package supporting explicit health checks and the - * timeout in {@link System#uptimeMillis} across reboots after which health - * check requests from clients are failed. - * - * @hide - */ - @SystemApi - public static final class PackageConfig implements Parcelable { - private static final long DEFAULT_HEALTH_CHECK_TIMEOUT_MILLIS = TimeUnit.HOURS.toMillis(1); - - private final String mPackageName; - private final long mHealthCheckTimeoutMillis; - - /** - * Creates a new instance. - * - * @param packageName the package name - * @param durationMillis the duration in milliseconds, must be greater than or - * equal to 0. If it is 0, it will use a system default value. - */ - public PackageConfig(@NonNull String packageName, long healthCheckTimeoutMillis) { - mPackageName = Preconditions.checkNotNull(packageName); - if (healthCheckTimeoutMillis == 0) { - mHealthCheckTimeoutMillis = DEFAULT_HEALTH_CHECK_TIMEOUT_MILLIS; - } else { - mHealthCheckTimeoutMillis = Preconditions.checkArgumentNonnegative( - healthCheckTimeoutMillis); - } - } - - private PackageConfig(Parcel parcel) { - mPackageName = parcel.readString(); - mHealthCheckTimeoutMillis = parcel.readLong(); - } - - /** - * Gets the package name. - * - * @return the package name - */ - public @NonNull String getPackageName() { - return mPackageName; - } - - /** - * Gets the timeout in milliseconds to evaluate an explicit health check result after a - * request. - * - * @return the duration in {@link System#uptimeMillis} across reboots - */ - public long getHealthCheckTimeoutMillis() { - return mHealthCheckTimeoutMillis; - } - - @NonNull - @Override - public String toString() { - return "PackageConfig{" + mPackageName + ", " + mHealthCheckTimeoutMillis + "}"; - } - - @Override - public boolean equals(@Nullable Object other) { - if (other == this) { - return true; - } - if (!(other instanceof PackageConfig)) { - return false; - } - - PackageConfig otherInfo = (PackageConfig) other; - return Objects.equals(otherInfo.getHealthCheckTimeoutMillis(), - mHealthCheckTimeoutMillis) - && Objects.equals(otherInfo.getPackageName(), mPackageName); - } - - @Override - public int hashCode() { - return Objects.hash(mPackageName, mHealthCheckTimeoutMillis); - } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(@SuppressLint({"MissingNullability"}) Parcel parcel, int flags) { - parcel.writeString(mPackageName); - parcel.writeLong(mHealthCheckTimeoutMillis); - } - - public static final @NonNull Creator<PackageConfig> CREATOR = new Creator<PackageConfig>() { - @Override - public PackageConfig createFromParcel(Parcel source) { - return new PackageConfig(source); - } - - @Override - public PackageConfig[] newArray(int size) { - return new PackageConfig[size]; - } - }; - } - - - private class ExplicitHealthCheckServiceWrapper extends IExplicitHealthCheckService.Stub { - @Override - public void setCallback(RemoteCallback callback) throws RemoteException { - mHandler.post(() -> mHealthCheckResultCallback = callback::sendResult); - } - - @Override - public void request(String packageName) throws RemoteException { - mHandler.post(() -> ExplicitHealthCheckService.this.onRequestHealthCheck(packageName)); - } - - @Override - public void cancel(String packageName) throws RemoteException { - mHandler.post(() -> ExplicitHealthCheckService.this.onCancelHealthCheck(packageName)); - } - - @Override - public void getSupportedPackages(RemoteCallback callback) throws RemoteException { - mHandler.post(() -> { - List<PackageConfig> packages = - ExplicitHealthCheckService.this.onGetSupportedPackages(); - Objects.requireNonNull(packages, "Supported package list must be non-null"); - Bundle bundle = new Bundle(); - bundle.putParcelableArrayList(EXTRA_SUPPORTED_PACKAGES, new ArrayList<>(packages)); - callback.sendResult(bundle); - }); - } - - @Override - public void getRequestedPackages(RemoteCallback callback) throws RemoteException { - mHandler.post(() -> { - List<String> packages = - ExplicitHealthCheckService.this.onGetRequestedPackages(); - Objects.requireNonNull(packages, "Requested package list must be non-null"); - Bundle bundle = new Bundle(); - bundle.putStringArrayList(EXTRA_REQUESTED_PACKAGES, new ArrayList<>(packages)); - callback.sendResult(bundle); - }); - } - } -} diff --git a/packages/CrashRecovery/framework/java/android/service/watchdog/IExplicitHealthCheckService.aidl b/packages/CrashRecovery/framework/java/android/service/watchdog/IExplicitHealthCheckService.aidl deleted file mode 100644 index 90965092ac2b..000000000000 --- a/packages/CrashRecovery/framework/java/android/service/watchdog/IExplicitHealthCheckService.aidl +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.service.watchdog; - -import android.os.RemoteCallback; - -/** - * @hide - */ -@PermissionManuallyEnforced -oneway interface IExplicitHealthCheckService -{ - void setCallback(in @nullable RemoteCallback callback); - void request(String packageName); - void cancel(String packageName); - void getSupportedPackages(in RemoteCallback callback); - void getRequestedPackages(in RemoteCallback callback); -} diff --git a/packages/CrashRecovery/framework/java/android/service/watchdog/OWNERS b/packages/CrashRecovery/framework/java/android/service/watchdog/OWNERS deleted file mode 100644 index 1c045e10c0ec..000000000000 --- a/packages/CrashRecovery/framework/java/android/service/watchdog/OWNERS +++ /dev/null @@ -1,3 +0,0 @@ -narayan@google.com -nandana@google.com -olilan@google.com diff --git a/packages/CrashRecovery/services/module/java/com/android/server/ExplicitHealthCheckController.java b/packages/CrashRecovery/services/module/java/com/android/server/ExplicitHealthCheckController.java deleted file mode 100644 index da9a13961f79..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/server/ExplicitHealthCheckController.java +++ /dev/null @@ -1,447 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server; - -import static android.service.watchdog.ExplicitHealthCheckService.EXTRA_HEALTH_CHECK_PASSED_PACKAGE; -import static android.service.watchdog.ExplicitHealthCheckService.EXTRA_REQUESTED_PACKAGES; -import static android.service.watchdog.ExplicitHealthCheckService.EXTRA_SUPPORTED_PACKAGES; -import static android.service.watchdog.ExplicitHealthCheckService.PackageConfig; - -import android.Manifest; -import android.annotation.MainThread; -import android.annotation.Nullable; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; -import android.content.pm.ServiceInfo; -import android.os.IBinder; -import android.os.RemoteCallback; -import android.os.RemoteException; -import android.os.UserHandle; -import android.service.watchdog.ExplicitHealthCheckService; -import android.service.watchdog.IExplicitHealthCheckService; -import android.text.TextUtils; -import android.util.ArraySet; -import android.util.Slog; - -import com.android.internal.annotations.GuardedBy; - -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.function.Consumer; - -// TODO(b/120598832): Add tests -/** - * Controls the connections with {@link ExplicitHealthCheckService}. - */ -class ExplicitHealthCheckController { - private static final String TAG = "ExplicitHealthCheckController"; - private final Object mLock = new Object(); - private final Context mContext; - - // Called everytime a package passes the health check, so the watchdog is notified of the - // passing check. In practice, should never be null after it has been #setEnabled. - // To prevent deadlocks between the controller and watchdog threads, we have - // a lock invariant to ALWAYS acquire the PackageWatchdog#mLock before #mLock in this class. - // It's easier to just NOT hold #mLock when calling into watchdog code on this consumer. - @GuardedBy("mLock") @Nullable private Consumer<String> mPassedConsumer; - // Called everytime after a successful #syncRequest call, so the watchdog can receive packages - // supporting health checks and update its internal state. In practice, should never be null - // after it has been #setEnabled. - // To prevent deadlocks between the controller and watchdog threads, we have - // a lock invariant to ALWAYS acquire the PackageWatchdog#mLock before #mLock in this class. - // It's easier to just NOT hold #mLock when calling into watchdog code on this consumer. - @GuardedBy("mLock") @Nullable private Consumer<List<PackageConfig>> mSupportedConsumer; - // Called everytime we need to notify the watchdog to sync requests between itself and the - // health check service. In practice, should never be null after it has been #setEnabled. - // To prevent deadlocks between the controller and watchdog threads, we have - // a lock invariant to ALWAYS acquire the PackageWatchdog#mLock before #mLock in this class. - // It's easier to just NOT hold #mLock when calling into watchdog code on this runnable. - @GuardedBy("mLock") @Nullable private Runnable mNotifySyncRunnable; - // Actual binder object to the explicit health check service. - @GuardedBy("mLock") @Nullable private IExplicitHealthCheckService mRemoteService; - // Connection to the explicit health check service, necessary to unbind. - // We should only try to bind if mConnection is null, non-null indicates we - // are connected or at least connecting. - @GuardedBy("mLock") @Nullable private ServiceConnection mConnection; - // Bind state of the explicit health check service. - @GuardedBy("mLock") private boolean mEnabled; - - ExplicitHealthCheckController(Context context) { - mContext = context; - } - - /** Enables or disables explicit health checks. */ - public void setEnabled(boolean enabled) { - synchronized (mLock) { - Slog.i(TAG, "Explicit health checks " + (enabled ? "enabled." : "disabled.")); - mEnabled = enabled; - } - } - - /** - * Sets callbacks to listen to important events from the controller. - * - * <p> Should be called once at initialization before any other calls to the controller to - * ensure a happens-before relationship of the set parameters and visibility on other threads. - */ - public void setCallbacks(Consumer<String> passedConsumer, - Consumer<List<PackageConfig>> supportedConsumer, Runnable notifySyncRunnable) { - synchronized (mLock) { - if (mPassedConsumer != null || mSupportedConsumer != null - || mNotifySyncRunnable != null) { - Slog.wtf(TAG, "Resetting health check controller callbacks"); - } - - mPassedConsumer = Objects.requireNonNull(passedConsumer); - mSupportedConsumer = Objects.requireNonNull(supportedConsumer); - mNotifySyncRunnable = Objects.requireNonNull(notifySyncRunnable); - } - } - - /** - * Calls the health check service to request or cancel packages based on - * {@code newRequestedPackages}. - * - * <p> Supported packages in {@code newRequestedPackages} that have not been previously - * requested will be requested while supported packages not in {@code newRequestedPackages} - * but were previously requested will be cancelled. - * - * <p> This handles binding and unbinding to the health check service as required. - * - * <p> Note, calling this may modify {@code newRequestedPackages}. - * - * <p> Note, this method is not thread safe, all calls should be serialized. - */ - public void syncRequests(Set<String> newRequestedPackages) { - boolean enabled; - synchronized (mLock) { - enabled = mEnabled; - } - - if (!enabled) { - Slog.i(TAG, "Health checks disabled, no supported packages"); - // Call outside lock - mSupportedConsumer.accept(Collections.emptyList()); - return; - } - - getSupportedPackages(supportedPackageConfigs -> { - // Notify the watchdog without lock held - mSupportedConsumer.accept(supportedPackageConfigs); - getRequestedPackages(previousRequestedPackages -> { - synchronized (mLock) { - // Hold lock so requests and cancellations are sent atomically. - // It is important we don't mix requests from multiple threads. - - Set<String> supportedPackages = new ArraySet<>(); - for (PackageConfig config : supportedPackageConfigs) { - supportedPackages.add(config.getPackageName()); - } - // Note, this may modify newRequestedPackages - newRequestedPackages.retainAll(supportedPackages); - - // Cancel packages no longer requested - actOnDifference(previousRequestedPackages, - newRequestedPackages, p -> cancel(p)); - // Request packages not yet requested - actOnDifference(newRequestedPackages, - previousRequestedPackages, p -> request(p)); - - if (newRequestedPackages.isEmpty()) { - Slog.i(TAG, "No more health check requests, unbinding..."); - unbindService(); - return; - } - } - }); - }); - } - - private void actOnDifference(Collection<String> collection1, Collection<String> collection2, - Consumer<String> action) { - Iterator<String> iterator = collection1.iterator(); - while (iterator.hasNext()) { - String packageName = iterator.next(); - if (!collection2.contains(packageName)) { - action.accept(packageName); - } - } - } - - /** - * Requests an explicit health check for {@code packageName}. - * After this request, the callback registered on {@link #setCallbacks} can receive explicit - * health check passed results. - */ - private void request(String packageName) { - synchronized (mLock) { - if (!prepareServiceLocked("request health check for " + packageName)) { - return; - } - - Slog.i(TAG, "Requesting health check for package " + packageName); - try { - mRemoteService.request(packageName); - } catch (RemoteException e) { - Slog.w(TAG, "Failed to request health check for package " + packageName, e); - } - } - } - - /** - * Cancels all explicit health checks for {@code packageName}. - * After this request, the callback registered on {@link #setCallbacks} can no longer receive - * explicit health check passed results. - */ - private void cancel(String packageName) { - synchronized (mLock) { - if (!prepareServiceLocked("cancel health check for " + packageName)) { - return; - } - - Slog.i(TAG, "Cancelling health check for package " + packageName); - try { - mRemoteService.cancel(packageName); - } catch (RemoteException e) { - // Do nothing, if the service is down, when it comes up, we will sync requests, - // if there's some other error, retrying wouldn't fix anyways. - Slog.w(TAG, "Failed to cancel health check for package " + packageName, e); - } - } - } - - /** - * Returns the packages that we can request explicit health checks for. - * The packages will be returned to the {@code consumer}. - */ - private void getSupportedPackages(Consumer<List<PackageConfig>> consumer) { - synchronized (mLock) { - if (!prepareServiceLocked("get health check supported packages")) { - return; - } - - Slog.d(TAG, "Getting health check supported packages"); - try { - mRemoteService.getSupportedPackages(new RemoteCallback(result -> { - List<PackageConfig> packages = - result.getParcelableArrayList(EXTRA_SUPPORTED_PACKAGES, android.service.watchdog.ExplicitHealthCheckService.PackageConfig.class); - Slog.i(TAG, "Explicit health check supported packages " + packages); - consumer.accept(packages); - })); - } catch (RemoteException e) { - // Request failed, treat as if all observed packages are supported, if any packages - // expire during this period, we may incorrectly treat it as failing health checks - // even if we don't support health checks for the package. - Slog.w(TAG, "Failed to get health check supported packages", e); - } - } - } - - /** - * Returns the packages for which health checks are currently in progress. - * The packages will be returned to the {@code consumer}. - */ - private void getRequestedPackages(Consumer<List<String>> consumer) { - synchronized (mLock) { - if (!prepareServiceLocked("get health check requested packages")) { - return; - } - - Slog.d(TAG, "Getting health check requested packages"); - try { - mRemoteService.getRequestedPackages(new RemoteCallback(result -> { - List<String> packages = result.getStringArrayList(EXTRA_REQUESTED_PACKAGES); - Slog.i(TAG, "Explicit health check requested packages " + packages); - consumer.accept(packages); - })); - } catch (RemoteException e) { - // Request failed, treat as if we haven't requested any packages, if any packages - // were actually requested, they will not be cancelled now. May be cancelled later - Slog.w(TAG, "Failed to get health check requested packages", e); - } - } - } - - /** - * Binds to the explicit health check service if the controller is enabled and - * not already bound. - */ - private void bindService() { - synchronized (mLock) { - if (!mEnabled || mConnection != null || mRemoteService != null) { - if (!mEnabled) { - Slog.i(TAG, "Not binding to service, service disabled"); - } else if (mRemoteService != null) { - Slog.i(TAG, "Not binding to service, service already connected"); - } else { - Slog.i(TAG, "Not binding to service, service already connecting"); - } - return; - } - ComponentName component = getServiceComponentNameLocked(); - if (component == null) { - Slog.wtf(TAG, "Explicit health check service not found"); - return; - } - - Intent intent = new Intent(); - intent.setComponent(component); - mConnection = new ServiceConnection() { - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - Slog.i(TAG, "Explicit health check service is connected " + name); - initState(service); - } - - @Override - @MainThread - public void onServiceDisconnected(ComponentName name) { - // Service crashed or process was killed, #onServiceConnected will be called. - // Don't need to re-bind. - Slog.i(TAG, "Explicit health check service is disconnected " + name); - synchronized (mLock) { - mRemoteService = null; - } - } - - @Override - public void onBindingDied(ComponentName name) { - // Application hosting service probably got updated - // Need to re-bind. - Slog.i(TAG, "Explicit health check service binding is dead. Rebind: " + name); - unbindService(); - bindService(); - } - - @Override - public void onNullBinding(ComponentName name) { - // Should never happen. Service returned null from #onBind. - Slog.wtf(TAG, "Explicit health check service binding is null?? " + name); - } - }; - - mContext.bindServiceAsUser(intent, mConnection, - Context.BIND_AUTO_CREATE, UserHandle.SYSTEM); - Slog.i(TAG, "Explicit health check service is bound"); - } - } - - /** Unbinds the explicit health check service. */ - private void unbindService() { - synchronized (mLock) { - if (mRemoteService != null) { - mContext.unbindService(mConnection); - mRemoteService = null; - mConnection = null; - } - Slog.i(TAG, "Explicit health check service is unbound"); - } - } - - @GuardedBy("mLock") - @Nullable - private ServiceInfo getServiceInfoLocked() { - final Intent intent = new Intent(ExplicitHealthCheckService.SERVICE_INTERFACE); - final ResolveInfo resolveInfo = mContext.getPackageManager().resolveService(intent, - PackageManager.GET_SERVICES | PackageManager.GET_META_DATA - | PackageManager.MATCH_SYSTEM_ONLY); - if (resolveInfo == null || resolveInfo.serviceInfo == null) { - Slog.w(TAG, "No valid components found."); - return null; - } - return resolveInfo.serviceInfo; - } - - @GuardedBy("mLock") - @Nullable - private ComponentName getServiceComponentNameLocked() { - final ServiceInfo serviceInfo = getServiceInfoLocked(); - if (serviceInfo == null) { - return null; - } - - final ComponentName name = new ComponentName(serviceInfo.packageName, serviceInfo.name); - if (!Manifest.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE - .equals(serviceInfo.permission)) { - Slog.w(TAG, name.flattenToShortString() + " does not require permission " - + Manifest.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE); - return null; - } - return name; - } - - private void initState(IBinder service) { - synchronized (mLock) { - if (!mEnabled) { - Slog.w(TAG, "Attempting to connect disabled service?? Unbinding..."); - // Very unlikely, but we disabled the service after binding but before we connected - unbindService(); - return; - } - mRemoteService = IExplicitHealthCheckService.Stub.asInterface(service); - try { - mRemoteService.setCallback(new RemoteCallback(result -> { - String packageName = result.getString(EXTRA_HEALTH_CHECK_PASSED_PACKAGE); - if (!TextUtils.isEmpty(packageName)) { - if (mPassedConsumer == null) { - Slog.wtf(TAG, "Health check passed for package " + packageName - + "but no consumer registered."); - } else { - // Call without lock held - mPassedConsumer.accept(packageName); - } - } else { - Slog.wtf(TAG, "Empty package passed explicit health check?"); - } - })); - Slog.i(TAG, "Service initialized, syncing requests"); - } catch (RemoteException e) { - Slog.wtf(TAG, "Could not setCallback on explicit health check service"); - } - } - // Calling outside lock - mNotifySyncRunnable.run(); - } - - /** - * Prepares the health check service to receive requests. - * - * @return {@code true} if it is ready and we can proceed with a request, - * {@code false} otherwise. If it is not ready, and the service is enabled, - * we will bind and the request should be automatically attempted later. - */ - @GuardedBy("mLock") - private boolean prepareServiceLocked(String action) { - if (mRemoteService != null && mEnabled) { - return true; - } - Slog.i(TAG, "Service not ready to " + action - + (mEnabled ? ". Binding..." : ". Disabled")); - if (mEnabled) { - bindService(); - } - return false; - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java b/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java deleted file mode 100644 index e4f07f9fc213..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/server/PackageWatchdog.java +++ /dev/null @@ -1,2253 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server; - -import static android.content.Intent.ACTION_REBOOT; -import static android.content.Intent.ACTION_SHUTDOWN; -import static android.service.watchdog.ExplicitHealthCheckService.PackageConfig; -import static android.util.Xml.Encoding.UTF_8; - -import static com.android.server.crashrecovery.CrashRecoveryUtils.dumpCrashRecoveryEvents; - -import static java.lang.annotation.RetentionPolicy.SOURCE; - -import android.annotation.CallbackExecutor; -import android.annotation.FlaggedApi; -import android.annotation.IntDef; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.SuppressLint; -import android.annotation.SystemApi; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.VersionedPackage; -import android.crashrecovery.flags.Flags; -import android.os.Environment; -import android.os.Handler; -import android.os.Looper; -import android.os.Process; -import android.os.SystemProperties; -import android.provider.DeviceConfig; -import android.sysprop.CrashRecoveryProperties; -import android.text.TextUtils; -import android.util.ArrayMap; -import android.util.ArraySet; -import android.util.AtomicFile; -import android.util.EventLog; -import android.util.IndentingPrintWriter; -import android.util.LongArrayQueue; -import android.util.Slog; -import android.util.Xml; -import android.util.XmlUtils; - -import com.android.internal.annotations.GuardedBy; -import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.util.FastXmlSerializer; -import com.android.modules.utils.BackgroundThread; - -import libcore.io.IoUtils; - -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; -import org.xmlpull.v1.XmlSerializer; - -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.PrintWriter; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Set; -import java.util.concurrent.Executor; -import java.util.concurrent.TimeUnit; - -/** - * Monitors the health of packages on the system and notifies interested observers when packages - * fail. On failure, the registered observer with the least user impacting mitigation will - * be notified. - * @hide - */ -@FlaggedApi(Flags.FLAG_ENABLE_CRASHRECOVERY) -@SystemApi(client = SystemApi.Client.SYSTEM_SERVER) -public class PackageWatchdog { - private static final String TAG = "PackageWatchdog"; - - static final String PROPERTY_WATCHDOG_TRIGGER_DURATION_MILLIS = - "watchdog_trigger_failure_duration_millis"; - static final String PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT = - "watchdog_trigger_failure_count"; - static final String PROPERTY_WATCHDOG_EXPLICIT_HEALTH_CHECK_ENABLED = - "watchdog_explicit_health_check_enabled"; - - // TODO: make the following values configurable via DeviceConfig - private static final long NATIVE_CRASH_POLLING_INTERVAL_MILLIS = - TimeUnit.SECONDS.toMillis(30); - private static final long NUMBER_OF_NATIVE_CRASH_POLLS = 10; - - - /** Reason for package failure could not be determined. */ - public static final int FAILURE_REASON_UNKNOWN = 0; - - /** The package had a native crash. */ - public static final int FAILURE_REASON_NATIVE_CRASH = 1; - - /** The package failed an explicit health check. */ - public static final int FAILURE_REASON_EXPLICIT_HEALTH_CHECK = 2; - - /** The app crashed. */ - public static final int FAILURE_REASON_APP_CRASH = 3; - - /** The app was not responding. */ - public static final int FAILURE_REASON_APP_NOT_RESPONDING = 4; - - /** The device was boot looping. */ - public static final int FAILURE_REASON_BOOT_LOOP = 5; - - /** @hide */ - @IntDef(prefix = { "FAILURE_REASON_" }, value = { - FAILURE_REASON_UNKNOWN, - FAILURE_REASON_NATIVE_CRASH, - FAILURE_REASON_EXPLICIT_HEALTH_CHECK, - FAILURE_REASON_APP_CRASH, - FAILURE_REASON_APP_NOT_RESPONDING, - FAILURE_REASON_BOOT_LOOP - }) - @Retention(RetentionPolicy.SOURCE) - public @interface FailureReasons {} - - // Duration to count package failures before it resets to 0 - @VisibleForTesting - static final int DEFAULT_TRIGGER_FAILURE_DURATION_MS = - (int) TimeUnit.MINUTES.toMillis(1); - // Number of package failures within the duration above before we notify observers - @VisibleForTesting - static final int DEFAULT_TRIGGER_FAILURE_COUNT = 5; - @VisibleForTesting - static final long DEFAULT_OBSERVING_DURATION_MS = TimeUnit.DAYS.toMillis(2); - // Sliding window for tracking how many mitigation calls were made for a package. - @VisibleForTesting - static final long DEFAULT_DEESCALATION_WINDOW_MS = TimeUnit.HOURS.toMillis(1); - // Whether explicit health checks are enabled or not - private static final boolean DEFAULT_EXPLICIT_HEALTH_CHECK_ENABLED = true; - - @VisibleForTesting - static final int DEFAULT_BOOT_LOOP_TRIGGER_COUNT = 5; - - static final long DEFAULT_BOOT_LOOP_TRIGGER_WINDOW_MS = TimeUnit.MINUTES.toMillis(10); - - // Time needed to apply mitigation - private static final String MITIGATION_WINDOW_MS = - "persist.device_config.configuration.mitigation_window_ms"; - @VisibleForTesting - static final long DEFAULT_MITIGATION_WINDOW_MS = TimeUnit.SECONDS.toMillis(5); - - // Threshold level at which or above user might experience significant disruption. - private static final String MAJOR_USER_IMPACT_LEVEL_THRESHOLD = - "persist.device_config.configuration.major_user_impact_level_threshold"; - private static final int DEFAULT_MAJOR_USER_IMPACT_LEVEL_THRESHOLD = - PackageHealthObserverImpact.USER_IMPACT_LEVEL_71; - - // Comma separated list of all packages exempt from user impact level threshold. If a package - // in the list is crash looping, all the mitigations including factory reset will be performed. - private static final String PACKAGES_EXEMPT_FROM_IMPACT_LEVEL_THRESHOLD = - "persist.device_config.configuration.packages_exempt_from_impact_level_threshold"; - - // Comma separated list of default packages exempt from user impact level threshold. - private static final String DEFAULT_PACKAGES_EXEMPT_FROM_IMPACT_LEVEL_THRESHOLD = - "com.android.systemui"; - - private long mNumberOfNativeCrashPollsRemaining; - - private static final int DB_VERSION = 1; - private static final String TAG_PACKAGE_WATCHDOG = "package-watchdog"; - private static final String TAG_PACKAGE = "package"; - private static final String TAG_OBSERVER = "observer"; - private static final String ATTR_VERSION = "version"; - private static final String ATTR_NAME = "name"; - private static final String ATTR_DURATION = "duration"; - private static final String ATTR_EXPLICIT_HEALTH_CHECK_DURATION = "health-check-duration"; - private static final String ATTR_PASSED_HEALTH_CHECK = "passed-health-check"; - private static final String ATTR_MITIGATION_CALLS = "mitigation-calls"; - private static final String ATTR_MITIGATION_COUNT = "mitigation-count"; - - // A file containing information about the current mitigation count in the case of a boot loop. - // This allows boot loop information to persist in the case of an fs-checkpoint being - // aborted. - private static final String METADATA_FILE = "/metadata/watchdog/mitigation_count.txt"; - - /** - * EventLog tags used when logging into the event log. Note the values must be sync with - * frameworks/base/services/core/java/com/android/server/EventLogTags.logtags to get correct - * name translation. - */ - private static final int LOG_TAG_RESCUE_NOTE = 2900; - - private static final Object sPackageWatchdogLock = new Object(); - @GuardedBy("sPackageWatchdogLock") - private static PackageWatchdog sPackageWatchdog; - - private static final Object sLock = new Object(); - // System server context - private final Context mContext; - // Handler to run short running tasks - private final Handler mShortTaskHandler; - // Handler for processing IO and long running tasks - private final Handler mLongTaskHandler; - // Contains (observer-name -> observer-handle) that have ever been registered from - // previous boots. Observers with all packages expired are periodically pruned. - // It is saved to disk on system shutdown and repouplated on startup so it survives reboots. - @GuardedBy("sLock") - private final ArrayMap<String, ObserverInternal> mAllObservers = new ArrayMap<>(); - // File containing the XML data of monitored packages /data/system/package-watchdog.xml - private final AtomicFile mPolicyFile; - private final ExplicitHealthCheckController mHealthCheckController; - private final Runnable mSyncRequests = this::syncRequests; - private final Runnable mSyncStateWithScheduledReason = this::syncStateWithScheduledReason; - private final Runnable mSaveToFile = this::saveToFile; - private final SystemClock mSystemClock; - private final BootThreshold mBootThreshold; - private final DeviceConfig.OnPropertiesChangedListener - mOnPropertyChangedListener = this::onPropertyChanged; - - private final Set<String> mPackagesExemptFromImpactLevelThreshold = new ArraySet<>(); - - // The set of packages that have been synced with the ExplicitHealthCheckController - @GuardedBy("sLock") - private Set<String> mRequestedHealthCheckPackages = new ArraySet<>(); - @GuardedBy("sLock") - private boolean mIsPackagesReady; - // Flag to control whether explicit health checks are supported or not - @GuardedBy("sLock") - private boolean mIsHealthCheckEnabled = DEFAULT_EXPLICIT_HEALTH_CHECK_ENABLED; - @GuardedBy("sLock") - private int mTriggerFailureDurationMs = DEFAULT_TRIGGER_FAILURE_DURATION_MS; - @GuardedBy("sLock") - private int mTriggerFailureCount = DEFAULT_TRIGGER_FAILURE_COUNT; - // SystemClock#uptimeMillis when we last executed #syncState - // 0 if no prune is scheduled. - @GuardedBy("sLock") - private long mUptimeAtLastStateSync; - // If true, sync explicit health check packages with the ExplicitHealthCheckController. - @GuardedBy("sLock") - private boolean mSyncRequired = false; - - @GuardedBy("sLock") - private long mLastMitigation = -1000000; - - @FunctionalInterface - @VisibleForTesting - interface SystemClock { - long uptimeMillis(); - } - - private PackageWatchdog(Context context) { - // Needs to be constructed inline - this(context, new AtomicFile( - new File(new File(Environment.getDataDirectory(), "system"), - "package-watchdog.xml")), - new Handler(Looper.myLooper()), BackgroundThread.getHandler(), - new ExplicitHealthCheckController(context), - android.os.SystemClock::uptimeMillis); - } - - /** - * Creates a PackageWatchdog that allows injecting dependencies. - */ - @VisibleForTesting - PackageWatchdog(Context context, AtomicFile policyFile, Handler shortTaskHandler, - Handler longTaskHandler, ExplicitHealthCheckController controller, - SystemClock clock) { - mContext = context; - mPolicyFile = policyFile; - mShortTaskHandler = shortTaskHandler; - mLongTaskHandler = longTaskHandler; - mHealthCheckController = controller; - mSystemClock = clock; - mNumberOfNativeCrashPollsRemaining = NUMBER_OF_NATIVE_CRASH_POLLS; - mBootThreshold = new BootThreshold(DEFAULT_BOOT_LOOP_TRIGGER_COUNT, - DEFAULT_BOOT_LOOP_TRIGGER_WINDOW_MS); - - loadFromFile(); - sPackageWatchdog = this; - } - - /** - * Creates or gets singleton instance of PackageWatchdog. - * - * @param context The system server context. - */ - public static @NonNull PackageWatchdog getInstance(@NonNull Context context) { - synchronized (sPackageWatchdogLock) { - if (sPackageWatchdog == null) { - new PackageWatchdog(context); - } - return sPackageWatchdog; - } - } - - /** - * Called during boot to notify when packages are ready on the device so we can start - * binding. - * @hide - */ - public void onPackagesReady() { - synchronized (sLock) { - mIsPackagesReady = true; - mHealthCheckController.setCallbacks(packageName -> onHealthCheckPassed(packageName), - packages -> onSupportedPackages(packages), - this::onSyncRequestNotified); - setPropertyChangedListenerLocked(); - updateConfigs(); - } - } - - /** - * Registers {@code observer} to listen for package failures. Add a new ObserverInternal for - * this observer if it does not already exist. - * For executing mitigations observers will receive callback on the given executor. - * - * <p>Observers are expected to call this on boot. It does not specify any packages but - * it will resume observing any packages requested from a previous boot. - * - * @param observer instance of {@link PackageHealthObserver} for observing package failures - * and boot loops. - * @param executor Executor for the thread on which observers would receive callbacks - */ - public void registerHealthObserver(@NonNull @CallbackExecutor Executor executor, - @NonNull PackageHealthObserver observer) { - synchronized (sLock) { - ObserverInternal internalObserver = mAllObservers.get(observer.getUniqueIdentifier()); - if (internalObserver != null) { - internalObserver.registeredObserver = observer; - internalObserver.observerExecutor = executor; - } else { - internalObserver = new ObserverInternal(observer.getUniqueIdentifier(), - new ArrayList<>()); - internalObserver.registeredObserver = observer; - internalObserver.observerExecutor = executor; - mAllObservers.put(observer.getUniqueIdentifier(), internalObserver); - syncState("added new observer"); - } - } - } - - /** - * Starts observing the health of the {@code packages} for {@code observer}. - * Note: Observer needs to be registered with {@link #registerHealthObserver} before calling - * this API. - * - * <p>If monitoring a package supporting explicit health check, at the end of the monitoring - * duration if {@link #onHealthCheckPassed} was never called, - * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} will be called as if the - * package failed. - * - * <p>If {@code observer} is already monitoring a package in {@code packageNames}, - * the monitoring window of that package will be reset to {@code durationMs} and the health - * check state will be reset to a default. - * - * <p>The {@code observer} must be registered with {@link #registerHealthObserver} before - * calling this method. - * - * @param packageNames The list of packages to check. If this is empty, the call will be a - * no-op. - * - * @param timeoutMs The timeout after which Explicit Health Checks would not run. If this is - * less than 1, a default monitoring duration 2 days will be used. - * - * @throws IllegalStateException if the observer was not previously registered - */ - public void startExplicitHealthCheck(@NonNull List<String> packageNames, long timeoutMs, - @NonNull PackageHealthObserver observer) { - synchronized (sLock) { - if (!mAllObservers.containsKey(observer.getUniqueIdentifier())) { - Slog.wtf(TAG, "No observer found, need to register the observer: " - + observer.getUniqueIdentifier()); - throw new IllegalStateException("Observer not registered"); - } - } - if (packageNames.isEmpty()) { - Slog.wtf(TAG, "No packages to observe, " + observer.getUniqueIdentifier()); - return; - } - if (timeoutMs < 1) { - Slog.wtf(TAG, "Invalid duration " + timeoutMs + "ms for observer " - + observer.getUniqueIdentifier() + ". Not observing packages " + packageNames); - timeoutMs = DEFAULT_OBSERVING_DURATION_MS; - } - - List<MonitoredPackage> packages = new ArrayList<>(); - for (int i = 0; i < packageNames.size(); i++) { - // Health checks not available yet so health check state will start INACTIVE - MonitoredPackage pkg = newMonitoredPackage(packageNames.get(i), timeoutMs, false); - if (pkg != null) { - packages.add(pkg); - } else { - Slog.w(TAG, "Failed to create MonitoredPackage for pkg=" + packageNames.get(i)); - } - } - - if (packages.isEmpty()) { - return; - } - - // Sync before we add the new packages to the observers. This will #pruneObservers, - // causing any elapsed time to be deducted from all existing packages before we add new - // packages. This maintains the invariant that the elapsed time for ALL (new and existing) - // packages is the same. - mLongTaskHandler.post(() -> { - syncState("observing new packages"); - - synchronized (sLock) { - ObserverInternal oldObserver = mAllObservers.get(observer.getUniqueIdentifier()); - if (oldObserver == null) { - Slog.d(TAG, observer.getUniqueIdentifier() + " started monitoring health " - + "of packages " + packageNames); - mAllObservers.put(observer.getUniqueIdentifier(), - new ObserverInternal(observer.getUniqueIdentifier(), packages)); - } else { - Slog.d(TAG, observer.getUniqueIdentifier() + " added the following " - + "packages to monitor " + packageNames); - oldObserver.updatePackagesLocked(packages); - } - } - - // Sync after we add the new packages to the observers. We may have received packges - // requiring an earlier schedule than we are currently scheduled for. - syncState("updated observers"); - }); - - } - - /** - * Unregisters {@code observer} from listening to package failure. - * Additionally, this stops observing any packages that may have previously been observed - * even from a previous boot. - */ - public void unregisterHealthObserver(@NonNull PackageHealthObserver observer) { - mLongTaskHandler.post(() -> { - synchronized (sLock) { - mAllObservers.remove(observer.getUniqueIdentifier()); - } - syncState("unregistering observer: " + observer.getUniqueIdentifier()); - }); - } - - /** - * Called when a process fails due to a crash, ANR or explicit health check. - * - * <p>For each package contained in the process, one registered observer with the least user - * impact will be notified for mitigation. - * - * <p>This method could be called frequently if there is a severe problem on the device. - */ - public void notifyPackageFailure(@NonNull List<VersionedPackage> packages, - @FailureReasons int failureReason) { - if (packages == null) { - Slog.w(TAG, "Could not resolve a list of failing packages"); - return; - } - synchronized (sLock) { - final long now = mSystemClock.uptimeMillis(); - if (Flags.recoverabilityDetection()) { - if (now >= mLastMitigation - && (now - mLastMitigation) < getMitigationWindowMs()) { - Slog.i(TAG, "Skipping notifyPackageFailure mitigation"); - return; - } - } - } - mLongTaskHandler.post(() -> { - synchronized (sLock) { - if (mAllObservers.isEmpty()) { - return; - } - boolean requiresImmediateAction = (failureReason == FAILURE_REASON_NATIVE_CRASH - || failureReason == FAILURE_REASON_EXPLICIT_HEALTH_CHECK); - if (requiresImmediateAction) { - handleFailureImmediately(packages, failureReason); - } else { - for (int pIndex = 0; pIndex < packages.size(); pIndex++) { - VersionedPackage versionedPackage = packages.get(pIndex); - // Observer that will receive failure for versionedPackage - ObserverInternal currentObserverToNotify = null; - int currentObserverImpact = Integer.MAX_VALUE; - MonitoredPackage currentMonitoredPackage = null; - - // Find observer with least user impact - for (int oIndex = 0; oIndex < mAllObservers.size(); oIndex++) { - ObserverInternal observer = mAllObservers.valueAt(oIndex); - PackageHealthObserver registeredObserver = observer.registeredObserver; - if (registeredObserver != null - && observer.notifyPackageFailureLocked( - versionedPackage.getPackageName())) { - MonitoredPackage p = observer.getMonitoredPackage( - versionedPackage.getPackageName()); - int mitigationCount = 1; - if (p != null) { - mitigationCount = p.getMitigationCountLocked() + 1; - } - int impact = registeredObserver.onHealthCheckFailed( - versionedPackage, failureReason, mitigationCount); - if (impact != PackageHealthObserverImpact.USER_IMPACT_LEVEL_0 - && impact < currentObserverImpact) { - currentObserverToNotify = observer; - currentObserverImpact = impact; - currentMonitoredPackage = p; - } - } - } - - // Execute action with least user impact - if (currentObserverToNotify != null) { - int mitigationCount; - if (currentMonitoredPackage != null) { - currentMonitoredPackage.noteMitigationCallLocked(); - mitigationCount = - currentMonitoredPackage.getMitigationCountLocked(); - } else { - mitigationCount = 1; - } - if (Flags.recoverabilityDetection()) { - maybeExecute(currentObserverToNotify, versionedPackage, - failureReason, currentObserverImpact, mitigationCount); - } else { - PackageHealthObserver registeredObserver = - currentObserverToNotify.registeredObserver; - currentObserverToNotify.observerExecutor.execute(() -> - registeredObserver.onExecuteHealthCheckMitigation( - versionedPackage, failureReason, mitigationCount)); - } - } - } - } - } - }); - } - - /** - * For native crashes or explicit health check failures, call directly into each observer to - * mitigate the error without going through failure threshold logic. - */ - @GuardedBy("sLock") - private void handleFailureImmediately(List<VersionedPackage> packages, - @FailureReasons int failureReason) { - VersionedPackage failingPackage = packages.size() > 0 ? packages.get(0) : null; - ObserverInternal currentObserverToNotify = null; - int currentObserverImpact = Integer.MAX_VALUE; - for (ObserverInternal observer: mAllObservers.values()) { - PackageHealthObserver registeredObserver = observer.registeredObserver; - if (registeredObserver != null) { - int impact = registeredObserver.onHealthCheckFailed( - failingPackage, failureReason, 1); - if (impact != PackageHealthObserverImpact.USER_IMPACT_LEVEL_0 - && impact < currentObserverImpact) { - currentObserverToNotify = observer; - currentObserverImpact = impact; - } - } - } - if (currentObserverToNotify != null) { - if (Flags.recoverabilityDetection()) { - maybeExecute(currentObserverToNotify, failingPackage, failureReason, - currentObserverImpact, /*mitigationCount=*/ 1); - } else { - PackageHealthObserver registeredObserver = - currentObserverToNotify.registeredObserver; - currentObserverToNotify.observerExecutor.execute(() -> - registeredObserver.onExecuteHealthCheckMitigation(failingPackage, - failureReason, 1)); - - } - } - } - - private void maybeExecute(ObserverInternal currentObserverToNotify, - VersionedPackage versionedPackage, - @FailureReasons int failureReason, - int currentObserverImpact, - int mitigationCount) { - if (allowMitigations(currentObserverImpact, versionedPackage)) { - PackageHealthObserver registeredObserver; - synchronized (sLock) { - mLastMitigation = mSystemClock.uptimeMillis(); - registeredObserver = currentObserverToNotify.registeredObserver; - } - currentObserverToNotify.observerExecutor.execute(() -> - registeredObserver.onExecuteHealthCheckMitigation(versionedPackage, - failureReason, mitigationCount)); - } - } - - private boolean allowMitigations(int currentObserverImpact, - VersionedPackage versionedPackage) { - return currentObserverImpact < getUserImpactLevelLimit() - || getPackagesExemptFromImpactLevelThreshold().contains( - versionedPackage.getPackageName()); - } - - private long getMitigationWindowMs() { - return SystemProperties.getLong(MITIGATION_WINDOW_MS, DEFAULT_MITIGATION_WINDOW_MS); - } - - - /** - * Called when the system server boots. If the system server is detected to be in a boot loop, - * query each observer and perform the mitigation action with the lowest user impact. - * - * Note: PackageWatchdog considers system_server restart loop as bootloop. Full reboots - * are not counted in bootloop. - * @hide - */ - @SuppressWarnings("GuardedBy") - public void noteBoot() { - synchronized (sLock) { - // if boot count has reached threshold, start mitigation. - // We wait until threshold number of restarts only for the first time. Perform - // mitigations for every restart after that. - boolean mitigate = mBootThreshold.incrementAndTest(); - if (mitigate) { - if (!Flags.recoverabilityDetection()) { - mBootThreshold.reset(); - } - int mitigationCount = mBootThreshold.getMitigationCount() + 1; - ObserverInternal currentObserverToNotify = null; - int currentObserverImpact = Integer.MAX_VALUE; - for (int i = 0; i < mAllObservers.size(); i++) { - final ObserverInternal observer = mAllObservers.valueAt(i); - PackageHealthObserver registeredObserver = observer.registeredObserver; - if (registeredObserver != null) { - int impact = Flags.recoverabilityDetection() - ? registeredObserver.onBootLoop( - observer.getBootMitigationCount() + 1) - : registeredObserver.onBootLoop(mitigationCount); - if (impact != PackageHealthObserverImpact.USER_IMPACT_LEVEL_0 - && impact < currentObserverImpact) { - currentObserverToNotify = observer; - currentObserverImpact = impact; - } - } - } - - if (currentObserverToNotify != null) { - PackageHealthObserver registeredObserver = - currentObserverToNotify.registeredObserver; - if (Flags.recoverabilityDetection()) { - int currentObserverMitigationCount = - currentObserverToNotify.getBootMitigationCount() + 1; - currentObserverToNotify.setBootMitigationCount( - currentObserverMitigationCount); - saveAllObserversBootMitigationCountToMetadata(METADATA_FILE); - currentObserverToNotify.observerExecutor - .execute(() -> registeredObserver.onExecuteBootLoopMitigation( - currentObserverMitigationCount)); - } else { - mBootThreshold.setMitigationCount(mitigationCount); - mBootThreshold.saveMitigationCountToMetadata(); - currentObserverToNotify.observerExecutor - .execute(() -> registeredObserver.onExecuteBootLoopMitigation( - mitigationCount)); - - } - } - } - } - } - - // TODO(b/120598832): Optimize write? Maybe only write a separate smaller file? Also - // avoid holding lock? - // This currently adds about 7ms extra to shutdown thread - /** @hide Writes the package information to file during shutdown. */ - public void writeNow() { - synchronized (sLock) { - // Must only run synchronous tasks as this runs on the ShutdownThread and no other - // thread is guaranteed to run during shutdown. - if (!mAllObservers.isEmpty()) { - mLongTaskHandler.removeCallbacks(mSaveToFile); - pruneObserversLocked(); - saveToFile(); - Slog.i(TAG, "Last write to update package durations"); - } - } - } - - /** - * Enables or disables explicit health checks. - * <p> If explicit health checks are enabled, the health check service is started. - * <p> If explicit health checks are disabled, pending explicit health check requests are - * passed and the health check service is stopped. - */ - private void setExplicitHealthCheckEnabled(boolean enabled) { - synchronized (sLock) { - mIsHealthCheckEnabled = enabled; - mHealthCheckController.setEnabled(enabled); - mSyncRequired = true; - // Prune to update internal state whenever health check is enabled/disabled - syncState("health check state " + (enabled ? "enabled" : "disabled")); - } - } - - /** - * This method should be only called on mShortTaskHandler, since it modifies - * {@link #mNumberOfNativeCrashPollsRemaining}. - */ - private void checkAndMitigateNativeCrashes() { - mNumberOfNativeCrashPollsRemaining--; - // Check if native watchdog reported a crash - if ("1".equals(SystemProperties.get("sys.init.updatable_crashing"))) { - // We rollback all available low impact rollbacks when crash is unattributable - notifyPackageFailure(Collections.EMPTY_LIST, FAILURE_REASON_NATIVE_CRASH); - // we stop polling after an attempt to execute rollback, regardless of whether the - // attempt succeeds or not - } else { - if (mNumberOfNativeCrashPollsRemaining > 0) { - mShortTaskHandler.postDelayed(() -> checkAndMitigateNativeCrashes(), - NATIVE_CRASH_POLLING_INTERVAL_MILLIS); - } - } - } - - /** - * Since this method can eventually trigger a rollback, it should be called - * only once boot has completed {@code onBootCompleted} and not earlier, because the install - * session must be entirely completed before we try to rollback. - * @hide - */ - public void scheduleCheckAndMitigateNativeCrashes() { - Slog.i(TAG, "Scheduling " + mNumberOfNativeCrashPollsRemaining + " polls to check " - + "and mitigate native crashes"); - mShortTaskHandler.post(()->checkAndMitigateNativeCrashes()); - } - - private int getUserImpactLevelLimit() { - return SystemProperties.getInt(MAJOR_USER_IMPACT_LEVEL_THRESHOLD, - DEFAULT_MAJOR_USER_IMPACT_LEVEL_THRESHOLD); - } - - private Set<String> getPackagesExemptFromImpactLevelThreshold() { - if (mPackagesExemptFromImpactLevelThreshold.isEmpty()) { - String packageNames = SystemProperties.get(PACKAGES_EXEMPT_FROM_IMPACT_LEVEL_THRESHOLD, - DEFAULT_PACKAGES_EXEMPT_FROM_IMPACT_LEVEL_THRESHOLD); - return Set.of(packageNames.split("\\s*,\\s*")); - } - return mPackagesExemptFromImpactLevelThreshold; - } - - /** - * Indicates that a mitigation was successfully triggered or executed during - * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or - * {@link PackageHealthObserver#onExecuteBootLoopMitigation}. - */ - public static final int MITIGATION_RESULT_SUCCESS = - ObserverMitigationResult.MITIGATION_RESULT_SUCCESS; - - /** - * Indicates that a mitigation executed during - * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} or - * {@link PackageHealthObserver#onExecuteBootLoopMitigation} was skipped. - */ - public static final int MITIGATION_RESULT_SKIPPED = - ObserverMitigationResult.MITIGATION_RESULT_SKIPPED; - - - /** - * Possible return values of the for mitigations executed during - * {@link PackageHealthObserver#onExecuteHealthCheckMitigation} and - * {@link PackageHealthObserver#onExecuteBootLoopMitigation}. - * @hide - */ - @Retention(SOURCE) - @IntDef(prefix = "MITIGATION_RESULT_", value = { - ObserverMitigationResult.MITIGATION_RESULT_SUCCESS, - ObserverMitigationResult.MITIGATION_RESULT_SKIPPED, - }) - public @interface ObserverMitigationResult { - int MITIGATION_RESULT_SUCCESS = 1; - int MITIGATION_RESULT_SKIPPED = 2; - } - - /** - * The minimum value that can be returned by any observer. - * It represents that no mitigations were available. - */ - public static final int USER_IMPACT_THRESHOLD_NONE = - PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - - /** - * The mitigation impact beyond which the user will start noticing the mitigations. - */ - public static final int USER_IMPACT_THRESHOLD_MEDIUM = - PackageHealthObserverImpact.USER_IMPACT_LEVEL_20; - - /** - * The mitigation impact beyond which the user impact is severely high. - */ - public static final int USER_IMPACT_THRESHOLD_HIGH = - PackageHealthObserverImpact.USER_IMPACT_LEVEL_71; - - /** - * Possible severity values of the user impact of a - * {@link PackageHealthObserver#onExecuteHealthCheckMitigation}. - * @hide - */ - @Retention(SOURCE) - @IntDef(value = {PackageHealthObserverImpact.USER_IMPACT_LEVEL_0, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_10, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_20, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_30, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_40, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_50, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_70, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_71, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_75, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_80, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_90, - PackageHealthObserverImpact.USER_IMPACT_LEVEL_100}) - public @interface PackageHealthObserverImpact { - /** No action to take. */ - int USER_IMPACT_LEVEL_0 = 0; - /* Action has low user impact, user of a device will barely notice. */ - int USER_IMPACT_LEVEL_10 = 10; - /* Actions having medium user impact, user of a device will likely notice. */ - int USER_IMPACT_LEVEL_20 = 20; - int USER_IMPACT_LEVEL_30 = 30; - int USER_IMPACT_LEVEL_40 = 40; - int USER_IMPACT_LEVEL_50 = 50; - int USER_IMPACT_LEVEL_70 = 70; - /* Action has high user impact, a last resort, user of a device will be very frustrated. */ - int USER_IMPACT_LEVEL_71 = 71; - int USER_IMPACT_LEVEL_75 = 75; - int USER_IMPACT_LEVEL_80 = 80; - int USER_IMPACT_LEVEL_90 = 90; - int USER_IMPACT_LEVEL_100 = 100; - } - - /** Register instances of this interface to receive notifications on package failure. */ - @SuppressLint({"CallbackName"}) - public interface PackageHealthObserver { - /** - * Called when health check fails for the {@code versionedPackage}. - * Note: if the returned user impact is higher than {@link #USER_IMPACT_THRESHOLD_HIGH}, - * then {@link #onExecuteHealthCheckMitigation} would be called only in severe device - * conditions like boot-loop or network failure. - * - * @param versionedPackage the package that is failing. This may be null if a native - * service is crashing. - * @param failureReason the type of failure that is occurring. - * @param mitigationCount the number of times mitigation has been called for this package - * (including this time). - * - * @return any value greater than {@link #USER_IMPACT_THRESHOLD_NONE} to express - * the impact of mitigation on the user in {@link #onExecuteHealthCheckMitigation}. - * Returning {@link #USER_IMPACT_THRESHOLD_NONE} would indicate no mitigations available. - */ - @PackageHealthObserverImpact int onHealthCheckFailed( - @Nullable VersionedPackage versionedPackage, - @FailureReasons int failureReason, - int mitigationCount); - - /** - * This would be called after {@link #onHealthCheckFailed}. - * This is called only if current observer returned least impact mitigation for failed - * health check. - * - * @param versionedPackage the package that is failing. This may be null if a native - * service is crashing. - * @param failureReason the type of failure that is occurring. - * @param mitigationCount the number of times mitigation has been called for this package - * (including this time). - * @return {@link #MITIGATION_RESULT_SUCCESS} if the mitigation was successful, - * or {@link #MITIGATION_RESULT_SKIPPED} if the mitigation was skipped. - */ - @ObserverMitigationResult int onExecuteHealthCheckMitigation( - @Nullable VersionedPackage versionedPackage, - @FailureReasons int failureReason, int mitigationCount); - - - /** - * Called when the system server has booted several times within a window of time, defined - * by {@link #mBootThreshold} - * - * @param mitigationCount the number of times mitigation has been attempted for this - * boot loop (including this time). - * - * @return any value greater than {@link #USER_IMPACT_THRESHOLD_NONE} to express - * the impact of mitigation on the user in {@link #onExecuteBootLoopMitigation}. - * Returning {@link #USER_IMPACT_THRESHOLD_NONE} would indicate no mitigations available. - */ - default @PackageHealthObserverImpact int onBootLoop(int mitigationCount) { - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - } - - /** - * This would be called after {@link #onBootLoop}. - * This is called only if current observer returned least impact mitigation for fixing - * boot loop. - * - * @param mitigationCount the number of times mitigation has been attempted for this - * boot loop (including this time). - * - * @return {@link #MITIGATION_RESULT_SUCCESS} if the mitigation was successful, - * or {@link #MITIGATION_RESULT_SKIPPED} if the mitigation was skipped. - */ - default @ObserverMitigationResult int onExecuteBootLoopMitigation(int mitigationCount) { - return ObserverMitigationResult.MITIGATION_RESULT_SKIPPED; - } - - // TODO(b/120598832): Ensure uniqueness? - /** - * Identifier for the observer, should not change across device updates otherwise the - * watchdog may drop observing packages with the old name. - */ - @NonNull String getUniqueIdentifier(); - - /** - * An observer will not be pruned if this is set, even if the observer is not explicitly - * monitoring any packages. - */ - default boolean isPersistent() { - return false; - } - - /** - * Returns {@code true} if this observer wishes to observe the given package, {@code false} - * otherwise. - * Any failing package can be passed on to the observer. Currently the packages that have - * ANRs and perform {@link android.service.watchdog.ExplicitHealthCheckService} are being - * passed to observers in these API. - * - * <p> A persistent observer may choose to start observing certain failing packages, even if - * it has not explicitly asked to watch the package with {@link #startExplicitHealthCheck}. - */ - default boolean mayObservePackage(@NonNull String packageName) { - return false; - } - } - - @VisibleForTesting - long getTriggerFailureCount() { - synchronized (sLock) { - return mTriggerFailureCount; - } - } - - @VisibleForTesting - long getTriggerFailureDurationMs() { - synchronized (sLock) { - return mTriggerFailureDurationMs; - } - } - - /** - * Serializes and syncs health check requests with the {@link ExplicitHealthCheckController}. - */ - private void syncRequestsAsync() { - mShortTaskHandler.removeCallbacks(mSyncRequests); - mShortTaskHandler.post(mSyncRequests); - } - - /** - * Syncs health check requests with the {@link ExplicitHealthCheckController}. - * Calls to this must be serialized. - * - * @see #syncRequestsAsync - */ - private void syncRequests() { - boolean syncRequired = false; - synchronized (sLock) { - if (mIsPackagesReady) { - Set<String> packages = getPackagesPendingHealthChecksLocked(); - if (mSyncRequired || !packages.equals(mRequestedHealthCheckPackages) - || packages.isEmpty()) { - syncRequired = true; - mRequestedHealthCheckPackages = packages; - } - } // else, we will sync requests when packages become ready - } - - // Call outside lock to avoid holding lock when calling into the controller. - if (syncRequired) { - Slog.i(TAG, "Syncing health check requests for packages: " - + mRequestedHealthCheckPackages); - mHealthCheckController.syncRequests(mRequestedHealthCheckPackages); - mSyncRequired = false; - } - } - - /** - * Updates the observers monitoring {@code packageName} that explicit health check has passed. - * - * <p> This update is strictly for registered observers at the time of the call - * Observers that register after this signal will have no knowledge of prior signals and will - * effectively behave as if the explicit health check hasn't passed for {@code packageName}. - * - * <p> {@code packageName} can still be considered failed if reported by - * {@link #notifyPackageFailureLocked} before the package expires. - * - * <p> Triggered by components outside the system server when they are fully functional after an - * update. - */ - private void onHealthCheckPassed(String packageName) { - Slog.i(TAG, "Health check passed for package: " + packageName); - boolean isStateChanged = false; - - synchronized (sLock) { - for (int observerIdx = 0; observerIdx < mAllObservers.size(); observerIdx++) { - ObserverInternal observer = mAllObservers.valueAt(observerIdx); - MonitoredPackage monitoredPackage = observer.getMonitoredPackage(packageName); - - if (monitoredPackage != null) { - int oldState = monitoredPackage.getHealthCheckStateLocked(); - int newState = monitoredPackage.tryPassHealthCheckLocked(); - isStateChanged |= oldState != newState; - } - } - } - - if (isStateChanged) { - syncState("health check passed for " + packageName); - } - } - - private void onSupportedPackages(List<PackageConfig> supportedPackages) { - boolean isStateChanged = false; - - Map<String, Long> supportedPackageTimeouts = new ArrayMap<>(); - Iterator<PackageConfig> it = supportedPackages.iterator(); - while (it.hasNext()) { - PackageConfig info = it.next(); - supportedPackageTimeouts.put(info.getPackageName(), info.getHealthCheckTimeoutMillis()); - } - - synchronized (sLock) { - Slog.d(TAG, "Received supported packages " + supportedPackages); - Iterator<ObserverInternal> oit = mAllObservers.values().iterator(); - while (oit.hasNext()) { - Iterator<MonitoredPackage> pit = oit.next().getMonitoredPackages() - .values().iterator(); - while (pit.hasNext()) { - MonitoredPackage monitoredPackage = pit.next(); - String packageName = monitoredPackage.getName(); - int oldState = monitoredPackage.getHealthCheckStateLocked(); - int newState; - - if (supportedPackageTimeouts.containsKey(packageName)) { - // Supported packages become ACTIVE if currently INACTIVE - newState = monitoredPackage.setHealthCheckActiveLocked( - supportedPackageTimeouts.get(packageName)); - } else { - // Unsupported packages are marked as PASSED unless already FAILED - newState = monitoredPackage.tryPassHealthCheckLocked(); - } - isStateChanged |= oldState != newState; - } - } - } - - if (isStateChanged) { - syncState("updated health check supported packages " + supportedPackages); - } - } - - private void onSyncRequestNotified() { - synchronized (sLock) { - mSyncRequired = true; - syncRequestsAsync(); - } - } - - @GuardedBy("sLock") - private Set<String> getPackagesPendingHealthChecksLocked() { - Set<String> packages = new ArraySet<>(); - Iterator<ObserverInternal> oit = mAllObservers.values().iterator(); - while (oit.hasNext()) { - ObserverInternal observer = oit.next(); - Iterator<MonitoredPackage> pit = - observer.getMonitoredPackages().values().iterator(); - while (pit.hasNext()) { - MonitoredPackage monitoredPackage = pit.next(); - String packageName = monitoredPackage.getName(); - if (monitoredPackage.isPendingHealthChecksLocked()) { - packages.add(packageName); - } - } - } - return packages; - } - - /** - * Syncs the state of the observers. - * - * <p> Prunes all observers, saves new state to disk, syncs health check requests with the - * health check service and schedules the next state sync. - */ - private void syncState(String reason) { - synchronized (sLock) { - Slog.i(TAG, "Syncing state, reason: " + reason); - pruneObserversLocked(); - - saveToFileAsync(); - syncRequestsAsync(); - - // Done syncing state, schedule the next state sync - scheduleNextSyncStateLocked(); - } - } - - private void syncStateWithScheduledReason() { - syncState("scheduled"); - } - - @GuardedBy("sLock") - private void scheduleNextSyncStateLocked() { - long durationMs = getNextStateSyncMillisLocked(); - mShortTaskHandler.removeCallbacks(mSyncStateWithScheduledReason); - if (durationMs == Long.MAX_VALUE) { - Slog.i(TAG, "Cancelling state sync, nothing to sync"); - mUptimeAtLastStateSync = 0; - } else { - mUptimeAtLastStateSync = mSystemClock.uptimeMillis(); - mShortTaskHandler.postDelayed(mSyncStateWithScheduledReason, durationMs); - } - } - - /** - * Returns the next duration in millis to sync the watchdog state. - * - * @returns Long#MAX_VALUE if there are no observed packages. - */ - @GuardedBy("sLock") - private long getNextStateSyncMillisLocked() { - long shortestDurationMs = Long.MAX_VALUE; - for (int oIndex = 0; oIndex < mAllObservers.size(); oIndex++) { - ArrayMap<String, MonitoredPackage> packages = mAllObservers.valueAt(oIndex) - .getMonitoredPackages(); - for (int pIndex = 0; pIndex < packages.size(); pIndex++) { - MonitoredPackage mp = packages.valueAt(pIndex); - long duration = mp.getShortestScheduleDurationMsLocked(); - if (duration < shortestDurationMs) { - shortestDurationMs = duration; - } - } - } - return shortestDurationMs; - } - - /** - * Removes {@code elapsedMs} milliseconds from all durations on monitored packages - * and updates other internal state. - */ - @GuardedBy("sLock") - private void pruneObserversLocked() { - long elapsedMs = mUptimeAtLastStateSync == 0 - ? 0 : mSystemClock.uptimeMillis() - mUptimeAtLastStateSync; - if (elapsedMs <= 0) { - Slog.i(TAG, "Not pruning observers, elapsed time: " + elapsedMs + "ms"); - return; - } - - Iterator<ObserverInternal> it = mAllObservers.values().iterator(); - while (it.hasNext()) { - ObserverInternal observer = it.next(); - Set<MonitoredPackage> failedPackages = - observer.prunePackagesLocked(elapsedMs); - if (!failedPackages.isEmpty()) { - onHealthCheckFailed(observer, failedPackages); - } - if (observer.getMonitoredPackages().isEmpty() && (observer.registeredObserver == null - || !observer.registeredObserver.isPersistent())) { - Slog.i(TAG, "Discarding observer " + observer.name + ". All packages expired"); - it.remove(); - } - } - } - - private void onHealthCheckFailed(ObserverInternal observer, - Set<MonitoredPackage> failedPackages) { - mLongTaskHandler.post(() -> { - synchronized (sLock) { - PackageHealthObserver registeredObserver = observer.registeredObserver; - if (registeredObserver != null) { - Iterator<MonitoredPackage> it = failedPackages.iterator(); - while (it.hasNext()) { - VersionedPackage versionedPkg = getVersionedPackage(it.next().getName()); - if (versionedPkg != null) { - Slog.i(TAG, - "Explicit health check failed for package " + versionedPkg); - observer.observerExecutor.execute(() -> - registeredObserver.onExecuteHealthCheckMitigation(versionedPkg, - PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK, - 1)); - } - } - } - } - }); - } - - /** - * Gets PackageInfo for the given package. Matches any user and apex. - * - * @throws PackageManager.NameNotFoundException if no such package is installed. - */ - private PackageInfo getPackageInfo(String packageName) - throws PackageManager.NameNotFoundException { - PackageManager pm = mContext.getPackageManager(); - try { - // The MATCH_ANY_USER flag doesn't mix well with the MATCH_APEX - // flag, so make two separate attempts to get the package info. - // We don't need both flags at the same time because we assume - // apex files are always installed for all users. - return pm.getPackageInfo(packageName, PackageManager.MATCH_ANY_USER); - } catch (PackageManager.NameNotFoundException e) { - return pm.getPackageInfo(packageName, PackageManager.MATCH_APEX); - } - } - - @Nullable - private VersionedPackage getVersionedPackage(String packageName) { - final PackageManager pm = mContext.getPackageManager(); - if (pm == null || TextUtils.isEmpty(packageName)) { - return null; - } - try { - final long versionCode = getPackageInfo(packageName).getLongVersionCode(); - return new VersionedPackage(packageName, versionCode); - } catch (PackageManager.NameNotFoundException e) { - return null; - } - } - - /** - * Loads mAllObservers from file. - * - * <p>Note that this is <b>not</b> thread safe and should only called be called - * from the constructor. - */ - private void loadFromFile() { - InputStream infile = null; - mAllObservers.clear(); - try { - infile = mPolicyFile.openRead(); - final XmlPullParser parser = Xml.newPullParser(); - parser.setInput(infile, UTF_8.name()); - XmlUtils.beginDocument(parser, TAG_PACKAGE_WATCHDOG); - int outerDepth = parser.getDepth(); - while (XmlUtils.nextElementWithin(parser, outerDepth)) { - ObserverInternal observer = ObserverInternal.read(parser, this); - if (observer != null) { - mAllObservers.put(observer.name, observer); - } - } - } catch (FileNotFoundException e) { - // Nothing to monitor - } catch (Exception e) { - Slog.wtf(TAG, "Unable to read monitored packages, deleting file", e); - mPolicyFile.delete(); - } finally { - IoUtils.closeQuietly(infile); - } - } - - private void onPropertyChanged(DeviceConfig.Properties properties) { - try { - updateConfigs(); - } catch (Exception ignore) { - Slog.w(TAG, "Failed to reload device config changes"); - } - } - - /** Adds a {@link DeviceConfig#OnPropertiesChangedListener}. */ - private void setPropertyChangedListenerLocked() { - DeviceConfig.addOnPropertiesChangedListener( - DeviceConfig.NAMESPACE_ROLLBACK, - mContext.getMainExecutor(), - mOnPropertyChangedListener); - } - - @VisibleForTesting - void removePropertyChangedListener() { - DeviceConfig.removeOnPropertiesChangedListener(mOnPropertyChangedListener); - } - - /** - * Health check is enabled or disabled after reading the flags - * from DeviceConfig. - */ - @VisibleForTesting - void updateConfigs() { - synchronized (sLock) { - mTriggerFailureCount = DeviceConfig.getInt( - DeviceConfig.NAMESPACE_ROLLBACK, - PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT, - DEFAULT_TRIGGER_FAILURE_COUNT); - if (mTriggerFailureCount <= 0) { - mTriggerFailureCount = DEFAULT_TRIGGER_FAILURE_COUNT; - } - - mTriggerFailureDurationMs = DeviceConfig.getInt( - DeviceConfig.NAMESPACE_ROLLBACK, - PROPERTY_WATCHDOG_TRIGGER_DURATION_MILLIS, - DEFAULT_TRIGGER_FAILURE_DURATION_MS); - if (mTriggerFailureDurationMs <= 0) { - mTriggerFailureDurationMs = DEFAULT_TRIGGER_FAILURE_DURATION_MS; - } - - setExplicitHealthCheckEnabled(DeviceConfig.getBoolean( - DeviceConfig.NAMESPACE_ROLLBACK, - PROPERTY_WATCHDOG_EXPLICIT_HEALTH_CHECK_ENABLED, - DEFAULT_EXPLICIT_HEALTH_CHECK_ENABLED)); - } - } - - /** - * Persists mAllObservers to file. Threshold information is ignored. - */ - private boolean saveToFile() { - Slog.i(TAG, "Saving observer state to file"); - synchronized (sLock) { - FileOutputStream stream; - try { - stream = mPolicyFile.startWrite(); - } catch (IOException e) { - Slog.w(TAG, "Cannot update monitored packages", e); - return false; - } - - try { - XmlSerializer out = new FastXmlSerializer(); - out.setOutput(stream, UTF_8.name()); - out.startDocument(null, true); - out.startTag(null, TAG_PACKAGE_WATCHDOG); - out.attribute(null, ATTR_VERSION, Integer.toString(DB_VERSION)); - for (int oIndex = 0; oIndex < mAllObservers.size(); oIndex++) { - mAllObservers.valueAt(oIndex).writeLocked(out); - } - out.endTag(null, TAG_PACKAGE_WATCHDOG); - out.endDocument(); - mPolicyFile.finishWrite(stream); - return true; - } catch (IOException e) { - Slog.w(TAG, "Failed to save monitored packages, restoring backup", e); - mPolicyFile.failWrite(stream); - return false; - } - } - } - - private void saveToFileAsync() { - if (!mLongTaskHandler.hasCallbacks(mSaveToFile)) { - mLongTaskHandler.post(mSaveToFile); - } - } - - /** @hide Convert a {@code LongArrayQueue} to a String of comma-separated values. */ - public static String longArrayQueueToString(LongArrayQueue queue) { - if (queue.size() > 0) { - StringBuilder sb = new StringBuilder(); - sb.append(queue.get(0)); - for (int i = 1; i < queue.size(); i++) { - sb.append(","); - sb.append(queue.get(i)); - } - return sb.toString(); - } - return ""; - } - - /** @hide Parse a comma-separated String of longs into a LongArrayQueue. */ - public static LongArrayQueue parseLongArrayQueue(String commaSeparatedValues) { - LongArrayQueue result = new LongArrayQueue(); - if (!TextUtils.isEmpty(commaSeparatedValues)) { - String[] values = commaSeparatedValues.split(","); - for (String value : values) { - result.addLast(Long.parseLong(value)); - } - } - return result; - } - - - /** Dump status of every observer in mAllObservers. */ - public void dump(@NonNull PrintWriter pw) { - if (Flags.synchronousRebootInRescueParty() && isRecoveryTriggeredReboot()) { - dumpInternal(pw); - } else { - synchronized (sLock) { - dumpInternal(pw); - } - } - } - - /** - * Check if we're currently attempting to reboot during mitigation. This method must return - * true if triggered reboot early during a boot loop, since the device will not be fully booted - * at this time. - */ - public static boolean isRecoveryTriggeredReboot() { - return isFactoryResetPropertySet() || isRebootPropertySet(); - } - - private static boolean isFactoryResetPropertySet() { - return CrashRecoveryProperties.attemptingFactoryReset().orElse(false); - } - - private static boolean isRebootPropertySet() { - return CrashRecoveryProperties.attemptingReboot().orElse(false); - } - - private void dumpInternal(@NonNull PrintWriter pw) { - IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " "); - ipw.println("Package Watchdog status"); - ipw.increaseIndent(); - synchronized (sLock) { - for (String observerName : mAllObservers.keySet()) { - ipw.println("Observer name: " + observerName); - ipw.increaseIndent(); - ObserverInternal observerInternal = mAllObservers.get(observerName); - observerInternal.dump(ipw); - ipw.decreaseIndent(); - } - } - ipw.decreaseIndent(); - dumpCrashRecoveryEvents(ipw); - } - - @VisibleForTesting - @GuardedBy("sLock") - void registerObserverInternal(ObserverInternal observerInternal) { - mAllObservers.put(observerInternal.name, observerInternal); - } - - /** - * Represents an observer monitoring a set of packages along with the failure thresholds for - * each package. - * - * <p> Note, the PackageWatchdog#sLock must always be held when reading or writing - * instances of this class. - */ - static class ObserverInternal { - public final String name; - @GuardedBy("sLock") - private final ArrayMap<String, MonitoredPackage> mPackages = new ArrayMap<>(); - @Nullable - @GuardedBy("sLock") - public PackageHealthObserver registeredObserver; - public Executor observerExecutor; - private int mMitigationCount; - - ObserverInternal(String name, List<MonitoredPackage> packages) { - this(name, packages, /*mitigationCount=*/ 0); - } - - ObserverInternal(String name, List<MonitoredPackage> packages, int mitigationCount) { - this.name = name; - updatePackagesLocked(packages); - this.mMitigationCount = mitigationCount; - } - - /** - * Writes important {@link MonitoredPackage} details for this observer to file. - * Does not persist any package failure thresholds. - */ - @GuardedBy("sLock") - public boolean writeLocked(XmlSerializer out) { - try { - out.startTag(null, TAG_OBSERVER); - out.attribute(null, ATTR_NAME, name); - if (Flags.recoverabilityDetection()) { - out.attribute(null, ATTR_MITIGATION_COUNT, Integer.toString(mMitigationCount)); - } - for (int i = 0; i < mPackages.size(); i++) { - MonitoredPackage p = mPackages.valueAt(i); - p.writeLocked(out); - } - out.endTag(null, TAG_OBSERVER); - return true; - } catch (IOException e) { - Slog.w(TAG, "Cannot save observer", e); - return false; - } - } - - public int getBootMitigationCount() { - return mMitigationCount; - } - - public void setBootMitigationCount(int mitigationCount) { - mMitigationCount = mitigationCount; - } - - @GuardedBy("sLock") - public void updatePackagesLocked(List<MonitoredPackage> packages) { - for (int pIndex = 0; pIndex < packages.size(); pIndex++) { - MonitoredPackage p = packages.get(pIndex); - MonitoredPackage existingPackage = getMonitoredPackage(p.getName()); - if (existingPackage != null) { - existingPackage.updateHealthCheckDuration(p.mDurationMs); - } else { - putMonitoredPackage(p); - } - } - } - - /** - * Reduces the monitoring durations of all packages observed by this observer by - * {@code elapsedMs}. If any duration is less than 0, the package is removed from - * observation. If any health check duration is less than 0, the health check result - * is evaluated. - * - * @return a {@link Set} of packages that were removed from the observer without explicit - * health check passing, or an empty list if no package expired for which an explicit health - * check was still pending - */ - @GuardedBy("sLock") - private Set<MonitoredPackage> prunePackagesLocked(long elapsedMs) { - Set<MonitoredPackage> failedPackages = new ArraySet<>(); - Iterator<MonitoredPackage> it = mPackages.values().iterator(); - while (it.hasNext()) { - MonitoredPackage p = it.next(); - int oldState = p.getHealthCheckStateLocked(); - int newState = p.handleElapsedTimeLocked(elapsedMs); - if (oldState != HealthCheckState.FAILED - && newState == HealthCheckState.FAILED) { - Slog.i(TAG, "Package " + p.getName() + " failed health check"); - failedPackages.add(p); - } - if (p.isExpiredLocked()) { - it.remove(); - } - } - return failedPackages; - } - - /** - * Increments failure counts of {@code packageName}. - * @returns {@code true} if failure threshold is exceeded, {@code false} otherwise - * @hide - */ - @GuardedBy("sLock") - public boolean notifyPackageFailureLocked(String packageName) { - if (getMonitoredPackage(packageName) == null && registeredObserver.isPersistent() - && registeredObserver.mayObservePackage(packageName)) { - putMonitoredPackage(sPackageWatchdog.newMonitoredPackage( - packageName, DEFAULT_OBSERVING_DURATION_MS, false)); - } - MonitoredPackage p = getMonitoredPackage(packageName); - if (p != null) { - return p.onFailureLocked(); - } - return false; - } - - /** - * Returns the map of packages monitored by this observer. - * - * @return a mapping of package names to {@link MonitoredPackage} objects. - */ - @GuardedBy("sLock") - public ArrayMap<String, MonitoredPackage> getMonitoredPackages() { - return mPackages; - } - - /** - * Returns the {@link MonitoredPackage} associated with a given package name if the - * package is being monitored by this observer. - * - * @param packageName: the name of the package. - * @return the {@link MonitoredPackage} object associated with the package name if one - * exists, {@code null} otherwise. - */ - @GuardedBy("sLock") - @Nullable - public MonitoredPackage getMonitoredPackage(String packageName) { - return mPackages.get(packageName); - } - - /** - * Associates a {@link MonitoredPackage} with the observer. - * - * @param p: the {@link MonitoredPackage} to store. - */ - @GuardedBy("sLock") - public void putMonitoredPackage(MonitoredPackage p) { - mPackages.put(p.getName(), p); - } - - /** - * Returns one ObserverInternal from the {@code parser} and advances its state. - * - * <p>Note that this method is <b>not</b> thread safe. It should only be called from - * #loadFromFile which in turn is only called on construction of the - * singleton PackageWatchdog. - **/ - public static ObserverInternal read(XmlPullParser parser, PackageWatchdog watchdog) { - String observerName = null; - int observerMitigationCount = 0; - if (TAG_OBSERVER.equals(parser.getName())) { - observerName = parser.getAttributeValue(null, ATTR_NAME); - if (TextUtils.isEmpty(observerName)) { - Slog.wtf(TAG, "Unable to read observer name"); - return null; - } - } - List<MonitoredPackage> packages = new ArrayList<>(); - int innerDepth = parser.getDepth(); - try { - if (Flags.recoverabilityDetection()) { - try { - observerMitigationCount = Integer.parseInt( - parser.getAttributeValue(null, ATTR_MITIGATION_COUNT)); - } catch (Exception e) { - Slog.i( - TAG, - "ObserverInternal mitigation count was not present."); - } - } - while (XmlUtils.nextElementWithin(parser, innerDepth)) { - if (TAG_PACKAGE.equals(parser.getName())) { - try { - MonitoredPackage pkg = watchdog.parseMonitoredPackage(parser); - if (pkg != null) { - packages.add(pkg); - } - } catch (NumberFormatException e) { - Slog.wtf(TAG, "Skipping package for observer " + observerName, e); - continue; - } - } - } - } catch (XmlPullParserException | IOException e) { - Slog.wtf(TAG, "Unable to read observer " + observerName, e); - return null; - } - if (packages.isEmpty()) { - return null; - } - return new ObserverInternal(observerName, packages, observerMitigationCount); - } - - /** Dumps information about this observer and the packages it watches. */ - public void dump(IndentingPrintWriter pw) { - boolean isPersistent = registeredObserver != null && registeredObserver.isPersistent(); - pw.println("Persistent: " + isPersistent); - for (String packageName : mPackages.keySet()) { - MonitoredPackage p = getMonitoredPackage(packageName); - pw.println(packageName + ": "); - pw.increaseIndent(); - pw.println("# Failures: " + p.mFailureHistory.size()); - pw.println("Monitoring duration remaining: " + p.mDurationMs + "ms"); - pw.println("Explicit health check duration: " + p.mHealthCheckDurationMs + "ms"); - pw.println("Health check state: " + p.toString(p.mHealthCheckState)); - pw.decreaseIndent(); - } - } - } - - /** @hide */ - @Retention(SOURCE) - @IntDef(value = { - HealthCheckState.ACTIVE, - HealthCheckState.INACTIVE, - HealthCheckState.PASSED, - HealthCheckState.FAILED}) - public @interface HealthCheckState { - // The package has not passed health check but has requested a health check - int ACTIVE = 0; - // The package has not passed health check and has not requested a health check - int INACTIVE = 1; - // The package has passed health check - int PASSED = 2; - // The package has failed health check - int FAILED = 3; - } - - MonitoredPackage newMonitoredPackage( - String name, long durationMs, boolean hasPassedHealthCheck) { - return newMonitoredPackage(name, durationMs, Long.MAX_VALUE, hasPassedHealthCheck, - new LongArrayQueue()); - } - - MonitoredPackage newMonitoredPackage(String name, long durationMs, long healthCheckDurationMs, - boolean hasPassedHealthCheck, LongArrayQueue mitigationCalls) { - return new MonitoredPackage(name, durationMs, healthCheckDurationMs, - hasPassedHealthCheck, mitigationCalls); - } - - MonitoredPackage parseMonitoredPackage(XmlPullParser parser) - throws XmlPullParserException { - String packageName = parser.getAttributeValue(null, ATTR_NAME); - long duration = Long.parseLong(parser.getAttributeValue(null, ATTR_DURATION)); - long healthCheckDuration = Long.parseLong(parser.getAttributeValue(null, - ATTR_EXPLICIT_HEALTH_CHECK_DURATION)); - boolean hasPassedHealthCheck = Boolean.parseBoolean(parser.getAttributeValue(null, - ATTR_PASSED_HEALTH_CHECK)); - LongArrayQueue mitigationCalls = parseLongArrayQueue( - parser.getAttributeValue(null, ATTR_MITIGATION_CALLS)); - return newMonitoredPackage(packageName, - duration, healthCheckDuration, hasPassedHealthCheck, mitigationCalls); - } - - /** - * Represents a package and its health check state along with the time - * it should be monitored for. - * - * <p> Note, the PackageWatchdog#sLock must always be held when reading or writing - * instances of this class. - */ - class MonitoredPackage { - private final String mPackageName; - // Times when package failures happen sorted in ascending order - @GuardedBy("sLock") - private final LongArrayQueue mFailureHistory = new LongArrayQueue(); - // Times when an observer was called to mitigate this package's failure. Sorted in - // ascending order. - @GuardedBy("sLock") - private final LongArrayQueue mMitigationCalls; - // One of STATE_[ACTIVE|INACTIVE|PASSED|FAILED]. Updated on construction and after - // methods that could change the health check state: handleElapsedTimeLocked and - // tryPassHealthCheckLocked - private int mHealthCheckState = HealthCheckState.INACTIVE; - // Whether an explicit health check has passed. - // This value in addition with mHealthCheckDurationMs determines the health check state - // of the package, see #getHealthCheckStateLocked - @GuardedBy("sLock") - private boolean mHasPassedHealthCheck; - // System uptime duration to monitor package. - @GuardedBy("sLock") - private long mDurationMs; - // System uptime duration to check the result of an explicit health check - // Initially, MAX_VALUE until we get a value from the health check service - // and request health checks. - // This value in addition with mHasPassedHealthCheck determines the health check state - // of the package, see #getHealthCheckStateLocked - @GuardedBy("sLock") - private long mHealthCheckDurationMs = Long.MAX_VALUE; - - MonitoredPackage(String packageName, long durationMs, - long healthCheckDurationMs, boolean hasPassedHealthCheck, - LongArrayQueue mitigationCalls) { - mPackageName = packageName; - mDurationMs = durationMs; - mHealthCheckDurationMs = healthCheckDurationMs; - mHasPassedHealthCheck = hasPassedHealthCheck; - mMitigationCalls = mitigationCalls; - updateHealthCheckStateLocked(); - } - - /** Writes the salient fields to disk using {@code out}. - * @hide - */ - @GuardedBy("sLock") - public void writeLocked(XmlSerializer out) throws IOException { - out.startTag(null, TAG_PACKAGE); - out.attribute(null, ATTR_NAME, getName()); - out.attribute(null, ATTR_DURATION, Long.toString(mDurationMs)); - out.attribute(null, ATTR_EXPLICIT_HEALTH_CHECK_DURATION, - Long.toString(mHealthCheckDurationMs)); - out.attribute(null, ATTR_PASSED_HEALTH_CHECK, Boolean.toString(mHasPassedHealthCheck)); - LongArrayQueue normalizedCalls = normalizeMitigationCalls(); - out.attribute(null, ATTR_MITIGATION_CALLS, longArrayQueueToString(normalizedCalls)); - out.endTag(null, TAG_PACKAGE); - } - - /** - * Increment package failures or resets failure count depending on the last package failure. - * - * @return {@code true} if failure count exceeds a threshold, {@code false} otherwise - */ - @GuardedBy("sLock") - public boolean onFailureLocked() { - // Sliding window algorithm: find out if there exists a window containing failures >= - // mTriggerFailureCount. - final long now = mSystemClock.uptimeMillis(); - mFailureHistory.addLast(now); - while (now - mFailureHistory.peekFirst() > mTriggerFailureDurationMs) { - // Prune values falling out of the window - mFailureHistory.removeFirst(); - } - boolean failed = mFailureHistory.size() >= mTriggerFailureCount; - if (failed) { - mFailureHistory.clear(); - } - return failed; - } - - /** - * Notes the timestamp of a mitigation call into the observer. - */ - @GuardedBy("sLock") - public void noteMitigationCallLocked() { - mMitigationCalls.addLast(mSystemClock.uptimeMillis()); - } - - /** - * Prunes any mitigation calls outside of the de-escalation window, and returns the - * number of calls that are in the window afterwards. - * - * @return the number of mitigation calls made in the de-escalation window. - */ - @GuardedBy("sLock") - public int getMitigationCountLocked() { - try { - final long now = mSystemClock.uptimeMillis(); - while (now - mMitigationCalls.peekFirst() > DEFAULT_DEESCALATION_WINDOW_MS) { - mMitigationCalls.removeFirst(); - } - } catch (NoSuchElementException ignore) { - } - - return mMitigationCalls.size(); - } - - /** - * Before writing to disk, make the mitigation call timestamps relative to the current - * system uptime. This is because they need to be relative to the uptime which will reset - * at the next boot. - * - * @return a LongArrayQueue of the mitigation calls relative to the current system uptime. - */ - @GuardedBy("sLock") - public LongArrayQueue normalizeMitigationCalls() { - LongArrayQueue normalized = new LongArrayQueue(); - final long now = mSystemClock.uptimeMillis(); - for (int i = 0; i < mMitigationCalls.size(); i++) { - normalized.addLast(mMitigationCalls.get(i) - now); - } - return normalized; - } - - /** - * Sets the initial health check duration. - * - * @return the new health check state - */ - @GuardedBy("sLock") - public int setHealthCheckActiveLocked(long initialHealthCheckDurationMs) { - if (initialHealthCheckDurationMs <= 0) { - Slog.wtf(TAG, "Cannot set non-positive health check duration " - + initialHealthCheckDurationMs + "ms for package " + getName() - + ". Using total duration " + mDurationMs + "ms instead"); - initialHealthCheckDurationMs = mDurationMs; - } - if (mHealthCheckState == HealthCheckState.INACTIVE) { - // Transitions to ACTIVE - mHealthCheckDurationMs = initialHealthCheckDurationMs; - } - return updateHealthCheckStateLocked(); - } - - /** - * Updates the monitoring durations of the package. - * - * @return the new health check state - */ - @GuardedBy("sLock") - public int handleElapsedTimeLocked(long elapsedMs) { - if (elapsedMs <= 0) { - Slog.w(TAG, "Cannot handle non-positive elapsed time for package " + getName()); - return mHealthCheckState; - } - // Transitions to FAILED if now <= 0 and health check not passed - mDurationMs -= elapsedMs; - if (mHealthCheckState == HealthCheckState.ACTIVE) { - // We only update health check durations if we have #setHealthCheckActiveLocked - // This ensures we don't leave the INACTIVE state for an unexpected elapsed time - // Transitions to FAILED if now <= 0 and health check not passed - mHealthCheckDurationMs -= elapsedMs; - } - return updateHealthCheckStateLocked(); - } - - /** Explicitly update the monitoring duration of the package. */ - @GuardedBy("sLock") - public void updateHealthCheckDuration(long newDurationMs) { - mDurationMs = newDurationMs; - } - - /** - * Marks the health check as passed and transitions to {@link HealthCheckState.PASSED} - * if not yet {@link HealthCheckState.FAILED}. - * - * @return the new {@link HealthCheckState health check state} - */ - @GuardedBy("sLock") - @HealthCheckState - public int tryPassHealthCheckLocked() { - if (mHealthCheckState != HealthCheckState.FAILED) { - // FAILED is a final state so only pass if we haven't failed - // Transition to PASSED - mHasPassedHealthCheck = true; - } - return updateHealthCheckStateLocked(); - } - - /** Returns the monitored package name. */ - private String getName() { - return mPackageName; - } - - /** - * Returns the current {@link HealthCheckState health check state}. - */ - @GuardedBy("sLock") - @HealthCheckState - public int getHealthCheckStateLocked() { - return mHealthCheckState; - } - - /** - * Returns the shortest duration before the package should be scheduled for a prune. - * - * @return the duration or {@link Long#MAX_VALUE} if the package should not be scheduled - */ - @GuardedBy("sLock") - public long getShortestScheduleDurationMsLocked() { - // Consider health check duration only if #isPendingHealthChecksLocked is true - return Math.min(toPositive(mDurationMs), - isPendingHealthChecksLocked() - ? toPositive(mHealthCheckDurationMs) : Long.MAX_VALUE); - } - - /** - * Returns {@code true} if the total duration left to monitor the package is less than or - * equal to 0 {@code false} otherwise. - */ - @GuardedBy("sLock") - public boolean isExpiredLocked() { - return mDurationMs <= 0; - } - - /** - * Returns {@code true} if the package, {@link #getName} is expecting health check results - * {@code false} otherwise. - */ - @GuardedBy("sLock") - public boolean isPendingHealthChecksLocked() { - return mHealthCheckState == HealthCheckState.ACTIVE - || mHealthCheckState == HealthCheckState.INACTIVE; - } - - /** - * Updates the health check state based on {@link #mHasPassedHealthCheck} - * and {@link #mHealthCheckDurationMs}. - * - * @return the new {@link HealthCheckState health check state} - */ - @GuardedBy("sLock") - @HealthCheckState - private int updateHealthCheckStateLocked() { - int oldState = mHealthCheckState; - if (mHasPassedHealthCheck) { - // Set final state first to avoid ambiguity - mHealthCheckState = HealthCheckState.PASSED; - } else if (mHealthCheckDurationMs <= 0 || mDurationMs <= 0) { - // Set final state first to avoid ambiguity - mHealthCheckState = HealthCheckState.FAILED; - } else if (mHealthCheckDurationMs == Long.MAX_VALUE) { - mHealthCheckState = HealthCheckState.INACTIVE; - } else { - mHealthCheckState = HealthCheckState.ACTIVE; - } - - if (oldState != mHealthCheckState) { - Slog.i(TAG, "Updated health check state for package " + getName() + ": " - + toString(oldState) + " -> " + toString(mHealthCheckState)); - } - return mHealthCheckState; - } - - /** Returns a {@link String} representation of the current health check state. */ - private String toString(@HealthCheckState int state) { - switch (state) { - case HealthCheckState.ACTIVE: - return "ACTIVE"; - case HealthCheckState.INACTIVE: - return "INACTIVE"; - case HealthCheckState.PASSED: - return "PASSED"; - case HealthCheckState.FAILED: - return "FAILED"; - default: - return "UNKNOWN"; - } - } - - /** Returns {@code value} if it is greater than 0 or {@link Long#MAX_VALUE} otherwise. */ - private long toPositive(long value) { - return value > 0 ? value : Long.MAX_VALUE; - } - - /** Compares the equality of this object with another {@link MonitoredPackage}. */ - @VisibleForTesting - boolean isEqualTo(MonitoredPackage pkg) { - return (getName().equals(pkg.getName())) - && mDurationMs == pkg.mDurationMs - && mHasPassedHealthCheck == pkg.mHasPassedHealthCheck - && mHealthCheckDurationMs == pkg.mHealthCheckDurationMs - && (mMitigationCalls.toString()).equals(pkg.mMitigationCalls.toString()); - } - } - - @GuardedBy("sLock") - @SuppressWarnings("GuardedBy") - void saveAllObserversBootMitigationCountToMetadata(String filePath) { - HashMap<String, Integer> bootMitigationCounts = new HashMap<>(); - for (int i = 0; i < mAllObservers.size(); i++) { - final ObserverInternal observer = mAllObservers.valueAt(i); - bootMitigationCounts.put(observer.name, observer.getBootMitigationCount()); - } - - FileOutputStream fileStream = null; - ObjectOutputStream objectStream = null; - try { - fileStream = new FileOutputStream(new File(filePath)); - objectStream = new ObjectOutputStream(fileStream); - objectStream.writeObject(bootMitigationCounts); - objectStream.flush(); - } catch (Exception e) { - Slog.i(TAG, "Could not save observers metadata to file: " + e); - return; - } finally { - IoUtils.closeQuietly(objectStream); - IoUtils.closeQuietly(fileStream); - } - } - - /** - * Handles the thresholding logic for system server boots. - */ - class BootThreshold { - - private final int mBootTriggerCount; - private final long mTriggerWindow; - - BootThreshold(int bootTriggerCount, long triggerWindow) { - this.mBootTriggerCount = bootTriggerCount; - this.mTriggerWindow = triggerWindow; - } - - public void reset() { - setStart(0); - setCount(0); - } - - protected int getCount() { - return CrashRecoveryProperties.rescueBootCount().orElse(0); - } - - protected void setCount(int count) { - CrashRecoveryProperties.rescueBootCount(count); - } - - public long getStart() { - return CrashRecoveryProperties.rescueBootStart().orElse(0L); - } - - public int getMitigationCount() { - return CrashRecoveryProperties.bootMitigationCount().orElse(0); - } - - public void setStart(long start) { - CrashRecoveryProperties.rescueBootStart(getStartTime(start)); - } - - public void setMitigationStart(long start) { - CrashRecoveryProperties.bootMitigationStart(getStartTime(start)); - } - - public long getMitigationStart() { - return CrashRecoveryProperties.bootMitigationStart().orElse(0L); - } - - public void setMitigationCount(int count) { - CrashRecoveryProperties.bootMitigationCount(count); - } - - private static long constrain(long amount, long low, long high) { - return amount < low ? low : (amount > high ? high : amount); - } - - public long getStartTime(long start) { - final long now = mSystemClock.uptimeMillis(); - return constrain(start, 0, now); - } - - public void saveMitigationCountToMetadata() { - try (BufferedWriter writer = new BufferedWriter(new FileWriter(METADATA_FILE))) { - writer.write(String.valueOf(getMitigationCount())); - } catch (Exception e) { - Slog.e(TAG, "Could not save metadata to file: " + e); - } - } - - public void readMitigationCountFromMetadataIfNecessary() { - File bootPropsFile = new File(METADATA_FILE); - if (bootPropsFile.exists()) { - try (BufferedReader reader = new BufferedReader(new FileReader(METADATA_FILE))) { - String mitigationCount = reader.readLine(); - setMitigationCount(Integer.parseInt(mitigationCount)); - bootPropsFile.delete(); - } catch (Exception e) { - Slog.i(TAG, "Could not read metadata file: " + e); - } - } - } - - - /** Increments the boot counter, and returns whether the device is bootlooping. */ - @GuardedBy("sLock") - public boolean incrementAndTest() { - if (Flags.recoverabilityDetection()) { - readAllObserversBootMitigationCountIfNecessary(METADATA_FILE); - } else { - readMitigationCountFromMetadataIfNecessary(); - } - - final long now = mSystemClock.uptimeMillis(); - if (now - getStart() < 0) { - Slog.e(TAG, "Window was less than zero. Resetting start to current time."); - setStart(now); - setMitigationStart(now); - } - if (now - getMitigationStart() > DEFAULT_DEESCALATION_WINDOW_MS) { - setMitigationStart(now); - if (Flags.recoverabilityDetection()) { - resetAllObserversBootMitigationCount(); - } else { - setMitigationCount(0); - } - } - final long window = now - getStart(); - if (window >= mTriggerWindow) { - setCount(1); - setStart(now); - return false; - } else { - int count = getCount() + 1; - setCount(count); - EventLog.writeEvent(LOG_TAG_RESCUE_NOTE, Process.ROOT_UID, count, window); - if (Flags.recoverabilityDetection()) { - // After a reboot (e.g. by WARM_REBOOT or mainline rollback) we apply - // mitigations without waiting for DEFAULT_BOOT_LOOP_TRIGGER_COUNT. - return (count >= mBootTriggerCount) - || (performedMitigationsDuringWindow() && count > 1); - } - return count >= mBootTriggerCount; - } - } - - @GuardedBy("sLock") - private boolean performedMitigationsDuringWindow() { - for (ObserverInternal observerInternal: mAllObservers.values()) { - if (observerInternal.getBootMitigationCount() > 0) { - return true; - } - } - return false; - } - - @GuardedBy("sLock") - private void resetAllObserversBootMitigationCount() { - for (int i = 0; i < mAllObservers.size(); i++) { - final ObserverInternal observer = mAllObservers.valueAt(i); - observer.setBootMitigationCount(0); - } - saveAllObserversBootMitigationCountToMetadata(METADATA_FILE); - } - - @GuardedBy("sLock") - @SuppressWarnings("GuardedBy") - void readAllObserversBootMitigationCountIfNecessary(String filePath) { - File metadataFile = new File(filePath); - if (metadataFile.exists()) { - FileInputStream fileStream = null; - ObjectInputStream objectStream = null; - HashMap<String, Integer> bootMitigationCounts = null; - try { - fileStream = new FileInputStream(metadataFile); - objectStream = new ObjectInputStream(fileStream); - bootMitigationCounts = - (HashMap<String, Integer>) objectStream.readObject(); - } catch (Exception e) { - Slog.i(TAG, "Could not read observer metadata file: " + e); - return; - } finally { - IoUtils.closeQuietly(objectStream); - IoUtils.closeQuietly(fileStream); - } - - if (bootMitigationCounts == null || bootMitigationCounts.isEmpty()) { - Slog.i(TAG, "No observer in metadata file"); - return; - } - for (int i = 0; i < mAllObservers.size(); i++) { - final ObserverInternal observer = mAllObservers.valueAt(i); - if (bootMitigationCounts.containsKey(observer.name)) { - observer.setBootMitigationCount( - bootMitigationCounts.get(observer.name)); - } - } - } - } - } - - /** - * Register broadcast receiver for shutdown. - * We would save the observer state to persist across boots. - * - * @hide - */ - public void registerShutdownBroadcastReceiver() { - BroadcastReceiver shutdownEventReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - // Only write if intent is relevant to device reboot or shutdown. - String intentAction = intent.getAction(); - if (ACTION_REBOOT.equals(intentAction) - || ACTION_SHUTDOWN.equals(intentAction)) { - writeNow(); - } - } - }; - - // Setup receiver for device reboots or shutdowns. - IntentFilter filter = new IntentFilter(ACTION_REBOOT); - filter.addAction(ACTION_SHUTDOWN); - mContext.registerReceiverForAllUsers(shutdownEventReceiver, filter, null, - /* run on main thread */ null); - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java b/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java deleted file mode 100644 index 846da194b3c3..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/server/RescueParty.java +++ /dev/null @@ -1,861 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server; - -import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED; -import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS; -import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent; - -import android.annotation.IntDef; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.content.pm.VersionedPackage; -import android.crashrecovery.flags.Flags; -import android.os.Build; -import android.os.PowerManager; -import android.os.RecoverySystem; -import android.os.SystemClock; -import android.os.SystemProperties; -import android.provider.Settings; -import android.sysprop.CrashRecoveryProperties; -import android.text.TextUtils; -import android.util.EventLog; -import android.util.FileUtils; -import android.util.Log; -import android.util.Slog; - -import com.android.internal.annotations.GuardedBy; -import com.android.internal.annotations.VisibleForTesting; -import com.android.server.PackageWatchdog.FailureReasons; -import com.android.server.PackageWatchdog.PackageHealthObserver; -import com.android.server.PackageWatchdog.PackageHealthObserverImpact; -import com.android.server.crashrecovery.proto.CrashRecoveryStatsLog; - -import java.io.File; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; - -/** - * Utilities to help rescue the system from crash loops. Callers are expected to - * report boot events and persistent app crashes, and if they happen frequently - * enough this class will slowly escalate through several rescue operations - * before finally rebooting and prompting the user if they want to wipe data as - * a last resort. - * - * @hide - */ -public class RescueParty { - @VisibleForTesting - static final String PROP_ENABLE_RESCUE = "persist.sys.enable_rescue"; - @VisibleForTesting - static final int LEVEL_NONE = 0; - @VisibleForTesting - static final int LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS = 1; - @VisibleForTesting - static final int LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES = 2; - @VisibleForTesting - static final int LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS = 3; - @VisibleForTesting - static final int LEVEL_WARM_REBOOT = 4; - @VisibleForTesting - static final int LEVEL_FACTORY_RESET = 5; - @VisibleForTesting - static final int RESCUE_LEVEL_NONE = 0; - @VisibleForTesting - static final int RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET = 1; - @VisibleForTesting - static final int RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET = 2; - @VisibleForTesting - static final int RESCUE_LEVEL_WARM_REBOOT = 3; - @VisibleForTesting - static final int RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS = 4; - @VisibleForTesting - static final int RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES = 5; - @VisibleForTesting - static final int RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS = 6; - @VisibleForTesting - static final int RESCUE_LEVEL_FACTORY_RESET = 7; - - @IntDef(prefix = { "RESCUE_LEVEL_" }, value = { - RESCUE_LEVEL_NONE, - RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET, - RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET, - RESCUE_LEVEL_WARM_REBOOT, - RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS, - RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES, - RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS, - RESCUE_LEVEL_FACTORY_RESET - }) - @Retention(RetentionPolicy.SOURCE) - @interface RescueLevels {} - - @VisibleForTesting - static final String RESCUE_NON_REBOOT_LEVEL_LIMIT = "persist.sys.rescue_non_reboot_level_limit"; - @VisibleForTesting - static final int DEFAULT_RESCUE_NON_REBOOT_LEVEL_LIMIT = RESCUE_LEVEL_WARM_REBOOT - 1; - @VisibleForTesting - static final String TAG = "RescueParty"; - @VisibleForTesting - static final long DEFAULT_OBSERVING_DURATION_MS = TimeUnit.DAYS.toMillis(2); - @VisibleForTesting - static final int DEVICE_CONFIG_RESET_MODE = Settings.RESET_MODE_TRUSTED_DEFAULTS; - // The DeviceConfig namespace containing all RescueParty switches. - @VisibleForTesting - static final String NAMESPACE_CONFIGURATION = "configuration"; - @VisibleForTesting - static final String NAMESPACE_TO_PACKAGE_MAPPING_FLAG = - "namespace_to_package_mapping"; - @VisibleForTesting - static final long DEFAULT_FACTORY_RESET_THROTTLE_DURATION_MIN = 1440; - - private static final String NAME = "rescue-party-observer"; - - private static final String PROP_DISABLE_RESCUE = "persist.sys.disable_rescue"; - private static final String PROP_VIRTUAL_DEVICE = "ro.hardware.virtual_device"; - private static final String PROP_DEVICE_CONFIG_DISABLE_FLAG = - "persist.device_config.configuration.disable_rescue_party"; - private static final String PROP_DISABLE_FACTORY_RESET_FLAG = - "persist.device_config.configuration.disable_rescue_party_factory_reset"; - private static final String PROP_THROTTLE_DURATION_MIN_FLAG = - "persist.device_config.configuration.rescue_party_throttle_duration_min"; - - private static final int PERSISTENT_MASK = ApplicationInfo.FLAG_PERSISTENT - | ApplicationInfo.FLAG_SYSTEM; - - /** - * EventLog tags used when logging into the event log. Note the values must be sync with - * frameworks/base/services/core/java/com/android/server/EventLogTags.logtags to get correct - * name translation. - */ - private static final int LOG_TAG_RESCUE_SUCCESS = 2902; - private static final int LOG_TAG_RESCUE_FAILURE = 2903; - - /** Register the Rescue Party observer as a Package Watchdog health observer */ - public static void registerHealthObserver(Context context) { - PackageWatchdog.getInstance(context).registerHealthObserver( - context.getMainExecutor(), RescuePartyObserver.getInstance(context)); - } - - private static boolean isDisabled() { - // Check if we're explicitly enabled for testing - if (SystemProperties.getBoolean(PROP_ENABLE_RESCUE, false)) { - return false; - } - - // We're disabled if the DeviceConfig disable flag is set to true. - // This is in case that an emergency rollback of the feature is needed. - if (SystemProperties.getBoolean(PROP_DEVICE_CONFIG_DISABLE_FLAG, false)) { - Slog.v(TAG, "Disabled because of DeviceConfig flag"); - return true; - } - - // We're disabled on all engineering devices - if (Build.TYPE.equals("eng")) { - Slog.v(TAG, "Disabled because of eng build"); - return true; - } - - // We're disabled on userdebug devices connected over USB, since that's - // a decent signal that someone is actively trying to debug the device, - // or that it's in a lab environment. - if (Build.TYPE.equals("userdebug") && isUsbActive()) { - Slog.v(TAG, "Disabled because of active USB connection"); - return true; - } - - // One last-ditch check - if (SystemProperties.getBoolean(PROP_DISABLE_RESCUE, false)) { - Slog.v(TAG, "Disabled because of manual property"); - return true; - } - - return false; - } - - /** - * Check if we're currently attempting to reboot for a factory reset. This method must - * return true if RescueParty tries to reboot early during a boot loop, since the device - * will not be fully booted at this time. - */ - public static boolean isRecoveryTriggeredReboot() { - return isFactoryResetPropertySet() || isRebootPropertySet(); - } - - static boolean isFactoryResetPropertySet() { - return CrashRecoveryProperties.attemptingFactoryReset().orElse(false); - } - - static boolean isRebootPropertySet() { - return CrashRecoveryProperties.attemptingReboot().orElse(false); - } - - protected static long getLastFactoryResetTimeMs() { - return CrashRecoveryProperties.lastFactoryResetTimeMs().orElse(0L); - } - - protected static int getMaxRescueLevelAttempted() { - return CrashRecoveryProperties.maxRescueLevelAttempted().orElse(LEVEL_NONE); - } - - protected static void setFactoryResetProperty(boolean value) { - CrashRecoveryProperties.attemptingFactoryReset(value); - } - protected static void setRebootProperty(boolean value) { - CrashRecoveryProperties.attemptingReboot(value); - } - - protected static void setLastFactoryResetTimeMs(long value) { - CrashRecoveryProperties.lastFactoryResetTimeMs(value); - } - - protected static void setMaxRescueLevelAttempted(int level) { - CrashRecoveryProperties.maxRescueLevelAttempted(level); - } - - @VisibleForTesting - static long getElapsedRealtime() { - return SystemClock.elapsedRealtime(); - } - - private static int getMaxRescueLevel(boolean mayPerformReboot) { - if (Flags.recoverabilityDetection()) { - if (!mayPerformReboot - || SystemProperties.getBoolean(PROP_DISABLE_FACTORY_RESET_FLAG, false)) { - return SystemProperties.getInt(RESCUE_NON_REBOOT_LEVEL_LIMIT, - DEFAULT_RESCUE_NON_REBOOT_LEVEL_LIMIT); - } - return RESCUE_LEVEL_FACTORY_RESET; - } else { - if (!mayPerformReboot - || SystemProperties.getBoolean(PROP_DISABLE_FACTORY_RESET_FLAG, false)) { - return LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS; - } - return LEVEL_FACTORY_RESET; - } - } - - private static int getMaxRescueLevel() { - if (!SystemProperties.getBoolean(PROP_DISABLE_FACTORY_RESET_FLAG, false)) { - return Level.factoryReset(); - } - return Level.reboot(); - } - - /** - * Get the rescue level to perform if this is the n-th attempt at mitigating failure. - * - * @param mitigationCount: the mitigation attempt number (1 = first attempt etc.) - * @param mayPerformReboot: whether or not a reboot and factory reset may be performed - * for the given failure. - * @return the rescue level for the n-th mitigation attempt. - */ - private static int getRescueLevel(int mitigationCount, boolean mayPerformReboot) { - if (!Flags.deprecateFlagsAndSettingsResets()) { - if (mitigationCount == 1) { - return LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS; - } else if (mitigationCount == 2) { - return LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES; - } else if (mitigationCount == 3) { - return LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS; - } else if (mitigationCount == 4) { - return Math.min(getMaxRescueLevel(mayPerformReboot), LEVEL_WARM_REBOOT); - } else if (mitigationCount >= 5) { - return Math.min(getMaxRescueLevel(mayPerformReboot), LEVEL_FACTORY_RESET); - } else { - Slog.w(TAG, "Expected positive mitigation count, was " + mitigationCount); - return LEVEL_NONE; - } - } else { - if (mitigationCount == 1) { - return Level.reboot(); - } else if (mitigationCount >= 2) { - return Math.min(getMaxRescueLevel(), Level.factoryReset()); - } else { - Slog.w(TAG, "Expected positive mitigation count, was " + mitigationCount); - return LEVEL_NONE; - } - } - } - - /** - * Get the rescue level to perform if this is the n-th attempt at mitigating failure. - * When failedPackage is null then 1st and 2nd mitigation counts are redundant (scoped and - * all device config reset). Behaves as if one mitigation attempt was already done. - * - * @param mitigationCount the mitigation attempt number (1 = first attempt etc.). - * @param mayPerformReboot whether or not a reboot and factory reset may be performed - * for the given failure. - * @param failedPackage in case of bootloop this is null. - * @return the rescue level for the n-th mitigation attempt. - */ - private static @RescueLevels int getRescueLevel(int mitigationCount, boolean mayPerformReboot, - @Nullable VersionedPackage failedPackage) { - // Skipping RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET since it's not defined without a failed - // package. - if (failedPackage == null && mitigationCount > 0) { - mitigationCount += 1; - } - if (mitigationCount == 1) { - return RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET; - } else if (mitigationCount == 2) { - return RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET; - } else if (mitigationCount == 3) { - return Math.min(getMaxRescueLevel(mayPerformReboot), RESCUE_LEVEL_WARM_REBOOT); - } else if (mitigationCount == 4) { - return Math.min(getMaxRescueLevel(mayPerformReboot), - RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS); - } else if (mitigationCount == 5) { - return Math.min(getMaxRescueLevel(mayPerformReboot), - RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES); - } else if (mitigationCount == 6) { - return Math.min(getMaxRescueLevel(mayPerformReboot), - RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS); - } else if (mitigationCount >= 7) { - return Math.min(getMaxRescueLevel(mayPerformReboot), RESCUE_LEVEL_FACTORY_RESET); - } else { - return RESCUE_LEVEL_NONE; - } - } - - /** - * Get the rescue level to perform if this is the n-th attempt at mitigating failure. - * - * @param mitigationCount the mitigation attempt number (1 = first attempt etc.). - * @return the rescue level for the n-th mitigation attempt. - */ - private static @RescueLevels int getRescueLevel(int mitigationCount) { - if (mitigationCount == 1) { - return Level.reboot(); - } else if (mitigationCount >= 2) { - return Math.min(getMaxRescueLevel(), Level.factoryReset()); - } else { - return Level.none(); - } - } - - private static void executeRescueLevel(Context context, @Nullable String failedPackage, - int level) { - Slog.w(TAG, "Attempting rescue level " + levelToString(level)); - try { - executeRescueLevelInternal(context, level, failedPackage); - EventLog.writeEvent(LOG_TAG_RESCUE_SUCCESS, level); - String successMsg = "Finished rescue level " + levelToString(level); - if (!TextUtils.isEmpty(failedPackage)) { - successMsg += " for package " + failedPackage; - } - logCrashRecoveryEvent(Log.DEBUG, successMsg); - } catch (Throwable t) { - logRescueException(level, failedPackage, t); - } - } - - private static void executeRescueLevelInternal(Context context, int level, @Nullable - String failedPackage) throws Exception { - if (Flags.recoverabilityDetection()) { - executeRescueLevelInternalNew(context, level, failedPackage); - } else { - executeRescueLevelInternalOld(context, level, failedPackage); - } - } - - private static void executeRescueLevelInternalOld(Context context, int level, @Nullable - String failedPackage) throws Exception { - CrashRecoveryStatsLog.write(CrashRecoveryStatsLog.RESCUE_PARTY_RESET_REPORTED, - level, levelToString(level)); - // Try our best to reset all settings possible, and once finished - // rethrow any exception that we encountered - Exception res = null; - switch (level) { - case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: - break; - case LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES: - break; - case LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS: - break; - case LEVEL_WARM_REBOOT: - executeWarmReboot(context, level, failedPackage); - break; - case LEVEL_FACTORY_RESET: - // Before the completion of Reboot, if any crash happens then PackageWatchdog - // escalates to next level i.e. factory reset, as they happen in separate threads. - // Adding a check to prevent factory reset to execute before above reboot completes. - // Note: this reboot property is not persistent resets after reboot is completed. - if (isRebootPropertySet()) { - return; - } - executeFactoryReset(context, level, failedPackage); - break; - } - - if (res != null) { - throw res; - } - } - - private static void executeRescueLevelInternalNew(Context context, @RescueLevels int level, - @Nullable String failedPackage) throws Exception { - CrashRecoveryStatsLog.write(CrashRecoveryStatsLog.RESCUE_PARTY_RESET_REPORTED, - level, levelToString(level)); - switch (level) { - case RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET: - break; - case RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET: - break; - case RESCUE_LEVEL_WARM_REBOOT: - executeWarmReboot(context, level, failedPackage); - break; - case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: - // do nothing - break; - case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES: - // do nothing - break; - case RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS: - // do nothing - break; - case RESCUE_LEVEL_FACTORY_RESET: - // Before the completion of Reboot, if any crash happens then PackageWatchdog - // escalates to next level i.e. factory reset, as they happen in separate threads. - // Adding a check to prevent factory reset to execute before above reboot completes. - // Note: this reboot property is not persistent resets after reboot is completed. - if (isRebootPropertySet()) { - return; - } - executeFactoryReset(context, level, failedPackage); - break; - } - } - - private static void executeWarmReboot(Context context, int level, - @Nullable String failedPackage) { - if (Flags.deprecateFlagsAndSettingsResets()) { - if (shouldThrottleReboot()) { - return; - } - } - - // Request the reboot from a separate thread to avoid deadlock on PackageWatchdog - // when device shutting down. - setRebootProperty(true); - - if (Flags.synchronousRebootInRescueParty()) { - try { - PowerManager pm = context.getSystemService(PowerManager.class); - if (pm != null) { - pm.reboot(TAG); - } - } catch (Throwable t) { - logRescueException(level, failedPackage, t); - } - } else { - Runnable runnable = () -> { - try { - PowerManager pm = context.getSystemService(PowerManager.class); - if (pm != null) { - pm.reboot(TAG); - } - } catch (Throwable t) { - logRescueException(level, failedPackage, t); - } - }; - Thread thread = new Thread(runnable); - thread.start(); - } - } - - private static void executeFactoryReset(Context context, int level, - @Nullable String failedPackage) { - if (Flags.deprecateFlagsAndSettingsResets()) { - if (shouldThrottleReboot()) { - return; - } - } - setFactoryResetProperty(true); - long now = System.currentTimeMillis(); - setLastFactoryResetTimeMs(now); - - if (Flags.synchronousRebootInRescueParty()) { - try { - RecoverySystem.rebootPromptAndWipeUserData(context, TAG + "," + failedPackage); - } catch (Throwable t) { - logRescueException(level, failedPackage, t); - } - } else { - Runnable runnable = new Runnable() { - @Override - public void run() { - try { - RecoverySystem.rebootPromptAndWipeUserData(context, - TAG + "," + failedPackage); - } catch (Throwable t) { - logRescueException(level, failedPackage, t); - } - } - }; - Thread thread = new Thread(runnable); - thread.start(); - } - } - - - private static String getCompleteMessage(Throwable t) { - final StringBuilder builder = new StringBuilder(); - builder.append(t.getMessage()); - while ((t = t.getCause()) != null) { - builder.append(": ").append(t.getMessage()); - } - return builder.toString(); - } - - private static void logRescueException(int level, @Nullable String failedPackageName, - Throwable t) { - final String msg = getCompleteMessage(t); - EventLog.writeEvent(LOG_TAG_RESCUE_FAILURE, level, msg); - String failureMsg = "Failed rescue level " + levelToString(level); - if (!TextUtils.isEmpty(failedPackageName)) { - failureMsg += " for package " + failedPackageName; - } - logCrashRecoveryEvent(Log.ERROR, failureMsg + ": " + msg); - } - - private static int mapRescueLevelToUserImpact(int rescueLevel) { - if (Flags.recoverabilityDetection()) { - switch (rescueLevel) { - case RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_10; - case RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_40; - case RESCUE_LEVEL_WARM_REBOOT: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_50; - case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_71; - case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_75; - case RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_80; - case RESCUE_LEVEL_FACTORY_RESET: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_100; - default: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - } - } else { - switch (rescueLevel) { - case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: - case LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_10; - case LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS: - case LEVEL_WARM_REBOOT: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_50; - case LEVEL_FACTORY_RESET: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_100; - default: - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - } - } - } - - /** - * Handle mitigation action for package failures. This observer will be register to Package - * Watchdog and will receive calls about package failures. This observer is persistent so it - * may choose to mitigate failures for packages it has not explicitly asked to observe. - */ - public static class RescuePartyObserver implements PackageHealthObserver { - - private final Context mContext; - private final Map<String, Set<String>> mCallingPackageNamespaceSetMap = new HashMap<>(); - private final Map<String, Set<String>> mNamespaceCallingPackageSetMap = new HashMap<>(); - - @GuardedBy("RescuePartyObserver.class") - static RescuePartyObserver sRescuePartyObserver; - - private RescuePartyObserver(Context context) { - mContext = context; - } - - /** Creates or gets singleton instance of RescueParty. */ - public static RescuePartyObserver getInstance(Context context) { - synchronized (RescuePartyObserver.class) { - if (sRescuePartyObserver == null) { - sRescuePartyObserver = new RescuePartyObserver(context); - } - return sRescuePartyObserver; - } - } - - /** Gets singleton instance. It returns null if the instance is not created yet.*/ - @Nullable - public static RescuePartyObserver getInstanceIfCreated() { - synchronized (RescuePartyObserver.class) { - return sRescuePartyObserver; - } - } - - @VisibleForTesting - static void reset() { - synchronized (RescuePartyObserver.class) { - sRescuePartyObserver = null; - } - } - - @Override - public int onHealthCheckFailed(@Nullable VersionedPackage failedPackage, - @FailureReasons int failureReason, int mitigationCount) { - int impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - if (!isDisabled() && (failureReason == PackageWatchdog.FAILURE_REASON_APP_CRASH - || failureReason == PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING)) { - if (Flags.recoverabilityDetection()) { - if (!Flags.deprecateFlagsAndSettingsResets()) { - impact = mapRescueLevelToUserImpact(getRescueLevel(mitigationCount, - mayPerformReboot(failedPackage), failedPackage)); - } else { - impact = mapRescueLevelToUserImpact(getRescueLevel(mitigationCount)); - } - } else { - impact = mapRescueLevelToUserImpact(getRescueLevel(mitigationCount, - mayPerformReboot(failedPackage))); - } - } - - Slog.i(TAG, "Checking available remediations for health check failure." - + " failedPackage: " - + (failedPackage == null ? null : failedPackage.getPackageName()) - + " failureReason: " + failureReason - + " available impact: " + impact); - return impact; - } - - @Override - public int onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, - @FailureReasons int failureReason, int mitigationCount) { - if (isDisabled()) { - return MITIGATION_RESULT_SKIPPED; - } - Slog.i(TAG, "Executing remediation." - + " failedPackage: " - + (failedPackage == null ? null : failedPackage.getPackageName()) - + " failureReason: " + failureReason - + " mitigationCount: " + mitigationCount); - if (failureReason == PackageWatchdog.FAILURE_REASON_APP_CRASH - || failureReason == PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING) { - final int level; - if (Flags.recoverabilityDetection()) { - if (!Flags.deprecateFlagsAndSettingsResets()) { - level = getRescueLevel(mitigationCount, mayPerformReboot(failedPackage), - failedPackage); - } else { - level = getRescueLevel(mitigationCount); - } - } else { - level = getRescueLevel(mitigationCount, mayPerformReboot(failedPackage)); - } - executeRescueLevel(mContext, - failedPackage == null ? null : failedPackage.getPackageName(), level); - return MITIGATION_RESULT_SUCCESS; - } else { - return MITIGATION_RESULT_SKIPPED; - } - } - - @Override - public boolean isPersistent() { - return true; - } - - @Override - public boolean mayObservePackage(String packageName) { - PackageManager pm = mContext.getPackageManager(); - try { - // A package is a module if this is non-null - if (pm.getModuleInfo(packageName, 0) != null) { - return true; - } - } catch (PackageManager.NameNotFoundException | IllegalStateException ignore) { - } - - return isPersistentSystemApp(packageName); - } - - @Override - public int onBootLoop(int mitigationCount) { - if (isDisabled()) { - return PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - } - if (Flags.recoverabilityDetection()) { - if (!Flags.deprecateFlagsAndSettingsResets()) { - return mapRescueLevelToUserImpact(getRescueLevel(mitigationCount, - true, /*failedPackage=*/ null)); - } else { - return mapRescueLevelToUserImpact(getRescueLevel(mitigationCount)); - } - } else { - return mapRescueLevelToUserImpact(getRescueLevel(mitigationCount, true)); - } - } - - @Override - public int onExecuteBootLoopMitigation(int mitigationCount) { - if (isDisabled()) { - return MITIGATION_RESULT_SKIPPED; - } - boolean mayPerformReboot = !shouldThrottleReboot(); - final int level; - if (Flags.recoverabilityDetection()) { - if (!Flags.deprecateFlagsAndSettingsResets()) { - level = getRescueLevel(mitigationCount, mayPerformReboot, - /*failedPackage=*/ null); - } else { - level = getRescueLevel(mitigationCount); - } - } else { - level = getRescueLevel(mitigationCount, mayPerformReboot); - } - executeRescueLevel(mContext, /*failedPackage=*/ null, level); - return MITIGATION_RESULT_SUCCESS; - } - - @Override - public String getUniqueIdentifier() { - return NAME; - } - - /** - * Returns {@code true} if the failing package is non-null and performing a reboot or - * prompting a factory reset is an acceptable mitigation strategy for the package's - * failure, {@code false} otherwise. - */ - private boolean mayPerformReboot(@Nullable VersionedPackage failingPackage) { - if (failingPackage == null) { - return false; - } - if (shouldThrottleReboot()) { - return false; - } - - return isPersistentSystemApp(failingPackage.getPackageName()); - } - - private boolean isPersistentSystemApp(@NonNull String packageName) { - PackageManager pm = mContext.getPackageManager(); - try { - ApplicationInfo info = pm.getApplicationInfo(packageName, 0); - return (info.flags & PERSISTENT_MASK) == PERSISTENT_MASK; - } catch (PackageManager.NameNotFoundException e) { - return false; - } - } - - private synchronized Set<String> getCallingPackagesSet(String namespace) { - return mNamespaceCallingPackageSetMap.get(namespace); - } - } - - /** - * Returns {@code true} if Rescue Party is allowed to attempt a reboot or factory reset. - * Will return {@code false} if a factory reset was already offered recently. - */ - private static boolean shouldThrottleReboot() { - Long lastResetTime = getLastFactoryResetTimeMs(); - long now = System.currentTimeMillis(); - long throttleDurationMin = SystemProperties.getLong(PROP_THROTTLE_DURATION_MIN_FLAG, - DEFAULT_FACTORY_RESET_THROTTLE_DURATION_MIN); - return now < lastResetTime + TimeUnit.MINUTES.toMillis(throttleDurationMin); - } - - /** - * Hacky test to check if the device has an active USB connection, which is - * a good proxy for someone doing local development work. - */ - private static boolean isUsbActive() { - if (SystemProperties.getBoolean(PROP_VIRTUAL_DEVICE, false)) { - Slog.v(TAG, "Assuming virtual device is connected over USB"); - return true; - } - try { - final String state = FileUtils - .readTextFile(new File("/sys/class/android_usb/android0/state"), 128, ""); - return "CONFIGURED".equals(state.trim()); - } catch (Throwable t) { - Slog.w(TAG, "Failed to determine if device was on USB", t); - return false; - } - } - - private static class Level { - static int none() { - return Flags.recoverabilityDetection() ? RESCUE_LEVEL_NONE : LEVEL_NONE; - } - - static int reboot() { - return Flags.recoverabilityDetection() ? RESCUE_LEVEL_WARM_REBOOT : LEVEL_WARM_REBOOT; - } - - static int factoryReset() { - return Flags.recoverabilityDetection() - ? RESCUE_LEVEL_FACTORY_RESET - : LEVEL_FACTORY_RESET; - } - } - - private static String levelToString(int level) { - if (Flags.recoverabilityDetection()) { - switch (level) { - case RESCUE_LEVEL_NONE: - return "NONE"; - case RESCUE_LEVEL_SCOPED_DEVICE_CONFIG_RESET: - return "SCOPED_DEVICE_CONFIG_RESET"; - case RESCUE_LEVEL_ALL_DEVICE_CONFIG_RESET: - return "ALL_DEVICE_CONFIG_RESET"; - case RESCUE_LEVEL_WARM_REBOOT: - return "WARM_REBOOT"; - case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: - return "RESET_SETTINGS_UNTRUSTED_DEFAULTS"; - case RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES: - return "RESET_SETTINGS_UNTRUSTED_CHANGES"; - case RESCUE_LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS: - return "RESET_SETTINGS_TRUSTED_DEFAULTS"; - case RESCUE_LEVEL_FACTORY_RESET: - return "FACTORY_RESET"; - default: - return Integer.toString(level); - } - } else { - switch (level) { - case LEVEL_NONE: - return "NONE"; - case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS: - return "RESET_SETTINGS_UNTRUSTED_DEFAULTS"; - case LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES: - return "RESET_SETTINGS_UNTRUSTED_CHANGES"; - case LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS: - return "RESET_SETTINGS_TRUSTED_DEFAULTS"; - case LEVEL_WARM_REBOOT: - return "WARM_REBOOT"; - case LEVEL_FACTORY_RESET: - return "FACTORY_RESET"; - default: - return Integer.toString(level); - } - } - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryModule.java b/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryModule.java deleted file mode 100644 index 8a81aaa1e636..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryModule.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.crashrecovery; - -import android.content.Context; - -import com.android.server.PackageWatchdog; -import com.android.server.RescueParty; -import com.android.server.SystemService; - - -/** This class encapsulate the lifecycle methods of CrashRecovery module. - * - * @hide - */ -public class CrashRecoveryModule { - private static final String TAG = "CrashRecoveryModule"; - - /** Lifecycle definition for CrashRecovery module. */ - public static class Lifecycle extends SystemService { - private Context mSystemContext; - private PackageWatchdog mPackageWatchdog; - - public Lifecycle(Context context) { - super(context); - mSystemContext = context; - mPackageWatchdog = PackageWatchdog.getInstance(context); - } - - @Override - public void onStart() { - RescueParty.registerHealthObserver(mSystemContext); - mPackageWatchdog.registerShutdownBroadcastReceiver(); - mPackageWatchdog.noteBoot(); - } - - @Override - public void onBootPhase(int phase) { - if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) { - mPackageWatchdog.onPackagesReady(); - } - } - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryUtils.java b/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryUtils.java deleted file mode 100644 index 2e2a93776f9d..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/server/crashrecovery/CrashRecoveryUtils.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.crashrecovery; - -import android.os.Environment; -import android.util.IndentingPrintWriter; -import android.util.Log; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.PrintWriter; -import java.time.LocalDateTime; -import java.time.ZoneId; - -/** - * Class containing helper methods for the CrashRecoveryModule. - * - * @hide - */ -public class CrashRecoveryUtils { - private static final String TAG = "CrashRecoveryUtils"; - private static final long MAX_CRITICAL_INFO_DUMP_SIZE = 1000 * 1000; // ~1MB - private static final Object sFileLock = new Object(); - - /** Persist recovery related events in crashrecovery events file.**/ - public static void logCrashRecoveryEvent(int priority, String msg) { - Log.println(priority, TAG, msg); - try { - File fname = getCrashRecoveryEventsFile(); - synchronized (sFileLock) { - FileOutputStream out = new FileOutputStream(fname, true); - PrintWriter pw = new PrintWriter(out); - String dateString = LocalDateTime.now(ZoneId.systemDefault()).toString(); - pw.println(dateString + ": " + msg); - pw.close(); - } - } catch (IOException e) { - Log.e(TAG, "Unable to log CrashRecoveryEvents " + e.getMessage()); - } - } - - /** Dump recovery related events from crashrecovery events file.**/ - public static void dumpCrashRecoveryEvents(IndentingPrintWriter pw) { - pw.println("CrashRecovery Events: "); - pw.increaseIndent(); - final File file = getCrashRecoveryEventsFile(); - final long skipSize = file.length() - MAX_CRITICAL_INFO_DUMP_SIZE; - synchronized (sFileLock) { - try (BufferedReader in = new BufferedReader(new FileReader(file))) { - if (skipSize > 0) { - in.skip(skipSize); - } - String line; - while ((line = in.readLine()) != null) { - pw.println(line); - } - } catch (IOException e) { - Log.e(TAG, "Unable to dump CrashRecoveryEvents " + e.getMessage()); - } - } - pw.decreaseIndent(); - } - - private static File getCrashRecoveryEventsFile() { - File systemDir = new File(Environment.getDataDirectory(), "system"); - return new File(systemDir, "crashrecovery-events.txt"); - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java deleted file mode 100644 index 4978df491c62..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/server/rollback/RollbackPackageHealthObserver.java +++ /dev/null @@ -1,785 +0,0 @@ -/* - * Copyright (C) 2019 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.rollback; - -import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SKIPPED; -import static com.android.server.PackageWatchdog.MITIGATION_RESULT_SUCCESS; -import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent; - -import android.annotation.AnyThread; -import android.annotation.FlaggedApi; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.SuppressLint; -import android.annotation.SystemApi; -import android.annotation.WorkerThread; -import android.app.PendingIntent; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.content.pm.VersionedPackage; -import android.content.rollback.PackageRollbackInfo; -import android.content.rollback.RollbackInfo; -import android.content.rollback.RollbackManager; -import android.crashrecovery.flags.Flags; -import android.os.Environment; -import android.os.Handler; -import android.os.HandlerThread; -import android.os.PowerManager; -import android.os.SystemProperties; -import android.sysprop.CrashRecoveryProperties; -import android.util.ArraySet; -import android.util.FileUtils; -import android.util.Log; -import android.util.Slog; -import android.util.SparseArray; - -import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.util.Preconditions; -import com.android.server.PackageWatchdog; -import com.android.server.PackageWatchdog.FailureReasons; -import com.android.server.PackageWatchdog.PackageHealthObserver; -import com.android.server.PackageWatchdog.PackageHealthObserverImpact; -import com.android.server.crashrecovery.proto.CrashRecoveryStatsLog; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.FileReader; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -/** - * {@link PackageHealthObserver} for {@link RollbackManagerService}. - * This class monitors crashes and triggers RollbackManager rollback accordingly. - * It also monitors native crashes for some short while after boot. - * - * @hide - */ -@FlaggedApi(Flags.FLAG_ENABLE_CRASHRECOVERY) -@SuppressLint({"CallbackName"}) -@SystemApi(client = SystemApi.Client.SYSTEM_SERVER) -public final class RollbackPackageHealthObserver implements PackageHealthObserver { - private static final String TAG = "RollbackPackageHealthObserver"; - private static final String NAME = "rollback-observer"; - private static final String CLASS_NAME = RollbackPackageHealthObserver.class.getName(); - - private static final int PERSISTENT_MASK = ApplicationInfo.FLAG_PERSISTENT - | ApplicationInfo.FLAG_SYSTEM; - - private static final String PROP_DISABLE_HIGH_IMPACT_ROLLBACK_FLAG = - "persist.device_config.configuration.disable_high_impact_rollback"; - - private final Context mContext; - private final Handler mHandler; - private final File mLastStagedRollbackIdsFile; - private final File mTwoPhaseRollbackEnabledFile; - // Staged rollback ids that have been committed but their session is not yet ready - private final Set<Integer> mPendingStagedRollbackIds = new ArraySet<>(); - // True if needing to roll back only rebootless apexes when native crash happens - private boolean mTwoPhaseRollbackEnabled; - - @VisibleForTesting - public RollbackPackageHealthObserver(@NonNull Context context) { - mContext = context; - HandlerThread handlerThread = new HandlerThread("RollbackPackageHealthObserver"); - handlerThread.start(); - mHandler = new Handler(handlerThread.getLooper()); - File dataDir = new File(Environment.getDataDirectory(), "rollback-observer"); - dataDir.mkdirs(); - mLastStagedRollbackIdsFile = new File(dataDir, "last-staged-rollback-ids"); - mTwoPhaseRollbackEnabledFile = new File(dataDir, "two-phase-rollback-enabled"); - PackageWatchdog.getInstance(mContext).registerHealthObserver(context.getMainExecutor(), - this); - - if (SystemProperties.getBoolean("sys.boot_completed", false)) { - // Load the value from the file if system server has crashed and restarted - mTwoPhaseRollbackEnabled = readBoolean(mTwoPhaseRollbackEnabledFile); - } else { - // Disable two-phase rollback for a normal reboot. We assume the rebootless apex - // installed before reboot is stable if native crash didn't happen. - mTwoPhaseRollbackEnabled = false; - writeBoolean(mTwoPhaseRollbackEnabledFile, false); - } - } - - @Override - public int onHealthCheckFailed(@Nullable VersionedPackage failedPackage, - @FailureReasons int failureReason, int mitigationCount) { - int impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - if (Flags.recoverabilityDetection()) { - List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); - List<RollbackInfo> lowImpactRollbacks = getRollbacksAvailableForImpactLevel( - availableRollbacks, PackageManager.ROLLBACK_USER_IMPACT_LOW); - if (!lowImpactRollbacks.isEmpty()) { - if (failureReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) { - // For native crashes, we will directly roll back any available rollbacks at low - // impact level - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30; - } else if (getRollbackForPackage(failedPackage, lowImpactRollbacks) != null) { - // Rollback is available for crashing low impact package - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30; - } else { - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_70; - } - } - } else { - boolean anyRollbackAvailable = !mContext.getSystemService(RollbackManager.class) - .getAvailableRollbacks().isEmpty(); - - if (failureReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH - && anyRollbackAvailable) { - // For native crashes, we will directly roll back any available rollbacks - // Note: For non-native crashes the rollback-all step has higher impact - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30; - } else if (getAvailableRollback(failedPackage) != null) { - // Rollback is available, we may get a callback into #onExecuteHealthCheckMitigation - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_30; - } else if (anyRollbackAvailable) { - // If any rollbacks are available, we will commit them - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_70; - } - } - - Slog.i(TAG, "Checking available remediations for health check failure." - + " failedPackage: " - + (failedPackage == null ? null : failedPackage.getPackageName()) - + " failureReason: " + failureReason - + " available impact: " + impact); - return impact; - } - - @Override - public int onExecuteHealthCheckMitigation(@Nullable VersionedPackage failedPackage, - @FailureReasons int rollbackReason, int mitigationCount) { - Slog.i(TAG, "Executing remediation." - + " failedPackage: " - + (failedPackage == null ? null : failedPackage.getPackageName()) - + " rollbackReason: " + rollbackReason - + " mitigationCount: " + mitigationCount); - if (Flags.recoverabilityDetection()) { - List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); - if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) { - mHandler.post(() -> rollbackAllLowImpact(availableRollbacks, rollbackReason)); - return MITIGATION_RESULT_SUCCESS; - } - - List<RollbackInfo> lowImpactRollbacks = getRollbacksAvailableForImpactLevel( - availableRollbacks, PackageManager.ROLLBACK_USER_IMPACT_LOW); - RollbackInfo rollback = getRollbackForPackage(failedPackage, lowImpactRollbacks); - if (rollback != null) { - mHandler.post(() -> rollbackPackage(rollback, failedPackage, rollbackReason)); - } else if (!lowImpactRollbacks.isEmpty()) { - // Apply all available low impact rollbacks. - mHandler.post(() -> rollbackAllLowImpact(availableRollbacks, rollbackReason)); - } - } else { - if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) { - mHandler.post(() -> rollbackAll(rollbackReason)); - return MITIGATION_RESULT_SUCCESS; - } - - RollbackInfo rollback = getAvailableRollback(failedPackage); - if (rollback != null) { - mHandler.post(() -> rollbackPackage(rollback, failedPackage, rollbackReason)); - } else { - mHandler.post(() -> rollbackAll(rollbackReason)); - } - } - - // Assume rollbacks executed successfully - return MITIGATION_RESULT_SUCCESS; - } - - @Override - public int onBootLoop(int mitigationCount) { - int impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - if (Flags.recoverabilityDetection()) { - List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); - if (!availableRollbacks.isEmpty()) { - impact = getUserImpactBasedOnRollbackImpactLevel(availableRollbacks); - } - } - return impact; - } - - @Override - public int onExecuteBootLoopMitigation(int mitigationCount) { - if (Flags.recoverabilityDetection()) { - List<RollbackInfo> availableRollbacks = getAvailableRollbacks(); - - triggerLeastImpactLevelRollback(availableRollbacks, - PackageWatchdog.FAILURE_REASON_BOOT_LOOP); - return MITIGATION_RESULT_SUCCESS; - } - return MITIGATION_RESULT_SKIPPED; - } - - @Override - @NonNull - public String getUniqueIdentifier() { - return NAME; - } - - @Override - public boolean isPersistent() { - return true; - } - - @Override - public boolean mayObservePackage(@NonNull String packageName) { - if (getAvailableRollbacks().isEmpty()) { - return false; - } - return isPersistentSystemApp(packageName); - } - - private List<RollbackInfo> getAvailableRollbacks() { - return mContext.getSystemService(RollbackManager.class).getAvailableRollbacks(); - } - - private boolean isPersistentSystemApp(@NonNull String packageName) { - PackageManager pm = mContext.getPackageManager(); - try { - ApplicationInfo info = pm.getApplicationInfo(packageName, 0); - return (info.flags & PERSISTENT_MASK) == PERSISTENT_MASK; - } catch (PackageManager.NameNotFoundException e) { - return false; - } - } - - private void assertInWorkerThread() { - Preconditions.checkState(mHandler.getLooper().isCurrentThread()); - } - - @AnyThread - @NonNull - public void notifyRollbackAvailable(@NonNull RollbackInfo rollback) { - mHandler.post(() -> { - // Enable two-phase rollback when a rebootless apex rollback is made available. - // We assume the rebootless apex is stable and is less likely to be the cause - // if native crash doesn't happen before reboot. So we will clear the flag and disable - // two-phase rollback after reboot. - if (isRebootlessApex(rollback)) { - mTwoPhaseRollbackEnabled = true; - writeBoolean(mTwoPhaseRollbackEnabledFile, true); - } - }); - } - - private static boolean isRebootlessApex(RollbackInfo rollback) { - if (!rollback.isStaged()) { - for (PackageRollbackInfo info : rollback.getPackages()) { - if (info.isApex()) { - return true; - } - } - } - return false; - } - - /** Verifies the rollback state after a reboot and schedules polling for sometime after reboot - * to check for native crashes and mitigate them if needed. - */ - @AnyThread - public void onBootCompletedAsync() { - mHandler.post(()->onBootCompleted()); - } - - @WorkerThread - private void onBootCompleted() { - assertInWorkerThread(); - - RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class); - if (!rollbackManager.getAvailableRollbacks().isEmpty()) { - // TODO(gavincorkery): Call into Package Watchdog from outside the observer - PackageWatchdog.getInstance(mContext).scheduleCheckAndMitigateNativeCrashes(); - } - - SparseArray<String> rollbackIds = popLastStagedRollbackIds(); - for (int i = 0; i < rollbackIds.size(); i++) { - WatchdogRollbackLogger.logRollbackStatusOnBoot(mContext, - rollbackIds.keyAt(i), rollbackIds.valueAt(i), - rollbackManager.getRecentlyCommittedRollbacks()); - } - } - - @AnyThread - private RollbackInfo getAvailableRollback(VersionedPackage failedPackage) { - RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class); - for (RollbackInfo rollback : rollbackManager.getAvailableRollbacks()) { - for (PackageRollbackInfo packageRollback : rollback.getPackages()) { - if (packageRollback.getVersionRolledBackFrom().equals(failedPackage)) { - return rollback; - } - // TODO(b/147666157): Extract version number of apk-in-apex so that we don't have - // to rely on complicated reasoning as below - - // Due to b/147666157, for apk in apex, we do not know the version we are rolling - // back from. But if a package X is embedded in apex A exclusively (not embedded in - // any other apex), which is not guaranteed, then it is sufficient to check only - // package names here, as the version of failedPackage and the PackageRollbackInfo - // can't be different. If failedPackage has a higher version, then it must have - // been updated somehow. There are two ways: it was updated by an update of apex A - // or updated directly as apk. In both cases, this rollback would have gotten - // expired when onPackageReplaced() was called. Since the rollback exists, it has - // same version as failedPackage. - if (packageRollback.isApkInApex() - && packageRollback.getVersionRolledBackFrom().getPackageName() - .equals(failedPackage.getPackageName())) { - return rollback; - } - } - } - return null; - } - - @AnyThread - private RollbackInfo getRollbackForPackage(@Nullable VersionedPackage failedPackage, - List<RollbackInfo> availableRollbacks) { - if (failedPackage == null) { - return null; - } - - for (RollbackInfo rollback : availableRollbacks) { - for (PackageRollbackInfo packageRollback : rollback.getPackages()) { - if (packageRollback.getVersionRolledBackFrom().equals(failedPackage)) { - return rollback; - } - // TODO(b/147666157): Extract version number of apk-in-apex so that we don't have - // to rely on complicated reasoning as below - - // Due to b/147666157, for apk in apex, we do not know the version we are rolling - // back from. But if a package X is embedded in apex A exclusively (not embedded in - // any other apex), which is not guaranteed, then it is sufficient to check only - // package names here, as the version of failedPackage and the PackageRollbackInfo - // can't be different. If failedPackage has a higher version, then it must have - // been updated somehow. There are two ways: it was updated by an update of apex A - // or updated directly as apk. In both cases, this rollback would have gotten - // expired when onPackageReplaced() was called. Since the rollback exists, it has - // same version as failedPackage. - if (packageRollback.isApkInApex() - && packageRollback.getVersionRolledBackFrom().getPackageName() - .equals(failedPackage.getPackageName())) { - return rollback; - } - } - } - return null; - } - - /** - * Returns {@code true} if staged session associated with {@code rollbackId} was marked - * as handled, {@code false} if already handled. - */ - @WorkerThread - private boolean markStagedSessionHandled(int rollbackId) { - assertInWorkerThread(); - return mPendingStagedRollbackIds.remove(rollbackId); - } - - /** - * Returns {@code true} if all pending staged rollback sessions were marked as handled, - * {@code false} if there is any left. - */ - @WorkerThread - private boolean isPendingStagedSessionsEmpty() { - assertInWorkerThread(); - return mPendingStagedRollbackIds.isEmpty(); - } - - private static boolean readBoolean(File file) { - try (FileInputStream fis = new FileInputStream(file)) { - return fis.read() == 1; - } catch (IOException ignore) { - return false; - } - } - - private static void writeBoolean(File file, boolean value) { - try (FileOutputStream fos = new FileOutputStream(file)) { - fos.write(value ? 1 : 0); - fos.flush(); - FileUtils.sync(fos); - } catch (IOException ignore) { - } - } - - @WorkerThread - private void saveStagedRollbackId(int stagedRollbackId, @Nullable VersionedPackage logPackage) { - assertInWorkerThread(); - writeStagedRollbackId(mLastStagedRollbackIdsFile, stagedRollbackId, logPackage); - } - - static void writeStagedRollbackId(File file, int stagedRollbackId, - @Nullable VersionedPackage logPackage) { - try { - FileOutputStream fos = new FileOutputStream(file, true); - PrintWriter pw = new PrintWriter(fos); - String logPackageName = logPackage != null ? logPackage.getPackageName() : ""; - pw.append(String.valueOf(stagedRollbackId)).append(",").append(logPackageName); - pw.println(); - pw.flush(); - FileUtils.sync(fos); - pw.close(); - } catch (IOException e) { - Slog.e(TAG, "Failed to save last staged rollback id", e); - file.delete(); - } - } - - @WorkerThread - private SparseArray<String> popLastStagedRollbackIds() { - assertInWorkerThread(); - try { - return readStagedRollbackIds(mLastStagedRollbackIdsFile); - } finally { - mLastStagedRollbackIdsFile.delete(); - } - } - - static SparseArray<String> readStagedRollbackIds(File file) { - SparseArray<String> result = new SparseArray<>(); - try { - String line; - BufferedReader reader = new BufferedReader(new FileReader(file)); - while ((line = reader.readLine()) != null) { - // Each line is of the format: "id,logging_package" - String[] values = line.trim().split(","); - String rollbackId = values[0]; - String logPackageName = ""; - if (values.length > 1) { - logPackageName = values[1]; - } - result.put(Integer.parseInt(rollbackId), logPackageName); - } - } catch (Exception ignore) { - return new SparseArray<>(); - } - return result; - } - - - /** - * Returns true if the package name is the name of a module. - */ - @AnyThread - private boolean isModule(String packageName) { - // Check if the package is listed among the system modules or is an - // APK inside an updatable APEX. - try { - PackageManager pm = mContext.getPackageManager(); - final PackageInfo pkg = pm.getPackageInfo(packageName, 0 /* flags */); - String apexPackageName = pkg.getApexPackageName(); - if (apexPackageName != null) { - packageName = apexPackageName; - } - - return pm.getModuleInfo(packageName, 0 /* flags */) != null; - } catch (PackageManager.NameNotFoundException e) { - return false; - } - } - - /** - * Rolls back the session that owns {@code failedPackage} - * - * @param rollback {@code rollbackInfo} of the {@code failedPackage} - * @param failedPackage the package that needs to be rolled back - */ - @WorkerThread - private void rollbackPackage(RollbackInfo rollback, VersionedPackage failedPackage, - @FailureReasons int rollbackReason) { - assertInWorkerThread(); - String failedPackageName = (failedPackage == null ? null : failedPackage.getPackageName()); - - Slog.i(TAG, "Rolling back package. RollbackId: " + rollback.getRollbackId() - + " failedPackage: " + failedPackageName - + " rollbackReason: " + rollbackReason); - logCrashRecoveryEvent(Log.DEBUG, String.format("Rolling back %s. Reason: %s", - failedPackageName, rollbackReason)); - final RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class); - int reasonToLog = WatchdogRollbackLogger.mapFailureReasonToMetric(rollbackReason); - final String failedPackageToLog; - if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) { - failedPackageToLog = SystemProperties.get( - "sys.init.updatable_crashing_process_name", ""); - } else { - failedPackageToLog = failedPackage.getPackageName(); - } - VersionedPackage logPackageTemp = null; - if (isModule(failedPackage.getPackageName())) { - logPackageTemp = WatchdogRollbackLogger.getLogPackage(mContext, failedPackage); - } - - final VersionedPackage logPackage = logPackageTemp; - WatchdogRollbackLogger.logEvent(logPackage, - CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE, - reasonToLog, failedPackageToLog); - - Consumer<Intent> onResult = result -> { - assertInWorkerThread(); - int status = result.getIntExtra(RollbackManager.EXTRA_STATUS, - RollbackManager.STATUS_FAILURE); - if (status == RollbackManager.STATUS_SUCCESS) { - if (rollback.isStaged()) { - int rollbackId = rollback.getRollbackId(); - saveStagedRollbackId(rollbackId, logPackage); - WatchdogRollbackLogger.logEvent(logPackage, - CrashRecoveryStatsLog - .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED, - reasonToLog, failedPackageToLog); - - } else { - WatchdogRollbackLogger.logEvent(logPackage, - CrashRecoveryStatsLog - .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS, - reasonToLog, failedPackageToLog); - } - } else { - WatchdogRollbackLogger.logEvent(logPackage, - CrashRecoveryStatsLog - .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE, - reasonToLog, failedPackageToLog); - } - if (rollback.isStaged()) { - markStagedSessionHandled(rollback.getRollbackId()); - // Wait for all pending staged sessions to get handled before rebooting. - if (isPendingStagedSessionsEmpty()) { - CrashRecoveryProperties.attemptingReboot(true); - mContext.getSystemService(PowerManager.class).reboot("Rollback staged install"); - } - } - }; - - // Define a BroadcastReceiver to handle the result - BroadcastReceiver rollbackReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent result) { - mHandler.post(() -> onResult.accept(result)); - } - }; - - String intentActionName = CLASS_NAME + rollback.getRollbackId(); - // Register the BroadcastReceiver - mContext.registerReceiver(rollbackReceiver, - new IntentFilter(intentActionName), - Context.RECEIVER_NOT_EXPORTED); - - Intent intentReceiver = new Intent(intentActionName); - intentReceiver.putExtra("rollbackId", rollback.getRollbackId()); - intentReceiver.setPackage(mContext.getPackageName()); - intentReceiver.setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY); - - PendingIntent rollbackPendingIntent = PendingIntent.getBroadcast(mContext, - rollback.getRollbackId(), - intentReceiver, - PendingIntent.FLAG_MUTABLE); - - rollbackManager.commitRollback(rollback.getRollbackId(), - Collections.singletonList(failedPackage), - rollbackPendingIntent.getIntentSender()); - } - - /** - * Two-phase rollback: - * 1. roll back rebootless apexes first - * 2. roll back all remaining rollbacks if native crash doesn't stop after (1) is done - * - * This approach gives us a better chance to correctly attribute native crash to rebootless - * apex update without rolling back Mainline updates which might contains critical security - * fixes. - */ - @WorkerThread - private boolean useTwoPhaseRollback(List<RollbackInfo> rollbacks) { - assertInWorkerThread(); - if (!mTwoPhaseRollbackEnabled) { - return false; - } - - Slog.i(TAG, "Rolling back all rebootless APEX rollbacks"); - boolean found = false; - for (RollbackInfo rollback : rollbacks) { - if (isRebootlessApex(rollback)) { - VersionedPackage firstRollback = - rollback.getPackages().get(0).getVersionRolledBackFrom(); - rollbackPackage(rollback, firstRollback, - PackageWatchdog.FAILURE_REASON_NATIVE_CRASH); - found = true; - } - } - return found; - } - - /** - * Rollback the package that has minimum rollback impact level. - * @param availableRollbacks all available rollbacks - * @param rollbackReason reason to rollback - */ - private void triggerLeastImpactLevelRollback(List<RollbackInfo> availableRollbacks, - @FailureReasons int rollbackReason) { - int minRollbackImpactLevel = getMinRollbackImpactLevel(availableRollbacks); - - if (minRollbackImpactLevel == PackageManager.ROLLBACK_USER_IMPACT_LOW) { - // Apply all available low impact rollbacks. - mHandler.post(() -> rollbackAllLowImpact(availableRollbacks, rollbackReason)); - } else if (minRollbackImpactLevel == PackageManager.ROLLBACK_USER_IMPACT_HIGH) { - // Check disable_high_impact_rollback device config before performing rollback - if (SystemProperties.getBoolean(PROP_DISABLE_HIGH_IMPACT_ROLLBACK_FLAG, false)) { - return; - } - // Rollback one package at a time. If that doesn't resolve the issue, rollback - // next with same impact level. - mHandler.post(() -> rollbackHighImpact(availableRollbacks, rollbackReason)); - } - } - - /** - * sort the available high impact rollbacks by first package name to have a deterministic order. - * Apply the first available rollback. - * @param availableRollbacks all available rollbacks - * @param rollbackReason reason to rollback - */ - @WorkerThread - private void rollbackHighImpact(List<RollbackInfo> availableRollbacks, - @FailureReasons int rollbackReason) { - assertInWorkerThread(); - List<RollbackInfo> highImpactRollbacks = - getRollbacksAvailableForImpactLevel( - availableRollbacks, PackageManager.ROLLBACK_USER_IMPACT_HIGH); - - // sort rollbacks based on package name of the first package. This is to have a - // deterministic order of rollbacks. - List<RollbackInfo> sortedHighImpactRollbacks = highImpactRollbacks.stream().sorted( - Comparator.comparing(a -> a.getPackages().get(0).getPackageName())).toList(); - VersionedPackage firstRollback = - sortedHighImpactRollbacks - .get(0) - .getPackages() - .get(0) - .getVersionRolledBackFrom(); - Slog.i(TAG, "Rolling back high impact rollback for package: " - + firstRollback.getPackageName()); - rollbackPackage(sortedHighImpactRollbacks.get(0), firstRollback, rollbackReason); - } - - @WorkerThread - private void rollbackAll(@FailureReasons int rollbackReason) { - assertInWorkerThread(); - RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class); - List<RollbackInfo> rollbacks = rollbackManager.getAvailableRollbacks(); - if (useTwoPhaseRollback(rollbacks)) { - return; - } - - Slog.i(TAG, "Rolling back all available rollbacks"); - // Add all rollback ids to mPendingStagedRollbackIds, so that we do not reboot before all - // pending staged rollbacks are handled. - for (RollbackInfo rollback : rollbacks) { - if (rollback.isStaged()) { - mPendingStagedRollbackIds.add(rollback.getRollbackId()); - } - } - - for (RollbackInfo rollback : rollbacks) { - VersionedPackage firstRollback = - rollback.getPackages().get(0).getVersionRolledBackFrom(); - rollbackPackage(rollback, firstRollback, rollbackReason); - } - } - - /** - * Rollback all available low impact rollbacks - * @param availableRollbacks all available rollbacks - * @param rollbackReason reason to rollbacks - */ - @WorkerThread - private void rollbackAllLowImpact( - List<RollbackInfo> availableRollbacks, @FailureReasons int rollbackReason) { - assertInWorkerThread(); - - List<RollbackInfo> lowImpactRollbacks = getRollbacksAvailableForImpactLevel( - availableRollbacks, - PackageManager.ROLLBACK_USER_IMPACT_LOW); - if (useTwoPhaseRollback(lowImpactRollbacks)) { - return; - } - - Slog.i(TAG, "Rolling back all available low impact rollbacks"); - logCrashRecoveryEvent(Log.DEBUG, "Rolling back all available. Reason: " + rollbackReason); - // Add all rollback ids to mPendingStagedRollbackIds, so that we do not reboot before all - // pending staged rollbacks are handled. - for (RollbackInfo rollback : lowImpactRollbacks) { - if (rollback.isStaged()) { - mPendingStagedRollbackIds.add(rollback.getRollbackId()); - } - } - - for (RollbackInfo rollback : lowImpactRollbacks) { - VersionedPackage firstRollback = - rollback.getPackages().get(0).getVersionRolledBackFrom(); - rollbackPackage(rollback, firstRollback, rollbackReason); - } - } - - private List<RollbackInfo> getRollbacksAvailableForImpactLevel( - List<RollbackInfo> availableRollbacks, int impactLevel) { - return availableRollbacks.stream() - .filter(rollbackInfo -> rollbackInfo.getRollbackImpactLevel() == impactLevel) - .toList(); - } - - private int getMinRollbackImpactLevel(List<RollbackInfo> availableRollbacks) { - return availableRollbacks.stream() - .mapToInt(RollbackInfo::getRollbackImpactLevel) - .min() - .orElse(-1); - } - - private int getUserImpactBasedOnRollbackImpactLevel(List<RollbackInfo> availableRollbacks) { - int impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - int minImpact = getMinRollbackImpactLevel(availableRollbacks); - switch (minImpact) { - case PackageManager.ROLLBACK_USER_IMPACT_LOW: - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_70; - break; - case PackageManager.ROLLBACK_USER_IMPACT_HIGH: - if (!SystemProperties.getBoolean(PROP_DISABLE_HIGH_IMPACT_ROLLBACK_FLAG, false)) { - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_90; - } - break; - default: - impact = PackageHealthObserverImpact.USER_IMPACT_LEVEL_0; - } - return impact; - } - - @VisibleForTesting - Handler getHandler() { - return mHandler; - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/server/rollback/WatchdogRollbackLogger.java b/packages/CrashRecovery/services/module/java/com/android/server/rollback/WatchdogRollbackLogger.java deleted file mode 100644 index 9cfed02f9355..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/server/rollback/WatchdogRollbackLogger.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.rollback; - -import static com.android.server.crashrecovery.CrashRecoveryUtils.logCrashRecoveryEvent; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_BOOT_LOOPING; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH_DURING_BOOT; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE; -import static com.android.server.crashrecovery.proto.CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInstaller; -import android.content.pm.PackageManager; -import android.content.pm.VersionedPackage; -import android.content.rollback.PackageRollbackInfo; -import android.content.rollback.RollbackInfo; -import android.os.SystemProperties; -import android.text.TextUtils; -import android.util.Log; -import android.util.Slog; - -import com.android.internal.annotations.VisibleForTesting; -import com.android.server.PackageWatchdog; -import com.android.server.crashrecovery.proto.CrashRecoveryStatsLog; - -import java.util.List; - -/** - * This class handles the logic for logging Watchdog-triggered rollback events. - * @hide - */ -public final class WatchdogRollbackLogger { - private static final String TAG = "WatchdogRollbackLogger"; - - private static final String LOGGING_PARENT_KEY = "android.content.pm.LOGGING_PARENT"; - - private WatchdogRollbackLogger() { - } - - @Nullable - private static String getLoggingParentName(Context context, @NonNull String packageName) { - PackageManager packageManager = context.getPackageManager(); - try { - int flags = PackageManager.MATCH_APEX | PackageManager.GET_META_DATA; - ApplicationInfo ai = packageManager.getPackageInfo(packageName, flags).applicationInfo; - if (ai.metaData == null) { - return null; - } - return ai.metaData.getString(LOGGING_PARENT_KEY); - } catch (Exception e) { - Slog.w(TAG, "Unable to discover logging parent package: " + packageName, e); - return null; - } - } - - /** - * Returns the logging parent of a given package if it exists, {@code null} otherwise. - * - * The logging parent is defined by the {@code android.content.pm.LOGGING_PARENT} field in the - * metadata of a package's AndroidManifest.xml. - */ - @VisibleForTesting - @Nullable - static VersionedPackage getLogPackage(Context context, - @NonNull VersionedPackage failingPackage) { - String logPackageName; - VersionedPackage loggingParent; - logPackageName = getLoggingParentName(context, failingPackage.getPackageName()); - if (logPackageName == null) { - return null; - } - try { - loggingParent = new VersionedPackage(logPackageName, context.getPackageManager() - .getPackageInfo(logPackageName, 0 /* flags */).getLongVersionCode()); - } catch (PackageManager.NameNotFoundException e) { - return null; - } - return loggingParent; - } - - static void logRollbackStatusOnBoot(Context context, int rollbackId, String logPackageName, - List<RollbackInfo> recentlyCommittedRollbacks) { - PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller(); - - RollbackInfo rollback = null; - for (RollbackInfo info : recentlyCommittedRollbacks) { - if (rollbackId == info.getRollbackId()) { - rollback = info; - break; - } - } - - if (rollback == null) { - Slog.e(TAG, "rollback info not found for last staged rollback: " + rollbackId); - return; - } - - // Use the version of the logging parent that was installed before - // we rolled back for logging purposes. - VersionedPackage oldLoggingPackage = null; - if (!TextUtils.isEmpty(logPackageName)) { - for (PackageRollbackInfo packageRollback : rollback.getPackages()) { - if (logPackageName.equals(packageRollback.getPackageName())) { - oldLoggingPackage = packageRollback.getVersionRolledBackFrom(); - break; - } - } - } - - int sessionId = rollback.getCommittedSessionId(); - PackageInstaller.SessionInfo sessionInfo = packageInstaller.getSessionInfo(sessionId); - if (sessionInfo == null) { - Slog.e(TAG, "On boot completed, could not load session id " + sessionId); - return; - } - - if (sessionInfo.isStagedSessionApplied()) { - logEvent(oldLoggingPackage, - WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS, - WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, ""); - } else if (sessionInfo.isStagedSessionFailed()) { - logEvent(oldLoggingPackage, - WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE, - WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, ""); - } - } - - /** - * Log a Watchdog rollback event to statsd. - * - * @param logPackage the package to associate the rollback with. - * @param type the state of the rollback. - * @param rollbackReason the reason Watchdog triggered a rollback, if known. - * @param failingPackageName the failing package or process which triggered the rollback. - */ - public static void logEvent(@Nullable VersionedPackage logPackage, int type, - int rollbackReason, @NonNull String failingPackageName) { - String logMsg = "Watchdog event occurred with type: " + rollbackTypeToString(type) - + " logPackage: " + logPackage - + " rollbackReason: " + rollbackReasonToString(rollbackReason) - + " failedPackageName: " + failingPackageName; - Slog.i(TAG, logMsg); - if (logPackage != null) { - CrashRecoveryStatsLog.write( - CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED, - type, - logPackage.getPackageName(), - logPackage.getVersionCode(), - rollbackReason, - failingPackageName, - new byte[]{}); - } else { - // In the case that the log package is null, still log an empty string as an - // indication that retrieving the logging parent failed. - CrashRecoveryStatsLog.write( - CrashRecoveryStatsLog.WATCHDOG_ROLLBACK_OCCURRED, - type, - "", - 0, - rollbackReason, - failingPackageName, - new byte[]{}); - } - - logTestProperties(logMsg); - } - - /** - * Writes properties which will be used by rollback tests to check if particular rollback - * events have occurred. - */ - private static void logTestProperties(String logMsg) { - // This property should be on only during the tests - if (!SystemProperties.getBoolean("persist.sys.rollbacktest.enabled", false)) { - return; - } - logCrashRecoveryEvent(Log.DEBUG, logMsg); - } - - @VisibleForTesting - static int mapFailureReasonToMetric(@PackageWatchdog.FailureReasons int failureReason) { - switch (failureReason) { - case PackageWatchdog.FAILURE_REASON_NATIVE_CRASH: - return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH; - case PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK: - return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK; - case PackageWatchdog.FAILURE_REASON_APP_CRASH: - return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH; - case PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING: - return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING; - case PackageWatchdog.FAILURE_REASON_BOOT_LOOP: - return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_BOOT_LOOPING; - default: - return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN; - } - } - - private static String rollbackTypeToString(int type) { - switch (type) { - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE: - return "ROLLBACK_INITIATE"; - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS: - return "ROLLBACK_SUCCESS"; - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE: - return "ROLLBACK_FAILURE"; - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED: - return "ROLLBACK_BOOT_TRIGGERED"; - default: - return "UNKNOWN"; - } - } - - private static String rollbackReasonToString(int reason) { - switch (reason) { - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH: - return "REASON_NATIVE_CRASH"; - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK: - return "REASON_EXPLICIT_HEALTH_CHECK"; - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH: - return "REASON_APP_CRASH"; - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING: - return "REASON_APP_NOT_RESPONDING"; - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH_DURING_BOOT: - return "REASON_NATIVE_CRASH_DURING_BOOT"; - case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_BOOT_LOOPING: - return "REASON_BOOT_LOOP"; - default: - return "UNKNOWN"; - } - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/util/ArrayUtils.java b/packages/CrashRecovery/services/module/java/com/android/util/ArrayUtils.java deleted file mode 100644 index 29ff7cced897..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/util/ArrayUtils.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.util; - -import android.annotation.Nullable; - -/** - * Copied over from frameworks/base/core/java/com/android/internal/util/ArrayUtils.java - * - * @hide - */ -public class ArrayUtils { - private ArrayUtils() { /* cannot be instantiated */ } - - /** - * Checks if given array is null or has zero elements. - */ - public static boolean isEmpty(@Nullable int[] array) { - return array == null || array.length == 0; - } - - /** - * True if the byte array is null or has length 0. - */ - public static boolean isEmpty(@Nullable byte[] array) { - return array == null || array.length == 0; - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/util/FileUtils.java b/packages/CrashRecovery/services/module/java/com/android/util/FileUtils.java deleted file mode 100644 index d60a9b9847ca..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/util/FileUtils.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.util; - -import android.annotation.Nullable; - -import java.io.BufferedInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; - -/** - * Bits and pieces copied from hidden API of android.os.FileUtils. - * - * @hide - */ -public class FileUtils { - /** - * Read a text file into a String, optionally limiting the length. - * - * @param file to read (will not seek, so things like /proc files are OK) - * @param max length (positive for head, negative of tail, 0 for no limit) - * @param ellipsis to add of the file was truncated (can be null) - * @return the contents of the file, possibly truncated - * @throws IOException if something goes wrong reading the file - * @hide - */ - public static @Nullable String readTextFile(@Nullable File file, @Nullable int max, - @Nullable String ellipsis) throws IOException { - InputStream input = new FileInputStream(file); - // wrapping a BufferedInputStream around it because when reading /proc with unbuffered - // input stream, bytes read not equal to buffer size is not necessarily the correct - // indication for EOF; but it is true for BufferedInputStream due to its implementation. - BufferedInputStream bis = new BufferedInputStream(input); - try { - long size = file.length(); - if (max > 0 || (size > 0 && max == 0)) { // "head" mode: read the first N bytes - if (size > 0 && (max == 0 || size < max)) max = (int) size; - byte[] data = new byte[max + 1]; - int length = bis.read(data); - if (length <= 0) return ""; - if (length <= max) return new String(data, 0, length); - if (ellipsis == null) return new String(data, 0, max); - return new String(data, 0, max) + ellipsis; - } else if (max < 0) { // "tail" mode: keep the last N - int len; - boolean rolled = false; - byte[] last = null; - byte[] data = null; - do { - if (last != null) rolled = true; - byte[] tmp = last; - last = data; - data = tmp; - if (data == null) data = new byte[-max]; - len = bis.read(data); - } while (len == data.length); - - if (last == null && len <= 0) return ""; - if (last == null) return new String(data, 0, len); - if (len > 0) { - rolled = true; - System.arraycopy(last, len, last, 0, last.length - len); - System.arraycopy(data, 0, last, last.length - len, len); - } - if (ellipsis == null || !rolled) return new String(last); - return ellipsis + new String(last); - } else { // "cat" mode: size unknown, read it all in streaming fashion - ByteArrayOutputStream contents = new ByteArrayOutputStream(); - int len; - byte[] data = new byte[1024]; - do { - len = bis.read(data); - if (len > 0) contents.write(data, 0, len); - } while (len == data.length); - return contents.toString(); - } - } finally { - bis.close(); - input.close(); - } - } - - /** - * Perform an fsync on the given FileOutputStream. The stream at this - * point must be flushed but not yet closed. - * - * @hide - */ - public static boolean sync(FileOutputStream stream) { - try { - if (stream != null) { - stream.getFD().sync(); - } - return true; - } catch (IOException e) { - } - return false; - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/util/LongArrayQueue.java b/packages/CrashRecovery/services/module/java/com/android/util/LongArrayQueue.java deleted file mode 100644 index 9a24ada8b69a..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/util/LongArrayQueue.java +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.util; - -import libcore.util.EmptyArray; - -import java.util.NoSuchElementException; - -/** - * Copied from frameworks/base/core/java/android/util/LongArrayQueue.java - * - * @hide - */ -public class LongArrayQueue { - - private long[] mValues; - private int mSize; - private int mHead; - private int mTail; - - private long[] newUnpaddedLongArray(int num) { - return new long[num]; - } - /** - * Initializes a queue with the given starting capacity. - * - * @param initialCapacity the capacity. - */ - public LongArrayQueue(int initialCapacity) { - if (initialCapacity == 0) { - mValues = EmptyArray.LONG; - } else { - mValues = newUnpaddedLongArray(initialCapacity); - } - mSize = 0; - mHead = mTail = 0; - } - - /** - * Initializes a queue with default starting capacity. - */ - public LongArrayQueue() { - this(16); - } - - /** @hide */ - public static int growSize(int currentSize) { - return currentSize <= 4 ? 8 : currentSize * 2; - } - - private void grow() { - if (mSize < mValues.length) { - throw new IllegalStateException("Queue not full yet!"); - } - final int newSize = growSize(mSize); - final long[] newArray = newUnpaddedLongArray(newSize); - final int r = mValues.length - mHead; // Number of elements on and to the right of head. - System.arraycopy(mValues, mHead, newArray, 0, r); - System.arraycopy(mValues, 0, newArray, r, mHead); - mValues = newArray; - mHead = 0; - mTail = mSize; - } - - /** - * Returns the number of elements in the queue. - */ - public int size() { - return mSize; - } - - /** - * Removes all elements from this queue. - */ - public void clear() { - mSize = 0; - mHead = mTail = 0; - } - - /** - * Adds a value to the tail of the queue. - * - * @param value the value to be added. - */ - public void addLast(long value) { - if (mSize == mValues.length) { - grow(); - } - mValues[mTail] = value; - mTail = (mTail + 1) % mValues.length; - mSize++; - } - - /** - * Removes an element from the head of the queue. - * - * @return the element at the head of the queue. - * @throws NoSuchElementException if the queue is empty. - */ - public long removeFirst() { - if (mSize == 0) { - throw new NoSuchElementException("Queue is empty!"); - } - final long ret = mValues[mHead]; - mHead = (mHead + 1) % mValues.length; - mSize--; - return ret; - } - - /** - * Returns the element at the given position from the head of the queue, where 0 represents the - * head of the queue. - * - * @param position the position from the head of the queue. - * @return the element found at the given position. - * @throws IndexOutOfBoundsException if {@code position} < {@code 0} or - * {@code position} >= {@link #size()} - */ - public long get(int position) { - if (position < 0 || position >= mSize) { - throw new IndexOutOfBoundsException("Index " + position - + " not valid for a queue of size " + mSize); - } - final int index = (mHead + position) % mValues.length; - return mValues[index]; - } - - /** - * Returns the element at the head of the queue, without removing it. - * - * @return the element at the head of the queue. - * @throws NoSuchElementException if the queue is empty - */ - public long peekFirst() { - if (mSize == 0) { - throw new NoSuchElementException("Queue is empty!"); - } - return mValues[mHead]; - } - - /** - * Returns the element at the tail of the queue. - * - * @return the element at the tail of the queue. - * @throws NoSuchElementException if the queue is empty. - */ - public long peekLast() { - if (mSize == 0) { - throw new NoSuchElementException("Queue is empty!"); - } - final int index = (mTail == 0) ? mValues.length - 1 : mTail - 1; - return mValues[index]; - } - - /** - * {@inheritDoc} - */ - @Override - public String toString() { - if (mSize <= 0) { - return "{}"; - } - - final StringBuilder buffer = new StringBuilder(mSize * 64); - buffer.append('{'); - buffer.append(get(0)); - for (int i = 1; i < mSize; i++) { - buffer.append(", "); - buffer.append(get(i)); - } - buffer.append('}'); - return buffer.toString(); - } -} diff --git a/packages/CrashRecovery/services/module/java/com/android/util/XmlUtils.java b/packages/CrashRecovery/services/module/java/com/android/util/XmlUtils.java deleted file mode 100644 index 488b531c2b8a..000000000000 --- a/packages/CrashRecovery/services/module/java/com/android/util/XmlUtils.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.util; - -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlPullParserException; - -import java.io.IOException; - -/** - * Bits and pieces copied from hidden API of - * frameworks/base/core/java/com/android/internal/util/XmlUtils.java - * - * @hide - */ -public class XmlUtils { - - /** @hide */ - public static final void beginDocument(XmlPullParser parser, String firstElementName) - throws XmlPullParserException, IOException { - int type; - while ((type = parser.next()) != parser.START_TAG - && type != parser.END_DOCUMENT) { - // Do nothing - } - - if (type != parser.START_TAG) { - throw new XmlPullParserException("No start tag found"); - } - - if (!parser.getName().equals(firstElementName)) { - throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() - + ", expected " + firstElementName); - } - } - - /** @hide */ - public static boolean nextElementWithin(XmlPullParser parser, int outerDepth) - throws IOException, XmlPullParserException { - for (;;) { - int type = parser.next(); - if (type == XmlPullParser.END_DOCUMENT - || (type == XmlPullParser.END_TAG && parser.getDepth() == outerDepth)) { - return false; - } - if (type == XmlPullParser.START_TAG - && parser.getDepth() == outerDepth + 1) { - return true; - } - } - } -} diff --git a/packages/CredentialManager/res/values-eu/strings.xml b/packages/CredentialManager/res/values-eu/strings.xml index 66ad31b3927c..0ef3a8fe9ffc 100644 --- a/packages/CredentialManager/res/values-eu/strings.xml +++ b/packages/CredentialManager/res/values-eu/strings.xml @@ -72,7 +72,7 @@ <string name="get_dialog_title_use_password_for" msgid="688557784207167647">"Erabili <xliff:g id="APP_NAME">%1$s</xliff:g> aplikaziorako gordetako pasahitza"</string> <string name="get_dialog_title_use_sign_in_for" msgid="4233553937542583226">"Erabili zure kontua <xliff:g id="APP_NAME">%1$s</xliff:g> aplikaziorako"</string> <string name="get_dialog_description_single_tap" msgid="2797059565126030879">"Erabili pantailaren blokeoa <xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioan <xliff:g id="USERNAME">%2$s</xliff:g> kontuarekin saioa hasteko"</string> - <string name="get_dialog_title_unlock_options_for" msgid="7096423827682163270">"Desblokeatu <xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioan saioa hasteko aukerak"</string> + <string name="get_dialog_title_unlock_options_for" msgid="7096423827682163270">"Desblokeatu <xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioan saioa hasteko moduak"</string> <string name="get_dialog_title_choose_passkey_for" msgid="9175997688078538490">"Aukeratu <xliff:g id="APP_NAME">%1$s</xliff:g> aplikaziorako gordetako sarbide-gakoa"</string> <string name="get_dialog_title_choose_password_for" msgid="1724435823820819221">"Aukeratu <xliff:g id="APP_NAME">%1$s</xliff:g> aplikaziorako gordetako pasahitza"</string> <string name="get_dialog_title_choose_saved_sign_in_for" msgid="2420298653461652728">"Aukeratu <xliff:g id="APP_NAME">%1$s</xliff:g> aplikaziorako gordetako saioa hasteko moduak"</string> @@ -82,7 +82,7 @@ <string name="get_dialog_use_saved_passkey_for" msgid="4618100798664888512">"Hasi saioa beste modu batean"</string> <string name="snackbar_action" msgid="37373514216505085">"Ikusi aukerak"</string> <string name="get_dialog_button_label_continue" msgid="6446201694794283870">"Egin aurrera"</string> - <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Saioa hasteko aukerak"</string> + <string name="get_dialog_title_sign_in_options" msgid="2092876443114893618">"Saioa hasteko moduak"</string> <string name="button_label_view_more" msgid="3429098227286495651">"Ikusi gehiago"</string> <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"<xliff:g id="USERNAME">%1$s</xliff:g> erabiltzailearenak"</string> <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"Blokeatutako pasahitz-kudeatzaileak"</string> diff --git a/packages/CredentialManager/res/values-iw/strings.xml b/packages/CredentialManager/res/values-iw/strings.xml index 51f163922203..7f944b4c3310 100644 --- a/packages/CredentialManager/res/values-iw/strings.xml +++ b/packages/CredentialManager/res/values-iw/strings.xml @@ -86,7 +86,7 @@ <string name="button_label_view_more" msgid="3429098227286495651">"עוד מידע"</string> <string name="get_dialog_heading_for_username" msgid="3456868514554204776">"עבור <xliff:g id="USERNAME">%1$s</xliff:g>"</string> <string name="get_dialog_heading_locked_password_managers" msgid="8911514851762862180">"מנהלי סיסמאות נעולים"</string> - <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"יש להקיש כדי לבטל את הנעילה"</string> + <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="6390367581393605009">"יש ללחוץ כדי לבטל את הנעילה"</string> <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="8131725029983174901">"אין פרטי כניסה"</string> <string name="no_sign_in_info_in" msgid="2641118151920288356">"אין פרטי כניסה ב-<xliff:g id="SOURCE">%1$s</xliff:g>"</string> <string name="get_dialog_heading_manage_sign_ins" msgid="3522556476480676782">"ניהול כניסות"</string> diff --git a/packages/CredentialManager/wear/res/values-iw/strings.xml b/packages/CredentialManager/wear/res/values-iw/strings.xml index 4fb203d43386..bc9e180e79fe 100644 --- a/packages/CredentialManager/wear/res/values-iw/strings.xml +++ b/packages/CredentialManager/wear/res/values-iw/strings.xml @@ -30,5 +30,5 @@ <string name="choose_password_title" msgid="7610721820858017214">"בחירת סיסמה"</string> <string name="sign_in_on_phone_button" msgid="7618621977586522403">"כניסה לחשבון בטלפון"</string> <string name="locked_credential_entry_label_subtext_no_sign_in" msgid="1733094937495140605">"אין פרטי כניסה"</string> - <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"צריך להקיש כדי לבטל את הנעילה"</string> + <string name="locked_credential_entry_label_subtext_tap_to_unlock" msgid="4320941096211904568">"צריך ללחוץ כדי לבטל את הנעילה"</string> </resources> diff --git a/packages/InputDevices/res/values-af/strings.xml b/packages/InputDevices/res/values-af/strings.xml index cd9d915d87fd..e364576c4001 100644 --- a/packages/InputDevices/res/values-af/strings.xml +++ b/packages/InputDevices/res/values-af/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegryns (Latyns)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serwies (Cyrillies)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegryns (Cyrillies)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roemeens"</string> </resources> diff --git a/packages/InputDevices/res/values-am/strings.xml b/packages/InputDevices/res/values-am/strings.xml index a6f5f3a7018f..db5a7d404a58 100644 --- a/packages/InputDevices/res/values-am/strings.xml +++ b/packages/InputDevices/res/values-am/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ሞንቴኔግሮኛ (ላቲን)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ሰርቢያኛ (ሲሪሊክኛ)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ሞንቴኔግሮኛ (ሲሪሊክኛ)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ሮማኒያኛ"</string> </resources> diff --git a/packages/InputDevices/res/values-ar/strings.xml b/packages/InputDevices/res/values-ar/strings.xml index f92d0def3b7e..65f3edb2604c 100644 --- a/packages/InputDevices/res/values-ar/strings.xml +++ b/packages/InputDevices/res/values-ar/strings.xml @@ -56,4 +56,6 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"لغة الجبل الأسود (اللاتينية)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"الصربية (السيريلية)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"لغة الجبل الأسود (السيريلية)"</string> + <!-- no translation found for keyboard_layout_romanian (8698989892731726903) --> + <skip /> </resources> diff --git a/packages/InputDevices/res/values-as/strings.xml b/packages/InputDevices/res/values-as/strings.xml index 8084da395175..c4eaafb195c9 100644 --- a/packages/InputDevices/res/values-as/strings.xml +++ b/packages/InputDevices/res/values-as/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"মণ্টেনেগ্ৰিণ (লেটিন)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ছাৰ্বিয়ান (চিৰিলিক)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"মণ্টেনেগ্ৰিণ (চিৰিলিক)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ৰোমানিয়ান"</string> </resources> diff --git a/packages/InputDevices/res/values-az/strings.xml b/packages/InputDevices/res/values-az/strings.xml index 068a771d9c50..d71c3960601d 100644 --- a/packages/InputDevices/res/values-az/strings.xml +++ b/packages/InputDevices/res/values-az/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monteneqro dili (Latın)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serb dili (Kiril)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monteneqro dili (Kiril)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumın dili"</string> </resources> diff --git a/packages/InputDevices/res/values-b+sr+Latn/strings.xml b/packages/InputDevices/res/values-b+sr+Latn/strings.xml index 334b03218f91..e670ed4f843c 100644 --- a/packages/InputDevices/res/values-b+sr+Latn/strings.xml +++ b/packages/InputDevices/res/values-b+sr+Latn/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunski"</string> </resources> diff --git a/packages/InputDevices/res/values-be/strings.xml b/packages/InputDevices/res/values-be/strings.xml index c11266512978..c8c04d400eb8 100644 --- a/packages/InputDevices/res/values-be/strings.xml +++ b/packages/InputDevices/res/values-be/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Чарнагорская (лацініца)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербская (кірыліца)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Чарнагорская (кірыліца)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румынская"</string> </resources> diff --git a/packages/InputDevices/res/values-bg/strings.xml b/packages/InputDevices/res/values-bg/strings.xml index 8a650b283f4f..82c39657b003 100644 --- a/packages/InputDevices/res/values-bg/strings.xml +++ b/packages/InputDevices/res/values-bg/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"черногорски (латиница)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"сръбски (кирилица)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"черногорски (кирилица)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"румънски"</string> </resources> diff --git a/packages/InputDevices/res/values-bn/strings.xml b/packages/InputDevices/res/values-bn/strings.xml index 02ab5075b991..de54cdf688c4 100644 --- a/packages/InputDevices/res/values-bn/strings.xml +++ b/packages/InputDevices/res/values-bn/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"মন্টেনেগ্রিন (ল্যাটিন)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"সার্বিয়ান (সিরিলিক)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"মন্টেনেগ্রিন (সিরিলিক)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"রোমানিয়ান"</string> </resources> diff --git a/packages/InputDevices/res/values-bs/strings.xml b/packages/InputDevices/res/values-bs/strings.xml index e1aef5d67d89..9b7b33112643 100644 --- a/packages/InputDevices/res/values-bs/strings.xml +++ b/packages/InputDevices/res/values-bs/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunski"</string> </resources> diff --git a/packages/InputDevices/res/values-ca/strings.xml b/packages/InputDevices/res/values-ca/strings.xml index f9b2e5eb342a..874e06bb69cf 100644 --- a/packages/InputDevices/res/values-ca/strings.xml +++ b/packages/InputDevices/res/values-ca/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrí (llatí)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbi (ciríl·lic)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrí (ciríl·lic)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanès"</string> </resources> diff --git a/packages/InputDevices/res/values-cs/strings.xml b/packages/InputDevices/res/values-cs/strings.xml index 72efbc4cc999..6a46b1473089 100644 --- a/packages/InputDevices/res/values-cs/strings.xml +++ b/packages/InputDevices/res/values-cs/strings.xml @@ -56,4 +56,6 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"černohorština (latinka)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbština (cyrilice)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"černohorština (cyrilice)"</string> + <!-- no translation found for keyboard_layout_romanian (8698989892731726903) --> + <skip /> </resources> diff --git a/packages/InputDevices/res/values-da/strings.xml b/packages/InputDevices/res/values-da/strings.xml index 6ce0b8b9febe..246baba5be18 100644 --- a/packages/InputDevices/res/values-da/strings.xml +++ b/packages/InputDevices/res/values-da/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrinsk (latinsk)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisk (kyrillisk)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrinsk (kyrillisk)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumænsk"</string> </resources> diff --git a/packages/InputDevices/res/values-de/strings.xml b/packages/InputDevices/res/values-de/strings.xml index 0dc4e2a0aa49..21a939a3d007 100644 --- a/packages/InputDevices/res/values-de/strings.xml +++ b/packages/InputDevices/res/values-de/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrinisch (lat. Alphabet)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisch (kyrillisch)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrinisch (kyrillisch)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumänisch"</string> </resources> diff --git a/packages/InputDevices/res/values-el/strings.xml b/packages/InputDevices/res/values-el/strings.xml index 08357db6b06b..eabb90c86daf 100644 --- a/packages/InputDevices/res/values-el/strings.xml +++ b/packages/InputDevices/res/values-el/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Μαυροβουνιακά (Λατινικά)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Σερβικά (Κυριλλικά)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Μαυροβουνιακά (Κυριλλικά)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Ρουμανικά"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rAU/strings.xml b/packages/InputDevices/res/values-en-rAU/strings.xml index 0e9e6ebb7f38..7b72cba5c863 100644 --- a/packages/InputDevices/res/values-en-rAU/strings.xml +++ b/packages/InputDevices/res/values-en-rAU/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rCA/strings.xml b/packages/InputDevices/res/values-en-rCA/strings.xml index 3fa4bce3dfc3..d78dce2ff927 100644 --- a/packages/InputDevices/res/values-en-rCA/strings.xml +++ b/packages/InputDevices/res/values-en-rCA/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rGB/strings.xml b/packages/InputDevices/res/values-en-rGB/strings.xml index 0e9e6ebb7f38..7b72cba5c863 100644 --- a/packages/InputDevices/res/values-en-rGB/strings.xml +++ b/packages/InputDevices/res/values-en-rGB/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string> </resources> diff --git a/packages/InputDevices/res/values-en-rIN/strings.xml b/packages/InputDevices/res/values-en-rIN/strings.xml index 0e9e6ebb7f38..7b72cba5c863 100644 --- a/packages/InputDevices/res/values-en-rIN/strings.xml +++ b/packages/InputDevices/res/values-en-rIN/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string> </resources> diff --git a/packages/InputDevices/res/values-es-rUS/strings.xml b/packages/InputDevices/res/values-es-rUS/strings.xml index 321b9a595dfa..2a4035ad5eed 100644 --- a/packages/InputDevices/res/values-es-rUS/strings.xml +++ b/packages/InputDevices/res/values-es-rUS/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latino)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumano"</string> </resources> diff --git a/packages/InputDevices/res/values-es/strings.xml b/packages/InputDevices/res/values-es/strings.xml index 98076524b5e8..ba1ef20e24b6 100644 --- a/packages/InputDevices/res/values-es/strings.xml +++ b/packages/InputDevices/res/values-es/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latino)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumano"</string> </resources> diff --git a/packages/InputDevices/res/values-et/strings.xml b/packages/InputDevices/res/values-et/strings.xml index eb7ea9fd2843..99f36260cc41 100644 --- a/packages/InputDevices/res/values-et/strings.xml +++ b/packages/InputDevices/res/values-et/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegro (ladina)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbia (kirillitsa)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegro (kirillitsa)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumeenia"</string> </resources> diff --git a/packages/InputDevices/res/values-eu/strings.xml b/packages/InputDevices/res/values-eu/strings.xml index 53707598b264..9fae4f99b09d 100644 --- a/packages/InputDevices/res/values-eu/strings.xml +++ b/packages/InputDevices/res/values-eu/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegroarra (latindarra)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbiarra (zirilikoa)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegroarra (zirilikoa)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Errumaniera"</string> </resources> diff --git a/packages/InputDevices/res/values-fa/strings.xml b/packages/InputDevices/res/values-fa/strings.xml index 9bbf4e36fa16..cbc6b65148b9 100644 --- a/packages/InputDevices/res/values-fa/strings.xml +++ b/packages/InputDevices/res/values-fa/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"مونتهنگرویی (لاتین)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"صربی (سیریلیک)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"مونتهنگرویی (سیریلیک)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"رومانیایی"</string> </resources> diff --git a/packages/InputDevices/res/values-fi/strings.xml b/packages/InputDevices/res/values-fi/strings.xml index 3e88c2085373..736d7cbd77c3 100644 --- a/packages/InputDevices/res/values-fi/strings.xml +++ b/packages/InputDevices/res/values-fi/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegro (latinalainen)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbia (kyrillinen)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegro (kyrillinen)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"romania"</string> </resources> diff --git a/packages/InputDevices/res/values-fr-rCA/strings.xml b/packages/InputDevices/res/values-fr-rCA/strings.xml index 690fbad6ab12..7b99d3bc33bc 100644 --- a/packages/InputDevices/res/values-fr-rCA/strings.xml +++ b/packages/InputDevices/res/values-fr-rCA/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monténégrin (latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbe (cyrillique)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monténégrin (cyrillique)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roumain"</string> </resources> diff --git a/packages/InputDevices/res/values-fr/strings.xml b/packages/InputDevices/res/values-fr/strings.xml index 70bd250738f7..8628f8f7c0eb 100644 --- a/packages/InputDevices/res/values-fr/strings.xml +++ b/packages/InputDevices/res/values-fr/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Monténégrin (latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbe (cyrillique)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Monténégrin (cyrillique)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roumain"</string> </resources> diff --git a/packages/InputDevices/res/values-gl/strings.xml b/packages/InputDevices/res/values-gl/strings.xml index 058dba52e17b..5e681e6032dc 100644 --- a/packages/InputDevices/res/values-gl/strings.xml +++ b/packages/InputDevices/res/values-gl/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (alfabeto latino)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbio (cirílico)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanés"</string> </resources> diff --git a/packages/InputDevices/res/values-gu/strings.xml b/packages/InputDevices/res/values-gu/strings.xml index 3f1b31a8a6c8..a5a522ecbf31 100644 --- a/packages/InputDevices/res/values-gu/strings.xml +++ b/packages/InputDevices/res/values-gu/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"મોંટેનેગ્રીન (લેટિન)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"સર્બિયન (સિરિલિક)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"મોંટેનેગ્રીન (સિરિલિક)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"રોમાનિયન"</string> </resources> diff --git a/packages/InputDevices/res/values-hi/strings.xml b/packages/InputDevices/res/values-hi/strings.xml index db59ebac7805..ad9c980d00a9 100644 --- a/packages/InputDevices/res/values-hi/strings.xml +++ b/packages/InputDevices/res/values-hi/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मॉन्टेनीग्रिन (लैटिन)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियन (सिरिलिक)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मोंटेनेग्रिन (सिरिलिक)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमेनियन"</string> </resources> diff --git a/packages/InputDevices/res/values-hr/strings.xml b/packages/InputDevices/res/values-hr/strings.xml index 905dce25b4aa..b7e8ee4cad17 100644 --- a/packages/InputDevices/res/values-hr/strings.xml +++ b/packages/InputDevices/res/values-hr/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"crnogorski (latinica)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srpski (ćirilica)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"crnogorski (ćirilica)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunjski"</string> </resources> diff --git a/packages/InputDevices/res/values-hu/strings.xml b/packages/InputDevices/res/values-hu/strings.xml index 4c8e7b8de6ba..756cc0846ff2 100644 --- a/packages/InputDevices/res/values-hu/strings.xml +++ b/packages/InputDevices/res/values-hu/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegrói (latin betűs)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"szerb (cirill betűs)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegrói (cirill betűs)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"román"</string> </resources> diff --git a/packages/InputDevices/res/values-hy/strings.xml b/packages/InputDevices/res/values-hy/strings.xml index ae56fc5b1620..eced5cdbde2d 100644 --- a/packages/InputDevices/res/values-hy/strings.xml +++ b/packages/InputDevices/res/values-hy/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"չեռնոգորերեն (լատինատառ)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"սերբերեն (կյուրեղատառ)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"չեռնոգորերեն (կյուրեղատառ)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Ռումիներեն"</string> </resources> diff --git a/packages/InputDevices/res/values-in/strings.xml b/packages/InputDevices/res/values-in/strings.xml index 52bc03943abd..e871d1947fab 100644 --- a/packages/InputDevices/res/values-in/strings.xml +++ b/packages/InputDevices/res/values-in/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegro (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbia (Sirilik)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegro (Sirilik)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumania"</string> </resources> diff --git a/packages/InputDevices/res/values-is/strings.xml b/packages/InputDevices/res/values-is/strings.xml index 0f516cef370e..ec5d98b24ec6 100644 --- a/packages/InputDevices/res/values-is/strings.xml +++ b/packages/InputDevices/res/values-is/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Svartfellska (latneskt)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbneska (kyrillískt)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Svartfellska (kyrillískt)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rúmenska"</string> </resources> diff --git a/packages/InputDevices/res/values-it/strings.xml b/packages/InputDevices/res/values-it/strings.xml index f77b87cc67be..06ceb7affeeb 100644 --- a/packages/InputDevices/res/values-it/strings.xml +++ b/packages/InputDevices/res/values-it/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latino)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbo (cirillico)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirillico)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumeno"</string> </resources> diff --git a/packages/InputDevices/res/values-iw/strings.xml b/packages/InputDevices/res/values-iw/strings.xml index 0e400e2d0fa4..4cf8098fded7 100644 --- a/packages/InputDevices/res/values-iw/strings.xml +++ b/packages/InputDevices/res/values-iw/strings.xml @@ -56,4 +56,6 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"מונטנגרית (לטינית)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"סרבית (אותיות קיריליות)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"מונטנגרית (אותיות קיריליות)"</string> + <!-- no translation found for keyboard_layout_romanian (8698989892731726903) --> + <skip /> </resources> diff --git a/packages/InputDevices/res/values-ja/strings.xml b/packages/InputDevices/res/values-ja/strings.xml index b1830ebda199..4c6de705565e 100644 --- a/packages/InputDevices/res/values-ja/strings.xml +++ b/packages/InputDevices/res/values-ja/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"モンテネグロ語(ラテン)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"セルビア語(キリル)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"モンテネグロ語(キリル)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ルーマニア語"</string> </resources> diff --git a/packages/InputDevices/res/values-ka/strings.xml b/packages/InputDevices/res/values-ka/strings.xml index 75c72b91df94..7232c1a7db9c 100644 --- a/packages/InputDevices/res/values-ka/strings.xml +++ b/packages/InputDevices/res/values-ka/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"მონტენეგრული (ლათინური)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"სერბული (კირილიცა)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"მონტენეგრული (კირილიცა)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"რუმინული"</string> </resources> diff --git a/packages/InputDevices/res/values-kk/strings.xml b/packages/InputDevices/res/values-kk/strings.xml index c0a58685bc52..278c868d76d4 100644 --- a/packages/InputDevices/res/values-kk/strings.xml +++ b/packages/InputDevices/res/values-kk/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Черногор (латын жазуы)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербия (кириллица)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногория (кириллица)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румын"</string> </resources> diff --git a/packages/InputDevices/res/values-km/strings.xml b/packages/InputDevices/res/values-km/strings.xml index 6c3db64fa1e9..2eaeaa7f03ac 100644 --- a/packages/InputDevices/res/values-km/strings.xml +++ b/packages/InputDevices/res/values-km/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ម៉ុងតេណេហ្គ្រោ (ឡាតាំង)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"សែប៊ី (ស៊ីរីលីក)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ម៉ុងតេណេហ្គ្រោ (ស៊ីរីលីក)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"រ៉ូម៉ានី"</string> </resources> diff --git a/packages/InputDevices/res/values-kn/strings.xml b/packages/InputDevices/res/values-kn/strings.xml index 0f4c5229c4d4..8039039ca0fc 100644 --- a/packages/InputDevices/res/values-kn/strings.xml +++ b/packages/InputDevices/res/values-kn/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ಮೊಂಟೆನೆಗ್ರಿನ್ (ಲ್ಯಾಟಿನ್)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ಸೆರ್ಬಿಯನ್ (ಸಿರಿಲಿಕ್)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ಮೊಂಟೆನೆಗ್ರಿನ್ (ಸಿರಿಲಿಕ್)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ರೊಮೇನಿಯನ್"</string> </resources> diff --git a/packages/InputDevices/res/values-ko/strings.xml b/packages/InputDevices/res/values-ko/strings.xml index dcfb3b4ece40..de1bb3d5dbe6 100644 --- a/packages/InputDevices/res/values-ko/strings.xml +++ b/packages/InputDevices/res/values-ko/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"몬테네그로어(로마자)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"세르비아어(키릴 자모)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"몬테네그로어(키릴)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"루마니아어"</string> </resources> diff --git a/packages/InputDevices/res/values-ky/strings.xml b/packages/InputDevices/res/values-ky/strings.xml index c0b3d3a1d9b3..47bf7b73405f 100644 --- a/packages/InputDevices/res/values-ky/strings.xml +++ b/packages/InputDevices/res/values-ky/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Монтенегрочо (Латын)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербче (Кирилл)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногориялыкча (Кирилл)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румынча"</string> </resources> diff --git a/packages/InputDevices/res/values-lo/strings.xml b/packages/InputDevices/res/values-lo/strings.xml index c2e5a2beded5..6a35f23b4f9e 100644 --- a/packages/InputDevices/res/values-lo/strings.xml +++ b/packages/InputDevices/res/values-lo/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ມອນເທເນກຣິນ (ລາຕິນ)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ເຊີບຽນ (ຊີຣິວລິກ)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ມອນເທເນກຣິນ (ຊີຣິວລິກ)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ໂຣມານຽນ"</string> </resources> diff --git a/packages/InputDevices/res/values-lt/strings.xml b/packages/InputDevices/res/values-lt/strings.xml index 9a98e8eb5b13..4bf9223099d1 100644 --- a/packages/InputDevices/res/values-lt/strings.xml +++ b/packages/InputDevices/res/values-lt/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Juodkalniečių (lotynų rašmenys)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbų (kirilica)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Juodkalniečių (kirilica)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumunų"</string> </resources> diff --git a/packages/InputDevices/res/values-lv/strings.xml b/packages/InputDevices/res/values-lv/strings.xml index d3422b210757..90d690ca10b7 100644 --- a/packages/InputDevices/res/values-lv/strings.xml +++ b/packages/InputDevices/res/values-lv/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Melnkalniešu (latīņu)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbu (kirilica)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Melnkalniešu (kirilica)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumāņu"</string> </resources> diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml index ccb09392aed3..4c80a80af8a3 100644 --- a/packages/InputDevices/res/values-mk/strings.xml +++ b/packages/InputDevices/res/values-mk/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"црногорски (латиница)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"српски (кирилица)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"црногорски (кирилица)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"романски"</string> </resources> diff --git a/packages/InputDevices/res/values-ml/strings.xml b/packages/InputDevices/res/values-ml/strings.xml index 5a7b601baa97..41ea10f22aa3 100644 --- a/packages/InputDevices/res/values-ml/strings.xml +++ b/packages/InputDevices/res/values-ml/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"മോണ്ടിനെഗ്രിൻ (ലാറ്റിൻ)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"സെർബിയൻ (സിറിലിക്)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"മോണ്ടിനെഗ്രിൻ (സിറിലിക്)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"റൊമേനിയൻ"</string> </resources> diff --git a/packages/InputDevices/res/values-mn/strings.xml b/packages/InputDevices/res/values-mn/strings.xml index 0044eb24bc6a..056e728f4687 100644 --- a/packages/InputDevices/res/values-mn/strings.xml +++ b/packages/InputDevices/res/values-mn/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Монтенегро (латин)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Серби (кирилл)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Монтенегро (кирилл)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румын"</string> </resources> diff --git a/packages/InputDevices/res/values-mr/strings.xml b/packages/InputDevices/res/values-mr/strings.xml index d306dda71553..fe032fe3999e 100644 --- a/packages/InputDevices/res/values-mr/strings.xml +++ b/packages/InputDevices/res/values-mr/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मॉन्टेनेग्रिन (लॅटिन)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियन (सिरिलिक)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मॉन्टेनेग्रिन (सिरिलिक)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमानियन"</string> </resources> diff --git a/packages/InputDevices/res/values-ms/strings.xml b/packages/InputDevices/res/values-ms/strings.xml index d1b16547f8e6..f9d18a1055ef 100644 --- a/packages/InputDevices/res/values-ms/strings.xml +++ b/packages/InputDevices/res/values-ms/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbia (Cyril)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyril)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Bahasa Romania"</string> </resources> diff --git a/packages/InputDevices/res/values-my/strings.xml b/packages/InputDevices/res/values-my/strings.xml index fb553446dbd4..47498e079981 100644 --- a/packages/InputDevices/res/values-my/strings.xml +++ b/packages/InputDevices/res/values-my/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"မွန်တီနီဂရင်း (လက်တင်)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ဆားဘီးယား (စီရီလစ်)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"မွန်တီနီဂရင်း (စီရီလစ်)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ရိုမေးနီးယား"</string> </resources> diff --git a/packages/InputDevices/res/values-nb/strings.xml b/packages/InputDevices/res/values-nb/strings.xml index 7ac2a822667a..954462c783ff 100644 --- a/packages/InputDevices/res/values-nb/strings.xml +++ b/packages/InputDevices/res/values-nb/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrisk (latinsk)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisk (kyrillisk)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrisk (kyrillisk)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumensk"</string> </resources> diff --git a/packages/InputDevices/res/values-ne/strings.xml b/packages/InputDevices/res/values-ne/strings.xml index 113489d65d96..e2804d4a89b5 100644 --- a/packages/InputDevices/res/values-ne/strings.xml +++ b/packages/InputDevices/res/values-ne/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"मोन्टेनिग्रिन (ल्याटिन)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"सर्बियाली (सिरिलिक)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"मोन्टेनिग्रिन (सिरिलिक)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"रोमानियाली"</string> </resources> diff --git a/packages/InputDevices/res/values-nl/strings.xml b/packages/InputDevices/res/values-nl/strings.xml index 0e954e9b9ed3..67f78bad4158 100644 --- a/packages/InputDevices/res/values-nl/strings.xml +++ b/packages/InputDevices/res/values-nl/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrijns (Latijns)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Servisch (Cyrillisch)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrijns (Cyrillisch)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Roemeens"</string> </resources> diff --git a/packages/InputDevices/res/values-or/strings.xml b/packages/InputDevices/res/values-or/strings.xml index d9d852008275..c6e020cae6d0 100644 --- a/packages/InputDevices/res/values-or/strings.xml +++ b/packages/InputDevices/res/values-or/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ମଣ୍ଟେନେଗ୍ରିନ (ଲାଟିନ)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ସର୍ବିଆନ (ସିରିଲିକ)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ମଣ୍ଟେନେଗ୍ରିନ (ସିରିଲିକ)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ରୋମାନିଆନ"</string> </resources> diff --git a/packages/InputDevices/res/values-pa/strings.xml b/packages/InputDevices/res/values-pa/strings.xml index 85b0d195f05f..29c3b7d14bb2 100644 --- a/packages/InputDevices/res/values-pa/strings.xml +++ b/packages/InputDevices/res/values-pa/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"ਮਾਂਟੇਨੀਗਰਿਨ (ਲਾਤੀਨੀ)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"ਸਰਬੀਆਈ (ਸਿਰਿਲਿਕ)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"ਮਾਂਟੇਨੀਗਰਿਨ (ਸਿਰਿਲਿਕ)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ਰੋਮਾਨੀਆਈ"</string> </resources> diff --git a/packages/InputDevices/res/values-pl/strings.xml b/packages/InputDevices/res/values-pl/strings.xml index 7fb90d2454f6..8ce00d3947b8 100644 --- a/packages/InputDevices/res/values-pl/strings.xml +++ b/packages/InputDevices/res/values-pl/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"czarnogórski (alfabet łaciński)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbski (cyrylica)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"czarnogórski (cyrylica)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumuński"</string> </resources> diff --git a/packages/InputDevices/res/values-pt-rBR/strings.xml b/packages/InputDevices/res/values-pt-rBR/strings.xml index 2b92c811be64..3b1fc9b888d9 100644 --- a/packages/InputDevices/res/values-pt-rBR/strings.xml +++ b/packages/InputDevices/res/values-pt-rBR/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romeno"</string> </resources> diff --git a/packages/InputDevices/res/values-pt-rPT/strings.xml b/packages/InputDevices/res/values-pt-rPT/strings.xml index 98cf7e2df754..163108d94367 100644 --- a/packages/InputDevices/res/values-pt-rPT/strings.xml +++ b/packages/InputDevices/res/values-pt-rPT/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romeno"</string> </resources> diff --git a/packages/InputDevices/res/values-pt/strings.xml b/packages/InputDevices/res/values-pt/strings.xml index 2b92c811be64..3b1fc9b888d9 100644 --- a/packages/InputDevices/res/values-pt/strings.xml +++ b/packages/InputDevices/res/values-pt/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrino (latim)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sérvio (cirílico)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrino (cirílico)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romeno"</string> </resources> diff --git a/packages/InputDevices/res/values-ro/strings.xml b/packages/InputDevices/res/values-ro/strings.xml index 71d19958263e..78c99ce4e20e 100644 --- a/packages/InputDevices/res/values-ro/strings.xml +++ b/packages/InputDevices/res/values-ro/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Muntenegreană (caractere latine)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sârbă (caractere chirilice)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Muntenegreană (Chirilică)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Română"</string> </resources> diff --git a/packages/InputDevices/res/values-ru/strings.xml b/packages/InputDevices/res/values-ru/strings.xml index 13130fc9ca1f..183b00e203b4 100644 --- a/packages/InputDevices/res/values-ru/strings.xml +++ b/packages/InputDevices/res/values-ru/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Черногорский (латиница)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербский (кириллица)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Черногорский (кириллица)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Румынский"</string> </resources> diff --git a/packages/InputDevices/res/values-si/strings.xml b/packages/InputDevices/res/values-si/strings.xml index 80c674d00bca..373dfda87874 100644 --- a/packages/InputDevices/res/values-si/strings.xml +++ b/packages/InputDevices/res/values-si/strings.xml @@ -56,4 +56,6 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"මොන්ටෙනේග්රීන් (ලතින්)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"සර්බියානු (සිරිලික්)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"මොන්ටෙනේග්රීන් (සිරිලික්)"</string> + <!-- no translation found for keyboard_layout_romanian (8698989892731726903) --> + <skip /> </resources> diff --git a/packages/InputDevices/res/values-sk/strings.xml b/packages/InputDevices/res/values-sk/strings.xml index 6ce98cc34bca..c269085202b6 100644 --- a/packages/InputDevices/res/values-sk/strings.xml +++ b/packages/InputDevices/res/values-sk/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"čiernohorčina (latinka)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbčina (cyrilika)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"čiernohorčina (cyrilika)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumunčina"</string> </resources> diff --git a/packages/InputDevices/res/values-sl/strings.xml b/packages/InputDevices/res/values-sl/strings.xml index 29264231e6f6..d2e9fd182d21 100644 --- a/packages/InputDevices/res/values-sl/strings.xml +++ b/packages/InputDevices/res/values-sl/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"črnogorščina (latinica)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"srbščina (cirilica)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"črnogorščina (cirilica)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"romunščina"</string> </resources> diff --git a/packages/InputDevices/res/values-sq/strings.xml b/packages/InputDevices/res/values-sq/strings.xml index 06f76f3d6c4a..36882cbf7986 100644 --- a/packages/InputDevices/res/values-sq/strings.xml +++ b/packages/InputDevices/res/values-sq/strings.xml @@ -56,4 +56,6 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Malazisht (latine)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbisht (cirilike)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Malazisht (cirilike)"</string> + <!-- no translation found for keyboard_layout_romanian (8698989892731726903) --> + <skip /> </resources> diff --git a/packages/InputDevices/res/values-sr/strings.xml b/packages/InputDevices/res/values-sr/strings.xml index 1172fef2c0a9..e4fed039668f 100644 --- a/packages/InputDevices/res/values-sr/strings.xml +++ b/packages/InputDevices/res/values-sr/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"црногорски (латиница)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"српски (ћирилица)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"црногорски (ћирилица)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"румунски"</string> </resources> diff --git a/packages/InputDevices/res/values-sv/strings.xml b/packages/InputDevices/res/values-sv/strings.xml index 946854ca00bb..4eaf856adde9 100644 --- a/packages/InputDevices/res/values-sv/strings.xml +++ b/packages/InputDevices/res/values-sv/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"montenegrinska (latinskt)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"serbiska (kyrilliskt)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"montenegrinska (kyrilliskt)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"rumänska"</string> </resources> diff --git a/packages/InputDevices/res/values-sw/strings.xml b/packages/InputDevices/res/values-sw/strings.xml index c3578d8b5fbd..30b52b25468c 100644 --- a/packages/InputDevices/res/values-sw/strings.xml +++ b/packages/InputDevices/res/values-sw/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Kimontenegri (Kilatini)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Kiserbia (Kisiriliki)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Kimontenegri (Kisiriliki)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Kiromania"</string> </resources> diff --git a/packages/InputDevices/res/values-ta/strings.xml b/packages/InputDevices/res/values-ta/strings.xml index 5c3f57e361b7..d60084cd62f7 100644 --- a/packages/InputDevices/res/values-ta/strings.xml +++ b/packages/InputDevices/res/values-ta/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"மாண்டினெக்ரன் (லத்தீன்)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"செர்பியன் (சிரிலிக்)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"மாண்டினெக்ரன் (சிரிலிக்)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"ரோமானியன்"</string> </resources> diff --git a/packages/InputDevices/res/values-te/strings.xml b/packages/InputDevices/res/values-te/strings.xml index a0674d665ed9..2f40442de757 100644 --- a/packages/InputDevices/res/values-te/strings.xml +++ b/packages/InputDevices/res/values-te/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"మాంటెనెగ్రిన్ (లాటిన్)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"సెర్బియన్ (సిరిలిక్)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"మాంటెనెగ్రిన్ (సిరిలిక్)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"రొమేనియన్"</string> </resources> diff --git a/packages/InputDevices/res/values-th/strings.xml b/packages/InputDevices/res/values-th/strings.xml index a9465961f06a..ae10f0409760 100644 --- a/packages/InputDevices/res/values-th/strings.xml +++ b/packages/InputDevices/res/values-th/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"มอนเตเนโกร (ละติน)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"เซอร์เบีย (ซีริลลิก)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"มอนเตเนโกร (ซีริลลิก)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"โรมาเนีย"</string> </resources> diff --git a/packages/InputDevices/res/values-tl/strings.xml b/packages/InputDevices/res/values-tl/strings.xml index 0a5d3cc6c1d6..dc0d1f52fe8f 100644 --- a/packages/InputDevices/res/values-tl/strings.xml +++ b/packages/InputDevices/res/values-tl/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Montenegrin (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Romanian"</string> </resources> diff --git a/packages/InputDevices/res/values-tr/strings.xml b/packages/InputDevices/res/values-tr/strings.xml index f37a098f0714..2e7084d43cdd 100644 --- a/packages/InputDevices/res/values-tr/strings.xml +++ b/packages/InputDevices/res/values-tr/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Karadağca (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Sırpça (Kiril)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Karadağca (Kiril)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Rumence"</string> </resources> diff --git a/packages/InputDevices/res/values-uk/strings.xml b/packages/InputDevices/res/values-uk/strings.xml index d496dfa3910b..1010177539b1 100644 --- a/packages/InputDevices/res/values-uk/strings.xml +++ b/packages/InputDevices/res/values-uk/strings.xml @@ -56,4 +56,6 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Чорногорська (латиниця)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Сербська (кирилиця)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Чорногорська (кирилиця)"</string> + <!-- no translation found for keyboard_layout_romanian (8698989892731726903) --> + <skip /> </resources> diff --git a/packages/InputDevices/res/values-ur/strings.xml b/packages/InputDevices/res/values-ur/strings.xml index 7293858ee413..94cd329ff442 100644 --- a/packages/InputDevices/res/values-ur/strings.xml +++ b/packages/InputDevices/res/values-ur/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"مونٹے نیگریائی (لاطینی)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"سربیائی (سیریلک)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"مونٹے نیگریائی (سیریلک)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"رومانیائی"</string> </resources> diff --git a/packages/InputDevices/res/values-uz/strings.xml b/packages/InputDevices/res/values-uz/strings.xml index f212e2c4108e..92e00d81c622 100644 --- a/packages/InputDevices/res/values-uz/strings.xml +++ b/packages/InputDevices/res/values-uz/strings.xml @@ -56,4 +56,6 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Chernogor (lotin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serb (kirill)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Chernogor (kirill)"</string> + <!-- no translation found for keyboard_layout_romanian (8698989892731726903) --> + <skip /> </resources> diff --git a/packages/InputDevices/res/values-vi/strings.xml b/packages/InputDevices/res/values-vi/strings.xml index f3d2cc48fb96..8384c3ec0652 100644 --- a/packages/InputDevices/res/values-vi/strings.xml +++ b/packages/InputDevices/res/values-vi/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"Tiếng Montenegro (Latinh)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Tiếng Serbia (Chữ Kirin)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Tiếng Montenegro (Chữ Kirin)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"Tiếng Romania"</string> </resources> diff --git a/packages/InputDevices/res/values-zh-rCN/strings.xml b/packages/InputDevices/res/values-zh-rCN/strings.xml index 1f74d3436557..e3a8af367d70 100644 --- a/packages/InputDevices/res/values-zh-rCN/strings.xml +++ b/packages/InputDevices/res/values-zh-rCN/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"黑山语(拉丁字母)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞尔维亚语(西里尔字母)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"黑山语(西里尔字母)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"罗马尼亚语"</string> </resources> diff --git a/packages/InputDevices/res/values-zh-rHK/strings.xml b/packages/InputDevices/res/values-zh-rHK/strings.xml index 9c6864a7bec6..56681b8d3ece 100644 --- a/packages/InputDevices/res/values-zh-rHK/strings.xml +++ b/packages/InputDevices/res/values-zh-rHK/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"蒙特內哥羅文 (拉丁)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞爾維亞文 (西里爾字母)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"蒙特內哥羅文 (西里爾字母)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"羅馬尼亞文"</string> </resources> diff --git a/packages/InputDevices/res/values-zh-rTW/strings.xml b/packages/InputDevices/res/values-zh-rTW/strings.xml index f4159c983bb4..60c085bb2bac 100644 --- a/packages/InputDevices/res/values-zh-rTW/strings.xml +++ b/packages/InputDevices/res/values-zh-rTW/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"蒙特內哥羅文 (拉丁字母)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"塞爾維亞文 (西里爾字母)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"蒙特內哥羅文 (西里爾字母)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"羅馬尼亞文"</string> </resources> diff --git a/packages/InputDevices/res/values-zu/strings.xml b/packages/InputDevices/res/values-zu/strings.xml index ead5a4557901..66973333fa75 100644 --- a/packages/InputDevices/res/values-zu/strings.xml +++ b/packages/InputDevices/res/values-zu/strings.xml @@ -56,4 +56,5 @@ <string name="keyboard_layout_montenegrin_latin" msgid="1467832503378949945">"IsiMontenegrin (Latin)"</string> <string name="keyboard_layout_serbian_cyrillic" msgid="7013541044323542196">"Serbian (Cyrillic)"</string> <string name="keyboard_layout_montenegrin_cyrillic" msgid="2391253952894077421">"Montenegrin (Cyrillic)"</string> + <string name="keyboard_layout_romanian" msgid="8698989892731726903">"IsiRomanian"</string> </resources> diff --git a/packages/PackageInstaller/res/values-kn/strings.xml b/packages/PackageInstaller/res/values-kn/strings.xml index f26ac2d0229a..4789f8bcc83a 100644 --- a/packages/PackageInstaller/res/values-kn/strings.xml +++ b/packages/PackageInstaller/res/values-kn/strings.xml @@ -91,7 +91,7 @@ <string name="manage_device_administrators" msgid="3092696419363842816">"ಸಾಧನದ ನಿರ್ವಹಣೆ ಆ್ಯಪ್ಗಳನ್ನು ನಿರ್ವಹಿಸಿ"</string> <string name="manage_users" msgid="1243995386982560813">"ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಿ"</string> <string name="uninstall_failed_msg" msgid="2176744834786696012">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಅನ್ನು ಅನ್ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string> - <string name="Parse_error_dlg_text" msgid="1661404001063076789">"ಪ್ಯಾಕೇಜ್ ಪಾರ್ಸ್ ಮಾಡುವಲ್ಲಿ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ."</string> + <string name="Parse_error_dlg_text" msgid="1661404001063076789">"ಪ್ಯಾಕೇಜ್ ಪಾರ್ಸ್ ಮಾಡುವಾಗ ಸಮಸ್ಯೆ ಕಂಡುಬಂದಿದೆ."</string> <string name="message_staging" msgid="8032722385658438567">"ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಸಿದ್ಧವಿರುವ ಆ್ಯಪ್…"</string> <string name="app_name_unknown" msgid="6881210203354323926">"ಅಪರಿಚಿತ"</string> <string name="untrusted_external_source_warning" product="tablet" msgid="7067510047443133095">"ನಿಮ್ಮ ಸುರಕ್ಷತೆಯ ದೃಷ್ಟಿಯಿಂದ, ಈ ಮೂಲದಿಂದ ಬಂದಿರುವ ಅಪರಿಚಿತ ಆ್ಯಪ್ಗಳನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡಲು ಪ್ರಸ್ತುತ ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ಗೆ ಅನುಮತಿಯಿಲ್ಲ. ನೀವು ಇದನ್ನು ಸೆಟ್ಟಿಂಗ್ಗಳಲ್ಲಿ ಬದಲಾಯಿಸಬಹುದು."</string> diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt index f001fad69dc6..8b29b0044eea 100644 --- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt @@ -40,7 +40,6 @@ import com.android.settingslib.graph.proto.PreferenceProto import com.android.settingslib.graph.proto.PreferenceProto.ActionTarget import com.android.settingslib.graph.proto.PreferenceScreenProto import com.android.settingslib.graph.proto.TextProto -import com.android.settingslib.metadata.BooleanValue import com.android.settingslib.metadata.FloatPersistentPreference import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider @@ -410,18 +409,20 @@ fun PreferenceMetadata.toProto( val storage = metadata.storage(context) value = preferenceValueProto { when (metadata) { - is BooleanValue -> storage.getBoolean(metadata.key)?.let { booleanValue = it } is RangeValue -> storage.getInt(metadata.key)?.let { intValue = it } is FloatPersistentPreference -> storage.getFloat(metadata.key)?.let { floatValue = it } else -> {} } + when (metadata.valueType) { + Boolean::class.javaObjectType -> + storage.getBoolean(metadata.key)?.let { booleanValue = it } + } } } if (flags.includeValueDescriptor()) { valueDescriptor = preferenceValueDescriptorProto { when (metadata) { - is BooleanValue -> booleanType = true is RangeValue -> rangeValue = rangeValueProto { min = metadata.getMinValue(context) max = metadata.getMaxValue(context) @@ -430,6 +431,11 @@ fun PreferenceMetadata.toProto( is FloatPersistentPreference -> floatType = true else -> {} } + if (metadata is PersistentPreference<*>) { + when (metadata.valueType) { + Boolean::class.javaObjectType -> booleanType = true + } + } } } } diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt index ea795542a5f6..47190648810a 100644 --- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt @@ -26,7 +26,6 @@ import com.android.settingslib.ipc.ApiHandler import com.android.settingslib.ipc.ApiPermissionChecker import com.android.settingslib.ipc.IntMessageCodec import com.android.settingslib.ipc.MessageCodec -import com.android.settingslib.metadata.BooleanValue import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata @@ -146,7 +145,9 @@ class PreferenceSetterApiHandler( val value = request.value try { if (value.hasBooleanValue()) { - if (metadata !is BooleanValue) return PreferenceSetterResult.INVALID_REQUEST + if (metadata.valueType != Boolean::class.javaObjectType) { + return PreferenceSetterResult.INVALID_REQUEST + } val booleanValue = value.booleanValue val resultCode = metadata.checkWritePermit(booleanValue) if (resultCode != PreferenceSetterResult.OK) return resultCode diff --git a/packages/SettingsLib/IllustrationPreference/res/drawable/protection_background_tablet.xml b/packages/SettingsLib/IllustrationPreference/res/drawable/protection_background_tablet.xml new file mode 100644 index 000000000000..31714b7ff902 --- /dev/null +++ b/packages/SettingsLib/IllustrationPreference/res/drawable/protection_background_tablet.xml @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2025 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> + <item> + <shape android:shape="rectangle"> + <solid android:color="@color/settingslib_protection_color"/> + <corners android:radius="28dp"/> + <size android:width="@dimen/settingslib_illustration_width_tablet" + android:height="@dimen/settingslib_illustration_height_tablet"/> + </shape> + </item> +</layer-list> diff --git a/packages/SettingsLib/IllustrationPreference/res/layout/illustration_preference.xml b/packages/SettingsLib/IllustrationPreference/res/layout/illustration_preference.xml index 0ae9c2674bc7..fcc2a04201dd 100644 --- a/packages/SettingsLib/IllustrationPreference/res/layout/illustration_preference.xml +++ b/packages/SettingsLib/IllustrationPreference/res/layout/illustration_preference.xml @@ -40,6 +40,15 @@ android:adjustViewBounds="true" android:src="@drawable/protection_background"/> + <ImageView + android:id="@+id/background_view_tablet" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:adjustViewBounds="true" + android:src="@drawable/protection_background_tablet" + android:visibility="gone"/> + <com.airbnb.lottie.LottieAnimationView android:id="@+id/lottie_view" android:layout_width="wrap_content" diff --git a/packages/SettingsLib/IllustrationPreference/res/values/dimens.xml b/packages/SettingsLib/IllustrationPreference/res/values/dimens.xml index fc273dc7403b..7b5012efd783 100644 --- a/packages/SettingsLib/IllustrationPreference/res/values/dimens.xml +++ b/packages/SettingsLib/IllustrationPreference/res/values/dimens.xml @@ -21,4 +21,7 @@ <dimen name="settingslib_illustration_width">412dp</dimen> <dimen name="settingslib_illustration_height">300dp</dimen> + + <dimen name="settingslib_illustration_width_tablet">498dp</dimen> + <dimen name="settingslib_illustration_height_tablet">362dp</dimen> </resources> diff --git a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java index bc4f1f942dc0..4b407c50bbd5 100644 --- a/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java +++ b/packages/SettingsLib/IllustrationPreference/src/com/android/settingslib/widget/IllustrationPreference.java @@ -72,6 +72,7 @@ public class IllustrationPreference extends Preference implements GroupSectionDi private OnBindListener mOnBindListener; private boolean mLottieDynamicColor; private CharSequence mContentDescription; + private boolean mIsTablet; /** * Interface to listen in on when {@link #onBindViewHolder(PreferenceViewHolder)} occurs. @@ -127,8 +128,17 @@ public class IllustrationPreference extends Preference implements GroupSectionDi final FrameLayout illustrationFrame = (FrameLayout) holder.findViewById( R.id.illustration_frame); - final ImageView backgroundView = + ImageView backgroundView = (ImageView) holder.findViewById(R.id.background_view); + ImageView backgroundViewTablet = + (ImageView) holder.findViewById(R.id.background_view_tablet); + + backgroundView.setVisibility(mIsTablet ? View.GONE : View.VISIBLE); + backgroundViewTablet.setVisibility(mIsTablet ? View.VISIBLE : View.GONE); + if (mIsTablet) { + backgroundView = backgroundViewTablet; + } + final FrameLayout middleGroundLayout = (FrameLayout) holder.findViewById(R.id.middleground_layout); final LottieAnimationView illustrationView = @@ -413,7 +423,7 @@ public class IllustrationPreference extends Preference implements GroupSectionDi final Resources res = backgroundView.getResources(); final int frameWidth = res.getDimensionPixelSize(R.dimen.settingslib_illustration_width); final int frameHeight = res.getDimensionPixelSize(R.dimen.settingslib_illustration_height); - final int restrictedMaxHeight = Math.min(mMaxHeight, frameHeight); + final int restrictedMaxHeight = mMaxHeight; backgroundView.setMaxHeight(restrictedMaxHeight); illustrationView.setMaxHeight(restrictedMaxHeight); @@ -505,5 +515,11 @@ public class IllustrationPreference extends Preference implements GroupSectionDi a.recycle(); } + mIsTablet = SettingsThemeHelper.isExpressiveTheme(context) + && SettingsThemeHelper.isTablet(context); + if (mIsTablet) { + setMaxHeight(context.getResources().getDimensionPixelSize( + R.dimen.settingslib_illustration_height_tablet)); + } } } diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt index 83725aaec377..4cc65815a78a 100644 --- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt +++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt @@ -79,6 +79,14 @@ annotation class SensitivityLevel { interface PersistentPreference<T> { /** + * The value type the preference is associated with. + * + * TODO(b/388167302): Remove the default implementation once all subclasses are migrated. + */ + val valueType: Class<T>? + get() = null + + /** * Returns the key-value storage of the preference. * * The default implementation returns the storage provided by @@ -143,15 +151,6 @@ sealed interface ValueDescriptor { fun isValidValue(context: Context, index: Int): Boolean } -/** - * A boolean type value. - * - * A zero value means `False`, otherwise it is `True`. - */ -interface BooleanValue : ValueDescriptor { - override fun isValidValue(context: Context, index: Int) = true -} - /** Value falls into a given array. */ interface DiscreteValue<T> : ValueDescriptor { @get:ArrayRes val values: Int @@ -221,5 +220,11 @@ interface RangeValue : ValueDescriptor { index in getMinValue(context)..getMaxValue(context) } +/** A persistent preference that has a boolean value. */ +interface BooleanPreference : PersistentPreference<Boolean> { + override val valueType: Class<Boolean> + get() = Boolean::class.javaObjectType +} + /** A persistent preference that has a float value. */ interface FloatPersistentPreference : PersistentPreference<Float> diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt index 87bd261bf4bd..b79a0c4f6381 100644 --- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt +++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt @@ -19,7 +19,7 @@ package com.android.settingslib.metadata import androidx.annotation.StringRes /** Common base class for preferences that have two selectable states and save a boolean value. */ -interface TwoStatePreference : PreferenceMetadata, PersistentPreference<Boolean>, BooleanValue +interface TwoStatePreference : PreferenceMetadata, BooleanPreference /** A preference that provides a two-state toggleable option. */ open class SwitchPreference diff --git a/packages/SettingsLib/SearchWidget/res/values-as/strings.xml b/packages/SettingsLib/SearchWidget/res/values-as/strings.xml index 8d95131e0e15..8c1bd4024595 100644 --- a/packages/SettingsLib/SearchWidget/res/values-as/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-as/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="search_menu" msgid="1914043873178389845">"সন্ধান সম্পৰ্কীয় ছেটিং"</string> + <string name="search_menu" msgid="1914043873178389845">"ছেটিঙত সন্ধান কৰক"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-es-rUS/strings.xml b/packages/SettingsLib/SearchWidget/res/values-es-rUS/strings.xml index d38510189507..db02f002b935 100644 --- a/packages/SettingsLib/SearchWidget/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-es-rUS/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="search_menu" msgid="1914043873178389845">"Buscar configuración"</string> + <string name="search_menu" msgid="1914043873178389845">"Buscar en Configuración"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-mk/strings.xml b/packages/SettingsLib/SearchWidget/res/values-mk/strings.xml index a1bb54e07260..258208473ade 100644 --- a/packages/SettingsLib/SearchWidget/res/values-mk/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-mk/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="search_menu" msgid="1914043873178389845">"Пребарување низ поставките"</string> + <string name="search_menu" msgid="1914043873178389845">"Пребарувајте низ поставките"</string> </resources> diff --git a/packages/SettingsLib/SearchWidget/res/values-pa/strings.xml b/packages/SettingsLib/SearchWidget/res/values-pa/strings.xml index 09a285b7452f..97497c18c621 100644 --- a/packages/SettingsLib/SearchWidget/res/values-pa/strings.xml +++ b/packages/SettingsLib/SearchWidget/res/values-pa/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="search_menu" msgid="1914043873178389845">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਖੋਜੋ"</string> + <string name="search_menu" msgid="1914043873178389845">"ਸੈਟਿੰਗਾਂ ਖੋਜੋ"</string> </resources> diff --git a/packages/SettingsLib/SettingsTheme/res/values-v35/themes.xml b/packages/SettingsLib/SettingsTheme/res/values-v35/themes.xml index b6e80c784f10..dc5c9b297181 100644 --- a/packages/SettingsLib/SettingsTheme/res/values-v35/themes.xml +++ b/packages/SettingsLib/SettingsTheme/res/values-v35/themes.xml @@ -18,7 +18,7 @@ <resources> <style name="Theme.SettingsBase_v35" parent="Theme.SettingsBase_v33" > <item name="android:colorAccent">@color/settingslib_materialColorPrimary</item> - <item name="android:colorBackground">@color/settingslib_materialColorSurfaceContainer</item> + <item name="android:colorBackground">@color/settingslib_materialColorSurfaceContainerLowest</item> <item name="android:textColorPrimary">@color/settingslib_materialColorOnSurface</item> <item name="android:textColorSecondary">@color/settingslib_text_color_secondary</item> <item name="android:textColorTertiary">@color/settingslib_materialColorOutline</item> diff --git a/packages/SettingsLib/SettingsTheme/src/com/android/settingslib/widget/SettingsThemeHelper.kt b/packages/SettingsLib/SettingsTheme/src/com/android/settingslib/widget/SettingsThemeHelper.kt index 74f5441f6760..6794cd0e30a2 100644 --- a/packages/SettingsLib/SettingsTheme/src/com/android/settingslib/widget/SettingsThemeHelper.kt +++ b/packages/SettingsLib/SettingsTheme/src/com/android/settingslib/widget/SettingsThemeHelper.kt @@ -21,6 +21,7 @@ import android.os.Build object SettingsThemeHelper { private const val IS_EXPRESSIVE_DESIGN_ENABLED = "is_expressive_design_enabled" + private const val RO_BUILD_CHARACTERISTICS = "ro.build.characteristics" private var expressiveThemeState: ExpressiveThemeState = ExpressiveThemeState.UNKNOWN enum class ExpressiveThemeState { @@ -41,6 +42,12 @@ object SettingsThemeHelper { return expressiveThemeState == ExpressiveThemeState.ENABLED } + @JvmStatic + fun isTablet(context: Context): Boolean { + val result = getPropString(context, RO_BUILD_CHARACTERISTICS, "").split(',') + return result.contains("tablet") + } + private fun tryInit(context: Context) { if (expressiveThemeState != ExpressiveThemeState.UNKNOWN) { return @@ -73,4 +80,19 @@ object SettingsThemeHelper { def } } + + private fun getPropString(context: Context, property: String, def: String): String { + return try { + val systemProperties = context.classLoader.loadClass("android.os.SystemProperties") + + val paramTypes = + arrayOf<Class<*>?>(String::class.java, String::class.java) + val get = systemProperties.getMethod("get", *paramTypes) + get.invoke(systemProperties, property, def) as String + } catch (iae: IllegalArgumentException) { + throw iae + } catch (exception: Exception) { + def + } + } } diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SearchScaffold.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SearchScaffold.kt index 4a7937a3c2ac..e5868d0f1f71 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SearchScaffold.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/scaffold/SearchScaffold.kt @@ -51,12 +51,14 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.clearAndSetSemantics import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.lifecycle.ViewModel import androidx.lifecycle.viewmodel.compose.viewModel +import com.android.settingslib.spa.framework.compose.contentDescription import com.android.settingslib.spa.framework.compose.hideKeyboardAction import com.android.settingslib.spa.framework.compose.horizontalValues import com.android.settingslib.spa.framework.theme.SettingsOpacity @@ -175,12 +177,15 @@ private fun SearchBox(query: TextFieldValue, onQueryChange: (TextFieldValue) -> onValueChange = onQueryChange, modifier = Modifier .fillMaxWidth() - .focusRequester(focusRequester), + .focusRequester(focusRequester) + .contentDescription(stringResource(R.string.abc_search_hint)), textStyle = textStyle, placeholder = { Text( text = stringResource(R.string.abc_search_hint), - modifier = Modifier.alpha(SettingsOpacity.Hint), + modifier = Modifier + .alpha(SettingsOpacity.Hint) + .clearAndSetSemantics {}, style = textStyle, ) }, diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/scaffold/SearchScaffoldTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/scaffold/SearchScaffoldTest.kt index 826a0d461c8c..3d73b065751f 100644 --- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/scaffold/SearchScaffoldTest.kt +++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/scaffold/SearchScaffoldTest.kt @@ -130,7 +130,7 @@ class SearchScaffoldTest { ).performClick() } - private fun onSearchHint() = composeTestRule.onNodeWithText( + private fun onSearchHint() = composeTestRule.onNodeWithContentDescription( context.getString(R.string.abc_search_hint) ) diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml index 0c71a2195538..bf039adf35e9 100644 --- a/packages/SettingsLib/res/values-iw/strings.xml +++ b/packages/SettingsLib/res/values-iw/strings.xml @@ -64,7 +64,7 @@ <string name="connected_via_network_scorer" msgid="7665725527352893558">"מחובר אוטומטית דרך %1$s"</string> <string name="connected_via_network_scorer_default" msgid="7973529709744526285">"מחובר אוטומטית דרך ספק של דירוג רשת"</string> <string name="connected_via_app" msgid="3532267661404276584">"מחוברת באמצעות <xliff:g id="NAME">%1$s</xliff:g>"</string> - <string name="tap_to_sign_up" msgid="5356397741063740395">"יש להקיש כדי להירשם"</string> + <string name="tap_to_sign_up" msgid="5356397741063740395">"יש ללחוץ כדי להירשם"</string> <string name="wifi_connected_no_internet" msgid="5087420713443350646">"אין אינטרנט"</string> <string name="private_dns_broken" msgid="1984159464346556931">"לא ניתן לגשת לשרת DNS הפרטי"</string> <string name="wifi_limited_connection" msgid="1184778285475204682">"חיבור מוגבל"</string> @@ -74,7 +74,7 @@ <string name="osu_opening_provider" msgid="4318105381295178285">"מתבצעת פתיחה של <xliff:g id="PASSPOINTPROVIDER">%1$s</xliff:g>"</string> <string name="osu_connect_failed" msgid="9107873364807159193">"לא ניתן היה להתחבר"</string> <string name="osu_completing_sign_up" msgid="8412636665040390901">"מתבצעת השלמה של ההרשמה…"</string> - <string name="osu_sign_up_failed" msgid="5605453599586001793">"לא ניתן היה להשלים את ההרשמה. יש להקיש כדי לנסות שוב."</string> + <string name="osu_sign_up_failed" msgid="5605453599586001793">"לא ניתן היה להשלים את ההרשמה. יש ללחוץ כדי לנסות שוב."</string> <string name="osu_sign_up_complete" msgid="7640183358878916847">"תהליך ההרשמה הסתיים. בתהליך התחברות…"</string> <string name="speed_label_slow" msgid="6069917670665664161">"איטית"</string> <string name="speed_label_okay" msgid="1253594383880810424">"אישור"</string> @@ -279,7 +279,7 @@ <string name="adb_wireless_no_network_msg" msgid="2365795244718494658">"יש להתחבר לרשת Wi-Fi"</string> <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, ניפוי באגים, פיתוח"</string> <string name="bugreport_in_power" msgid="8664089072534638709">"קיצור דרך לדוח באגים"</string> - <string name="bugreport_in_power_summary" msgid="1885529649381831775">"הצגת לחצן ליצירת דוח על באג בתפריט ההפעלה"</string> + <string name="bugreport_in_power_summary" msgid="1885529649381831775">"הצגת כפתור ליצירת דוח על באג בתפריט ההפעלה"</string> <string name="keep_screen_on" msgid="1187161672348797558">"ללא כניסה למצב שינה"</string> <string name="keep_screen_on_summary" msgid="1510731514101925829">"המסך לעולם לא יהיה במצב שינה במהלך טעינה"</string> <string name="bt_hci_snoop_log" msgid="7291287955649081448">"הפעלת Snoop Log של Bluetooth HCI"</string> @@ -380,8 +380,8 @@ <string name="strict_mode_summary" msgid="1838248687233554654">"המסך יהבהב כשאפליקציות יבצעו פעולות ארוכות ב-thread הראשי"</string> <string name="pointer_location" msgid="7516929526199520173">"מיקום מצביע"</string> <string name="pointer_location_summary" msgid="957120116989798464">"שכבת-על של המסך המציגה את נתוני המגע הנוכחיים"</string> - <string name="show_touches" msgid="8437666942161289025">"הצגת הקשות"</string> - <string name="show_touches_summary" msgid="3692861665994502193">"הצגת משוב ויזואלי להקשות"</string> + <string name="show_touches" msgid="8437666942161289025">"הצגת לחיצות"</string> + <string name="show_touches_summary" msgid="3692861665994502193">"הצגת משוב ויזואלי ללחיצות"</string> <string name="show_key_presses" msgid="6360141722735900214">"הצגת לחיצות המקשים"</string> <string name="show_key_presses_summary" msgid="725387457373015024">"הצגת משוב חזותי עבור לחיצות פיזיות על מקשים"</string> <string name="touchpad_visualizer" msgid="3707916068870825115">"הצגת הקלט של לוח המגע"</string> @@ -440,7 +440,7 @@ <string name="enable_freeform_support" msgid="7599125687603914253">"הפעלת מצב חופשי (חלונות צפים)"</string> <string name="local_backup_password_title" msgid="4631017948933578709">"סיסמת גיבוי שולחן העבודה"</string> <string name="local_backup_password_summary_none" msgid="7646898032616361714">"גיבויים מלאים בשולחן העבודה אינם מוגנים כעת"</string> - <string name="local_backup_password_summary_change" msgid="1707357670383995567">"יש להקיש כדי לשנות או להסיר את הסיסמה לגיבויים מלאים בשולחן העבודה"</string> + <string name="local_backup_password_summary_change" msgid="1707357670383995567">"יש ללחוץ כדי לשנות או להסיר את הסיסמה לגיבויים מלאים בשולחן העבודה"</string> <string name="local_backup_password_toast_success" msgid="4891666204428091604">"הוגדרה סיסמת גיבוי חדשה"</string> <string name="local_backup_password_toast_confirmation_mismatch" msgid="2994718182129097733">"הסיסמה החדשה והאישור אינם תואמים"</string> <string name="local_backup_password_toast_validation_failure" msgid="714669442363647122">"הגדרת סיסמת גיבוי נכשלה"</string> @@ -456,8 +456,8 @@ <item msgid="1282170165150762976">"צבעים מותאמים באופן אופטימלי לתוכן דיגיטלי"</item> </string-array> <string name="inactive_apps_title" msgid="5372523625297212320">"אפליקציות בהמתנה"</string> - <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"אפליקציה לא פעילה. יש להקיש כדי להחליף מצב."</string> - <string name="inactive_app_active_summary" msgid="8047630990208722344">"אפליקציה פעילה. יש להקיש כדי להחליף מצב."</string> + <string name="inactive_app_inactive_summary" msgid="3161222402614236260">"אפליקציה לא פעילה. יש ללחוץ כדי להחליף מצב."</string> + <string name="inactive_app_active_summary" msgid="8047630990208722344">"אפליקציה פעילה. יש ללחוץ כדי להחליף מצב."</string> <string name="standby_bucket_summary" msgid="5128193447550429600">"אפליקציה במצב המתנה:<xliff:g id="BUCKET"> %s</xliff:g>"</string> <string name="transcode_settings_title" msgid="2581975870429850549">"הגדרות של המרת קידוד למדיה"</string> <string name="transcode_user_control" msgid="6176368544817731314">"ביטול ברירות המחדל של המרת קידוד"</string> diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java index 1998d0c6721c..2b8e20ffc71a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java @@ -10,6 +10,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; +import android.content.pm.ResolveInfo; import android.content.pm.Signature; import android.content.pm.UserInfo; import android.content.res.ColorStateList; @@ -32,6 +33,7 @@ import android.media.AudioManager; import android.net.ConnectivityManager; import android.net.NetworkCapabilities; import android.net.TetheringManager; +import android.net.Uri; import android.net.vcn.VcnUtils; import android.net.wifi.WifiInfo; import android.os.BatteryManager; @@ -79,11 +81,14 @@ public class Utils { @VisibleForTesting static final String STORAGE_MANAGER_ENABLED_PROPERTY = "ro.storage_manager.enabled"; + private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive"; + private static Signature[] sSystemSignature; private static String sPermissionControllerPackageName; private static String sServicesSystemSharedLibPackageName; private static String sSharedSystemSharedLibPackageName; private static String sDefaultWebViewPackageName; + private static String sPackageInstallerPackageName; static final int[] WIFI_PIE = { com.android.internal.R.drawable.ic_wifi_signal_0, @@ -496,9 +501,29 @@ public class Utils { || packageName.equals(sSharedSystemSharedLibPackageName) || packageName.equals(PrintManager.PRINT_SPOOLER_PACKAGE_NAME) || packageName.equals(getDefaultWebViewPackageName(pm)) + || packageName.equals(getPackageInstallerPackageName(pm)) || isDeviceProvisioningPackage(resources, packageName); } + /** Return the package name of the installer */ + private static String getPackageInstallerPackageName(PackageManager pm) { + if (sPackageInstallerPackageName != null) { + return sPackageInstallerPackageName; + } + final Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.setDataAndType(Uri.parse("content://com.example/foo.apk"), PACKAGE_MIME_TYPE); + final List<ResolveInfo> matches = + pm.queryIntentActivities(intent, PackageManager.GET_META_DATA); + if (matches.size() == 1) { + final ResolveInfo resolveInfo = matches.get(0); + if (resolveInfo.activityInfo.applicationInfo.isPrivilegedApp()) { + sPackageInstallerPackageName = resolveInfo.getComponentInfo().packageName; + } + } + return sPackageInstallerPackageName; + } + /** * Returns {@code true} if the supplied package is the device provisioning app. Otherwise, * returns {@code false}. diff --git a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt index 4c4ce2a61851..01bf0c8335d1 100644 --- a/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt +++ b/packages/SettingsLib/src/com/android/settingslib/volume/data/repository/AudioSharingRepository.kt @@ -27,6 +27,7 @@ import android.provider.Settings import androidx.annotation.IntRange import com.android.internal.util.ConcurrentUtils import com.android.settingslib.bluetooth.BluetoothUtils +import com.android.settingslib.bluetooth.CachedBluetoothDevice import com.android.settingslib.bluetooth.LocalBluetoothManager import com.android.settingslib.bluetooth.onBroadcastStartedOrStopped import com.android.settingslib.bluetooth.onProfileConnectionStateChanged @@ -71,6 +72,12 @@ interface AudioSharingRepository { /** The secondary headset groupId in audio sharing. */ val secondaryGroupId: StateFlow<Int> + /** Primary audio sharing device. */ + val primaryDevice: StateFlow<CachedBluetoothDevice?> + + /** Secondary audio sharing device. */ + val secondaryDevice: StateFlow<CachedBluetoothDevice?> + /** The headset groupId to volume map during audio sharing. */ val volumeMap: StateFlow<GroupIdToVolumes> @@ -144,12 +151,31 @@ class AudioSharingRepositoryImpl( ) override val secondaryGroupId: StateFlow<Int> = - merge( + secondaryDevice + .map { BluetoothUtils.getGroupId(it) } + .onEach { logger.onSecondaryGroupIdChanged(it) } + .flowOn(backgroundCoroutineContext) + .stateIn( + coroutineScope, + SharingStarted.WhileSubscribed(), + BluetoothCsipSetCoordinator.GROUP_ID_INVALID + ) + + override val primaryDevice: StateFlow<CachedBluetoothDevice?> + get() = primaryGroupId.map { getCachedDeviceFromGroupId(it) } + .stateIn( + coroutineScope, + SharingStarted.WhileSubscribed(), + null + ) + + override val secondaryDevice: StateFlow<CachedBluetoothDevice?> + get() = merge( isAudioSharingProfilesReady.flatMapLatest { ready -> if (ready) { btManager.profileManager.leAudioBroadcastAssistantProfile .onSourceConnectedOrRemoved - .map { getSecondaryGroupId() } + .map { getSecondaryDevice() } } else { emptyFlow() } @@ -160,15 +186,14 @@ class AudioSharingRepositoryImpl( profileConnection.bluetoothProfile == BluetoothProfile.LE_AUDIO_BROADCAST_ASSISTANT } - .map { getSecondaryGroupId() }, - primaryGroupId.map { getSecondaryGroupId() }) - .onStart { emit(getSecondaryGroupId()) } - .onEach { logger.onSecondaryGroupIdChanged(it) } + .map { getSecondaryDevice() }, + primaryGroupId.map { getSecondaryDevice() }) + .onStart { emit(getSecondaryDevice()) } .flowOn(backgroundCoroutineContext) .stateIn( coroutineScope, SharingStarted.WhileSubscribed(), - BluetoothCsipSetCoordinator.GROUP_ID_INVALID + null ) override val volumeMap: StateFlow<GroupIdToVolumes> = @@ -257,10 +282,24 @@ class AudioSharingRepositoryImpl( private fun isBroadcasting(): Boolean = btManager.profileManager.leAudioBroadcastProfile?.isEnabled(null) ?: false - private fun getSecondaryGroupId(): Int = - BluetoothUtils.getGroupId( - BluetoothUtils.getSecondaryDeviceForBroadcast(contentResolver, btManager) - ) + private fun getSecondaryDevice(): CachedBluetoothDevice? = + BluetoothUtils.getSecondaryDeviceForBroadcast(contentResolver, btManager) + + private suspend fun getCachedDeviceFromGroupId(groupId: Int): CachedBluetoothDevice? = + withContext(backgroundCoroutineContext) { + btManager + .profileManager + ?.leAudioBroadcastAssistantProfile + ?.allConnectedDevices + ?.firstNotNullOfOrNull { device -> + val cachedDevice = btManager.cachedDeviceManager.findDevice(device) + if (BluetoothUtils.getGroupId(cachedDevice) == groupId) { + cachedDevice + } else { + null + } + } + } } class AudioSharingRepositoryEmptyImpl : AudioSharingRepository { @@ -269,6 +308,10 @@ class AudioSharingRepositoryEmptyImpl : AudioSharingRepository { MutableStateFlow(BluetoothCsipSetCoordinator.GROUP_ID_INVALID) override val secondaryGroupId: StateFlow<Int> = MutableStateFlow(BluetoothCsipSetCoordinator.GROUP_ID_INVALID) + override val primaryDevice: StateFlow<CachedBluetoothDevice?> + get() = MutableStateFlow(null) + override val secondaryDevice: StateFlow<CachedBluetoothDevice?> + get() = MutableStateFlow(null) override val volumeMap: StateFlow<GroupIdToVolumes> = MutableStateFlow(emptyMap()) override suspend fun audioSharingAvailable(): Boolean = false diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioSharingRepositoryTest.kt b/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioSharingRepositoryTest.kt index 8c5a0851cc92..0f25ae208a69 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioSharingRepositoryTest.kt +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/volume/data/repository/AudioSharingRepositoryTest.kt @@ -209,6 +209,21 @@ class AudioSharingRepositoryTest { } @Test + fun primaryDeviceChange_emitValues() { + testScope.runTest { + `when`(assistant.allConnectedDevices).thenReturn(listOf(device1, device2)) + + val devices = mutableListOf<CachedBluetoothDevice?>() + underTest.primaryDevice.onEach { devices.add(it) }.launchIn(backgroundScope) + runCurrent() + triggerContentObserverChange() + runCurrent() + + Truth.assertThat(devices).containsExactly(null, cachedDevice2) + } + } + + @Test fun secondaryGroupIdChange_profileNotReady_assistantCallbackNotRegistered() { testScope.runTest { val groupIds = mutableListOf<Int?>() @@ -269,6 +284,29 @@ class AudioSharingRepositoryTest { } @Test + fun secondaryDeviceChange_emitValues() { + testScope.runTest { + `when`(broadcast.isProfileReady).thenReturn(true) + `when`(assistant.isProfileReady).thenReturn(true) + `when`(volumeControl.isProfileReady).thenReturn(true) + val devices = mutableListOf<CachedBluetoothDevice?>() + underTest.secondaryDevice.onEach { devices.add(it) }.launchIn(backgroundScope) + runCurrent() + triggerSourceAdded() + runCurrent() + triggerContentObserverChange() + runCurrent() + + Truth.assertThat(devices) + .containsExactly( + null, + cachedDevice2, + cachedDevice1, + ) + } + } + + @Test fun volumeMapChange_profileReady_emitValues() { testScope.runTest { `when`(broadcast.isProfileReady).thenReturn(true) @@ -363,7 +401,7 @@ class AudioSharingRepositoryTest { TEST_GROUP_ID1 ) `when`(assistant.allConnectedDevices).thenReturn(listOf(device1, device2)) - assistantCallbackCaptor.value.sourceAdded(device1, receiveState) + assistantCallbackCaptor.value.sourceAdded(device1) } private fun triggerSourceRemoved() { @@ -432,11 +470,9 @@ class AudioSharingRepositoryTest { onBroadcastStopped(TEST_REASON, TEST_BROADCAST_ID) } val sourceAdded: - BluetoothLeBroadcastAssistant.Callback.( - sink: BluetoothDevice, state: BluetoothLeBroadcastReceiveState - ) -> Unit = - { sink, state -> - onReceiveStateChanged(sink, TEST_SOURCE_ID, state) + BluetoothLeBroadcastAssistant.Callback.(sink: BluetoothDevice) -> Unit = + { sink -> + onSourceAdded(sink, TEST_SOURCE_ID, TEST_REASON) } val sourceRemoved: BluetoothLeBroadcastAssistant.Callback.(sink: BluetoothDevice) -> Unit = { sink -> diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/IllustrationPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/IllustrationPreferenceTest.java index 3f3e1b280850..c8738ae0c8eb 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/IllustrationPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/IllustrationPreferenceTest.java @@ -251,8 +251,8 @@ public class IllustrationPreferenceTest { mPreference.setMaxHeight(maxHeight); mPreference.onBindViewHolder(mViewHolder); - assertThat(mBackgroundView.getMaxHeight()).isEqualTo(restrictedHeight); - assertThat(mAnimationView.getMaxHeight()).isEqualTo(restrictedHeight); + assertThat(mBackgroundView.getMaxHeight()).isEqualTo(maxHeight); + assertThat(mAnimationView.getMaxHeight()).isEqualTo(maxHeight); } @Test diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 9b75a47d92ac..c47bf628002d 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -385,6 +385,9 @@ public class SettingsProvider extends ContentProvider { private static final Set<String> sDeviceConfigAllowlistedNamespaces = new ArraySet<>(); + // TODO(b/388901162): Remove this when the same constant is exposed as an API in DeviceConfig. + private static final String DEVICE_CONFIG_OVERRIDES_NAMESPACE = "device_config_overrides"; + // We have to call in the user manager with no lock held, private volatile UserManager mUserManager; @@ -2480,12 +2483,21 @@ public class SettingsProvider extends ContentProvider { for (String flag : flags) { boolean namespaceAllowed = false; if (isRestrictedShell) { - int delimiterIndex = flag.indexOf("/"); - String flagNamespace; - if (delimiterIndex != -1) { - flagNamespace = flag.substring(0, delimiterIndex); - } else { - flagNamespace = flag; + String flagNamespace = getFlagNamespace(flag); + // If the namespace indicates this is a flag override, then the actual + // namespace and flag name should be used for the allowlist verification. + if (DEVICE_CONFIG_OVERRIDES_NAMESPACE.equals(flagNamespace)) { + // Override flags are in the following form: + // device_config_overrides/namespace:flagName + int slashIndex = flag.indexOf("/"); + int colonIndex = flag.indexOf(":", slashIndex); + if (slashIndex != -1 && colonIndex != -1 && (slashIndex + 1) < flag.length() + && (colonIndex + 1) < flag.length()) { + flagNamespace = flag.substring(slashIndex + 1, colonIndex); + StringBuilder flagBuilder = new StringBuilder(flagNamespace); + flagBuilder.append("/").append(flag.substring(colonIndex + 1)); + flag = flagBuilder.toString(); + } } if (allowlistedDeviceConfigNamespaces.contains(flagNamespace)) { namespaceAllowed = true; @@ -2512,6 +2524,23 @@ public class SettingsProvider extends ContentProvider { } } + /** + * Returns the namespace for the provided {@code flag}. + * <p> + * Flags are expected to be in the form namespace/flagName; if the '/' delimiter does + * not exist, then the provided flag is returned as the namespace. + */ + private static String getFlagNamespace(String flag) { + int delimiterIndex = flag.indexOf("/"); + String flagNamespace; + if (delimiterIndex != -1) { + flagNamespace = flag.substring(0, delimiterIndex); + } else { + flagNamespace = flag; + } + return flagNamespace; + } + // The check is added mainly for auto devices. On auto devices, it is possible that // multiple users are visible simultaneously using visible background users. // In such cases, it is desired that Non-current user (ex. visible background users) can diff --git a/packages/Shell/res/values-iw/strings.xml b/packages/Shell/res/values-iw/strings.xml index 816fe3b432bc..be81c2ed3792 100644 --- a/packages/Shell/res/values-iw/strings.xml +++ b/packages/Shell/res/values-iw/strings.xml @@ -24,10 +24,10 @@ <string name="bugreport_updating_wait" msgid="3322151947853929470">"רק רגע…"</string> <string name="bugreport_finished_text" product="watch" msgid="1223616207145252689">"הדוח על הבאג יופיע בטלפון בקרוב"</string> <string name="bugreport_finished_text" product="tv" msgid="5758325479058638893">"יש להקיש כדי לשתף את הדוח על הבאג"</string> - <string name="bugreport_finished_text" product="default" msgid="8353769438382138847">"יש להקיש כדי לשתף את הדוח על הבאג"</string> + <string name="bugreport_finished_text" product="default" msgid="8353769438382138847">"יש ללחוץ כדי לשתף את הדוח על הבאג"</string> <string name="bugreport_finished_pending_screenshot_text" product="tv" msgid="2343263822812016950">"אפשר להחליק ימינה כדי לשתף את הדוח על הבאג ללא צילום מסך, או להמתין להשלמת צילום המסך"</string> - <string name="bugreport_finished_pending_screenshot_text" product="watch" msgid="1474435374470177193">"יש להקיש כדי לשתף את הדוח על הבאג ללא צילום מסך, או להמתין להשלמת צילום המסך"</string> - <string name="bugreport_finished_pending_screenshot_text" product="default" msgid="1474435374470177193">"יש להקיש כדי לשתף את הדוח על הבאג ללא צילום מסך, או להמתין להשלמת צילום המסך"</string> + <string name="bugreport_finished_pending_screenshot_text" product="watch" msgid="1474435374470177193">"יש ללחוץ כדי לשתף את הדוח על הבאג ללא צילום מסך, או להמתין להשלמת צילום המסך"</string> + <string name="bugreport_finished_pending_screenshot_text" product="default" msgid="1474435374470177193">"יש ללחוץ כדי לשתף את הדוח על הבאג ללא צילום מסך, או להמתין להשלמת צילום המסך"</string> <string name="bugreport_confirm" msgid="5917407234515812495">"דוחות על באגים כוללים נתונים מקובצי היומן השונים במערכת, שעשויים לכלול נתונים הנחשבים רגישים (כגון שימוש באפליקציות ונתוני מיקום). כדאי לשתף דוחות על באגים רק עם אפליקציות ואנשים מהימנים."</string> <string name="bugreport_confirm_dont_repeat" msgid="6179945398364357318">"אין צורך להציג זאת שוב"</string> <string name="bugreport_storage_title" msgid="5332488144740527109">"דוחות על באגים"</string> diff --git a/packages/SystemUI/accessibility/accessibilitymenu/res/values-iw/strings.xml b/packages/SystemUI/accessibility/accessibilitymenu/res/values-iw/strings.xml index 3f8671c83ccc..db733fc33a21 100644 --- a/packages/SystemUI/accessibility/accessibilitymenu/res/values-iw/strings.xml +++ b/packages/SystemUI/accessibility/accessibilitymenu/res/values-iw/strings.xml @@ -23,8 +23,8 @@ <string name="accessibility_menu_description" msgid="4458354794093858297">"תפריט הנגישות הוא תפריט גדול שמופיע במסך ומאפשר לשלוט במכשיר. אפשר לנעול את המכשיר, לשלוט בעוצמת הקול ובבהירות, לצלם צילומי מסך ועוד."</string> <string name="accessibility_menu_summary" msgid="340071398148208130">"שליטה במכשיר באמצעות התפריט הגדול"</string> <string name="accessibility_menu_settings_name" msgid="1716888058785672611">"הגדרות של תפריט נגישות"</string> - <string name="accessibility_menu_large_buttons_title" msgid="8978499601044961736">"לחצנים גדולים"</string> - <string name="accessibility_menu_large_buttons_summary" msgid="236873938502785311">"הגדלת הלחצנים של תפריט הנגישות"</string> + <string name="accessibility_menu_large_buttons_title" msgid="8978499601044961736">"כפתורים גדולים"</string> + <string name="accessibility_menu_large_buttons_summary" msgid="236873938502785311">"הגדלת הכפתורים של תפריט הנגישות"</string> <string name="pref_help_title" msgid="6871558837025010641">"עזרה"</string> <string name="brightness_percentage_label" msgid="7391554573977867369">"בהירות %% <xliff:g id="PERCENTAGE">%1$s</xliff:g>"</string> <string name="music_volume_percentage_label" msgid="398635599662604706">"עוצמת הקול של המוזיקה %% <xliff:g id="PERCENTAGE">%1$s</xliff:g>"</string> diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig index b33421d5d4ca..39a7aea67078 100644 --- a/packages/SystemUI/aconfig/systemui.aconfig +++ b/packages/SystemUI/aconfig/systemui.aconfig @@ -1919,3 +1919,13 @@ flag { purpose: PURPOSE_BUGFIX } } + +flag { + name: "stabilize_heads_up_group" + namespace: "systemui" + description: "Stabilize heads up groups in VisualStabilityCoordinator" + bug: "381864715" + metadata { + purpose: PURPOSE_BUGFIX + } +} diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/media/controls/ui/composable/MediaContentPicker.kt b/packages/SystemUI/compose/features/src/com/android/systemui/media/controls/ui/composable/MediaContentPicker.kt index d52323295db7..215a43382b06 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/media/controls/ui/composable/MediaContentPicker.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/media/controls/ui/composable/MediaContentPicker.kt @@ -24,7 +24,6 @@ import com.android.compose.animation.scene.StaticElementContentPicker import com.android.compose.animation.scene.content.state.TransitionState import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.scene.shared.model.Scenes -import com.android.systemui.shade.shared.flag.DualShade /** [ElementContentPicker] implementation for the media carousel object. */ object MediaContentPicker : StaticElementContentPicker { @@ -46,8 +45,11 @@ object MediaContentPicker : StaticElementContentPicker { toContentZIndex: Float, ): ContentKey { return when { - shouldElevateMedia(transition) -> { - if (DualShade.isEnabled) Overlays.NotificationsShade else Scenes.Shade + transition.isTransitioningBetween(Scenes.Lockscreen, Scenes.Shade) -> { + Scenes.Shade + } + transition.isTransitioningBetween(Scenes.Lockscreen, Overlays.NotificationsShade) -> { + Overlays.NotificationsShade } transition.isTransitioningBetween(Scenes.Lockscreen, Scenes.Communal) -> { Scenes.Lockscreen @@ -71,14 +73,12 @@ object MediaContentPicker : StaticElementContentPicker { } } } - - /** Returns true when the media should be laid on top of the rest for the given [transition]. */ - fun shouldElevateMedia(transition: TransitionState.Transition): Boolean { - return transition.isTransitioningBetween(Scenes.Lockscreen, Scenes.Shade) || - transition.isTransitioningBetween(Scenes.Lockscreen, Overlays.NotificationsShade) - } } +/** Whether media should be laid on top of the rest for the given [transition]. */ fun MediaContentPicker.shouldElevateMedia(layoutState: SceneTransitionLayoutState): Boolean { - return layoutState.currentTransition?.let { shouldElevateMedia(it) } ?: false + return layoutState.currentTransition?.let { transition -> + transition.isTransitioningBetween(Scenes.Lockscreen, Scenes.Shade) || + transition.isTransitioningBetween(Scenes.Lockscreen, Overlays.NotificationsShade) + } ?: false } diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt index 183929ca6c6a..a6918a7c5ffe 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/notifications/ui/composable/Notifications.kt @@ -96,9 +96,7 @@ import com.android.systemui.common.ui.compose.windowinsets.LocalScreenCornerRadi import com.android.systemui.res.R import com.android.systemui.scene.session.ui.composable.SaveableSession import com.android.systemui.scene.session.ui.composable.rememberSession -import com.android.systemui.scene.shared.model.Overlays import com.android.systemui.scene.shared.model.Scenes -import com.android.systemui.shade.shared.flag.DualShade import com.android.systemui.shade.ui.composable.ShadeHeader import com.android.systemui.statusbar.notification.stack.shared.model.AccessibilityScrollEvent import com.android.systemui.statusbar.notification.stack.shared.model.ShadeScrimBounds @@ -124,12 +122,6 @@ object Notifications { } } -private val notificationsShadeContentKey: ContentKey - get() = if (DualShade.isEnabled) Overlays.NotificationsShade else Scenes.Shade - -private val quickSettingsShadeContentKey: ContentKey - get() = if (DualShade.isEnabled) Overlays.QuickSettingsShade else Scenes.QuickSettings - /** * Adds the space where heads up notifications can appear in the scene. This should generally be the * entire size of the scene. @@ -270,7 +262,12 @@ fun ContentScope.ConstrainedNotificationStack( HeadsUpNotificationSpace( stackScrollView = stackScrollView, viewModel = viewModel, - useHunBounds = { shouldUseLockscreenHunBounds(layoutState.transitionState) }, + useHunBounds = { + shouldUseLockscreenHunBounds( + layoutState.transitionState, + viewModel.quickSettingsShadeContentKey, + ) + }, modifier = Modifier.align(Alignment.TopCenter), ) NotificationStackCutoffGuideline( @@ -494,11 +491,11 @@ fun ContentScope.NotificationScrollingStack( if ( scrimOffset.value < 0 && (layoutState.isTransitioning( - from = notificationsShadeContentKey, + from = viewModel.notificationsShadeContentKey, to = Scenes.Gone, ) || layoutState.isTransitioning( - from = notificationsShadeContentKey, + from = viewModel.notificationsShadeContentKey, to = Scenes.Lockscreen, )) ) { @@ -527,6 +524,7 @@ fun ContentScope.NotificationScrollingStack( shouldAnimateScrimCornerRadius( layoutState, shouldPunchHoleBehindScrim, + viewModel.notificationsShadeContentKey, ), ) .let { scrimRounding.value.toRoundedCornerShape(it) } @@ -613,7 +611,12 @@ fun ContentScope.NotificationScrollingStack( HeadsUpNotificationSpace( stackScrollView = stackScrollView, viewModel = viewModel, - useHunBounds = { !shouldUseLockscreenHunBounds(layoutState.transitionState) }, + useHunBounds = { + !shouldUseLockscreenHunBounds( + layoutState.transitionState, + viewModel.quickSettingsShadeContentKey, + ) + }, modifier = Modifier.padding(top = stackTopPadding), ) } @@ -720,20 +723,24 @@ private fun shouldUseLockscreenStackBounds(state: TransitionState): Boolean { return state is TransitionState.Idle && state.isOnLockscreen() } -private fun shouldUseLockscreenHunBounds(state: TransitionState): Boolean { +private fun shouldUseLockscreenHunBounds( + state: TransitionState, + quickSettingsShade: ContentKey, +): Boolean { return when (state) { is TransitionState.Idle -> state.isOnLockscreen() is TransitionState.Transition -> - state.isTransitioning(from = quickSettingsShadeContentKey, to = Scenes.Lockscreen) + state.isTransitioning(from = quickSettingsShade, to = Scenes.Lockscreen) } } private fun shouldAnimateScrimCornerRadius( state: SceneTransitionLayoutState, shouldPunchHoleBehindScrim: Boolean, + notificationsShade: ContentKey, ): Boolean { return shouldPunchHoleBehindScrim || - state.isTransitioning(from = notificationsShadeContentKey, to = Scenes.Lockscreen) + state.isTransitioning(from = notificationsShade, to = Scenes.Lockscreen) } private fun calculateCornerRadius( diff --git a/packages/SystemUI/compose/features/src/com/android/systemui/qs/footer/ui/compose/FooterActions.kt b/packages/SystemUI/compose/features/src/com/android/systemui/qs/footer/ui/compose/FooterActions.kt index f7ce2153b0ec..7f7273d710a1 100644 --- a/packages/SystemUI/compose/features/src/com/android/systemui/qs/footer/ui/compose/FooterActions.kt +++ b/packages/SystemUI/compose/features/src/com/android/systemui/qs/footer/ui/compose/FooterActions.kt @@ -75,6 +75,7 @@ import com.android.compose.animation.Expandable import com.android.compose.animation.scene.SceneScope import com.android.compose.modifiers.fadingBackground import com.android.compose.theme.colorAttr +import com.android.systemui.Flags.notificationShadeBlur import com.android.systemui.animation.Expandable import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.ui.compose.Icon @@ -163,14 +164,16 @@ fun FooterActions( } } - val backgroundColor = colorAttr(R.attr.underSurface) + val backgroundColor = + if (!notificationShadeBlur()) colorAttr(R.attr.underSurface) else Color.Transparent + val backgroundAlphaValue = if (!notificationShadeBlur()) backgroundAlpha::value else ({ 0f }) val contentColor = MaterialTheme.colorScheme.onSurface val backgroundTopRadius = dimensionResource(R.dimen.qs_corner_radius) val backgroundModifier = - remember(backgroundColor, backgroundAlpha, backgroundTopRadius) { + remember(backgroundColor, backgroundAlphaValue, backgroundTopRadius) { Modifier.fadingBackground( backgroundColor, - backgroundAlpha::value, + backgroundAlphaValue, RoundedCornerShape(topStart = backgroundTopRadius, topEnd = backgroundTopRadius), ) } @@ -305,7 +308,8 @@ private fun NumberButton( ) { Box(Modifier.size(40.dp)) { Box( - Modifier.fillMaxSize() + Modifier + .fillMaxSize() .clip(CircleShape) .indication(interactionSource, LocalIndication.current) ) { @@ -333,7 +337,9 @@ private fun NewChangesDot(modifier: Modifier = Modifier) { val contentDescription = stringResource(R.string.fgs_dot_content_description) val color = MaterialTheme.colorScheme.tertiary - Canvas(modifier.size(12.dp).semantics { this.contentDescription = contentDescription }) { + Canvas(modifier + .size(12.dp) + .semantics { this.contentDescription = contentDescription }) { drawCircle(color) } } @@ -362,7 +368,9 @@ private fun TextButton( Modifier.padding(horizontal = dimensionResource(R.dimen.qs_footer_padding)), verticalAlignment = Alignment.CenterVertically, ) { - Icon(icon, Modifier.padding(end = 12.dp).size(20.dp)) + Icon(icon, Modifier + .padding(end = 12.dp) + .size(20.dp)) Text( text, @@ -383,7 +391,9 @@ private fun TextButton( Icon( painterResource(com.android.internal.R.drawable.ic_chevron_end), contentDescription = null, - Modifier.padding(start = 8.dp).size(20.dp), + Modifier + .padding(start = 8.dp) + .size(20.dp), ) } } diff --git a/packages/SystemUI/compose/scene/Android.bp b/packages/SystemUI/compose/scene/Android.bp index 682c49cfd19c..090e9ccedda0 100644 --- a/packages/SystemUI/compose/scene/Android.bp +++ b/packages/SystemUI/compose/scene/Android.bp @@ -42,6 +42,7 @@ android_library { "androidx.compose.material3_material3", "PlatformComposeCore", + "mechanics", ], kotlincflags: ["-Xjvm-default=all"], diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateOverlay.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateOverlay.kt index 28116cb435e4..7d41a266adf2 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateOverlay.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateOverlay.kt @@ -17,6 +17,7 @@ package com.android.compose.animation.scene import com.android.compose.animation.scene.content.state.TransitionState +import com.android.mechanics.GestureContext import kotlinx.coroutines.CoroutineScope /** Trigger a one-off transition to show or hide an overlay. */ @@ -118,6 +119,7 @@ private class OneOffShowOrHideOverlayTransition( override val isInitiatedByUserInput: Boolean = false override val isUserInputOngoing: Boolean = false + override val gestureContext: GestureContext? = null override suspend fun run() { oneOffAnimation.run() @@ -144,6 +146,7 @@ private class OneOffOverlayReplacingTransition( override val isInitiatedByUserInput: Boolean = false override val isUserInputOngoing: Boolean = false + override val gestureContext: GestureContext? = null override suspend fun run() { oneOffAnimation.run() diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateToScene.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateToScene.kt index 86be4a44f3cb..dad4e2491be0 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateToScene.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/AnimateToScene.kt @@ -17,6 +17,7 @@ package com.android.compose.animation.scene import com.android.compose.animation.scene.content.state.TransitionState +import com.android.mechanics.GestureContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -193,6 +194,7 @@ private class OneOffSceneTransition( get() = oneOffAnimation.progressVelocity override val isUserInputOngoing: Boolean = false + override val gestureContext: GestureContext? = null override suspend fun run() { oneOffAnimation.run() diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt index 633328a836e3..916d85a80e77 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/DraggableHandler.kt @@ -31,6 +31,8 @@ import com.android.compose.animation.scene.content.state.TransitionState.Compani import com.android.compose.animation.scene.effect.GestureEffect import com.android.compose.gesture.NestedDraggable import com.android.compose.ui.util.SpaceVectorConverter +import com.android.mechanics.DistanceGestureContext +import com.android.mechanics.spec.InputDirection import kotlin.math.absoluteValue import kotlinx.coroutines.launch @@ -114,7 +116,14 @@ internal class DraggableHandler( else -> error("Unknown result $result ($upOrLeftResult $downOrRightResult)") } - return createSwipeAnimation(layoutImpl, result, isUpOrLeft, orientation) + val gestureContext = + DistanceGestureContext( + initialDragOffset = 0f, + initialDirection = if (isUpOrLeft) InputDirection.Min else InputDirection.Max, + directionChangeSlop = layoutImpl.directionChangeSlop, + ) + + return createSwipeAnimation(layoutImpl, result, isUpOrLeft, orientation, gestureContext) } private fun resolveSwipeSource(startedPosition: Offset): SwipeSource.Resolved? { @@ -316,6 +325,7 @@ private class DragControllerImpl( // when the distance is defined. delta } + distance > 0f -> desiredOffset.fastCoerceIn(0f, distance) else -> desiredOffset.fastCoerceIn(distance, 0f) } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt index 8a6a0d6dbb99..621166e1823a 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/PredictiveBackHandler.kt @@ -26,6 +26,8 @@ import com.android.compose.animation.scene.UserActionResult.HideOverlay import com.android.compose.animation.scene.UserActionResult.ReplaceByOverlay import com.android.compose.animation.scene.UserActionResult.ShowOverlay import com.android.compose.animation.scene.transition.animateProgress +import com.android.mechanics.ProvidedGestureContext +import com.android.mechanics.spec.InputDirection import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.map @@ -55,6 +57,8 @@ internal fun PredictiveBackHandler( // compute the distance. In our case the distance is always 1f. orientation = Orientation.Horizontal, distance = 1f, + gestureContext = + ProvidedGestureContext(dragOffset = 0f, direction = InputDirection.Max), ) animateProgress( diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt index 4e389471d1d0..ef11932867a0 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayout.kt @@ -30,6 +30,7 @@ import androidx.compose.ui.input.pointer.PointerType import androidx.compose.ui.layout.LookaheadScope import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.platform.LocalViewConfiguration import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntOffset @@ -716,6 +717,7 @@ internal fun SceneTransitionLayoutForTesting( builder: SceneTransitionLayoutScope.() -> Unit, ) { val density = LocalDensity.current + val directionChangeSlop = LocalViewConfiguration.current.touchSlop val layoutDirection = LocalLayoutDirection.current val animationScope = rememberCoroutineScope() val layoutImpl = remember { @@ -731,6 +733,7 @@ internal fun SceneTransitionLayoutForTesting( elements = sharedElementMap, ancestors = ancestors, lookaheadScope = lookaheadScope, + directionChangeSlop = directionChangeSlop, ) .also { onLayoutImpl?.invoke(it) } } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt index b4c449d0566c..38ad0a80fd00 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SceneTransitionLayoutImpl.kt @@ -88,6 +88,14 @@ internal class SceneTransitionLayoutImpl( internal val animationScope: CoroutineScope, /** + * Number of pixels a gesture has to travel in the opposite direction to for its intrinsic + * direction to change. + * + * Used to determine the direction of [Transition.gestureContext]. + */ + internal val directionChangeSlop: Float, + + /** * The map of [Element]s. * * Important: [Element]s from this map should never be accessed during composition because the @@ -368,6 +376,7 @@ internal class SceneTransitionLayoutImpl( error("Transition to the same scene is not supported. ${details()}") } } + is UserActionResult.ReplaceByOverlay -> { check(key is OverlayKey) { "ReplaceByOverlay() can only be used for overlays, not scenes. ${details()}" @@ -377,6 +386,7 @@ internal class SceneTransitionLayoutImpl( "Transition to the same overlay is not supported. ${details()}" } } + is UserActionResult.ShowOverlay, is UserActionResult.HideOverlay -> { /* Always valid. */ @@ -443,8 +453,10 @@ internal class SceneTransitionLayoutImpl( maybeAdd(transition.toScene) maybeAdd(transition.fromScene) } + is TransitionState.Transition.ShowOrHideOverlay -> maybeAdd(transition.fromOrToScene) + is TransitionState.Transition.ReplaceOverlay -> {} } } @@ -510,6 +522,7 @@ internal class SceneTransitionLayoutImpl( is TransitionState.Transition.ChangeScene -> {} is TransitionState.Transition.ShowOrHideOverlay -> maybeAdd(transition.overlay) + is TransitionState.Transition.ReplaceOverlay -> { maybeAdd(transition.fromOverlay) maybeAdd(transition.toOverlay) diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeAnimation.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeAnimation.kt index b1d6d1efc264..4137f5f5725b 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeAnimation.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/SwipeAnimation.kt @@ -21,12 +21,13 @@ import androidx.compose.animation.core.AnimationSpec import androidx.compose.animation.core.AnimationVector1D import androidx.compose.foundation.gestures.Orientation import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.util.fastCoerceIn import com.android.compose.animation.scene.content.state.TransitionState import com.android.compose.animation.scene.content.state.TransitionState.Companion.DistanceUnspecified +import com.android.mechanics.GestureContext +import com.android.mechanics.MutableDragOffsetGestureContext import kotlin.math.absoluteValue import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.launch @@ -37,6 +38,7 @@ internal fun createSwipeAnimation( isUpOrLeft: Boolean, orientation: Orientation, distance: Float, + gestureContext: MutableDragOffsetGestureContext, ): SwipeAnimation<*> { return createSwipeAnimation( layoutState, @@ -47,6 +49,7 @@ internal fun createSwipeAnimation( contentForUserActions = { error("Computing contentForUserActions requires a SceneTransitionLayoutImpl") }, + gestureContext = gestureContext, ) } @@ -55,6 +58,7 @@ internal fun createSwipeAnimation( result: UserActionResult, isUpOrLeft: Boolean, orientation: Orientation, + gestureContext: MutableDragOffsetGestureContext, distance: Float = DistanceUnspecified, ): SwipeAnimation<*> { var lastDistance = distance @@ -98,6 +102,7 @@ internal fun createSwipeAnimation( orientation, distance = ::distance, contentForUserActions = { layoutImpl.contentForUserActions().key }, + gestureContext = gestureContext, ) } @@ -108,6 +113,7 @@ private fun createSwipeAnimation( orientation: Orientation, distance: (SwipeAnimation<*>) -> Float, contentForUserActions: () -> ContentKey, + gestureContext: MutableDragOffsetGestureContext, ): SwipeAnimation<*> { fun <T : ContentKey> swipeAnimation(fromContent: T, toContent: T): SwipeAnimation<T> { return SwipeAnimation( @@ -118,6 +124,7 @@ private fun createSwipeAnimation( isUpOrLeft = isUpOrLeft, requiresFullDistanceSwipe = result.requiresFullDistanceSwipe, distance = distance, + gestureContext = gestureContext, ) } @@ -132,6 +139,7 @@ private fun createSwipeAnimation( ) .swipeAnimation } + is UserActionResult.ShowOverlay -> { val fromScene = layoutState.currentScene val overlay = result.overlay @@ -144,6 +152,7 @@ private fun createSwipeAnimation( ) .swipeAnimation } + is UserActionResult.HideOverlay -> { val toScene = layoutState.currentScene val overlay = result.overlay @@ -156,11 +165,13 @@ private fun createSwipeAnimation( ) .swipeAnimation } + is UserActionResult.ReplaceByOverlay -> { val fromOverlay = when (val contentForUserActions = contentForUserActions()) { is SceneKey -> error("ReplaceByOverlay can only be called when an overlay is shown") + is OverlayKey -> contentForUserActions } @@ -186,8 +197,8 @@ internal class SwipeAnimation<T : ContentKey>( val requiresFullDistanceSwipe: Boolean, private val distance: (SwipeAnimation<T>) -> Float, currentContent: T = fromContent, - dragOffset: Float = 0f, -) { + private val gestureContext: MutableDragOffsetGestureContext, +) : MutableDragOffsetGestureContext by gestureContext { /** The [TransitionState.Transition] whose implementation delegates to this [SwipeAnimation]. */ lateinit var contentTransition: TransitionState.Transition @@ -254,9 +265,6 @@ internal class SwipeAnimation<T : ContentKey>( val isInPreviewStage: Boolean get() = contentTransition.previewTransformationSpec != null && currentContent == fromContent - /** The current offset caused by the drag gesture. */ - var dragOffset by mutableFloatStateOf(dragOffset) - /** The offset animation that animates the offset once the user lifts their finger. */ private var offsetAnimation: Animatable<Float, AnimationVector1D>? by mutableStateOf(null) private val offsetAnimationRunnable = CompletableDeferred<suspend () -> Unit>() @@ -387,6 +395,7 @@ internal class SwipeAnimation<T : ContentKey>( return when (val transition = contentTransition) { is TransitionState.Transition.ChangeScene -> layoutState.canChangeScene(targetContent as SceneKey) + is TransitionState.Transition.ShowOrHideOverlay -> { if (targetContent == transition.overlay) { layoutState.canShowOverlay(transition.overlay) @@ -394,6 +403,7 @@ internal class SwipeAnimation<T : ContentKey>( layoutState.canHideOverlay(transition.overlay) } } + is TransitionState.Transition.ReplaceOverlay -> { val to = targetContent as OverlayKey val from = @@ -464,6 +474,8 @@ private class ChangeSceneSwipeTransition( override val isUserInputOngoing: Boolean get() = swipeAnimation.isUserInputOngoing + override val gestureContext: GestureContext = swipeAnimation + override suspend fun run() { swipeAnimation.run() } @@ -515,6 +527,8 @@ private class ShowOrHideOverlaySwipeTransition( override val isUserInputOngoing: Boolean get() = swipeAnimation.isUserInputOngoing + override val gestureContext: GestureContext = swipeAnimation + override suspend fun run() { swipeAnimation.run() } @@ -562,6 +576,8 @@ private class ReplaceOverlaySwipeTransition( override val isUserInputOngoing: Boolean get() = swipeAnimation.isUserInputOngoing + override val gestureContext: GestureContext = swipeAnimation + override suspend fun run() { swipeAnimation.run() } diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/state/TransitionState.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/state/TransitionState.kt index f772f1a0b4a6..e9542c830b4d 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/state/TransitionState.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/content/state/TransitionState.kt @@ -33,6 +33,7 @@ import com.android.compose.animation.scene.TransformationSpec import com.android.compose.animation.scene.TransformationSpecImpl import com.android.compose.animation.scene.TransitionKey import com.android.internal.jank.Cuj.CujType +import com.android.mechanics.GestureContext import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch @@ -238,6 +239,9 @@ sealed interface TransitionState { /** Whether user input is currently driving the transition. */ abstract val isUserInputOngoing: Boolean + /** Additional gesture context whenever the transition is driven by a user gesture. */ + abstract val gestureContext: GestureContext? + /** The CUJ covered by this transition. */ @CujType val cuj: Int? diff --git a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/Seek.kt b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/Seek.kt index c6912d5e4ad2..819cec712808 100644 --- a/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/Seek.kt +++ b/packages/SystemUI/compose/scene/src/com/android/compose/animation/scene/transition/Seek.kt @@ -29,6 +29,8 @@ import com.android.compose.animation.scene.SwipeAnimation import com.android.compose.animation.scene.TransitionKey import com.android.compose.animation.scene.UserActionResult import com.android.compose.animation.scene.createSwipeAnimation +import com.android.mechanics.ProvidedGestureContext +import com.android.mechanics.spec.InputDirection import kotlin.coroutines.cancellation.CancellationException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -126,6 +128,9 @@ private suspend fun MutableSceneTransitionLayoutState.seek( // overscroll, which is disabled for progress-based transitions. orientation = Orientation.Horizontal, isUpOrLeft = false, + // There is no gesture information available here - animateProgress + // will set the progress as the dragOffset. + gestureContext = ProvidedGestureContext(0f, InputDirection.Max), ) animateProgress( diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/DraggableHandlerTest.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/DraggableHandlerTest.kt index 4a0c330be4f8..ef360770bc41 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/DraggableHandlerTest.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/DraggableHandlerTest.kt @@ -41,7 +41,9 @@ import com.android.compose.animation.scene.subjects.assertThat import com.android.compose.gesture.NestedDraggable import com.android.compose.test.MonotonicClockTestScope import com.android.compose.test.runMonotonicClockTest +import com.android.mechanics.spec.InputDirection import com.google.common.truth.Truth.assertThat +import kotlin.math.nextUp import kotlin.math.sign import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Deferred @@ -106,6 +108,7 @@ class DraggableHandlerTest { } val transitionInterceptionThreshold = 0.05f + val directionChangeSlop = 10f private val layoutImpl = SceneTransitionLayoutImpl( @@ -120,6 +123,7 @@ class DraggableHandlerTest { // Use testScope and not backgroundScope here because backgroundScope does not // work well with advanceUntilIdle(), which is used by some tests. animationScope = testScope, + directionChangeSlop = directionChangeSlop, ) .apply { setContentsAndLayoutTargetSizeForTest(LAYOUT_SIZE) } @@ -871,4 +875,65 @@ class DraggableHandlerTest { assertThat(layoutState.transitionState).hasCurrentScene(SceneA) assertThat(layoutState.transitionState).hasCurrentOverlays(OverlayB) } + + @Test + fun gestureContext_dragOffset_matchesOverSlopAtBeginning() = runGestureTest { + val overSlop = down(fractionOfScreen = 0.1f) + onDragStarted(overSlop = overSlop) + + val gestureContext = assertThat(transitionState).hasGestureContext() + assertThat(gestureContext.dragOffset).isEqualTo(overSlop) + } + + @Test + fun gestureContext_dragOffset_getsUpdatedOnEachDragEvent() = runGestureTest { + val dragController = onDragStarted(overSlop = down(fractionOfScreen = 0.1f)) + + val gestureContext = assertThat(transitionState).hasGestureContext() + val initialDragOffset = gestureContext.dragOffset + + dragController.onDragDelta(pixels = 3.5f) + assertThat(gestureContext.dragOffset).isEqualTo(initialDragOffset + 3.5f) + + dragController.onDragDelta(pixels = -2f) + assertThat(gestureContext.dragOffset).isEqualTo(initialDragOffset + 3.5f - 2f) + } + + @Test + fun gestureContext_direction_swipeDown_startsWithMaxDirection() = runGestureTest { + onDragStarted(overSlop = down(fractionOfScreen = 0.1f)) + + val gestureContext = assertThat(transitionState).hasGestureContext() + assertThat(gestureContext.direction).isEqualTo(InputDirection.Max) + } + + @Test + fun gestureContext_direction_swipeUp_startsWithMinDirection() = runGestureTest { + onDragStarted(overSlop = up(fractionOfScreen = 0.1f)) + + val gestureContext = assertThat(transitionState).hasGestureContext() + assertThat(gestureContext.direction).isEqualTo(InputDirection.Min) + } + + @Test + fun gestureContext_direction_withinDirectionSlop_staysSame() = runGestureTest { + val dragController = onDragStarted(overSlop = up(fractionOfScreen = .2f)) + + val gestureContext = assertThat(transitionState).hasGestureContext() + assertThat(gestureContext.direction).isEqualTo(InputDirection.Min) + + dragController.onDragDelta(pixels = directionChangeSlop) + assertThat(gestureContext.direction).isEqualTo(InputDirection.Min) + } + + @Test + fun gestureContext_direction_overDirectionSlop_isChanged() = runGestureTest { + val dragController = onDragStarted(overSlop = up(fractionOfScreen = .2f)) + + val gestureContext = assertThat(transitionState).hasGestureContext() + assertThat(gestureContext.direction).isEqualTo(InputDirection.Min) + + dragController.onDragDelta(pixels = directionChangeSlop.nextUp()) + assertThat(gestureContext.direction).isEqualTo(InputDirection.Max) + } } diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt index 6db98a874787..8db7dbca2474 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/animation/scene/subjects/TransitionStateSubject.kt @@ -19,6 +19,7 @@ package com.android.compose.animation.scene.subjects import com.android.compose.animation.scene.OverlayKey import com.android.compose.animation.scene.SceneKey import com.android.compose.animation.scene.content.state.TransitionState +import com.android.mechanics.GestureContext import com.google.common.truth.Fact.simpleFact import com.google.common.truth.FailureMetadata import com.google.common.truth.Subject @@ -98,6 +99,17 @@ private constructor(metadata: FailureMetadata, private val actual: TransitionSta return actual as TransitionState.Transition.ReplaceOverlay } + fun hasGestureContext(): GestureContext { + if (actual !is TransitionState.Transition) { + failWithActual(simpleFact("expected to be TransitionState.Transition")) + } + + val gestureContext = ((actual as TransitionState.Transition).gestureContext) + check("transition.gestureContext").that(gestureContext).isNotNull() + + return checkNotNull(gestureContext) + } + companion object { fun transitionStates() = Factory { metadata, actual: TransitionState -> TransitionStateSubject(metadata, actual) diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestOverlayTransition.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestOverlayTransition.kt index b9d01c2eaa3b..c22c19867dbb 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestOverlayTransition.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestOverlayTransition.kt @@ -20,6 +20,7 @@ import com.android.compose.animation.scene.OverlayKey import com.android.compose.animation.scene.SceneKey import com.android.compose.animation.scene.SceneTransitionLayoutImpl import com.android.compose.animation.scene.content.state.TransitionState.Transition +import com.android.mechanics.GestureContext import kotlinx.coroutines.CompletableDeferred /** A [Transition.ShowOrHideOverlay] for tests that will be finished once [finish] is called. */ @@ -84,6 +85,7 @@ fun transition( override val isInitiatedByUserInput: Boolean = isInitiatedByUserInput override val isUserInputOngoing: Boolean = isUserInputOngoing + override val gestureContext: GestureContext? = null override fun freezeAndAnimateToCurrentState() { if (onFreezeAndAnimate != null) { diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestReplaceOverlayTransition.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestReplaceOverlayTransition.kt index 983c429aa58e..139dcd5d5114 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestReplaceOverlayTransition.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestReplaceOverlayTransition.kt @@ -19,6 +19,7 @@ package com.android.compose.test import com.android.compose.animation.scene.OverlayKey import com.android.compose.animation.scene.SceneTransitionLayoutImpl import com.android.compose.animation.scene.content.state.TransitionState.Transition +import com.android.mechanics.GestureContext import kotlinx.coroutines.CompletableDeferred /** A [Transition.ShowOrHideOverlay] for tests that will be finished once [finish] is called. */ @@ -81,6 +82,7 @@ fun transition( override val isInitiatedByUserInput: Boolean = isInitiatedByUserInput override val isUserInputOngoing: Boolean = isUserInputOngoing + override val gestureContext: GestureContext? = null override fun freezeAndAnimateToCurrentState() { if (onFreezeAndAnimate != null) { diff --git a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestSceneTransition.kt b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestSceneTransition.kt index d11951ee4b24..18cd57bb985f 100644 --- a/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestSceneTransition.kt +++ b/packages/SystemUI/compose/scene/tests/src/com/android/compose/test/TestSceneTransition.kt @@ -19,6 +19,7 @@ package com.android.compose.test import com.android.compose.animation.scene.SceneKey import com.android.compose.animation.scene.SceneTransitionLayoutImpl import com.android.compose.animation.scene.content.state.TransitionState.Transition +import com.android.mechanics.GestureContext import kotlinx.coroutines.CompletableDeferred /** A [Transition.ChangeScene] for tests that will be finished once [finish] is called. */ @@ -54,6 +55,7 @@ fun transition( isUserInputOngoing: Boolean = false, onFreezeAndAnimate: ((TestSceneTransition) -> Unit)? = null, replacedTransition: Transition? = null, + gestureContext: GestureContext? = null, ): TestSceneTransition { return object : TestSceneTransition(from, to, replacedTransition) { override val currentScene: SceneKey @@ -76,6 +78,7 @@ fun transition( override val isInitiatedByUserInput: Boolean = isInitiatedByUserInput override val isUserInputOngoing: Boolean = isUserInputOngoing + override val gestureContext: GestureContext? = gestureContext override fun freezeAndAnimateToCurrentState() { if (onFreezeAndAnimate != null) { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/data/repository/ContextualEducationRepositoryTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/data/repository/ContextualEducationRepositoryTest.kt index f66dee39166c..f2a6c11b872e 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/education/data/repository/ContextualEducationRepositoryTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/education/data/repository/ContextualEducationRepositoryTest.kt @@ -16,9 +16,11 @@ package com.android.systemui.education.data.repository +import android.content.Context import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase +import com.android.systemui.SysuiTestableContext import com.android.systemui.contextualeducation.GestureType.BACK import com.android.systemui.coroutines.collectLastValue import com.android.systemui.education.data.model.EduDeviceConnectionTime @@ -28,16 +30,21 @@ import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.google.common.truth.Truth.assertThat +import java.io.File import javax.inject.Provider import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runTest import org.junit.Before +import org.junit.Ignore +import org.junit.Rule import org.junit.Test +import org.junit.rules.TemporaryFolder import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) +@Ignore("b/384284415") class ContextualEducationRepositoryTest : SysuiTestCase() { private lateinit var underTest: UserContextualEducationRepository @@ -50,74 +57,83 @@ class ContextualEducationRepositoryTest : SysuiTestCase() { private val testUserId = 1111 private val secondTestUserId = 1112 + // For deleting any test files created after the test + @get:Rule val tmpFolder: TemporaryFolder = TemporaryFolder.builder().assureDeletion().build() + @Before fun setUp() { + // Create TestContext here because TemporaryFolder.create() is called in @Before. It is + // needed before calling TemporaryFolder.newFolder(). + val testContext = TestContext(context, tmpFolder.newFolder()) underTest = UserContextualEducationRepository( - context, + testContext, dsScopeProvider, kosmos.mockEduInputManager, - kosmos.testDispatcher, + kosmos.testDispatcher ) underTest.setUser(testUserId) } @Test - fun changeRetrievedValueForNewUser() = runTestAndClear { - // Update data for old user. - underTest.updateGestureEduModel(BACK) { it.copy(signalCount = 1) } - val model by testScope.collectLastValue(underTest.readGestureEduModelFlow(BACK)) - assertThat(model?.signalCount).isEqualTo(1) + fun changeRetrievedValueForNewUser() = + testScope.runTest { + // Update data for old user. + underTest.updateGestureEduModel(BACK) { it.copy(signalCount = 1) } + val model by collectLastValue(underTest.readGestureEduModelFlow(BACK)) + assertThat(model?.signalCount).isEqualTo(1) - // User is changed. - underTest.setUser(secondTestUserId) - // Assert count is 0 after user is changed. - assertThat(model?.signalCount).isEqualTo(0) - } + // User is changed. + underTest.setUser(secondTestUserId) + // Assert count is 0 after user is changed. + assertThat(model?.signalCount).isEqualTo(0) + } @Test - fun changeUserIdForNewUser() = runTestAndClear { - val model by testScope.collectLastValue(underTest.readGestureEduModelFlow(BACK)) - assertThat(model?.userId).isEqualTo(testUserId) - underTest.setUser(secondTestUserId) - assertThat(model?.userId).isEqualTo(secondTestUserId) - } + fun changeUserIdForNewUser() = + testScope.runTest { + val model by collectLastValue(underTest.readGestureEduModelFlow(BACK)) + assertThat(model?.userId).isEqualTo(testUserId) + underTest.setUser(secondTestUserId) + assertThat(model?.userId).isEqualTo(secondTestUserId) + } @Test - fun dataChangedOnUpdate() = runTestAndClear { - val newModel = - GestureEduModel( - signalCount = 2, - educationShownCount = 1, - lastShortcutTriggeredTime = kosmos.fakeEduClock.instant(), - lastEducationTime = kosmos.fakeEduClock.instant(), - usageSessionStartTime = kosmos.fakeEduClock.instant(), - userId = testUserId, - gestureType = BACK, - ) - underTest.updateGestureEduModel(BACK) { newModel } - val model by testScope.collectLastValue(underTest.readGestureEduModelFlow(BACK)) - assertThat(model).isEqualTo(newModel) - } + fun dataChangedOnUpdate() = + testScope.runTest { + val newModel = + GestureEduModel( + signalCount = 2, + educationShownCount = 1, + lastShortcutTriggeredTime = kosmos.fakeEduClock.instant(), + lastEducationTime = kosmos.fakeEduClock.instant(), + usageSessionStartTime = kosmos.fakeEduClock.instant(), + userId = testUserId, + gestureType = BACK + ) + underTest.updateGestureEduModel(BACK) { newModel } + val model by collectLastValue(underTest.readGestureEduModelFlow(BACK)) + assertThat(model).isEqualTo(newModel) + } @Test - fun eduDeviceConnectionTimeDataChangedOnUpdate() = runTestAndClear { - val newModel = - EduDeviceConnectionTime( - keyboardFirstConnectionTime = kosmos.fakeEduClock.instant(), - touchpadFirstConnectionTime = kosmos.fakeEduClock.instant(), - ) - underTest.updateEduDeviceConnectionTime { newModel } - val model by testScope.collectLastValue(underTest.readEduDeviceConnectionTime()) - assertThat(model).isEqualTo(newModel) - } - - private fun runTestAndClear(block: suspend () -> Unit) = + fun eduDeviceConnectionTimeDataChangedOnUpdate() = testScope.runTest { - try { - block() - } finally { - underTest.clear() - } + val newModel = + EduDeviceConnectionTime( + keyboardFirstConnectionTime = kosmos.fakeEduClock.instant(), + touchpadFirstConnectionTime = kosmos.fakeEduClock.instant(), + ) + underTest.updateEduDeviceConnectionTime { newModel } + val model by collectLastValue(underTest.readEduDeviceConnectionTime()) + assertThat(model).isEqualTo(newModel) + } + + /** Test context which allows overriding getFilesDir path */ + private class TestContext(context: Context, private val folder: File) : + SysuiTestableContext(context) { + override fun getFilesDir(): File { + return folder } + } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt index 79556baed067..fecd8c3cacca 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/InternetTileNewImplTest.kt @@ -26,11 +26,9 @@ import android.testing.TestableLooper import android.testing.TestableLooper.RunWithLooper import androidx.test.filters.SmallTest import com.android.internal.logging.MetricsLogger -import com.android.systemui.Flags import com.android.systemui.Flags.FLAG_SCENE_CONTAINER import com.android.systemui.SysuiTestCase import com.android.systemui.classifier.FalsingManagerFake -import com.android.systemui.flags.setFlagValue import com.android.systemui.keyguard.KeyguardWmStateRefactor import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.statusbar.StatusBarStateController @@ -42,7 +40,6 @@ import com.android.systemui.qs.logging.QSLogger import com.android.systemui.qs.tiles.dialog.InternetDialogManager import com.android.systemui.qs.tiles.dialog.WifiStateWorker import com.android.systemui.res.R -import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.shade.shared.flag.DualShade import com.android.systemui.statusbar.connectivity.AccessPointController import com.android.systemui.statusbar.notification.shared.NotificationThrottleHun @@ -65,6 +62,7 @@ import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest +import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -150,11 +148,18 @@ class InternetTileNewImplTest(flags: FlagsParameterization) : SysuiTestCase() { ) underTest.initialize() + underTest.setListening(Object(), true) looper.processAllMessages() } + @After + fun tearDown() { + underTest.destroy() + looper.processAllMessages() + } + @Test fun noDefaultConnection_noNetworkAvailable() = testScope.runTest { @@ -272,33 +277,37 @@ class InternetTileNewImplTest(flags: FlagsParameterization) : SysuiTestCase() { underTest.click(null) looper.processAllMessages() - verify(dialogManager, times(1)).create( - aboveStatusBar = true, - accessPointController.canConfigMobileData(), - accessPointController.canConfigWifi(), - null, - ) + verify(dialogManager, times(1)) + .create( + aboveStatusBar = true, + accessPointController.canConfigMobileData(), + accessPointController.canConfigWifi(), + null, + ) } @Test @EnableFlags( - value = [ - QsDetailedView.FLAG_NAME, - FLAG_SCENE_CONTAINER, - KeyguardWmStateRefactor.FLAG_NAME, - NotificationThrottleHun.FLAG_NAME, - DualShade.FLAG_NAME] + value = + [ + QsDetailedView.FLAG_NAME, + FLAG_SCENE_CONTAINER, + KeyguardWmStateRefactor.FLAG_NAME, + NotificationThrottleHun.FLAG_NAME, + DualShade.FLAG_NAME, + ] ) fun click_withQsDetailedViewEnabled() { underTest.click(null) looper.processAllMessages() - verify(dialogManager, times(0)).create( - aboveStatusBar = true, - accessPointController.canConfigMobileData(), - accessPointController.canConfigWifi(), - null, - ) + verify(dialogManager, times(0)) + .create( + aboveStatusBar = true, + accessPointController.canConfigMobileData(), + accessPointController.canConfigWifi(), + null, + ) } companion object { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt index c7da03dbbf30..497e33536b7f 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/RecordIssueTileTest.kt @@ -46,6 +46,7 @@ import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import java.util.concurrent.Executors +import org.junit.After import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -123,6 +124,12 @@ class RecordIssueTileTest : SysuiTestCase() { ) } + @After + fun teardown() { + tile.destroy() + testableLooper.processAllMessages() + } + @Test fun qsTileUi_shouldLookCorrect_whenInactive() { whenever(issueRecordingState.isRecording).thenReturn(false) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt index 44e6b4d2d0f6..029a2f91a4ba 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt @@ -58,7 +58,9 @@ class ModesTileDataInteractorTest : SysuiTestCase() { private val dispatcher = kosmos.testDispatcher private val zenModeRepository = kosmos.fakeZenModeRepository - private val underTest = ModesTileDataInteractor(context, kosmos.zenModeInteractor, dispatcher) + private val underTest by lazy { + ModesTileDataInteractor(context, kosmos.zenModeInteractor, dispatcher) + } @Before fun setUp() { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt index 51f056aa18da..cb7267b2c34c 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/startable/SceneContainerStartableTest.kt @@ -1508,10 +1508,8 @@ class SceneContainerStartableTest : SysuiTestCase() { } @Test - fun collectFalsingSignals_screenOnAndOff_aodUnavailable() = + fun collectFalsingSignals_screenOnAndOff() = testScope.runTest { - kosmos.fakeKeyguardRepository.setAodAvailable(false) - runCurrent() prepareState( initialSceneKey = Scenes.Lockscreen, authenticationMethod = AuthenticationMethodModel.Pin, @@ -1556,53 +1554,6 @@ class SceneContainerStartableTest : SysuiTestCase() { } @Test - fun collectFalsingSignals_screenOnAndOff_aodAvailable() = - testScope.runTest { - kosmos.fakeKeyguardRepository.setAodAvailable(true) - runCurrent() - prepareState( - initialSceneKey = Scenes.Lockscreen, - authenticationMethod = AuthenticationMethodModel.Pin, - isDeviceUnlocked = false, - ) - underTest.start() - runCurrent() - verify(falsingCollector, never()).onScreenTurningOn() - verify(falsingCollector, never()).onScreenOnFromTouch() - verify(falsingCollector, never()).onScreenOff() - - powerInteractor.setAwakeForTest(reason = PowerManager.WAKE_REASON_POWER_BUTTON) - runCurrent() - verify(falsingCollector, never()).onScreenTurningOn() - verify(falsingCollector, never()).onScreenOnFromTouch() - verify(falsingCollector, never()).onScreenOff() - - powerInteractor.setAsleepForTest() - runCurrent() - verify(falsingCollector, never()).onScreenTurningOn() - verify(falsingCollector, never()).onScreenOnFromTouch() - verify(falsingCollector, never()).onScreenOff() - - powerInteractor.setAwakeForTest(reason = PowerManager.WAKE_REASON_TAP) - runCurrent() - verify(falsingCollector, never()).onScreenTurningOn() - verify(falsingCollector, never()).onScreenOnFromTouch() - verify(falsingCollector, never()).onScreenOff() - - powerInteractor.setAsleepForTest() - runCurrent() - verify(falsingCollector, never()).onScreenTurningOn() - verify(falsingCollector, never()).onScreenOnFromTouch() - verify(falsingCollector, never()).onScreenOff() - - powerInteractor.setAwakeForTest(reason = PowerManager.WAKE_REASON_POWER_BUTTON) - runCurrent() - verify(falsingCollector, never()).onScreenTurningOn() - verify(falsingCollector, never()).onScreenOnFromTouch() - verify(falsingCollector, never()).onScreenOff() - } - - @Test fun collectFalsingSignals_bouncerVisibility() = testScope.runTest { prepareState( diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java index 657fffb1875d..7b120947b1d6 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorTest.java @@ -16,17 +16,21 @@ package com.android.systemui.statusbar.notification.collection.coordinator; -import static com.android.systemui.flags.SceneContainerFlagParameterizationKt.parameterizeSceneContainerFlag; +import static android.platform.test.flag.junit.FlagsParameterization.allCombinationsOf; import static com.google.common.truth.Truth.assertThat; import static junit.framework.Assert.assertFalse; + +import static org.junit.Assume.assumeFalse; import static org.junit.Assert.assertTrue; +import static org.junit.Assume.assumeTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -48,6 +52,7 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.flags.BrokenWithSceneContainer; import com.android.systemui.flags.DisableSceneContainer; import com.android.systemui.flags.EnableSceneContainer; +import com.android.systemui.flags.SceneContainerFlagParameterizationKt; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.keyguard.shared.model.KeyguardState; import com.android.systemui.keyguard.shared.model.TransitionState; @@ -86,9 +91,11 @@ import org.mockito.MockitoAnnotations; import org.mockito.verification.VerificationMode; import java.util.List; +import java.util.Set; import kotlinx.coroutines.flow.MutableStateFlow; import kotlinx.coroutines.test.TestScope; + import platform.test.runner.parameterized.ParameterizedAndroidJunit4; import platform.test.runner.parameterized.Parameters; @@ -99,7 +106,8 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { @Parameters(name = "{0}") public static List<FlagsParameterization> getParams() { - return parameterizeSceneContainerFlag(); + return SceneContainerFlagParameterizationKt + .andSceneContainer(allCombinationsOf(Flags.FLAG_STABILIZE_HEADS_UP_GROUP)); } private VisualStabilityCoordinator mCoordinator; @@ -122,7 +130,8 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { private final KosmosJavaAdapter mKosmos = new KosmosJavaAdapter(this); private FakeSystemClock mFakeSystemClock = new FakeSystemClock(); - private FakeExecutor mFakeExecutor = new FakeExecutor(mFakeSystemClock); + private FakeExecutor mFakeBackgroundExecutor = new FakeExecutor(mFakeSystemClock); + private FakeExecutor mFakeMainExecutor = new FakeExecutor(mFakeSystemClock); private final TestScope mTestScope = mKosmos.getTestScope(); private final JavaAdapter mJavaAdapter = new JavaAdapter(mTestScope.getBackgroundScope()); @@ -147,7 +156,8 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { mShadeAnimationInteractor = new ShadeAnimationInteractorLegacyImpl( new ShadeAnimationRepository(), mShadeRepository); mCoordinator = new VisualStabilityCoordinator( - mFakeExecutor, + mFakeBackgroundExecutor, + mFakeMainExecutor, mDumpManager, mHeadsUpManager, mShadeAnimationInteractor, @@ -417,8 +427,8 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { assertTrue(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); // WHEN the timeout for the temporarily allow section reordering runnable is finsihed - mFakeExecutor.advanceClockToNext(); - mFakeExecutor.runNextReady(); + mFakeBackgroundExecutor.advanceClockToNext(); + mFakeBackgroundExecutor.runNextReady(); // THEN section changes aren't allowed anymore assertFalse(mNotifStabilityManager.isSectionChangeAllowed(mEntry)); @@ -701,6 +711,212 @@ public class VisualStabilityCoordinatorTest extends SysuiTestCase { assertFalse(mNotifStabilityManager.isGroupPruneAllowed(mGroupEntry)); } + @Test + public void everyChangeAllowed_onReorderingEnabled_legacy() { + assumeFalse(StabilizeHeadsUpGroup.isEnabled()); + // GIVEN - reordering is allowed. + setPulsing(false); + setPanelExpanded(false); + + // THEN + assertThat(mNotifStabilityManager.isEveryChangeAllowed()).isTrue(); + assertThat(mNotifStabilityManager.isGroupChangeAllowed(any())).isTrue(); + assertThat(mNotifStabilityManager.isGroupPruneAllowed(any())).isTrue(); + assertThat(mNotifStabilityManager.isSectionChangeAllowed(any())).isTrue(); + assertThat(mNotifStabilityManager.isEntryReorderingAllowed(any())).isTrue(); + } + + @Test + public void everyChangeAllowed_noActiveHeadsUpGroup_onReorderingEnabled() { + assumeTrue(StabilizeHeadsUpGroup.isEnabled()); + // GIVEN - reordering is allowed. + setPulsing(false); + setPanelExpanded(false); + + // GIVEN - empty heads-up-group keys + mCoordinator.setHeadsUpGroupKeys(Set.of()); + + // THEN + assertThat(mNotifStabilityManager.isEveryChangeAllowed()).isTrue(); + assertThat(mNotifStabilityManager.isGroupChangeAllowed(any())).isTrue(); + assertThat(mNotifStabilityManager.isGroupPruneAllowed(any())).isTrue(); + assertThat(mNotifStabilityManager.isSectionChangeAllowed(any())).isTrue(); + assertThat(mNotifStabilityManager.isEntryReorderingAllowed(any())).isTrue(); + } + + @Test + public void everyChangeDisallowed_activeHeadsUpGroup_onReorderingEnabled() { + assumeTrue(StabilizeHeadsUpGroup.isEnabled()); + // GIVEN - reordering is allowed. + setPulsing(false); + setPanelExpanded(false); + + // GIVEN - there is a group heads-up. + mCoordinator.setHeadsUpGroupKeys(Set.of("heads_up_group_key")); + + // THEN + assertThat(mNotifStabilityManager.isEveryChangeAllowed()).isFalse(); + } + + @Test + public void nonHeadsUpGroup_changesAllowed_onReorderingEnabled() { + assumeTrue(StabilizeHeadsUpGroup.isEnabled()); + // GIVEN - reordering is allowed. + setPulsing(false); + setPanelExpanded(false); + + // GIVEN - there is a group heads-up. + String headsUpGroupKey = "heads_up_group_key"; + mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); + when(mHeadsUpManager.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); + + // GIVEN - HUN Group Summary + final NotificationEntry nonHeadsUpGroupSummary = mock(NotificationEntry.class); + when(nonHeadsUpGroupSummary.getKey()).thenReturn("non_heads_up_group_key"); + when(nonHeadsUpGroupSummary.isSummaryWithChildren()).thenReturn(true); + final GroupEntry nonHeadsUpGroupEntry = mock(GroupEntry.class); + when(nonHeadsUpGroupEntry.getSummary()).thenReturn(nonHeadsUpGroupSummary); + when(nonHeadsUpGroupEntry.getRepresentativeEntry()).thenReturn(nonHeadsUpGroupSummary); + + // THEN + assertThat(mNotifStabilityManager.isGroupPruneAllowed(nonHeadsUpGroupEntry)).isTrue(); + assertThat(mNotifStabilityManager.isEntryReorderingAllowed(nonHeadsUpGroupEntry)).isTrue(); + } + + @Test + public void headsUpGroup_changesDisallowed_onReorderingEnabled() { + assumeTrue(StabilizeHeadsUpGroup.isEnabled()); + // GIVEN - reordering is allowed. + setPulsing(false); + setPanelExpanded(false); + + // GIVEN - there is a group heads-up. + final String headsUpGroupKey = "heads_up_group_key"; + mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); + when(mHeadsUpManager.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); + + // GIVEN - HUN Group + final NotificationEntry headsUpGroupSummary = mock(NotificationEntry.class); + when(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false); + when(headsUpGroupSummary.getKey()).thenReturn(headsUpGroupKey); + when(headsUpGroupSummary.isSummaryWithChildren()).thenReturn(true); + + final GroupEntry headsUpGroupEntry = mock(GroupEntry.class); + when(headsUpGroupEntry.getSummary()).thenReturn(headsUpGroupSummary); + when(headsUpGroupEntry.getRepresentativeEntry()).thenReturn(headsUpGroupSummary); + + when(headsUpGroupSummary.getParent()).thenReturn(headsUpGroupEntry); + + // GIVEN - HUN is in visible location + when(mVisibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)).thenReturn(true); + + // THEN + assertThat(mNotifStabilityManager.isGroupPruneAllowed(headsUpGroupEntry)).isFalse(); + assertThat(mNotifStabilityManager.isEntryReorderingAllowed(headsUpGroupEntry)).isFalse(); + } + + @Test + public void headsUpGroupSummaries_changesDisallowed_onReorderingEnabled() { + assumeTrue(StabilizeHeadsUpGroup.isEnabled()); + // GIVEN - reordering is allowed. + setPulsing(false); + setPanelExpanded(false); + + // GIVEN - there is a group heads-up. + final String headsUpGroupKey = "heads_up_group_key"; + mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); + when(mHeadsUpManager.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); + + // GIVEN - HUN Group + final NotificationEntry headsUpGroupSummary = mock(NotificationEntry.class); + when(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false); + when(headsUpGroupSummary.getKey()).thenReturn(headsUpGroupKey); + when(headsUpGroupSummary.isSummaryWithChildren()).thenReturn(true); + + final GroupEntry headsUpGroupEntry = mock(GroupEntry.class); + when(headsUpGroupEntry.getSummary()).thenReturn(headsUpGroupSummary); + when(headsUpGroupEntry.getRepresentativeEntry()).thenReturn(headsUpGroupSummary); + + when(headsUpGroupSummary.getParent()).thenReturn(headsUpGroupEntry); + + // GIVEN - HUN is in visible location + when(mVisibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)).thenReturn(true); + + // THEN + assertThat(mNotifStabilityManager.isGroupChangeAllowed(headsUpGroupSummary)).isFalse(); + assertThat(mNotifStabilityManager.isEntryReorderingAllowed(headsUpGroupSummary)).isFalse(); + assertThat(mNotifStabilityManager.isSectionChangeAllowed(headsUpGroupSummary)).isFalse(); + } + + @Test + public void notificationInNonHUNGroup_changesAllowed_onReorderingEnabled() { + assumeTrue(StabilizeHeadsUpGroup.isEnabled()); + // GIVEN - reordering is allowed. + setPulsing(false); + setPanelExpanded(false); + + // GIVEN - there is a group heads-up. + String headsUpGroupKey = "heads_up_group_key"; + mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); + when(mHeadsUpManager.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); + + // GIVEN - non HUN parent Group Summary + final NotificationEntry groupSummary = mock(NotificationEntry.class); + when(groupSummary.getKey()).thenReturn("non_heads_up_group_key"); + when(groupSummary.isSummaryWithChildren()).thenReturn(true); + + final GroupEntry nonHeadsUpGroupEntry = mock(GroupEntry.class); + when(nonHeadsUpGroupEntry.getSummary()).thenReturn(groupSummary); + when(nonHeadsUpGroupEntry.getRepresentativeEntry()).thenReturn(groupSummary); + + // GIVEN - child entry in a non heads-up group. + final NotificationEntry childEntry = mock(NotificationEntry.class); + when(childEntry.rowIsChildInGroup()).thenReturn(true); + when(childEntry.getParent()).thenReturn(nonHeadsUpGroupEntry); + when(childEntry.getParent()).thenReturn(nonHeadsUpGroupEntry); + + // THEN + assertThat(mNotifStabilityManager.isGroupChangeAllowed(childEntry)).isTrue(); + assertThat(mNotifStabilityManager.isSectionChangeAllowed(childEntry)).isTrue(); + assertThat(mNotifStabilityManager.isEntryReorderingAllowed(nonHeadsUpGroupEntry)).isTrue(); + } + + @Test + public void notificationInHUNGroup_changesDisallowed_reorderingEnabled() { + assumeTrue(StabilizeHeadsUpGroup.isEnabled()); + // GIVEN - reordering is allowed. + setPulsing(false); + setPanelExpanded(false); + + // GIVEN - there is a group heads-up. + final String headsUpGroupKey = "heads_up_group_key"; + mCoordinator.setHeadsUpGroupKeys(Set.of(headsUpGroupKey)); + when(mHeadsUpManager.isHeadsUpEntry(headsUpGroupKey)).thenReturn(true); + + // GIVEN - HUN Group Summary + final NotificationEntry headsUpGroupSummary = mock(NotificationEntry.class); + when(headsUpGroupSummary.rowIsChildInGroup()).thenReturn(false); + when(headsUpGroupSummary.getKey()).thenReturn(headsUpGroupKey); + when(headsUpGroupSummary.isSummaryWithChildren()).thenReturn(true); + + final GroupEntry nonHeadsUpGroupEntry = mock(GroupEntry.class); + when(nonHeadsUpGroupEntry.getSummary()).thenReturn(headsUpGroupSummary); + when(nonHeadsUpGroupEntry.getRepresentativeEntry()).thenReturn(headsUpGroupSummary); + + // GIVEN - child entry in a non heads-up group. + final NotificationEntry childEntry = mock(NotificationEntry.class); + when(childEntry.rowIsChildInGroup()).thenReturn(true); + when(childEntry.getParent()).thenReturn(nonHeadsUpGroupEntry); + + // GIVEN - HUN is in visible location + when(mVisibilityLocationProvider.isInVisibleLocation(headsUpGroupSummary)).thenReturn(true); + + // THEN + assertThat(mNotifStabilityManager.isGroupChangeAllowed(childEntry)).isFalse(); + assertThat(mNotifStabilityManager.isSectionChangeAllowed(childEntry)).isFalse(); + assertThat(mNotifStabilityManager.isEntryReorderingAllowed(childEntry)).isFalse(); + } + private void verifyStabilityManagerWasInvalidated(VerificationMode mode) { verify(mInvalidateListener, mode).onPluggableInvalidated(eq(mNotifStabilityManager), any()); } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt index 3d5d1eddf581..9a42f5b02395 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/notification/emptyshade/ui/viewmodel/EmptyShadeViewModelTest.kt @@ -54,7 +54,7 @@ class EmptyShadeViewModelTest(flags: FlagsParameterization) : SysuiTestCase() { private val activeNotificationListRepository = kosmos.activeNotificationListRepository private val fakeSecureSettingsRepository = kosmos.fakeSecureSettingsRepository - private val underTest = kosmos.emptyShadeViewModel + private val underTest by lazy { kosmos.emptyShadeViewModel } companion object { @JvmStatic diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt index 7c47264d448a..ff1ffccfb2de 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt @@ -57,7 +57,7 @@ class ZenModeInteractorTest : SysuiTestCase() { private val settingsRepository = kosmos.secureSettingsRepository private val deviceProvisioningRepository = kosmos.fakeDeviceProvisioningRepository - private val underTest = kosmos.zenModeInteractor + private val underTest by lazy { kosmos.zenModeInteractor } @Test fun isZenAvailable_off() = @@ -176,13 +176,13 @@ class ZenModeInteractorTest : SysuiTestCase() { @Test fun shouldAskForZenDuration_changesWithSetting() = kosmos.runTest { - val manualDnd = TestModeBuilder().makeManualDnd().setActive(true).build() + val manualDnd by collectLastValue(underTest.dndMode) settingsRepository.setInt(ZEN_DURATION, ZEN_DURATION_FOREVER) - assertThat(underTest.shouldAskForZenDuration(manualDnd)).isFalse() + assertThat(underTest.shouldAskForZenDuration(manualDnd!!)).isFalse() settingsRepository.setInt(ZEN_DURATION, ZEN_DURATION_PROMPT) - assertThat(underTest.shouldAskForZenDuration(manualDnd)).isTrue() + assertThat(underTest.shouldAskForZenDuration(manualDnd!!)).isTrue() } @Test diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt index d8184dbadf9a..2dcfdd958df1 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelTest.kt @@ -30,6 +30,7 @@ import com.android.systemui.haptics.fakeVibratorHelper import com.android.systemui.kosmos.testScope import com.android.systemui.plugins.fakeVolumeDialogController import com.android.systemui.testKosmos +import com.android.systemui.util.time.fakeSystemClock import com.android.systemui.volume.data.repository.audioSystemRepository import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -78,7 +79,7 @@ class VolumeDialogRingerDrawerViewModelTest : SysuiTestCase() { val normalRingerMode = RingerMode(RINGER_MODE_NORMAL) setUpRingerModeAndOpenDrawer(normalRingerMode) - underTest.onRingerButtonClicked(normalRingerMode) + onRingerButtonClicked(normalRingerMode) controller.getState() assertThat(ringerViewModel).isInstanceOf(RingerViewModelState.Available::class.java) @@ -95,7 +96,7 @@ class VolumeDialogRingerDrawerViewModelTest : SysuiTestCase() { setUpRingerModeAndOpenDrawer(normalRingerMode) // Select vibrate ringer mode. - underTest.onRingerButtonClicked(vibrateRingerMode) + onRingerButtonClicked(vibrateRingerMode) controller.getState() runCurrent() @@ -109,11 +110,11 @@ class VolumeDialogRingerDrawerViewModelTest : SysuiTestCase() { val silentRingerMode = RingerMode(RINGER_MODE_SILENT) // Open drawer - underTest.onRingerButtonClicked(vibrateRingerMode) + onRingerButtonClicked(vibrateRingerMode) controller.getState() // Select silent ringer mode. - underTest.onRingerButtonClicked(silentRingerMode) + onRingerButtonClicked(silentRingerMode) controller.getState() runCurrent() @@ -152,11 +153,16 @@ class VolumeDialogRingerDrawerViewModelTest : SysuiTestCase() { private fun TestScope.setUpRingerModeAndOpenDrawer(selectedRingerMode: RingerMode) { setUpRingerMode(selectedRingerMode) - underTest.onRingerButtonClicked(RingerMode(selectedRingerMode.value)) + onRingerButtonClicked(selectedRingerMode) controller.getState() runCurrent() } + private fun TestScope.onRingerButtonClicked(ringerMode: RingerMode) { + kosmos.fakeSystemClock.advanceTime(400L) + underTest.onRingerButtonClicked(ringerMode) + } + private fun TestScope.setUpRingerMode(selectedRingerMode: RingerMode) { controller.setStreamVolume(STREAM_RING, 50) controller.setRingerMode(selectedRingerMode.value, false) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt index c9d147b6c81c..09d6ac6589ed 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractorTest.kt @@ -16,11 +16,16 @@ package com.android.systemui.volume.domain.interactor +import android.bluetooth.BluetoothDevice import android.media.AudioManager.STREAM_MUSIC import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest +import com.android.settingslib.bluetooth.CachedBluetoothDevice +import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcastAssistant import com.android.settingslib.volume.shared.model.AudioStream import com.android.systemui.SysuiTestCase +import com.android.systemui.bluetooth.cachedBluetoothDeviceManager +import com.android.systemui.bluetooth.localBluetoothProfileManager import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.testScope import com.android.systemui.testKosmos @@ -32,6 +37,8 @@ import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith +import org.mockito.kotlin.mock +import org.mockito.kotlin.whenever @OptIn(ExperimentalCoroutinesApi::class) @RunWith(AndroidJUnit4::class) @@ -39,10 +46,23 @@ import org.junit.runner.RunWith class AudioSharingInteractorTest : SysuiTestCase() { private val kosmos = testKosmos() lateinit var underTest: AudioSharingInteractor + private val bluetoothDevice: BluetoothDevice = mock {} + private val cachedDevice: CachedBluetoothDevice = mock { + on { groupId }.thenReturn(TEST_GROUP_ID) + on { device }.thenReturn(bluetoothDevice) + } @Before fun setUp() { with(kosmos) { + whenever(cachedBluetoothDeviceManager.findDevice(bluetoothDevice)) + .thenReturn(cachedDevice) + val broadcastAssistantProfile: LocalBluetoothLeBroadcastAssistant = mock { + on { allConnectedDevices }.thenReturn(listOf(bluetoothDevice)) + } + whenever(localBluetoothProfileManager.leAudioBroadcastAssistantProfile) + .thenReturn(broadcastAssistantProfile) + with(audioSharingRepository) { setVolumeMap(mapOf(TEST_GROUP_ID to TEST_VOLUME)) } underTest = audioSharingInteractor } @@ -90,6 +110,35 @@ class AudioSharingInteractorTest : SysuiTestCase() { } @Test + fun getPrimaryDevice() { + with(kosmos) { + testScope.runTest { + with(audioSharingRepository) { setPrimaryDevice(cachedDevice) } + underTest.handlePrimaryGroupChange() + + val primaryDevice by collectLastValue(underTest.primaryDevice) + runCurrent() + + Truth.assertThat(primaryDevice).isEqualTo(cachedDevice) + } + } + } + + @Test + fun getSecondaryDevice() { + with(kosmos) { + testScope.runTest { + with(audioSharingRepository) { setSecondaryDevice(cachedDevice) } + + val secondaryDevice by collectLastValue(underTest.secondaryDevice) + runCurrent() + + Truth.assertThat(secondaryDevice).isEqualTo(cachedDevice) + } + } + } + + @Test fun handlePrimaryGroupChange_setStreamVolume() { with(kosmos) { testScope.runTest { diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelTest.kt new file mode 100644 index 000000000000..b34d7b8ec17d --- /dev/null +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelTest.kt @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel + +import android.bluetooth.BluetoothDevice +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.SmallTest +import com.android.internal.logging.uiEventLogger +import com.android.settingslib.bluetooth.CachedBluetoothDevice +import com.android.systemui.SysuiTestCase +import com.android.systemui.common.shared.model.Icon +import com.android.systemui.coroutines.collectLastValue +import com.android.systemui.haptics.slider.sliderHapticsViewModelFactory +import com.android.systemui.kosmos.testScope +import com.android.systemui.res.R +import com.android.systemui.testKosmos +import com.android.systemui.volume.data.repository.audioSharingRepository +import com.android.systemui.volume.domain.interactor.audioSharingInteractor +import com.google.common.truth.Truth.assertThat +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.kotlin.mock + +@OptIn(ExperimentalCoroutinesApi::class) +@SmallTest +@RunWith(AndroidJUnit4::class) +class AudioSharingStreamSliderViewModelTest : SysuiTestCase() { + + private val kosmos = testKosmos() + private val testScope = kosmos.testScope + + private lateinit var stream: AudioSharingStreamSliderViewModel + + @Before + fun setUp() { + stream = audioSharingStreamSliderViewModel() + } + + private fun audioSharingStreamSliderViewModel(): AudioSharingStreamSliderViewModel { + return AudioSharingStreamSliderViewModel( + testScope.backgroundScope, + context, + kosmos.audioSharingInteractor, + kosmos.uiEventLogger, + kosmos.sliderHapticsViewModelFactory, + ) + } + + @Test + fun slider_media_inAudioSharing() = + with(kosmos) { + testScope.runTest { + val audioSharingSlider by collectLastValue(stream.slider) + + val bluetoothDevice: BluetoothDevice = mock {} + val cachedDevice: CachedBluetoothDevice = mock { + on { groupId }.thenReturn(123) + on { device }.thenReturn(bluetoothDevice) + on { name }.thenReturn("my headset 2") + } + audioSharingRepository.setSecondaryDevice(cachedDevice) + + audioSharingRepository.setInAudioSharing(true) + audioSharingRepository.setSecondaryGroupId(123) + + runCurrent() + + assertThat(audioSharingSlider!!.label).isEqualTo("my headset 2") + assertThat(audioSharingSlider!!.icon) + .isEqualTo(Icon.Resource(R.drawable.ic_volume_media_bt, null)) + } + } +} diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModelTest.kt index 51cac6976362..9e8cde3bc936 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModelTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModelTest.kt @@ -23,19 +23,27 @@ import android.platform.test.annotations.EnableFlags import android.service.notification.ZenPolicy import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest +import com.android.settingslib.bluetooth.CachedBluetoothDevice import com.android.settingslib.notification.modes.TestModeBuilder import com.android.settingslib.volume.shared.model.AudioStream import com.android.systemui.SysuiTestCase +import com.android.systemui.common.shared.model.Icon +import com.android.systemui.coroutines.collectLastValue import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.collectLastValue import com.android.systemui.kosmos.runCurrent import com.android.systemui.kosmos.runTest +import com.android.systemui.res.R import com.android.systemui.statusbar.policy.data.repository.fakeZenModeRepository import com.android.systemui.testKosmos +import com.android.systemui.volume.data.repository.audioSharingRepository import com.google.common.truth.Truth.assertThat +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith +import org.mockito.kotlin.mock @SmallTest @RunWith(AndroidJUnit4::class) @@ -146,4 +154,25 @@ class AudioStreamSliderViewModelTest : SysuiTestCase() { assertThat(notificationSlider!!.disabledMessage) .isEqualTo("Unavailable because ring is muted") } + + @Test + @EnableFlags(com.android.systemui.Flags.FLAG_SHOW_AUDIO_SHARING_SLIDER_IN_VOLUME_PANEL) + fun slider_media_inAudioSharing() = + kosmos.runTest { + val mediaSlider by + collectLastValue(audioStreamSliderViewModel(AudioManager.STREAM_MUSIC).slider) + + val cachedDevice: CachedBluetoothDevice = mock { + on { groupId }.thenReturn(123) + on { name }.thenReturn("my headset 1") + } + + audioSharingRepository.setInAudioSharing(true) + audioSharingRepository.setPrimaryDevice(cachedDevice) + runCurrent() + + assertThat(mediaSlider!!.label).isEqualTo("my headset 1") + assertThat(mediaSlider!!.icon) + .isEqualTo(Icon.Resource(R.drawable.ic_volume_media_bt, null)) + } } diff --git a/packages/SystemUI/res-product/values-iw/strings.xml b/packages/SystemUI/res-product/values-iw/strings.xml index 0b289b7a44c0..8d78e6bd7cd0 100644 --- a/packages/SystemUI/res-product/values-iw/strings.xml +++ b/packages/SystemUI/res-product/values-iw/strings.xml @@ -21,7 +21,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="dock_alignment_slow_charging" product="default" msgid="6997633396534416792">"צריך ליישר את הטלפון כדי לטעון אותו במהירות"</string> <string name="dock_alignment_not_charging" product="default" msgid="3980752926226749808">"צריך ליישר את הטלפון כדי לטעון אותו באופן אלחוטי"</string> - <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"מכשיר ה-Android TV ייכבה בקרוב. יש ללחוץ על לחצן כלשהו כדי שהוא ימשיך לפעול."</string> + <string name="inattentive_sleep_warning_message" product="tv" msgid="6844464574089665063">"מכשיר ה-Android TV ייכבה בקרוב. יש ללחוץ על כפתור כלשהו כדי שהוא ימשיך לפעול."</string> <string name="inattentive_sleep_warning_message" product="default" msgid="5693904520452332224">"המכשיר ייכבה בקרוב, יש ללחוץ כדי שהוא ימשיך לפעול."</string> <string name="keyguard_missing_sim_message" product="tablet" msgid="408124574073032188">"אין כרטיס SIM בטאבלט."</string> <string name="keyguard_missing_sim_message" product="default" msgid="2605468359948247208">"אין כרטיס SIM בטלפון."</string> @@ -43,24 +43,24 @@ <string name="thermal_shutdown_title" product="default" msgid="8039593017174903505">"הטלפון כבה בגלל התחממות"</string> <string name="thermal_shutdown_title" product="device" msgid="2954206342842856379">"המכשיר כבה בגלל התחממות"</string> <string name="thermal_shutdown_title" product="tablet" msgid="8941033526856177533">"הטאבלט כבה בגלל התחממות"</string> - <string name="thermal_shutdown_message" product="default" msgid="6685194547904051408">"הטלפון פועל כרגיל עכשיו.\nיש להקיש כדי להציג מידע נוסף"</string> - <string name="thermal_shutdown_message" product="device" msgid="3039675532521590478">"המכשיר פועל כרגיל עכשיו.\nיש להקיש כדי להציג מידע נוסף"</string> - <string name="thermal_shutdown_message" product="tablet" msgid="5285898074484811386">"הטאבלט פועל כרגיל עכשיו.\nיש להקיש כדי להציג מידע נוסף"</string> + <string name="thermal_shutdown_message" product="default" msgid="6685194547904051408">"הטלפון פועל כרגיל עכשיו.\nיש ללחוץ כדי להציג מידע נוסף"</string> + <string name="thermal_shutdown_message" product="device" msgid="3039675532521590478">"המכשיר פועל כרגיל עכשיו.\nיש ללחוץ כדי להציג מידע נוסף"</string> + <string name="thermal_shutdown_message" product="tablet" msgid="5285898074484811386">"הטאבלט פועל כרגיל עכשיו.\nיש ללחוץ כדי להציג מידע נוסף"</string> <string name="thermal_shutdown_dialog_message" product="default" msgid="6145923570358574186">"הטלפון שלך התחמם יותר מדי וכבה כדי להתקרר. הטלפון פועל כרגיל עכשיו.\n\nייתכן שהטלפון יתחמם יותר מדי אם:\n • משתמשים באפליקציות עתירות משאבים (כמו משחקים, אפליקציות וידאו או אפליקציות ניווט).\n • מורידים או מעלים קבצים גדולים.\n • משתמשים בטלפון בסביבה עם טמפרטורות גבוהות."</string> <string name="thermal_shutdown_dialog_message" product="device" msgid="3647879000909527365">"המכשיר שלך התחמם יותר מדי וכבה כדי להתקרר. המכשיר פועל כרגיל עכשיו.\n\nייתכן שהמכשיר יתחמם יותר מדי אם:\n • משתמשים באפליקציות עתירות משאבים (כמו משחקים, אפליקציות וידאו או אפליקציות ניווט).\n • מורידים או מעלים קבצים גדולים.\n • משתמשים במכשיר בסביבה עם טמפרטורות גבוהות."</string> <string name="thermal_shutdown_dialog_message" product="tablet" msgid="8274487811928782165">"הטאבלט שלך התחמם יותר מדי וכבה כדי להתקרר. הטאבלט פועל כרגיל עכשיו.\n\nייתכן שהטאבלט יתחמם יותר מדי אם:\n • משתמשים באפליקציות עתירות משאבים (כמו משחקים, אפליקציות וידאו או אפליקציות ניווט).\n • מורידים או מעלים קבצים גדולים.\n • משתמשים בטאבלט בסביבה עם טמפרטורות גבוהות."</string> <string name="high_temp_title" product="default" msgid="5365000411304924115">"הטלפון מתחמם"</string> <string name="high_temp_title" product="device" msgid="6622009907401563664">"המכשיר מתחמם"</string> <string name="high_temp_title" product="tablet" msgid="9039733706606446616">"הטאבלט מתחמם"</string> - <string name="high_temp_notif_message" product="default" msgid="3928947950087257452">"חלק מהתכונות מוגבלות כל עוד הטלפון מתקרר.\nיש להקיש כדי להציג מידע נוסף"</string> - <string name="high_temp_notif_message" product="device" msgid="6105125771372547292">"חלק מהתכונות מוגבלות כל עוד המכשיר מתקרר.\nיש להקיש כדי להציג מידע נוסף"</string> - <string name="high_temp_notif_message" product="tablet" msgid="7799279192797476850">"חלק מהתכונות מוגבלות כל עוד הטאבלט מתקרר.\nיש להקיש כדי להציג מידע נוסף"</string> + <string name="high_temp_notif_message" product="default" msgid="3928947950087257452">"חלק מהתכונות מוגבלות כל עוד הטלפון מתקרר.\nיש ללחוץ כדי להציג מידע נוסף"</string> + <string name="high_temp_notif_message" product="device" msgid="6105125771372547292">"חלק מהתכונות מוגבלות כל עוד המכשיר מתקרר.\nיש ללחוץ כדי להציג מידע נוסף"</string> + <string name="high_temp_notif_message" product="tablet" msgid="7799279192797476850">"חלק מהתכונות מוגבלות כל עוד הטאבלט מתקרר.\nיש ללחוץ כדי להציג מידע נוסף"</string> <string name="high_temp_dialog_message" product="default" msgid="4272882413847595625">"קירור הטלפון ייעשה באופן אוטומטי. אפשר עדיין להשתמש בטלפון, אבל ייתכן שהוא יפעל לאט יותר.\n\nהטלפון יחזור לפעול כרגיל לאחר שיתקרר."</string> <string name="high_temp_dialog_message" product="device" msgid="263861943935989046">"קירור המכשיר ייעשה באופן אוטומטי. אפשר עדיין להשתמש במכשיר אבל ייתכן שהוא יפעל לאט יותר.\n\nהמכשיר יחזור לפעול כרגיל לאחר שיתקרר."</string> <string name="high_temp_dialog_message" product="tablet" msgid="5613713326841935537">"קירור הטאבלט ייעשה באופן אוטומטי. אפשר עדיין להשתמש בטאבלט אבל ייתכן שהוא יפעל לאט יותר.\n\nהטאבלט יחזור לפעול כרגיל לאחר שיתקרר."</string> - <string name="security_settings_sfps_enroll_find_sensor_message" product="tablet" msgid="3726972508570143945">"חיישן טביעות האצבע נמצא על לחצן ההפעלה. זה הלחצן השטוח ליד הלחצן הבולט של עוצמת הקול בקצה הטאבלט."</string> - <string name="security_settings_sfps_enroll_find_sensor_message" product="device" msgid="2929467060295094725">"חיישן טביעות האצבע נמצא על לחצן ההפעלה. זה הלחצן השטוח ליד הלחצן הבולט של עוצמת הקול בשולי המכשיר."</string> - <string name="security_settings_sfps_enroll_find_sensor_message" product="default" msgid="8582726566542997639">"חיישן טביעות האצבע נמצא על לחצן ההפעלה. זה הלחצן השטוח ליד הלחצן הבולט של עוצמת הקול בקצה הטלפון."</string> + <string name="security_settings_sfps_enroll_find_sensor_message" product="tablet" msgid="3726972508570143945">"חיישן טביעות האצבע נמצא על כפתור ההפעלה. זה הכפתור השטוח ליד הכפתור הבולט של עוצמת הקול בקצה הטאבלט."</string> + <string name="security_settings_sfps_enroll_find_sensor_message" product="device" msgid="2929467060295094725">"חיישן טביעות האצבע נמצא על כפתור ההפעלה. זה הכפתור השטוח ליד הכפתור הבולט של עוצמת הקול בשולי המכשיר."</string> + <string name="security_settings_sfps_enroll_find_sensor_message" product="default" msgid="8582726566542997639">"חיישן טביעות האצבע נמצא על כפתור ההפעלה. זה הכפתור השטוח ליד הכפתור הבולט של עוצמת הקול בקצה הטלפון."</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> diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 0e8b2d53598e..5e7d9c4a041b 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelliet, goeie toestand"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelliet, verbinding is beskikbaar"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satelliet-SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Noodoproepe of SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"geen sein nie"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"een staaf"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"gaan by toestel in"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gebruik vingerafdruk om oop te maak"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Stawing word vereis. Raak die vingerafdruksensor om te staaf."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Oproep aan die gang"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiele data"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Gekoppel"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tydelik gekoppel"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Huidige app"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Toeganklikheid"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Kortpadsleutels"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Pasmaak kortpadsleutels"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Pasmaak kortpaaie"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Verwyder kortpad?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Stel terug na verstek?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Druk sleutel om kortpad toe te wys"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Sleutelkombinasie is reeds in gebruik. Probeer ’n ander sleutel."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Kortpad kan nie gestel word nie."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Voeg kortpad by"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Vee kortpad uit"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigeer met jou sleutelbord"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Leer kortpadsleutels"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigeer met jou raakpaneel"</string> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index 15286a6aaea2..d969525b7c4a 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ሳተላይት፣ ጥሩ ግንኙነት"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ሳተላይት፣ ግንኙነት አለ"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"ሳተላይት ኤስኦኤስ"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"የአደጋ ጥሪዎች ወይም ኤስኦኤስ"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>፣ <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>።"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ምንም ምልክት የለም"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"አንድ አሞሌ"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"መሣሪያን ያስገቡ"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ለመክፈት የጣት አሻራ ይጠቀሙ"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ማረጋገጥ ያስፈልጋል። ለማረጋገጥ የጣት አሻራ ዳሳሹን ይንኩ።"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"እየተካሄደ ያለ ጥሪ"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"የተንቀሳቃሽ ስልክ ውሂብ"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"ተገናኝቷል"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"በጊዜያዊነት ተገናኝቷል"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"የአሁን መተግበሪያ"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ተደራሽነት"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"የቁልፍ ሰሌዳ አቋራጮች"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"የቁልፍ ሰሌዳ አቋራጮችን ያብጁ"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"አቋራጮችን ያብጁ"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"አቋራጭ ይወገድ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ወደ ነባሪ ዳግም ይጀመር?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"አቋራጭ ለመመደብ ቁልፍ ይጫኑ"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"የቁልፍ ጥምረት አስቀድሞ በሥራ ላይ ነው። ሌላ ቁልፍ ይሞክሩ።"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"አቋራጩ ሊቀናበር አይችልም።"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"አቋራጭ አክል"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"አቋረጭ ሰርዝ"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"የቁልፍ ሰሌዳዎን በመጠቀም ያስሱ"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"የቁልፍ ሰሌዳ አቋራጮችን ይወቁ"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"የመዳሰሻ ሰሌዳዎን በመጠቀም ያስሱ"</string> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index d68c43281908..d46df1d8b348 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"قمر صناعي، الاتصال جيد"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"قمر صناعي، الاتصال متوفّر"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"اتصالات الطوارئ بالقمر الصناعي"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"مكالمات الطوارئ أو ميزة \"اتصالات طوارئ بالقمر الصناعي\""</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"\"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>\"، <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ما مِن أشرطة إشارة"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"شريط إشارة واحد"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"الدخول إلى الجهاز"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"يمكنك استخدام بصمة الإصبع للفتح"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"المصادقة مطلوبة. المس مستشعر بصمات الإصبع للمصادقة."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"مكالمة جارية"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"بيانات الجوّال"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"متصلة بالإنترنت"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"متصلة مؤقتًا"</string> @@ -1437,7 +1437,8 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"التطبيق الحالي"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"تسهيل الاستخدام"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"اختصارات لوحة المفاتيح"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"تخصيص اختصارات لوحة المفاتيح"</string> + <!-- no translation found for shortcut_helper_customize_mode_title (8327297960035006036) --> + <skip /> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"هل تريد إزالة هذا الاختصار؟"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"يُرجى تأكيد إعادة الضبط على الإعدادات التلقائية"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"اضغط على مفتاح لتخصيص الاختصار"</string> @@ -1465,6 +1466,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"يتم حاليًا استخدام مجموعة المفاتيح هذه. يُرجى تجربة مفتاح آخر."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"تعذَّر ضبط الاختصار."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"إضافة اختصار"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"حذف الاختصار"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"التنقّل باستخدام لوحة المفاتيح"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"تعرَّف على اختصارات لوحة المفاتيح"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"التنقّل باستخدام لوحة اللمس"</string> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index 4c4579f8e42d..ff5e2106a8d2 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"উপগ্ৰহ, ভাল সংযোগ"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"উপগ্ৰহ, সংযোগ উপলব্ধ"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"উপগ্ৰহ SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"জৰুৰীকালীন কল বা SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"কোনো ছিগনেল নাই"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"এডাল দণ্ড"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ডিভাইচ আনলক কৰক"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"খুলিবলৈ ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰক"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ আৱশ্যক। বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰিবলৈ ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো স্পৰ্শ কৰক।"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"চলি থকা কল"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"ম’বাইল ডেটা"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"সংযোজিত হৈ আছে"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"অস্থায়ীভাৱে সংযোগ কৰা হৈছে"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"বৰ্তমানৰ এপ্"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"সাধ্য সুবিধা"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"কীব’ৰ্ডৰ শ্বৰ্টকাট"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"কীব’ৰ্ডৰ শ্বৰ্টকাট কাষ্টমাইজ কৰক"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"শ্বৰ্টকাট কাষ্টমাইজ কৰক"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"শ্বৰ্টকাট আঁতৰাবনে?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ডিফ\'ল্ট হিচাপে পুনৰ ৰিছেট কৰিবনে?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"শ্বৰ্টকাটৰ ভূমিকা অৰ্পণ কৰিবলৈ কী টিপক"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"কীৰ মিশ্ৰণ ইতিমধ্যে ব্যৱহাৰ হৈ আছে। অন্য এটা কী ব্যৱহাৰ কৰি চাওক।"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"শ্বৰ্টকাট ছেট কৰিব নোৱাৰি।"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"শ্বৰ্টকাট যোগ দিয়ক"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"শ্বৰ্টকাট মচক"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"কীব’ৰ্ড ব্যৱহাৰ কৰি নেভিগে’ট কৰক"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"কীব’ৰ্ডৰ শ্বৰ্টকাটসমূহৰ বিষয়ে জানক"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"আপোনাৰ টাচ্চপেড ব্যৱহাৰ কৰি নেভিগে’ট কৰক"</string> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 08452d353765..dbeacf0bf277 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Peyk, bağlantı yaxşıdır"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Peyk, bağlantı var"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Təcili peyk bağlantısı"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Təcili zənglər və ya SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"siqnal yoxdur"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"bir zolaq"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"cihaz daxil edin"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Açmaq üçün barmaq izindən istifadə edin"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Doğrulanma tələb olunur. Doğrulamaq üçün barmaq izi sensoruna toxunun."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Davam edən zəng"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobil data"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Qoşulub"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Müvəqqəti qoşulub"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Cari tətbiq"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Xüsusi imkanlar"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Klaviatura qısayolları"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Klaviatura qısayollarını fərdiləşdirin"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Qısayolları fərdiləşdirin"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Qısayol silinsin?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Defolt vəziyyətə qaytarılsın?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Qısayol təyin etmək üçün düyməni basın"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Düymə kombinasiyası artıq istifadə olunur. Başqa düyməni sınayın."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Qısayol ayarlana bilməz."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Qısayol əlavə edin"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Qısayolu silin"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Klaviaturadan istifadə edərək hərəkət edin"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Klaviatura qısayolları haqqında öyrənin"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Taçpeddən istifadə edərək hərəkət edin"</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 8d9495a1a4e7..ca01a3d89ebe 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, veza je dobra"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, veza je dostupna"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Hitna pomoć preko satelita"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Hitni pozivi ili hitna pomoć"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"nema signala"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"jedna crta"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"unesite uređaj"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Otvorite pomoću otiska prsta"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Potrebna je potvrda identiteta. Dodirnite senzor za otisak prsta da biste potvrdili identitet."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Poziv je u toku"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilni podaci"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Povezano"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Privremeno povezano"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktuelna aplikacija"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Tasterske prečice"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Prilagodite tasterske prečice"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Prilagodite prečice"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Želite da uklonite prečicu?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Želite da resetujete na podrazumevano?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Pritisnite taster da biste dodelili prečicu"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Kombinacija tastera se već koristi. Probajte sa drugim tasterom."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Podešavanje prečice nije uspelo."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Dodajte prečicu"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Izbrišite prečicu"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Krećite se pomoću tastature"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Saznajte više o tasterskim prečicama"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Krećite se pomoću tačpeda"</string> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index 3431862c77fc..40d78c20859b 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Спадарожнікавая сувязь, добрае падключэнне"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Спадарожнікавая сувязь, падключэнне даступнае"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Экстраннае спадарожнікавае падключэнне"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Экстранныя выклікі або экстраннае спадарожнікавае падключэнне"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"няма сігналу"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"адзiн слупок"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"адкрыць галоўны экран прылады"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Каб адкрыць, скарыстайце адбітак пальца"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Патрабуецца аўтэнтыфікацыя. Дакраніцеся да сканера адбіткаў пальцаў."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Актыўны выклік"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мабільная перадача даных"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Падключана"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Падключана часова"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Бягучая праграма"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Спецыяльныя магчымасці"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Спалучэнні клавіш"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Наладзіць спалучэнні клавіш"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Наладзіць спалучэнні клавіш"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Выдаліць спалучэнне клавіш?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Скінуць налады да стандартных?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Націсніце клавішу, каб прызначыць спалучэнне клавіш"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Гэта спалучэнне клавіш ужо выкарыстоўваецца. Паспрабуйце іншую клавішу."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Не ўдаецца наладзіць спалучэнне клавіш."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Дадаць ярлык"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Выдаліць спалучэнне клавіш"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Навігацыя з дапамогай клавіятуры"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Азнаёмцеся са спалучэннямі клавіш"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Навігацыя з дапамогай сэнсарнай панэлі"</string> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index 1128d03595e1..95037ab4d29e 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Сателит, добра връзка"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Сателит, налице е връзка"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS чрез сателит"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Спешни обаждания или SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"няма сигнал"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"една чертичка"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"вход в устройството"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Използвайте отпечатък за отваряне"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Изисква се удостоверяване на самоличността. За целта докоснете сензора за отпечатъци."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Текущо обаждане"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобилни данни"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Свързано"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Установена е временна връзка"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Текущо приложение"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Достъпност"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Клавишни комбинации"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Персонализиране на клавишните комбинации"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Персонализиране на преките пътища"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Да се премахне ли клавишната комбинация?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Да се възстановят ли стандартните настройки?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Натиснете клавиш, за да зададете клавишна комбинация"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Клавишната комбинация вече се използва. Опитайте с друг клавиш."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Прекият път не може да се зададе."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Добавяне на пряк път"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Изтриване на прекия път"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Навигирайте посредством клавиатурата си"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Научете за клавишните комбинации"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Навигирайте посредством сензорния панел"</string> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index 23a693b9840e..73eddf28bbed 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"স্যাটেলাইট, ভালো কানেকশন"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"স্যাটেলাইট, কানেকশন উপলভ্য আছে"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"স্যাটেলাইট SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"জরুরি কল বা SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>।"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"কোনও সিগন্যাল নেই"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"একটি বার"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ডিভাইস আনলক করুন"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"খুলতে ফিঙ্গারপ্রিন্ট ব্যবহার করুন"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"যাচাইকরণ করতে হবে। যাচাইকরণ করতে আঙুলের ছাপের সেন্সরে টাচ করুন।"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"চালু থাকা কল"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"মোবাইল ডেটা"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"কানেক্ট করা আছে"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"সাময়িকভাবে কানেক্ট করা হয়েছে"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"বর্তমান অ্যাপ"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"অ্যাক্সেসিবিলিটি"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"কীবোর্ড শর্টকাট"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"কীবোর্ড শর্টকাট কাস্টমাইজ করুন"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"শর্টকাট কাস্টমাইজ করুন"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"শর্টকাট সরাবেন?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ডিফল্ট শর্টকার্ট আবার রিসেট করতে চান?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"শর্টকাট অ্যাসাইন করতে কী প্রেস করুন"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"কী কম্বিনেশন আগে থেকে ব্যবহার হচ্ছে। অন্য কী ব্যবহার করে দেখুন।"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"শর্টকাট সেট করা যায়নি।"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"শর্টকাট যোগ করুন"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"শর্টকাট মুছুন"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"আপনার কীবোর্ড ব্যবহার করে নেভিগেট করুন"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"কীবোর্ড শর্টকাট সম্পর্কে জানুন"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"আপনার টাচপ্যাড ব্যবহার করে নেভিগেট করুন"</string> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index d7b3f60edb03..c16627f86820 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -348,7 +348,7 @@ <string name="quick_settings_cast_device_default_name" msgid="6988469571141331700">"Neimenovani uređaj"</string> <string name="quick_settings_cast_detail_empty_text" msgid="2846282280014617785">"Nema dostupnih uređaja"</string> <string name="quick_settings_cast_no_network" msgid="3863016850468559522">"Nema WiFi-ja ni Ethernet veze"</string> - <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Osvjetljenje"</string> + <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Osvijetljenost"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inverzija boja"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Ispravka boja"</string> <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Veličina fonta"</string> @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, dobra veza"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, veza je dostupna"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Hitna pomoć putem satelita"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Hitni pozivi ili pomoć"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"nema signala"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"jedna crtica"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"pristup uređaju"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Otvorite pomoću otiska prsta"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Potrebna je autentifikacija. Dodirnite senzor za otisak prsta da autentificirate."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Poziv u toku"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Prijenos podataka na mobilnoj mreži"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Povezano"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Privremeno povezano"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Trenutna aplikacija"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Prečice na tastaturi"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Prilagodite prečice na tastaturi"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Prilagodite prečice"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Ukloniti prečicu?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Vratiti na zadano?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Pritisnite tipku da dodijelite prečicu"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Ta se kombinacija tipki već koristi. Pokušajte s drugom tipkom."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Prečica se ne može postaviti."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Dodavanje prečice"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Brisanje prečice"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Krećite se pomoću tastature"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Saznajte više o prečicama tastature"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Krećite se pomoću dodirne podloge"</string> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 09f63c551f01..43ba8fac3dad 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satèl·lit, bona connexió"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satèl·lit, connexió disponible"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS per satèl·lit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Trucades d\'emergència o SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"no hi ha senyal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"una barra"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"accedir al dispositiu"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Utilitza l\'empremta digital per obrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticació necessària. Toca el sensor d\'empremtes digitals per autenticar-te."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Trucada en curs"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Dades mòbils"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Connectat"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Connexió temporal"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aplicació actual"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilitat"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Tecles de drecera"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalitza les tecles de drecera"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalitza les dreceres"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Vols suprimir la drecera?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Vols restablir els valors predeterminats?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Prem la tecla per assignar la drecera"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"La combinació de tecles ja s\'està utilitzant. Prova-ho amb una altra tecla."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"No es pot configurar la drecera."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Afegeix una drecera"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Suprimeix la drecera"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navega amb el teclat"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprèn les tecles de drecera"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navega amb el ratolí tàctil"</string> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index 07587641802a..17945a3856d6 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, dobré připojení"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, připojení je k dispozici"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS přes satelit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Tísňová volání nebo SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"není signál"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"jedna čárka"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"zadáte zařízení"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"K otevření použijte otisk prstu"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Je vyžadováno ověření. Dotkněte se snímače otisků prstů."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Probíhající hovor"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilní data"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Připojeno"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Dočasně připojeno"</string> @@ -1437,7 +1437,8 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktuální aplikace"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Přístupnost"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Klávesové zkratky"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Přizpůsobení klávesových zkratek"</string> + <!-- no translation found for shortcut_helper_customize_mode_title (8327297960035006036) --> + <skip /> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Odstranit zkratku?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Resetovat do výchozího nastavení?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Nastavte zkratku stisknutím klávesy"</string> @@ -1465,6 +1466,10 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Kombinace kláves se už používá. Použijte jinou klávesu."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Zkratku není možné nastavit."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <!-- no translation found for shortcut_helper_add_shortcut_button_label (7655779534665954910) --> + <skip /> + <!-- no translation found for shortcut_helper_delete_shortcut_button_label (3148773472696137052) --> + <skip /> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigujte pomocí klávesnice"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Naučte se klávesové zkratky"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigujte pomocí touchpadu"</string> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index bcf93657caa7..1f8c8659b9cf 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellit – god forbindelse"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellit – forbindelsen er tilgængelig"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS-meldinger via satellit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Nødopkald eller SOS-meldinger via satellit"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"intet signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"én bjælke"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"få adgang til enheden"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Brug fingeraftryk for at åbne"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Godkendelse er påkrævet. Sæt fingeren på fingeraftrykssensoren for at godkende."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Igangværende opkald"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobildata"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Forbundet"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Midlertidigt forbundet"</string> @@ -1437,13 +1437,13 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktuel app"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Hjælpefunktioner"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Tastaturgenveje"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Tilpas tastaturgenveje"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Tilpas genveje"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Skal genvejen fjernes?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Vil du nulstille til standard?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Tryk på en tast for at tildele genvej"</string> <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Denne handling sletter din tilpassede genvej permanent."</string> <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Denne handling sletter alle dine tilpassede genveje permanent."</string> - <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Genveje til søgning"</string> + <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Søg efter genveje"</string> <string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Der er ingen søgeresultater"</string> <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikon for Skjul"</string> <string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"Ikon for handlingstast eller metatast"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Tastekombinationen er allerede i brug. Prøv en anden tast."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Genvejen kan ikke konfigureres."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Tilføj genvej"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Slet genvej"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naviger ved hjælp af dit tastatur"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Se tastaturgenveje"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naviger ved hjælp af din touchplade"</string> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index 670f5a712c4a..213955839a71 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellit, Verbindung gut"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellit, Verbindung verfügbar"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Notruf über Satellit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Notrufe oder SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"kein Empfang"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ein Balken"</string> @@ -871,7 +872,7 @@ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Tastenkombinationen für die Eingabe werden angezeigt"</string> <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Tastenkombinationen zum Öffnen von Apps werden angezeigt"</string> <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Tastenkombinationen für die aktuelle App werden angezeigt"</string> - <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Benachrichtigungen ansehen"</string> + <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Benachrichtigungen ansehen"</string> <string name="group_system_full_screenshot" msgid="5742204844232667785">"Screenshot erstellen"</string> <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Tastenkürzel anzeigen"</string> <string name="group_system_go_back" msgid="2730322046244918816">"Zurück"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"Eingeben des Geräts"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Mit Fingerabdruck öffnen"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentifizierung erforderlich. Tippe dazu einfach auf den Fingerabdrucksensor."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Aktiver Anruf"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile Daten"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Verbunden"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Vorübergehend verbunden"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktuelle App"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Bedienungshilfen"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Tastenkürzel"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Tastenkürzel anpassen"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Tastenkombinationen anpassen"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Tastaturkürzel entfernen?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Auf Standardeinstellung zurücksetzen?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Drücke eine Taste, um das Tastaturkürzel einzurichten"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Diese Tastenkombination wird bereits verwendet. Versuche es mit einer anderen Taste."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Die Tastenkombination kann nicht festgelegt werden."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Verknüpfung hinzufügen"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Verknüpfung löschen"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigation mit der Tastatur"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Informationen zu Tastenkombinationen"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigation mit dem Touchpad"</string> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index 31e356797f68..589298ea616b 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Δορυφορική, καλή σύνδεση"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Δορυφορική, διαθέσιμη σύνδεση"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Δορυφορικό SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Κλήσεις έκτακτης ανάγκης ή SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"δεν υπάρχει σήμα"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"μία γραμμή"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"εισαγωγή συσκευής"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Χρήση δακτυλικού αποτυπώματος για άνοιγμα"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Απαιτείται έλεγχος ταυτότητας. Αγγίξτε τον αισθητήρα δακτυλικών αποτυπωμάτων για έλεγχο ταυτότητας."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Κλήση σε εξέλιξη"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Δεδομένα κινητής τηλεφωνίας"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Συνδέθηκε"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Προσωρινή σύνδεση"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Τρέχουσα εφαρμογή"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Προσβασιμότητα"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Συντομεύσεις πληκτρολογίου"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Προσαρμογή συντομεύσεων πληκτρολογίου"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Προσαρμογή συντομεύσεων"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Κατάργηση συντόμευσης;"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Επαναφορά στις προεπιλογές;"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Πατήστε το πλήκτρο για ανάθεση της συντόμευσης"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Ο συνδυασμός πλήκτρων χρησιμοποιείται ήδη. Δοκιμάστε άλλο πλήκτρο."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Δεν είναι δυνατή η ρύθμιση της συντόμευσης."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Προσθήκη συντόμευσης"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Διαγραφή συντόμευσης"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Πλοήγηση με το πληκτρολόγιο"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Μάθετε συντομεύσεις πληκτρολογίου"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Πλοήγηση με την επιφάνεια αφής"</string> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 30eb21f9308f..f31e51f7f3da 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellite, good connection"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellite, connection available"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Emergency calls or SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"No signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"one bar"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"enter device"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use fingerprint to open"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentication required. Touch the fingerprint sensor to authenticate."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Ongoing call"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Connected"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporarily connected"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Current app"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Customise keyboard shortcuts"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Customise shortcuts"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Remove shortcut?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Reset back to default?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Press key to assign shortcut"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Key combination already in use. Try another key."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Shortcut cannot be set."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Add shortcut"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Delete shortcut"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigate using your keyboard"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Learn keyboards shortcuts"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigate using your touchpad"</string> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index 4b4b7b8e4575..be09504a5cd6 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellite, good connection"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellite, connection available"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Emergency calls or SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"no signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"one bar"</string> @@ -1436,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Current App"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Customize keyboard shortcuts"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Customize shortcuts"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Remove shortcut?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Reset back to default?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Press key to assign shortcut"</string> @@ -1464,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Key combination already in use. Try another key."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Shortcut cannot be set."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Add shortcut"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Delete shortcut"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigate using your keyboard"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Learn keyboards shortcuts"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigate using your touchpad"</string> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 30eb21f9308f..f31e51f7f3da 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellite, good connection"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellite, connection available"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Emergency calls or SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"No signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"one bar"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"enter device"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use fingerprint to open"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentication required. Touch the fingerprint sensor to authenticate."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Ongoing call"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Connected"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporarily connected"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Current app"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Customise keyboard shortcuts"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Customise shortcuts"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Remove shortcut?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Reset back to default?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Press key to assign shortcut"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Key combination already in use. Try another key."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Shortcut cannot be set."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Add shortcut"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Delete shortcut"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigate using your keyboard"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Learn keyboards shortcuts"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigate using your touchpad"</string> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 30eb21f9308f..f31e51f7f3da 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellite, good connection"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellite, connection available"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Emergency calls or SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"No signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"one bar"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"enter device"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use fingerprint to open"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentication required. Touch the fingerprint sensor to authenticate."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Ongoing call"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Connected"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporarily connected"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Current app"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Keyboard shortcuts"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Customise keyboard shortcuts"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Customise shortcuts"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Remove shortcut?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Reset back to default?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Press key to assign shortcut"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Key combination already in use. Try another key."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Shortcut cannot be set."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Add shortcut"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Delete shortcut"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigate using your keyboard"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Learn keyboards shortcuts"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigate using your touchpad"</string> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 2b3c54d9e280..dacea9ff1b61 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satélite, buena conexión"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satélite, conexión disponible"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS por satélite"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Llamadas de emergencia o SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"sin señal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"una barra"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ingresar al dispositivo"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Usa la huella dactilar para abrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Se requiere de una autenticación. Toca el sensor de huellas dactilares para autenticarte."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Llamada en curso"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Datos móviles"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Conexión establecida"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Conectado temporalmente"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App actual"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidad"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Combinaciones de teclas"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personaliza las combinaciones de teclas"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizar combinaciones de teclas"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"¿Quieres quitar la combinación?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"¿Quieres restablecer la configuración predeterminada?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Presiona una tecla para asignar la combinación"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"La combinación de teclas ya está en uso. Prueba con otra."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"No se puede establecer la combinación de teclas."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Agregar combinación de teclas"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Borrar combinación de teclas"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navega con el teclado"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprende combinaciones de teclas"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navega con el panel táctil"</string> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 69fab5ac89db..1799055627c1 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satélite, buena conexión"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satélite, conexión disponible"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS por satélite"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Llamadas de emergencia o SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"no hay señal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"una barra"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"acceder al dispositivo"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Usa la huella digital para abrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticación obligatoria. Toca el sensor de huellas digitales para autenticarte."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Llamada en curso"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Datos móviles"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Conectado"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Conectada temporalmente"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aplicación en uso"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidad"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Combinaciones de teclas"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalizar las combinaciones de teclas"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizar combinaciones de teclas"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"¿Eliminar combinación de teclas?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"¿Restablecer valores predeterminados?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Pulsa una tecla para asignar una combinación de teclas"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"La combinación de teclas ya se está usando. Prueba con otra tecla."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"No se puede configurar la combinación de teclas."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Añadir combinación de teclas"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Eliminar combinación de teclas"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Desplázate con el teclado"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprende combinaciones de teclas"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Desplázate con el panel táctil"</string> @@ -1517,7 +1519,7 @@ <string name="overview_edu_notification_content" msgid="3578204677648432500">"Desliza hacia arriba con tres dedos y mantén pulsado. Toca para aprender a usar más gestos."</string> <string name="all_apps_edu_notification_title" msgid="372262997265569063">"Usa el teclado para ver todas las aplicaciones"</string> <string name="all_apps_edu_notification_content" msgid="3255070575694025585">"Pulsa la tecla de acción en cualquier momento. Toca para aprender a usar más gestos."</string> - <string name="accessibility_deprecate_extra_dim_dialog_title" msgid="910988771011857460">"La atenuación extra ahora forma parte del control deslizante de brillo"</string> + <string name="accessibility_deprecate_extra_dim_dialog_title" msgid="910988771011857460">"La atenuación extra ahora forma parte del control deslizante de brillo"</string> <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="4453123359258743230">"Ahora puedes atenuar aún más tu pantalla reduciendo el nivel de brillo.\n\nComo esta función ahora forma parte del control deslizante de brillo, se van a quitar los accesos directos de atenuación extra."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="3947537827396916005">"Eliminar accesos directos de atenuación extra"</string> <string name="accessibility_deprecate_extra_dim_dialog_toast" msgid="165474092660941104">"Accesos directos de atenuación extra eliminados"</string> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index 2ba50051b6ab..a91e3dcc7b2f 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelliit, hea ühendus"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelliit, ühendus on saadaval"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satelliit-SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Hädaabikõned või SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"signaal puudub"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"üks pulk"</string> @@ -814,7 +815,7 @@ <string name="notification_channel_controls_opened_accessibility" msgid="6111817750774381094">"Rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> märguannete juhtelemendid on avatud"</string> <string name="notification_channel_controls_closed_accessibility" msgid="1561909368876911701">"Rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> märguannete juhtelemendid on suletud"</string> <string name="notification_more_settings" msgid="4936228656989201793">"Rohkem seadeid"</string> - <string name="notification_app_settings" msgid="8963648463858039377">"Kohandamine"</string> + <string name="notification_app_settings" msgid="8963648463858039377">"Kohanda"</string> <string name="notification_conversation_bubble" msgid="2242180995373949022">"Kuva mull"</string> <string name="notification_conversation_unbubble" msgid="6908427185031099868">"Eemalda mullid"</string> <string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g>, <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"seadmesse sisenemiseks"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Kasutage avamiseks sõrmejälge"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Vajalik on autentimine. Puudutage autentimiseks sõrmejäljeandurit."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Käimasolev kõne"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiilne andmeside"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Ühendatud"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ajutiselt ühendatud"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Praegune rakendus"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Juurdepääsetavus"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Klaviatuuri otseteed"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Klaviatuuri otseteede kohandamine"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Otseteede kohandamine"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Kas soovite otsetee eemaldada?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Kas lähtestada vaikeseadele?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Otsetee lisamiseks vajutage klahvi"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Kombinatsioon on juba kasutusel. Proovige mõnda muud klahvi."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Otseteed ei saa seadistada."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Otsetee lisamine"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Otsetee kustutamine"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigeerige klaviatuuri abil"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Õppige klaviatuuri otseteid"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigeerige puuteplaadi abil"</string> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index 89ec1dda2435..3a3c9cc144a6 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -228,7 +228,7 @@ <string name="fingerprint_re_enroll_dialog_title" msgid="3526033128113925780">"Konfiguratu hatz-marka bidez desblokeatzeko eginbidea"</string> <string name="fingerprint_re_enroll_dialog_content" msgid="4866561176695984879">"Hatz-marka bidez desblokeatzeko eginbidea berriro konfiguratzeko, oraingo hatz-markaren irudiak eta ereduak ezabatu egingo dira lehendabizi.\n\nHaiek ezabatuz gero, hatz-marka bidez desblokeatzeko eginbidea berriro konfiguratu beharko duzu telefonoa hatz-marka erabilita desblokeatzeko edo zeu zarela egiaztatzeko."</string> <string name="fingerprint_re_enroll_dialog_content_singular" msgid="3083663339787381218">"Hatz-marka bidez desblokeatzeko eginbidea berriro konfiguratzeko, oraingo hatz-markaren irudiak eta eredua ezabatu egingo dira lehendabizi.\n\nHaiek ezabatuz gero, hatz-marka bidez desblokeatzeko eginbidea berriro konfiguratu beharko duzu telefonoa hatz-marka erabilita desblokeatzeko edo zeu zarela egiaztatzeko."</string> - <string name="fingerprint_reenroll_failure_dialog_content" msgid="4733768492747300666">"Ezin izan da konfiguratu hatz-marka bidez desblokeatzeko eginbidea. Berriro saiatzeko, joan ezarpenetara."</string> + <string name="fingerprint_reenroll_failure_dialog_content" msgid="4733768492747300666">"Ezin izan da konfiguratu hatz-marka bidez desblokeatzeko eginbidea. Berriro saiatzeko, joan Ezarpenak atalera."</string> <string name="face_re_enroll_notification_title" msgid="1850838867718410520">"Konfiguratu berriro aurpegi bidez desblokeatzeko eginbidea"</string> <string name="face_re_enroll_notification_name" msgid="7384545252206120659">"Aurpegi bidez desblokeatzea"</string> <string name="face_re_enroll_dialog_title" msgid="6392173708176069994">"Konfiguratu aurpegi bidez desblokeatzeko eginbidea"</string> @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelitea, konexio ona"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelitea, konexioa erabilgarri"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satelite bidezko SOS komunikazioa"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Larrialdi-deiak edo SOS komunikazioa"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ez dago seinalerik"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"barra bat"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"sartu gailuan"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Erabili hatz-marka irekitzeko"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autentifikazioa behar da. Autentifikatzeko, ukitu hatz-marken sentsorea."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Deia abian"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Datu-konexioa"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Konektatuta"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Aldi baterako konektatuta"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Oraingo aplikazioa"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Erabilerraztasuna"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Lasterbideak"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Pertsonalizatu lasterbideak"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Pertsonalizatu lasterbideak"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Lasterbidea kendu nahi duzu?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Balio lehenetsia berrezarri nahi duzu?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Sakatu tekla lasterbidea esleitzeko"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Tekla-konbinazio hori erabili da dagoeneko. Probatu beste tekla bat."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Ezin da ezarri lasterbidea."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Gehitu lasterbide bat"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Ezabatu lasterbidea"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Nabigatu teklatua erabilita"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Ikasi lasterbideak"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Nabigatu ukipen-panela erabilita"</string> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index ae15b2ffe203..2caaf1415470 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ماهواره، اتصال خوب است"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ماهواره، اتصال دردسترس است"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"درخواست کمک ماهوارهای"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"تماس اضطراری یا درخواست کمک اضطراری"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>، <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"سیگنال وجود ندارد"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"یک خط"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"وارد شدن به دستگاه"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"از اثر انگشت برای باز کردن قفل استفاده کنید"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"اصالتسنجی لازم است. برای اصالتسنجی، حسگر اثر انگشت را لمس کنید."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"تماس درحال انجام"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"داده تلفن همراه"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"متصل است"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"موقتاً متصل است"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"برنامه فعلی"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"دسترسپذیری"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"میانبرهای صفحهکلید"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"سفارشیسازی کردن میانبرهای صفحهکلید"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"سفارشیسازی میانبرها"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"میانبر حذف شود؟"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"به تنظیم پیشفرض بازنشانی میکنید؟"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"برای اختصاص دادن میانبر، کلید را فشار دهید"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"ترکیب کلید ازقبل درحال استفاده است. کلید دیگری را امتحان کنید."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"میانبر تنظیم نشد."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"افزودن میانبر"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"حذف میانبر"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"پیمایش کردن بااستفاده از صفحهکلید"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"آشنایی با میانبرهای صفحهکلید"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"پیمایش کردن بااستفاده از صفحه لمسی"</string> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 3220bfcb8d65..0bd79100a959 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -761,7 +761,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelliitti, hyvä yhteys"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelliitti, yhteys saatavilla"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Hätäpuhelut tai Satellite SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ei signaalia"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"yksi palkki"</string> @@ -1291,8 +1292,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"avataksesi laitteen"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Avaa sormenjäljellä"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Todennus vaaditaan. Todenna koskettamalla sormenjälkitunnistinta."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Käynnissä oleva puhelu"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiilidata"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Yhdistetty"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Väliaikaisesti yhdistetty"</string> @@ -1439,7 +1439,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Nykyinen sovellus"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Saavutettavuus"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Pikanäppäimet"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Pikanäppäimien muokkaaminen"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Muokkaa pikanäppäimiä"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Poistetaanko pikanäppäin?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Palautetaanko oletusasetukset?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Määritä pikanäppäin painamalla näppäintä"</string> @@ -1467,6 +1467,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Näppäinyhdistelmä on jo käytössä. Kokeile toista näppäintä."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Pikakuvaketta ei voi lisätä."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Lisää pikanäppäin"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Poista pikanäppäin"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Siirry käyttämällä näppäimistöä"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Opettele pikanäppäimiä"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Siirry käyttämällä kosketuslevyä"</string> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index 367c7591a2b7..f93ceb498f4c 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Bonne connexion satellite"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Connexion satellite accessible"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS par satellite"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Appels d\'urgence ou SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"aucun signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"une barre"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"accéder à l\'appareil"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Servez-vous de votre empreinte digitale pour ouvrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentification requise. Touchez le capteur d\'empreintes digitales pour vous authentifier."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Appel en cours"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Données cellulaires"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Connexion active"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Connectée temporairement"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Appli actuelle"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilité"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Raccourcis-clavier"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personnaliser les raccourcis-clavier"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personnaliser les raccourcis"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Supprimer le raccourci?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Réinitialiser aux raccourcis par défaut?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Appuyez sur la touche pour attribuer un raccourci"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"La combinaison de touches est déjà utilisée. Essayez une autre touche."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Le raccourci ne peut pas être défini."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Ajouter un raccourci"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Supprimer le raccourci"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naviguer à l\'aide de votre clavier"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Apprenez à utiliser les raccourcis-clavier"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naviguer à l\'aide de votre pavé tactile"</string> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index dc10bcbf74be..f0cc3b52fa02 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Bonne connexion satellite"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Connexion satellite disponible"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS par satellite"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Appels d\'urgence ou SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"aucun signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"faible"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"accéder à l\'appareil"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Utilisez votre empreinte pour ouvrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Authentification requise. Appuyez sur le lecteur d\'empreintes digitales pour vous authentifier."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Appel en cours"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Données mobiles"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Connecté"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Connexion temporaire"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Appli actuelle"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilité"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Raccourcis clavier"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personnaliser les raccourcis clavier"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personnaliser les raccourcis"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Supprimer le raccourci ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Rétablir les paramètres par défaut ?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Appuyez sur une touche pour attribuer un raccourci"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Combinaison de touches déjà utilisée. Essayez une autre touche."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Impossible de définir le raccourci."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Ajouter un raccourci"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Supprimer le raccourci"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naviguer à l\'aide du clavier"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Apprenez à utiliser les raccourcis clavier"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naviguer à l\'aide de votre pavé tactile"</string> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index eef9147bbfab..a449530050e5 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satélite, boa conexión"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satélite, conexión dispoñible"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS por satélite"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Chamadas de emerxencia ou SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"non hai cobertura"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"unha barra"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"poñer o dispositivo"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Usa a impresión dixital para abrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Requírese autenticación. Para autenticarte, toca o sensor de impresión dixital."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Chamada en curso"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Datos móbiles"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Conectada"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Conectada temporalmente"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aplicación actual"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilidade"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Atallos de teclado"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalizar os atallos de teclado"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizar os atallos"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Queres quitar o atallo?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Queres restablecer a opción predeterminada?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Preme a tecla para asignar o atallo"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Xa se está usando esta combinación de teclas. Proba con outra."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Non se puido definir o atallo."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Engadir un atallo"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Eliminar un atallo"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navega co teclado"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprende a usar os atallos de teclado"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navega co panel táctil"</string> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index 88b4f34c90c3..727d11248e8c 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"સૅટલાઇટ, સારું કનેક્શન"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"સૅટલાઇટ, કનેક્શન ઉપલબ્ધ છે"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"ઇમર્જન્સી સૅટલાઇટ સહાય"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"ઇમર્જન્સી કૉલ અથવા SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"કોઈ સિગ્નલ નથી"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"એક બાર"</string> @@ -843,7 +844,7 @@ <string name="keyboard_key_page_up" msgid="173914303254199845">"Page Up"</string> <string name="keyboard_key_page_down" msgid="9035902490071829731">"Page Down"</string> <string name="keyboard_key_forward_del" msgid="5325501825762733459">"Delete"</string> - <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc કી"</string> + <string name="keyboard_key_esc" msgid="6230365950511411322">"Esc"</string> <string name="keyboard_key_move_home" msgid="3496502501803911971">"Home"</string> <string name="keyboard_key_move_end" msgid="99190401463834854">"End"</string> <string name="keyboard_key_insert" msgid="4621692715704410493">"Insert"</string> @@ -881,7 +882,7 @@ <string name="group_system_cycle_back" msgid="8194102916946802902">"તાજેતરની ઍપ પર પાછળ જાઓ"</string> <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"ઍપની સૂચિ ખોલો"</string> <string name="group_system_access_system_settings" msgid="8731721963449070017">"સેટિંગ ખોલો"</string> - <string name="group_system_access_google_assistant" msgid="7210074957915968110">"Assistant ખોલો"</string> + <string name="group_system_access_google_assistant" msgid="7210074957915968110">"આસિસ્ટંટ ખોલો"</string> <string name="group_system_lock_screen" msgid="7391191300363416543">"લૉક સ્ક્રીન"</string> <string name="group_system_quick_memo" msgid="3764560265935722903">"નોંધ લો"</string> <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"એકસાથે એકથી વધુ કાર્યો કરવા"</string> @@ -1069,7 +1070,7 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"સ્ક્રીન રેકોર્ડિંગ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"કોઈ શીર્ષક નથી"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"સ્ટૅન્ડબાય"</string> - <string name="font_scaling_dialog_title" msgid="6273107303850248375">"ફૉન્ટનું કદ"</string> + <string name="font_scaling_dialog_title" msgid="6273107303850248375">"ફૉન્ટ સાઇઝ"</string> <string name="font_scaling_smaller" msgid="1012032217622008232">"વધુ નાનું બનાવો"</string> <string name="font_scaling_larger" msgid="5476242157436806760">"વધુ મોટું બનાવો"</string> <string name="magnification_window_title" msgid="4863914360847258333">"વિસ્તૃતીકરણ વિંડો"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ડિવાઇસ અનલૉક કરો"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ખોલવા માટે ફિંગરપ્રિન્ટનો ઉપયોગ કરો"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"પ્રમાણીકરણ આવશ્યક છે. પ્રમાણિત કરવા માટે ફિંગરપ્રિન્ટ સેન્સરને ટચ કરો."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"ચાલુ કૉલ"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"મોબાઇલ ડેટા"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"કનેક્ટ કરેલું"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"હંગામી રીતે કનેક્ટ કર્યું"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"હાલની ઍપ"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ઍક્સેસિબિલિટી"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"કીબોર્ડ શૉર્ટકટ"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"કીબોર્ડ શૉર્ટકટને કસ્ટમાઇઝ કરો"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"શૉર્ટકટ કસ્ટમાઇઝ કરો"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"શું શૉર્ટકટ કાઢી નાખીએ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"પાછા ડિફૉલ્ટ પર રીસેટ કરીએ?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"શૉર્ટકટ સોંપવા માટે કી દબાવો"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"કી સંયોજન પહેલેલેથી ઉપયોગમાં છે. અન્ય કી અજમાવી જુઓ."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"શૉર્ટકટ સેટ કરી શકાતો નથી."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"શૉર્ટકટ ઉમેરો"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"શૉર્ટકટ ડિલીટ કરો"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"તમારા કીબોર્ડ વડે નૅવિગેટ કરો"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"કીબોર્ડ શૉર્ટકર્ટ જાણો"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"તમારા ટચપૅડ વડે નૅવિગેટ કરો"</string> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index 1f7066e0d663..f58512db0863 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"सैटलाइट कनेक्शन अच्छा है"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"सैटलाइट कनेक्शन उपलब्ध है"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"सैटलाइट एसओएस"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"आपातकालीन कॉल या एसओएस"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"सिग्नल नहीं है"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"एक सिग्नल बार"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"डिवाइस की होम स्क्रीन पर जाएं"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"खोलने के लिए, फ़िंगरप्रिंट का इस्तेमाल करें"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"पुष्टि करना ज़रूरी है. पुष्टि करने के लिए, फ़िंगरप्रिंट सेंसर को छुएं."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"पहले से जारी कॉल"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"मोबाइल डेटा"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"कनेक्ट हो गया"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"इंटरनेट कनेक्शन कुछ समय के लिए है"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"मौजूदा ऐप्लिकेशन"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"सुलभता"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"कीबोर्ड शॉर्टकट"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"कीबोर्ड शॉर्टकट को पसंद के मुताबिक बनाएं"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"पसंद के मुताबिक शॉर्टकट बनाएं"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"क्या आपको शॉर्टकट हटाना है?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"क्या आपको फिर से डिफ़ॉल्ट सेटिंग चालू करनी है?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"शॉर्टकट असाइन करने के लिए बटन दबाएं"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"बटन का यह कॉम्बिनेशन पहले से इस्तेमाल किया जा रहा है. कोई दूसरा कॉम्बिनेशन आज़माएं."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"शॉर्टकट सेट नहीं किया जा सकता."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"शॉर्टकट जोड़ें"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"शॉर्टकट मिटाएं"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"कीबोर्ड का इस्तेमाल करके नेविगेट करें"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"कीबोर्ड शॉर्टकट के बारे में जानें"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"टचपैड का इस्तेमाल करके नेविगेट करें"</string> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 5c40a5170fa7..b8b5f82dbf71 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, dobra veza"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, veza je dostupna"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS putem satelita"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Hitni pozivi ili SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"nema signala"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"jedna crtica"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"pristupili uređaju"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Otvorite pomoću otiska prsta"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Potrebna je autentifikacija. Dodirnite senzor otiska prsta da biste se autentificirali."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Poziv u tijeku"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilni podaci"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Povezano"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Privremeno povezano"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Trenutačna aplikacija"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pristupačnost"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Tipkovni prečaci"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Prilagodba tipkovnih prečaca"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Prilagodite prečace"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Želite li ukloniti prečac?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Želite li vratiti na zadano?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Pritisnite tipku da biste dodijelili prečac"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Ta se kombinacija već koristi. Pokušajte s nekom drugom."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Prečac se ne može postaviti."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Dodaj prečac"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Izbriši prečac"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Krećite se pomoću tipkovnice"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Saznajte više o tipkovnim prečacima"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Krećite se pomoću dodirne podloge"</string> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 50c60833574a..e914e755a934 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Műhold, jó kapcsolat"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Műhold, van rendelkezésre álló kapcsolat"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Műholdas SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Segélyhívás vagy SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"nincs jel"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"egy sáv"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"eszköz megadásához"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Ujjlenyomat használata a megnyitáshoz"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Hitelesítés szükséges. Érintse meg az ujjlenyomat-érzékelőt a hitelesítéshez."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Hívás folyamatban"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiladat"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Csatlakozva"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ideiglenesen csatlakoztatva"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Jelenlegi alkalmazás"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Kisegítő lehetőségek"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Billentyűparancsok"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"A billentyűparancsok személyre szabása"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Gyorsparancsok személyre szabása"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Eltávolítja a billentyűparancsot?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Visszaállítja az alapértelmezett beállításokat?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Nyomja meg a billentyűt a billentyűparancs hozzárendeléséhez"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"A billentyűkombináció már használatban van. Próbálkozzon másik billentyűvel."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Nem lehet beállítani a billentyűparancsot."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Billentyűparancs hozzáadása"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Billentyűparancs törlése"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigáció a billentyűzet segítségével"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Billentyűparancsok megismerése"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigálás az érintőpaddal"</string> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index 2e42ecd6a25f..262c3dd93cdd 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Արբանյակային լավ կապ"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Հասանելի է արբանյակային կապ"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Շտապ կանչեր կամ SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>։"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ազդանշան չկա"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"մեկ գիծ"</string> @@ -884,7 +885,7 @@ <string name="group_system_access_google_assistant" msgid="7210074957915968110">"Բացել Օգնականը"</string> <string name="group_system_lock_screen" msgid="7391191300363416543">"Կողպէկրան"</string> <string name="group_system_quick_memo" msgid="3764560265935722903">"Ստեղծել նշում"</string> - <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Բազմախնդրություն"</string> + <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Բազմախնդրություն"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Տրոհել էկրանը և տեղավորել այս հավելվածը աջ կողմում"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Տրոհել էկրանը և տեղավորել այս հավելվածը ձախ կողմում"</string> <string name="system_multitasking_full_screen" msgid="4940465971687159429">"Անցնել լիաէկրան ռեժիմի"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"նշել սարքը"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Բացելու համար օգտագործեք մատնահետքը"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Պահանջվում է նույնականացում։ Դրա համար մատը հպեք մատնահետքի սկաներին։"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Ընթացիկ զանգ"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Բջջային ինտերնետ"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Միացած է"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ժամանակավոր կապ"</string> @@ -1430,14 +1430,14 @@ <string name="shortcut_helper_category_system" msgid="462110876978937359">"Համակարգ"</string> <string name="shortcut_helper_category_system_controls" msgid="3153344561395751020">"Համակարգի կառավարման տարրեր"</string> <string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"Համակարգային հավելվածներ"</string> - <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Բազմախնդրություն"</string> + <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Բազմախնդրություն"</string> <string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Տրոհված էկրան"</string> <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Ներածում"</string> <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Հավելվածի դյուրանցումներ"</string> <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Այս հավելվածը"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Հատուկ գործառույթներ"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Ստեղնային դյուրանցումներ"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Կարգավորեք ստեղնային դյուրանցումներ"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Դյուրանցումների անհատականացում"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Հեռացնե՞լ դյուրանցումը"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Վերականգնե՞լ կանխադրվածները"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Սեղմեք որևէ ստեղն՝ դյուրանցում նշանակելու համար"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Ստեղների համակցությունն արդեն օգտագործվում է։ Ընտրեք ուրիշը։"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Դյուրանցումը հնարավոր չէ ստեղծել։"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Ավելացնել դյուրանցում"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Ջնջել դյուրանցումը"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Կողմնորոշվեք ձեր ստեղնաշարի օգնությամբ"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Սովորեք օգտագործել ստեղնային դյուրանցումները"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Կողմնորոշվեք ձեր հպահարթակի օգնությամբ"</string> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 2740ce508515..8e1118c76e24 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, koneksi baik"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, koneksi tersedia"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS via Satelit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Panggilan darurat atau SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"tidak ada sinyal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"satu batang"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"masukkan perangkat"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gunakan sidik jari untuk membuka"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Perlu autentikasi. Sentuh sensor sidik jari untuk melakukan autentikasi."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Panggilan sedang berlangsung"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Data seluler"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Terhubung"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Terhubung sementara"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aplikasi Saat Ini"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Aksesibilitas"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Pintasan keyboard"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Sesuaikan pintasan keyboard"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Sesuaikan pintasan"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Hapus pintasan?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Reset kembali ke pintasan default?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Tekan tombol untuk menetapkan pintasan"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Kombinasi tombol sudah digunakan. Coba tombol lain."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Pintasan tidak dapat disetel."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Tambahkan pintasan"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Hapus pintasan"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Menggunakan keyboard untuk navigasi"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Pelajari pintasan keyboard"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Menavigasi menggunakan touchpad"</string> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index a6de1d70805e..f5488e0939de 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Gervihnöttur, góð tenging"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Gervihnöttur, tenging tiltæk"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Gervihnattar-SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Neyðarsímtöl eða SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ekkert samband"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"eitt strik"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"opna tæki"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Opna með fingrafari"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Auðkenningar krafist. Auðkenndu með því að snerta fingrafaralesarann."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Símtal í gangi"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Farsímagögn"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Tengt"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tímabundin tenging"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Núverandi forrit"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Aðgengi"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Flýtilyklar"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Sérsníddu flýtilykla"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Sérsníða flýtilykla"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Fjarlægja flýtileið?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Endurstilla á sjálfgefið?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Ýttu á lykil til að stilla flýtileið"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Lyklasamsetningin er þegar í notkun. Prófaðu annan lykil."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Ekki er hægt að stilla flýtileið."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Bæta flýtileið við"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Eyða flýtileið"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Flettu með því að nota lyklaborðið"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Kynntu þér flýtilykla"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Flettu með því að nota snertiflötinn"</string> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index 86aeae467b91..81367f369159 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellitare, connessione buona"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellitare, connessione disponibile"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS satellitare"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Chiamate di emergenza o SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"nessun segnale"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"una barra"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"accedere al dispositivo"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Usa l\'impronta per aprire"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticazione obbligatoria. Eseguila toccando il sensore di impronte digitali."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Chiamata in corso"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Dati mobili"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Connessa"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Connessa temporaneamente"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App corrente"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibilità"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Scorciatoie da tastiera"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalizza scorciatoie da tastiera"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizza scorciatoie"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Rimuovere scorciatoia?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Vuoi ripristinare le impostazioni predefinite?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Premi un tasto per assegnare una scorciatoia"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Combinazione di tasti già in uso. Prova con un altro tasto."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Impossibile impostare la scorciatoia."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Aggiungi scorciatoia"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Elimina scorciatoia"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naviga usando la tastiera"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Informazioni sulle scorciatoie da tastiera"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naviga usando il touchpad"</string> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 605a1fb88cc3..a40dd62c4620 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -129,7 +129,7 @@ <string name="screenrecord_stop_label" msgid="72699670052087989">"עצירה"</string> <string name="screenrecord_share_label" msgid="5025590804030086930">"שיתוף"</string> <string name="screenrecord_save_title" msgid="1886652605520893850">"הקלטת המסך נשמרה"</string> - <string name="screenrecord_save_text" msgid="3008973099800840163">"יש להקיש כדי להציג"</string> + <string name="screenrecord_save_text" msgid="3008973099800840163">"יש ללחוץ כדי להציג"</string> <string name="screenrecord_save_error" msgid="5862648532560118815">"שגיאה בשמירה של הקלטת המסך"</string> <string name="screenrecord_start_error" msgid="2200660692479682368">"שגיאה בהפעלה של הקלטת המסך"</string> <string name="screenrecord_stop_dialog_title" msgid="8716193661764511095">"לעצור את ההקלטה?"</string> @@ -162,7 +162,7 @@ <string name="issuerecord_ongoing_screen_only" msgid="6248206059935015722">"הבעיה בתהליך הקלטה"</string> <string name="issuerecord_share_label" msgid="3992657993619876199">"שיתוף"</string> <string name="issuerecord_save_title" msgid="4161043023696751591">"הקלטת הבעיה נשמרה"</string> - <string name="issuerecord_save_text" msgid="1205985304551521495">"אפשר להקיש כדי להציג"</string> + <string name="issuerecord_save_text" msgid="1205985304551521495">"אפשר ללחוץ כדי להציג"</string> <string name="issuerecord_save_error" msgid="6913040083446722726">"שגיאה בשמירה של בעיית ההקלטה"</string> <string name="issuerecord_start_error" msgid="3402782952722871190">"שגיאה בהפעלה של בעיית ההקלטה"</string> <string name="immersive_cling_title" msgid="8372056499315585941">"צפייה במסך מלא"</string> @@ -187,17 +187,17 @@ <string name="biometric_dialog_logo" msgid="7681107853070774595">"לוגו של האפליקציה"</string> <string name="biometric_dialog_confirm" msgid="2005978443007344895">"אישור"</string> <string name="biometric_dialog_try_again" msgid="8575345628117768844">"ניסיון נוסף"</string> - <string name="biometric_dialog_empty_space_description" msgid="3330555462071453396">"יש להקיש כדי לבטל את האימות"</string> + <string name="biometric_dialog_empty_space_description" msgid="3330555462071453396">"יש ללחוץ כדי לבטל את האימות"</string> <string name="biometric_dialog_face_icon_description_idle" msgid="4351777022315116816">"יש לנסות שוב"</string> <string name="biometric_dialog_face_icon_description_authenticating" msgid="3401633342366146535">"המערכת מחפשת את הפנים שלך"</string> <string name="biometric_dialog_face_icon_description_authenticated" msgid="2242167416140740920">"זיהוי הפנים בוצע"</string> <string name="biometric_dialog_face_icon_description_confirmed" msgid="7918067993953940778">"יש אישור"</string> - <string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"יש להקיש על \'אישור\' לסיום התהליך"</string> + <string name="biometric_dialog_tap_confirm" msgid="9166350738859143358">"יש ללחוץ על \'אישור\' לסיום התהליך"</string> <string name="biometric_dialog_tap_confirm_with_face" msgid="2378151312221818694">"הנעילה בוטלה באמצעות זיהוי הפנים"</string> <string name="biometric_dialog_tap_confirm_with_face_alt_1" msgid="439152621640507113">"הנעילה בוטלה באמצעות זיהוי הפנים. יש ללחוץ כדי להמשיך."</string> <string name="biometric_dialog_tap_confirm_with_face_alt_2" msgid="8586608186457385108">"הפנים זוהו. יש ללחוץ כדי להמשיך."</string> <string name="biometric_dialog_tap_confirm_with_face_alt_3" msgid="2192670471930606539">"הפנים זוהו. להמשך יש ללחוץ על סמל ביטול הנעילה."</string> - <string name="biometric_dialog_tap_confirm_with_face_sfps" msgid="2499213248903257928">"הנעילה בוטלה באמצעות זיהוי הפנים. צריך להקיש כדי להמשיך."</string> + <string name="biometric_dialog_tap_confirm_with_face_sfps" msgid="2499213248903257928">"הנעילה בוטלה באמצעות זיהוי הפנים. צריך ללחוץ כדי להמשיך."</string> <string name="biometric_dialog_authenticated" msgid="7337147327545272484">"מאומת"</string> <string name="biometric_dialog_cancel_authentication" msgid="981316588773442637">"ביטול האימות"</string> <string name="biometric_dialog_content_view_more_options_button" msgid="2663810393874865475">"אפשרויות נוספות"</string> @@ -300,7 +300,7 @@ <string name="quick_settings_modes_label" msgid="879156359479504244">"מצבים"</string> <string name="quick_settings_bluetooth_label" msgid="7018763367142041481">"Bluetooth"</string> <string name="quick_settings_bluetooth_detail_empty_text" msgid="5760239584390514322">"אין מכשירים מותאמים זמינים"</string> - <string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"אפשר להקיש כדי להתחבר למכשיר או להתנתק ממנו"</string> + <string name="quick_settings_bluetooth_tile_subtitle" msgid="212752719010829550">"אפשר ללחוץ כדי להתחבר למכשיר או להתנתק ממנו"</string> <string name="pair_new_bluetooth_devices" msgid="4601767620843349645">"התאמה של מכשיר חדש"</string> <string name="see_all_bluetooth_devices" msgid="1761596816620200433">"הצגת הכול"</string> <string name="turn_on_bluetooth" msgid="5681370462180289071">"שימוש ב-Bluetooth"</string> @@ -449,7 +449,7 @@ <string name="sensor_privacy_camera_turned_off_dialog_title" msgid="1936603903120742696">"המצלמה כבויה"</string> <string name="sensor_privacy_camera_unblocked_dialog_content" msgid="7847190103011782278">"הגישה למצלמה הופעלה לכל האפליקציות והשירותים."</string> <string name="sensor_privacy_camera_blocked_dialog_content" msgid="3182428709314874616">"הגישה למצלמה הושבתה לכל האפליקציות והשירותים."</string> - <string name="sensor_privacy_htt_blocked_dialog_content" msgid="3333321592997666441">"כדי להשתמש בלחצן המיקרופון יש להפעיל את הגישה למיקרופון ב\'הגדרות\'."</string> + <string name="sensor_privacy_htt_blocked_dialog_content" msgid="3333321592997666441">"כדי להשתמש בכפתור המיקרופון יש להפעיל את הגישה למיקרופון ב\'הגדרות\'."</string> <string name="sensor_privacy_dialog_open_settings" msgid="5635865896053011859">"פתיחת ההגדרות"</string> <string name="media_seamless_other_device" msgid="4654849800789196737">"מכשיר אחר"</string> <string name="quick_step_accessibility_toggle_overview" msgid="7908949976727578403">"החלפת מצב של מסכים אחרונים"</string> @@ -467,8 +467,8 @@ <string name="zen_priority_customize_button" msgid="4119213187257195047">"התאמה אישית"</string> <string name="zen_silence_introduction_voice" msgid="853573681302712348">"הפעולה הזו מבטלת את כל הצלילים והרטט, כולל צלילים ורטט שמקורם בהתראות, מוזיקה, סרטונים ומשחקים. עדיין ניתן לבצע שיחות."</string> <string name="zen_silence_introduction" msgid="6117517737057344014">"הפעולה הזו מבטלת את כל הצלילים והרטט, כולל בהתראות, מוזיקה, סרטונים ומשחקים."</string> - <string name="notification_tap_again" msgid="4477318164947497249">"יש להקיש שוב כדי לפתוח את ההתראה"</string> - <string name="tap_again" msgid="1315420114387908655">"צריך להקיש פעם נוספת"</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_unlock_press" msgid="9140109453735019209">"לפתיחה, לוחצים על סמל ביטול הנעילה"</string> <string name="keyguard_face_successful_unlock_swipe" msgid="6180997591385846073">"הנעילה בוטלה באמצעות זיהוי הפנים. צריך להחליק כדי לפתוח."</string> @@ -538,7 +538,7 @@ <string name="glanceable_hub_lockscreen_affordance_label" msgid="1461611028615752141">"ווידג\'טים"</string> <string name="glanceable_hub_lockscreen_affordance_disabled_text" msgid="599170482297578735">"כדי להוסיף את קיצור הדרך \"ווידג\'טים\", צריך לוודא שהאפשרות \"ווידג\'טים במסך הנעילה\" מופעלת בהגדרות."</string> <string name="glanceable_hub_lockscreen_affordance_action_button_label" msgid="7636151133344609375">"הגדרות"</string> - <string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"לחצן להצגת שומר המסך"</string> + <string name="accessibility_glanceable_hub_to_dream_button" msgid="7552776300297055307">"כפתור להצגת שומר המסך"</string> <string name="accessibility_multi_user_switch_switcher" msgid="5330448341251092660">"החלפת משתמש"</string> <string name="accessibility_multi_user_list_switcher" msgid="8574105376229857407">"תפריט במשיכה למטה"</string> <string name="guest_exit_guest_dialog_message" msgid="8183450985628495709">"כל האפליקציות והנתונים בסשן הזה יימחקו."</string> @@ -677,8 +677,8 @@ <string name="screen_pinning_description_recents_invisible_accessible" msgid="2857071808674481986">"נשאר בתצוגה עד לביטול ההצמדה. יש ללחוץ לחיצה ארוכה על הלחצן \'דף הבית\' כדי לבטל את ההצמדה."</string> <string name="screen_pinning_exposes_personal_data" msgid="8189852022981524789">"ייתכן שתתאפשר גישה למידע אישי (כמו אנשי קשר ותוכן מהאימייל)."</string> <string name="screen_pinning_can_open_other_apps" msgid="7529756813231421455">"האפליקציה שהוצמדה עשויה לפתוח אפליקציות אחרות."</string> - <string name="screen_pinning_toast" msgid="8177286912533744328">"כדי לבטל את ההצמדה של האפליקציה הזו, יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'סקירה\'"</string> - <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"כדי לבטל את ההצמדה של האפליקציה הזו, יש ללחוץ לחיצה ארוכה על הלחצן \'הקודם\' והלחצן הראשי"</string> + <string name="screen_pinning_toast" msgid="8177286912533744328">"כדי לבטל את ההצמדה של האפליקציה הזו, יש ללחוץ לחיצה ארוכה על הכפתורים \"הקודם\" ו\"סקירה\""</string> + <string name="screen_pinning_toast_recents_invisible" msgid="6850978077443052594">"כדי לבטל את ההצמדה של האפליקציה הזו, יש ללחוץ לחיצה ארוכה על הכפתור \"הקודם\" והכפתור הראשי"</string> <string name="screen_pinning_toast_gesture_nav" msgid="170699893395336705">"לביטול ההצמדה של האפליקציה הזו, יש להחליק למעלה ולהחזיק"</string> <string name="screen_pinning_positive" msgid="3285785989665266984">"הבנתי"</string> <string name="screen_pinning_negative" msgid="6882816864569211666">"לא, תודה"</string> @@ -702,19 +702,19 @@ <string name="stream_media_unavailable" msgid="6823020894438959853">"לא זמין כי התכונה \'נא לא להפריע\' מופעלת"</string> <string name="stream_unavailable_by_modes" msgid="3674139029490353683">"לא זמין כי המצב <xliff:g id="MODE">%s</xliff:g> מופעל"</string> <string name="stream_unavailable_by_unknown" msgid="6908434629318171588">"לא זמין"</string> - <string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. יש להקיש כדי לבטל את ההשתקה."</string> - <string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. צריך להקיש כדי להגדיר רטט. ייתכן ששירותי הנגישות מושתקים."</string> - <string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. יש להקיש כדי להשתיק. ייתכן ששירותי הנגישות יושתקו."</string> - <string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. יש להקיש כדי להעביר למצב רטט."</string> - <string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. יש להקיש כדי להשתיק."</string> + <string name="volume_stream_content_description_unmute" msgid="7729576371406792977">"%1$s. יש ללחוץ כדי לבטל את ההשתקה."</string> + <string name="volume_stream_content_description_vibrate" msgid="4858111994183089761">"%1$s. צריך ללחוץ כדי להגדיר רטט. ייתכן ששירותי הנגישות מושתקים."</string> + <string name="volume_stream_content_description_mute" msgid="4079046784917920984">"%1$s. יש ללחוץ כדי להשתיק. ייתכן ששירותי הנגישות יושתקו."</string> + <string name="volume_stream_content_description_vibrate_a11y" msgid="2742330052979397471">"%1$s. יש ללחוץ כדי להעביר למצב רטט."</string> + <string name="volume_stream_content_description_mute_a11y" msgid="5743548478357238156">"%1$s. יש ללחוץ כדי להשתיק."</string> <string name="volume_panel_noise_control_title" msgid="7413949943872304474">"בקרת רעש"</string> <string name="volume_panel_spatial_audio_title" msgid="3367048857932040660">"אודיו מרחבי"</string> <string name="volume_panel_spatial_audio_off" msgid="4177490084606772989">"השבתה"</string> <string name="volume_panel_spatial_audio_fixed" msgid="3136080137827746046">"מצב סטטי"</string> <string name="volume_panel_spatial_audio_tracking" msgid="5711115234001762974">"מעקב ראש"</string> - <string name="volume_ringer_change" msgid="3574969197796055532">"יש להקיש כדי לשנות את מצב תוכנת הצלצול"</string> + <string name="volume_ringer_change" msgid="3574969197796055532">"יש ללחוץ כדי לשנות את מצב תוכנת הצלצול"</string> <string name="volume_ringer_mode" msgid="6867838048430807128">"מצב תוכנת הצלצול"</string> - <string name="volume_ringer_drawer_closed_content_description" msgid="4737792429808781745">"<xliff:g id="VOLUME_RINGER_STATUS">%1$s</xliff:g>, צריך להקיש כדי לשנות את מצב תוכנת הצלצול"</string> + <string name="volume_ringer_drawer_closed_content_description" msgid="4737792429808781745">"<xliff:g id="VOLUME_RINGER_STATUS">%1$s</xliff:g>, צריך ללחוץ כדי לשנות את מצב תוכנת הצלצול"</string> <string name="volume_ringer_hint_mute" msgid="4263821214125126614">"השתקה"</string> <string name="volume_ringer_hint_unmute" msgid="6119086890306456976">"ביטול ההשתקה"</string> <string name="volume_ringer_hint_vibrate" msgid="6211609047099337509">"רטט"</string> @@ -736,12 +736,12 @@ <string name="enable_demo_mode" msgid="3180345364745966431">"הפעלת מצב הדגמה"</string> <string name="show_demo_mode" msgid="3677956462273059726">"הצגת מצב הדגמה"</string> <string name="status_bar_ethernet" msgid="5690979758988647484">"אתרנט"</string> - <string name="status_bar_alarm" msgid="87160847643623352">"התראה"</string> + <string name="status_bar_alarm" msgid="87160847643623352">"שעון מעורר"</string> <string name="active_mode_content_description" msgid="1627555562186515927">"מצב <xliff:g id="MODENAME">%1$s</xliff:g> פועל"</string> <string name="wallet_title" msgid="5369767670735827105">"Wallet"</string> <string name="wallet_empty_state_label" msgid="7776761245237530394">"מגדירים אמצעי תשלום ונהנים מביצוע מהיר ומאובטח יותר של רכישות באמצעות הטלפון"</string> <string name="wallet_app_button_label" msgid="7123784239111190992">"הצגת הכול"</string> - <string name="wallet_secondary_label_no_card" msgid="8488069304491125713">"יש להקיש לפתיחה"</string> + <string name="wallet_secondary_label_no_card" msgid="8488069304491125713">"יש ללחוץ לפתיחה"</string> <string name="wallet_secondary_label_updating" msgid="5726130686114928551">"מתבצע עדכון"</string> <string name="wallet_secondary_label_device_locked" msgid="5175862019125370506">"יש לבטל את הנעילה כדי להשתמש"</string> <string name="wallet_error_generic" msgid="257704570182963611">"הייתה בעיה בקבלת הכרטיסים שלך. כדאי לנסות שוב מאוחר יותר"</string> @@ -750,7 +750,7 @@ <string name="qr_code_scanner_updating_secondary_label" msgid="8344598017007876352">"מתבצע עדכון"</string> <string name="status_bar_work" msgid="5238641949837091056">"פרופיל עבודה"</string> <string name="status_bar_airplane" msgid="4848702508684541009">"מצב טיסה"</string> - <string name="zen_alarm_warning" msgid="7844303238486849503">"לא ניתן יהיה לשמוע את ההתראה הבאה שלך <xliff:g id="WHEN">%1$s</xliff:g>"</string> + <string name="zen_alarm_warning" msgid="7844303238486849503">"לא ניתן יהיה לשמוע את השעון המעורר הבא שלך <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="alarm_template" msgid="2234991538018805736">"בשעה <xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="alarm_template_far" msgid="3561752195856839456">"ב-<xliff:g id="WHEN">%1$s</xliff:g>"</string> <string name="accessibility_status_bar_hotspot" msgid="2888479317489131669">"נקודת אינטרנט (hotspot)"</string> @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"לוויין, חיבור באיכות טובה"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"לוויין, יש חיבור זמין"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"תקשורת לוויינית למצב חירום"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"שיחות חירום או SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"אין קליטה"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"פס אחד"</string> @@ -827,7 +828,7 @@ <string name="snoozeHourOptions" msgid="2332819756222425558">"{count,plural, =1{שעה}=2{שעתיים}one{# שעות}other{# שעות}}"</string> <string name="snoozeMinuteOptions" msgid="2222082405822030979">"{count,plural, =1{דקה}one{# דקות}two{# דקות}other{# דקות}}"</string> <string name="battery_detail_switch_title" msgid="6940976502957380405">"חיסכון בסוללה"</string> - <string name="keyboard_key_button_template" msgid="8005673627272051429">"לחצן <xliff:g id="NAME">%1$s</xliff:g>"</string> + <string name="keyboard_key_button_template" msgid="8005673627272051429">"כפתור <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="keyboard_key_home" msgid="3734400625170020657">"דף הבית"</string> <string name="keyboard_key_back" msgid="4185420465469481999">"הקודם"</string> <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string> @@ -871,9 +872,9 @@ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"מוצגים: קיצורי הדרך של הקלט"</string> <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"מוצגים: קיצורי הדרך לפתיחת אפליקציות"</string> <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"מוצגים: קיצורי הדרך של האפליקציה הנוכחית"</string> - <string name="group_system_access_notification_shade" msgid="1619028907006553677">"הצגת התראות"</string> + <string name="group_system_access_notification_shade" msgid="1619028907006553677">"צפייה בהתראות"</string> <string name="group_system_full_screenshot" msgid="5742204844232667785">"צילום המסך"</string> - <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"הצגת מקשי הקיצור"</string> + <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"צפייה במקשי הקיצור"</string> <string name="group_system_go_back" msgid="2730322046244918816">"חזרה"</string> <string name="group_system_access_home_screen" msgid="4130366993484706483">"מעבר למסך הבית"</string> <string name="group_system_overview_open_apps" msgid="5659958952937994104">"צפייה באפליקציות האחרונות"</string> @@ -912,7 +913,7 @@ <string name="keyboard_shortcut_group_applications_calculator" msgid="6316043911946540137">"מחשבון"</string> <string name="keyboard_shortcut_group_applications_maps" msgid="7312554713993114342">"מפות"</string> <string name="volume_and_do_not_disturb" msgid="502044092739382832">"נא לא להפריע"</string> - <string name="volume_dnd_silent" msgid="4154597281458298093">"קיצור דרך ללחצני עוצמת קול"</string> + <string name="volume_dnd_silent" msgid="4154597281458298093">"קיצור דרך לכפתורי עוצמת קול"</string> <string name="battery" msgid="769686279459897127">"סוללה"</string> <string name="headset" msgid="4485892374984466437">"אוזניות"</string> <string name="accessibility_long_click_tile" msgid="210472753156768705">"פתיחת ההגדרות"</string> @@ -926,8 +927,8 @@ <string name="accessibility_tile_disabled_by_policy_action_description" msgid="6958422730461646926">"מידע נוסף"</string> <string name="nav_bar" msgid="4642708685386136807">"סרגל הניווט"</string> <string name="nav_bar_layout" msgid="4716392484772899544">"פריסה"</string> - <string name="left_nav_bar_button_type" msgid="2634852842345192790">"סוג נוסף של לחצן שמאלי"</string> - <string name="right_nav_bar_button_type" msgid="4472566498647364715">"סוג נוסף של לחצן ימני"</string> + <string name="left_nav_bar_button_type" msgid="2634852842345192790">"סוג נוסף של כפתור שמאלי"</string> + <string name="right_nav_bar_button_type" msgid="4472566498647364715">"סוג נוסף של כפתור ימני"</string> <string-array name="nav_bar_buttons"> <item msgid="2681220472659720036">"לוח"</item> <item msgid="4795049793625565683">"קוד מפתח"</item> @@ -943,7 +944,7 @@ <string name="save" msgid="3392754183673848006">"שמירה"</string> <string name="reset" msgid="8715144064608810383">"איפוס"</string> <string name="clipboard" msgid="8517342737534284617">"לוח"</string> - <string name="accessibility_key" msgid="3471162841552818281">"לחצן לניווט מותאם אישית"</string> + <string name="accessibility_key" msgid="3471162841552818281">"כפתור לניווט מותאם אישית"</string> <string name="left_keycode" msgid="8211040899126637342">"קוד מפתח שמאלי"</string> <string name="right_keycode" msgid="2480715509844798438">"קוד מפתח ימני"</string> <string name="left_icon" msgid="5036278531966897006">"סמל שמאלי"</string> @@ -1020,7 +1021,7 @@ <string name="instant_apps" msgid="8337185853050247304">"אפליקציות ללא התקנה"</string> <string name="instant_apps_title" msgid="8942706782103036910">"האפליקציה <xliff:g id="APP">%1$s</xliff:g> פועלת"</string> <string name="instant_apps_message" msgid="6112428971833011754">"האפליקציה נפתחת בלי התקנה."</string> - <string name="instant_apps_message_with_help" msgid="1816952263531203932">"האפליקציה נפתחת בלי התקנה. אפשר להקיש כדי לקבל מידע נוסף."</string> + <string name="instant_apps_message_with_help" msgid="1816952263531203932">"האפליקציה נפתחת בלי התקנה. אפשר ללחוץ כדי לקבל מידע נוסף."</string> <string name="app_info" msgid="5153758994129963243">"פרטי האפליקציה"</string> <string name="go_to_web" msgid="636673528981366511">"מעבר אל הדפדפן"</string> <string name="mobile_data" msgid="4564407557775397216">"חבילת גלישה"</string> @@ -1034,7 +1035,7 @@ <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"מצב \'נא לא להפריע\' הופעל על ידי אפליקציה (<xliff:g id="ID_1">%s</xliff:g>)."</string> <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"מצב \'נא לא להפריע\' הופעל על ידי אפליקציה או על ידי כלל אוטומטי."</string> <string name="running_foreground_services_title" msgid="5137313173431186685">"אפליקציות שפועלות ברקע"</string> - <string name="running_foreground_services_msg" msgid="3009459259222695385">"אפשר להקיש לקבלת פרטים על צריכה של נתונים וסוללה"</string> + <string name="running_foreground_services_msg" msgid="3009459259222695385">"אפשר ללחוץ לקבלת פרטים על צריכה של נתונים וסוללה"</string> <string name="mobile_data_disable_title" msgid="5366476131671617790">"לכבות את השימוש בחבילת הגלישה?"</string> <string name="mobile_data_disable_message" msgid="8604966027899770415">"לא תהיה לך גישה לנתונים או לאינטרנט דרך <xliff:g id="CARRIER">%s</xliff:g>. אפשר יהיה לגשת לאינטרנט רק דרך Wi-Fi."</string> <string name="mobile_data_disable_message_default_carrier" msgid="6496033312431658238">"הספק שלך"</string> @@ -1049,7 +1050,7 @@ <string name="slice_permission_checkbox" msgid="4242888137592298523">"יש לאשר לאפליקציית <xliff:g id="APP">%1$s</xliff:g> להראות חלקים מכל אפליציה שהיא"</string> <string name="slice_permission_allow" msgid="6340449521277951123">"אישור"</string> <string name="slice_permission_deny" msgid="6870256451658176895">"אני לא מרשה"</string> - <string name="auto_saver_title" msgid="6873691178754086596">"יש להקיש כדי לתזמן את מצב החיסכון בסוללה"</string> + <string name="auto_saver_title" msgid="6873691178754086596">"יש ללחוץ כדי לתזמן את מצב החיסכון בסוללה"</string> <string name="auto_saver_text" msgid="3214960308353838764">"מומלץ להפעיל את התכונה כשיש סבירות גבוהה שהסוללה תתרוקן"</string> <string name="no_auto_saver_action" msgid="7467924389609773835">"לא תודה"</string> <string name="ongoing_privacy_dialog_a11y_title" msgid="2205794093673327974">"בשימוש"</string> @@ -1109,11 +1110,11 @@ <string name="accessibility_magnification_done" msgid="263349129937348512">"סיום"</string> <string name="accessibility_magnifier_edit" msgid="1522877239671820636">"עריכה"</string> <string name="accessibility_magnification_magnifier_window_settings" msgid="2834685072221468434">"ההגדרות של חלון ההגדלה"</string> - <string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"מקישים כדי לפתוח את תכונות הנגישות. אפשר להחליף את הלחצן או להתאים אותו אישית בהגדרות.\n\n"<annotation id="link">"הצגת ההגדרות"</annotation></string> - <string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"כדי להסתיר זמנית את הלחצן, יש להזיז אותו לקצה"</string> + <string name="accessibility_floating_button_migration_tooltip" msgid="5217151214439341902">"לוחצים כדי לפתוח את תכונות הנגישות. אפשר להחליף את הכפתור או להתאים אותו אישית בהגדרות.\n\n"<annotation id="link">"הצגת ההגדרות"</annotation></string> + <string name="accessibility_floating_button_docking_tooltip" msgid="6814897496767461517">"כדי להסתיר זמנית את הכפתור, יש להזיז אותו לקצה"</string> <string name="accessibility_floating_button_undo" msgid="511112888715708241">"ביטול"</string> - <string name="accessibility_floating_button_hidden_notification_title" msgid="4115036997406994799">"לחצן הנגישות מוסתר"</string> - <string name="accessibility_floating_button_hidden_notification_text" msgid="1457021647040915658">"אפשר להקיש כדי לראות את לחצן הנגישות"</string> + <string name="accessibility_floating_button_hidden_notification_title" msgid="4115036997406994799">"כפתור הנגישות מוסתר"</string> + <string name="accessibility_floating_button_hidden_notification_text" msgid="1457021647040915658">"אפשר ללחוץ כדי לראות את כפתור הנגישות"</string> <string name="accessibility_floating_button_undo_message_label_text" msgid="9017658016426242640">"קיצור הדרך אל <xliff:g id="FEATURE_NAME">%s</xliff:g> הוסר"</string> <string name="accessibility_floating_button_undo_message_number_text" msgid="4909270290725226075">"{count,plural, =1{קיצור הדרך הוסר}one{# קיצורי דרך הוסרו}two{# קיצורי דרך הוסרו}other{# קיצורי דרך הוסרו}}"</string> <string name="accessibility_floating_button_action_move_top_left" msgid="6253520703618545705">"העברה לפינה השמאלית העליונה"</string> @@ -1214,7 +1215,7 @@ <string name="media_output_dialog_single_device" msgid="3102758980643351058">"נבחר מכשיר אחד"</string> <string name="media_output_dialog_multiple_devices" msgid="1093771040315422350">"נבחרו <xliff:g id="COUNT">%1$d</xliff:g> מכשירים"</string> <string name="media_output_dialog_disconnected" msgid="7090512852817111185">"(מנותק)"</string> - <string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"לא ניתן להחליף. צריך להקיש כדי לנסות שוב."</string> + <string name="media_output_dialog_connect_failed" msgid="3080972621975339387">"לא ניתן להחליף. צריך ללחוץ כדי לנסות שוב."</string> <string name="media_output_dialog_pairing_new" msgid="5098212763195577270">"חיבור מכשיר"</string> <string name="media_output_dialog_unknown_launch_app_name" msgid="1084899329829371336">"אפליקציה לא ידועה"</string> <string name="media_output_dialog_button_stop_casting" msgid="6581379537930199189">"עצירת ההעברה (casting)"</string> @@ -1245,7 +1246,7 @@ <string name="copy_to_clipboard_a11y_action" msgid="4312789069718446749">"העתקה ללוח."</string> <string name="basic_status" msgid="2315371112182658176">"פתיחת שיחה"</string> <string name="select_conversation_title" msgid="6716364118095089519">"ווידג\'טים של שיחות"</string> - <string name="select_conversation_text" msgid="3376048251434956013">"יש להקיש על שיחה כדי להוסיף אותה למסך הבית"</string> + <string name="select_conversation_text" msgid="3376048251434956013">"יש ללחוץ על שיחה כדי להוסיף אותה למסך הבית"</string> <string name="no_conversations_text" msgid="5354115541282395015">"השיחות האחרונות שלך יופיעו כאן"</string> <string name="priority_conversations" msgid="3967482288896653039">"שיחות בעדיפות גבוהה"</string> <string name="recent_conversations" msgid="8531874684782574622">"שיחות אחרונות"</string> @@ -1280,17 +1281,16 @@ <string name="new_status_content_description" msgid="6046637888641308327">"הסטטוס של <xliff:g id="NAME">%1$s</xliff:g> עודכן: <xliff:g id="STATUS">%2$s</xliff:g>"</string> <string name="person_available" msgid="2318599327472755472">"אונליין"</string> <string name="battery_state_unknown_notification_title" msgid="8464703640483773454">"בעיה בקריאת מדדי הסוללה"</string> - <string name="battery_state_unknown_notification_text" msgid="13720937839460899">"יש להקיש כדי להציג מידע נוסף"</string> + <string name="battery_state_unknown_notification_text" msgid="13720937839460899">"יש ללחוץ כדי להציג מידע נוסף"</string> <string name="qs_alarm_tile_no_alarm" msgid="4826472008616807923">"לא הוגדרה"</string> <string name="accessibility_bouncer" msgid="5896923685673320070">"הזנת קוד נעילת המסך"</string> - <string name="accessibility_side_fingerprint_indicator_label" msgid="1673807833352363712">"צריך לגעת בחיישן טביעות האצבע. זה הלחצן הקצר יותר בצד של הטלפון"</string> + <string name="accessibility_side_fingerprint_indicator_label" msgid="1673807833352363712">"צריך לגעת בחיישן טביעות האצבע. זה הכפתור הקצר יותר בצד של הטלפון"</string> <string name="accessibility_fingerprint_label" msgid="5255731221854153660">"חיישן טביעות אצבע"</string> <string name="accessibility_authenticate_hint" msgid="798914151813205721">"אימות"</string> <string name="accessibility_enter_hint" msgid="2617864063504824834">"הזנת מכשיר"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"שימוש בטביעת אצבע כדי לפתוח"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"נדרש אימות. יש לגעת בחיישן טביעות האצבע כדי לבצע אימות."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"שיחה פעילה"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"חבילת גלישה"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"מחובר"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"מחובר באופן זמני"</string> @@ -1300,7 +1300,7 @@ <string name="non_carrier_network_unavailable" msgid="770049357024492372">"אין רשתות זמינות אחרות"</string> <string name="all_network_unavailable" msgid="4112774339909373349">"אין רשתות זמינות"</string> <string name="turn_on_wifi" msgid="1308379840799281023">"Wi-Fi"</string> - <string name="tap_a_network_to_connect" msgid="1565073330852369558">"כדי להתחבר לרשת צריך להקיש עליה"</string> + <string name="tap_a_network_to_connect" msgid="1565073330852369558">"כדי להתחבר לרשת צריך ללחוץ עליה"</string> <string name="unlock_to_view_networks" msgid="5072880496312015676">"צריך לבטל את הנעילה כדי להציג את הרשתות"</string> <string name="wifi_empty_list_wifi_on" msgid="3864376632067585377">"בתהליך חיפוש רשתות…"</string> <string name="wifi_failed_connect_message" msgid="4161863112079000071">"נכשל הניסיון להתחבר לרשת"</string> @@ -1326,7 +1326,7 @@ <string name="clipboard_edit_text_description" msgid="805254383912962103">"עריכת הטקסט שהועתק"</string> <string name="clipboard_edit_image_description" msgid="8904857948976041306">"עריכת התמונה שהועתקה"</string> <string name="clipboard_send_nearby_description" msgid="4629769637846717650">"שליחה למכשיר בקרבת מקום"</string> - <string name="clipboard_text_hidden" msgid="7926899867471812305">"יש להקיש כדי להציג"</string> + <string name="clipboard_text_hidden" msgid="7926899867471812305">"יש ללחוץ כדי להציג"</string> <string name="clipboard_text_copied" msgid="5100836834278976679">"הטקסט הועתק"</string> <string name="clipboard_image_copied" msgid="3793365360174328722">"התמונה הועתקה"</string> <string name="clipboard_content_copied" msgid="144452398567828145">"התוכן הועתק"</string> @@ -1340,7 +1340,7 @@ <string name="dream_overlay_location_active" msgid="6484763493158166618">"המיקום פעיל"</string> <string name="dream_overlay_status_bar_wifi_off" msgid="4497069245055003582">"Wi‑Fi לא זמין"</string> <string name="dream_overlay_status_bar_priority_mode" msgid="5428462123314728739">"מצב עדיפות"</string> - <string name="dream_overlay_status_bar_alarm_set" msgid="566707328356590886">"ההתראה מוגדרת"</string> + <string name="dream_overlay_status_bar_alarm_set" msgid="566707328356590886">"השעון המעורר מוגדר"</string> <string name="dream_overlay_status_bar_camera_off" msgid="5273073778969890823">"המצלמה כבויה"</string> <string name="dream_overlay_status_bar_mic_off" msgid="8366534415013819396">"המיקרופון כבוי"</string> <string name="dream_overlay_status_bar_camera_mic_off" msgid="3199425257833773569">"המצלמה והמיקרופון כבויים"</string> @@ -1433,17 +1433,18 @@ <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ריבוי משימות"</string> <string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"מסך מפוצל"</string> <string name="shortcut_helper_category_input" msgid="8674018654124839566">"קלט"</string> - <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"קיצורי דרך של אפליקציות"</string> + <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"מקשי קיצור לאפליקציות"</string> <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"האפליקציה הנוכחית"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"נגישות"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"מקשי קיצור"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"התאמה אישית של מקשי הקיצור"</string> + <!-- no translation found for shortcut_helper_customize_mode_title (8327297960035006036) --> + <skip /> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"להסיר את קיצור הדרך?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"לאפס לברירת המחדל?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"צריך להקיש על מקש כדי להקצות מקש קיצור"</string> <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"קיצור הדרך יימחק לתמיד."</string> <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"הפעולה הזו תמחק לתמיד את כל קיצורי הדרך שמותאמים אישית."</string> - <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"קיצורי דרך לחיפוש"</string> + <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"חיפוש מקשי קיצור"</string> <string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"אין תוצאות חיפוש"</string> <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"סמל הכיווץ"</string> <string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"סמל מקש הפעולה (\"מטא\")"</string> @@ -1465,6 +1466,10 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"שילוב המקשים הזה כבר בשימוש. אפשר לנסות מקש אחר."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"לא ניתן להגדיר את קיצור הדרך."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <!-- no translation found for shortcut_helper_add_shortcut_button_label (7655779534665954910) --> + <skip /> + <!-- no translation found for shortcut_helper_delete_shortcut_button_label (3148773472696137052) --> + <skip /> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ניווט באמצעות המקלדת"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"מידע על מקשי קיצור"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ניווט באמצעות לוח המגע"</string> @@ -1510,13 +1515,13 @@ <string name="redacted_notification_single_line_text" msgid="8684166405005242945">"צריך לבטל את הנעילה כדי לראות"</string> <string name="contextual_education_dialog_title" msgid="4630392552837487324">"חינוך בהתאם להקשר"</string> <string name="back_edu_notification_title" msgid="5624780717751357278">"אפשר להשתמש בלוח המגע כדי לחזור אחורה"</string> - <string name="back_edu_notification_content" msgid="2497557451540954068">"מחליקים ימינה או שמאלה עם שלוש אצבעות. ניתן להקיש כדי לקבל מידע נוסף על התנועות."</string> + <string name="back_edu_notification_content" msgid="2497557451540954068">"מחליקים ימינה או שמאלה עם שלוש אצבעות. ניתן ללחוץ כדי לקבל מידע נוסף על התנועות."</string> <string name="home_edu_notification_title" msgid="6097902076909654045">"איך להשתמש בלוח המגע כדי לעבור למסך הבית"</string> - <string name="home_edu_notification_content" msgid="6631697734535766588">"מחליקים למעלה עם שלוש אצבעות. אפשר להקיש כדי לקבל מידע נוסף על התנועות."</string> + <string name="home_edu_notification_content" msgid="6631697734535766588">"מחליקים למעלה עם שלוש אצבעות. אפשר ללחוץ כדי לקבל מידע נוסף על התנועות."</string> <string name="overview_edu_notification_title" msgid="1265824157319562406">"איך להשתמש בלוח המגע כדי לראות את האפליקציות האחרונות"</string> - <string name="overview_edu_notification_content" msgid="3578204677648432500">"מחליקים למעלה ולוחצים לחיצה ארוכה עם שלוש אצבעות. אפשר להקיש כדי לקבל מידע נוסף על התנועות."</string> + <string name="overview_edu_notification_content" msgid="3578204677648432500">"מחליקים למעלה ולוחצים לחיצה ארוכה עם שלוש אצבעות. אפשר ללחוץ כדי לקבל מידע נוסף על התנועות."</string> <string name="all_apps_edu_notification_title" msgid="372262997265569063">"איך להשתמש במקלדת כדי לראות את כל האפליקציות"</string> - <string name="all_apps_edu_notification_content" msgid="3255070575694025585">"בכל שלב אפשר ללחוץ על מקש הפעולה. ניתן להקיש כדי לקבל מידע נוסף על התנועות."</string> + <string name="all_apps_edu_notification_content" msgid="3255070575694025585">"בכל שלב אפשר ללחוץ על מקש הפעולה. ניתן ללחוץ כדי לקבל מידע נוסף על התנועות."</string> <string name="accessibility_deprecate_extra_dim_dialog_title" msgid="910988771011857460">"התכונה \'מעומעם במיוחד\' נוספה לפס ההזזה לבהירות"</string> <string name="accessibility_deprecate_extra_dim_dialog_description" msgid="4453123359258743230">"עכשיו אפשר להפוך את המסך למעומעם במיוחד באמצעות הפחתה נוספת של רמת הבהירות.\n\nהתכונה הזו היא עכשיו חלק מפס ההזזה לבהירות, לכן קיצורי הדרך לתכונה \'מעומעם במיוחד\' נמצאים בתהליך הסרה."</string> <string name="accessibility_deprecate_extra_dim_dialog_button" msgid="3947537827396916005">"הסרה של קיצורי הדרך לתכונה \'מעומעם במיוחד\'"</string> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 4634a50c7199..8941217e8cbd 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"衛生、接続状態良好"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"衛生、接続利用可能"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"衛星 SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"緊急通報または SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>、<xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>。"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"圏外"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"レベル 1"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"デバイスを入力"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"指紋を使って開いてください"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"認証が必要です。指紋認証センサーをタッチして認証してください。"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"通話中"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"モバイルデータ"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"接続済み"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"一時的に接続されています"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"現在のアプリ"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ユーザー補助"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"キーボード ショートカット"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"キーボード ショートカットのカスタマイズ"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ショートカットのカスタマイズ"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"ショートカットを削除しますか?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"デフォルトにリセットしますか?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"ショートカットを割り当てるキーを押してください"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"このキーの組み合わせはすでに使用されています。別のキーを試してください。"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"ショートカットを設定できません。"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"ショートカットを追加"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"ショートカットを削除"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"キーボードを使用して移動する"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"キーボード ショートカットの詳細"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"タッチパッドを使用して移動する"</string> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index fc0b81dbcca5..6937048c1826 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"კარგი სატელიტური კავშირი"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ხელმისაწვდომია სატელიტური კავშირი"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"სატელიტური SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"გადაუდებელი ზარი ან SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"სიგნალი არ არის"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ერთი ხაზი"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"მოწყობილობის შეყვანა"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"გასახსნელად გამოიყენეთ თითის ანაბეჭდი"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"საჭიროა ავტორიზაცია. ავტორიზაციისთვის შეეხეთ თითის ანაბეჭდის სენსორს."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"მიმდინარე ზარი"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"მობილური ინტერნეტი"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"დაკავშირებული"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"დროებით დაკავშირებული"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"მიმდინარე აპი"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"მისაწვდომობა"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"კლავიატურის მალსახმობები"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"კლავიატურის მალსახმობების მორგება"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"მალსახმობების მორგება"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"გსურთ მალსახმობის წაშლა?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"გსურთ ნაგულისხმევზე გადაყენება?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"მალსახმობის მინიჭებისთვის დააჭირეთ კლავიშს"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"კლავიშების კომბინაცია უკვე გამოიყენება. ცადეთ სხვა კლავიში."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"მალსახმობის დაყენება ვერ ხერხდება."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"მალსახმობის დამატება"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"მალსახმობის წაშლა"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ნავიგაცია კლავიატურის გამოყენებით"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"კლავიატურის მალსახმობების სწავლა"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ნავიგაცია სენსორული პანელის გამოყენებით"</string> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 643a1c27b675..d6f0a006f588 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Жерсерік, байланыс жақсы."</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Жерсерік, байланыс бар."</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Құтқару қызметіне қоңырау шалу немесе SOS сигналын жіберу"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"сигнал жоқ"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"бір жолақ"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"құрылғыны енгізу"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Ашу үшін саусақ ізін пайдаланыңыз."</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Аутентификациядан өту қажет. Ол үшін саусақ ізін оқу сканерін түртіңіз."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Ағымдағы қоңырау"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобильдік интернет"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Жалғанды"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Уақытша байланыс орнатылды."</string> @@ -1437,13 +1437,13 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Қолданыстағы қолданба"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Арнайы мүмкіндіктер"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Перне тіркесімдері"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Пернелер тіркесімін бейімдеу"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Пернелер тіркесімін бейімдеу"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Тіркесімді өшіру керек пе?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Әдепкі тіркесімге қайтару керек пе?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Тіркесім тағайындау үшін пернені басыңыз."</string> <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Арнаулы тіркесіміңіз біржола жойылады."</string> <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Мұндайда барлық арнаулы тіркесім біржола жойылады."</string> - <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Іздеу жылдам пәрмендері"</string> + <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Тіркесімдерді іздеу"</string> <string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Іздеу нәтижелері жоқ."</string> <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Жию белгішесі"</string> <string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"Әрекет немесе Meta пернесінің белгішесі"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Бұл пернелер тіркесімі қазір қолданыста. Басқа перне таңдаңыз."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Перне тіркесімін орнату мүмкін емес."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Жылдам пәрмен қосу"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Жылдам пәрменді жою"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Пернетақтамен жұмыс істеңіз"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Перне тіркесімдерін үйреніңіз."</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Сенсорлық тақтамен жұмыс істеңіз"</string> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 239e2a9764a0..efbc0aa0d68c 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ផ្កាយរណប មានការតភ្ជាប់ល្អ"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ផ្កាយរណប អាចតភ្ជាប់បាន"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"ការប្រកាសអាសន្នតាមផ្កាយរណប"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"ការហៅទៅលេខសង្គ្រោះបន្ទាន់ ឬ SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>។"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"គ្មានសញ្ញា"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"មួយកាំ"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"បញ្ចូលឧបករណ៍"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ប្រើស្នាមម្រាមដៃ ដើម្បីបើក"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"តម្រូវឱ្យមានការផ្ទៀងផ្ទាត់។ សូមចុចឧបករណ៍ចាប់ស្នាមម្រាមដៃ ដើម្បីផ្ទៀងផ្ទាត់។"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"ការហៅដែលកំពុងដំណើរការ"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"ទិន្នន័យទូរសព្ទចល័ត"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"បានភ្ជាប់"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"បានភ្ជាប់ជាបណ្ដោះអាសន្ន"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"កម្មវិធីបច្ចុប្បន្ន"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ភាពងាយស្រួល"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"ផ្លូវកាត់ក្ដារចុច"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"ប្ដូរផ្លូវកាត់ក្ដារចុចតាមបំណង"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ប្ដូរផ្លូវកាត់តាមបំណង"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"ដកផ្លូវកាត់ចេញឬ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"កំណត់ឡើងវិញទៅលំនាំដើមឬ?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"ចុចគ្រាប់ចុច ដើម្បីកំណត់ផ្លូវកាត់"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"បន្សំគ្រាប់ចុចនេះត្រូវបានប្រើប្រាស់ហើយ។ សាកល្បងគ្រាប់ចុចផ្សេង។"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"មិនអាចកំណត់ផ្លូវកាត់បានទេ។"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"បញ្ចូលផ្លូវកាត់"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"លុបផ្លូវកាត់"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"រុករកដោយប្រើក្ដារចុចរបស់អ្នក"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ស្វែងយល់អំពីផ្លូវកាត់ក្ដារចុច"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"រុករកដោយប្រើផ្ទាំងប៉ះរបស់អ្នក"</string> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index 0b0caa4e51eb..ded267feee65 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ಸ್ಯಾಟಲೈಟ್, ಕನೆಕ್ಷನ್ ಉತ್ತಮವಾಗಿದೆ"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ಸ್ಯಾಟಲೈಟ್, ಕನೆಕ್ಷನ್ ಲಭ್ಯವಿದೆ"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"ಸ್ಯಾಟಲೈಟ್ SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"ತುರ್ತು ಕರೆಗಳು ಅಥವಾ SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ಸಿಗ್ನಲ್ ಇಲ್ಲ"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ಒಂದು ಬಾರ್"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ಸಾಧನವನ್ನು ಪ್ರವೇಶಿಸಿ"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ತೆರೆಯುವುದಕ್ಕಾಗಿ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ನು ಬಳಸಿ"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ದೃಢೀಕರಣದ ಅವಶ್ಯಕತೆಯಿದೆ. ದೃಢೀಕರಿಸಲು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆ"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"ಮೊಬೈಲ್ ಡೇಟಾ"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"ಕನೆಕ್ಟ್ ಆಗಿದೆ"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ತಾತ್ಕಾಲಿಕವಾಗಿ ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"ಪ್ರಸ್ತುತ ಆ್ಯಪ್"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ಆ್ಯಕ್ಸೆಸಿಬಿಲಿಟಿ"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ಗಳು"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಕಸ್ಟಮೈಸ್ ಮಾಡಿ"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಬೇಕೇ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ಡೀಫಾಲ್ಟ್ಗೆ ರೀಸೆಟ್ ಮಾಡಬೇಕೆ?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ನಿಯೋಜಿಸಲು ಕೀಯನ್ನು ಒತ್ತಿರಿ"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"ಕೀ ಸಂಯೋಜನೆಯು ಈಗಾಗಲೇ ಬಳಕೆಯಲ್ಲಿದೆ. ಮತ್ತೊಂದು ಕೀ ಬಳಸಿ ನೋಡಿ."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"ಶಾರ್ಟ್ಕಟ್ ಅನ್ನು ಸೆಟ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"ಶಾರ್ಟ್ಕಟ್ ಸೇರಿಸಿ"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"ಶಾರ್ಟ್ಕಟ್ ಅಳಿಸಿ"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ನಿಮ್ಮ ಕೀಬೋರ್ಡ್ ಬಳಸಿ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ಕೀಬೋರ್ಡ್ ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಕಲಿಯಿರಿ"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ನಿಮ್ಮ ಟಚ್ಪ್ಯಾಡ್ ಬಳಸಿ ನ್ಯಾವಿಗೇಟ್ ಮಾಡಿ"</string> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 14736604bcf8..732c9bc8620c 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"위성, 연결 상태 양호"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"위성, 연결 가능"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"위성 긴급 SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"긴급 전화 또는 SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"신호가 없습니다"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"신호 막대가 1개입니다"</string> @@ -882,7 +883,7 @@ <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"앱 목록 열기"</string> <string name="group_system_access_system_settings" msgid="8731721963449070017">"설정 열기"</string> <string name="group_system_access_google_assistant" msgid="7210074957915968110">"어시스턴트 열기"</string> - <string name="group_system_lock_screen" msgid="7391191300363416543">"잠금 화면"</string> + <string name="group_system_lock_screen" msgid="7391191300363416543">"화면 잠금"</string> <string name="group_system_quick_memo" msgid="3764560265935722903">"메모 작성"</string> <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"멀티태스킹"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"앱이 오른쪽에 오도록 화면 분할 사용"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"기기 입력"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"지문으로 열기"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"인증이 필요합니다. 지문 센서를 터치하여 인증하세요."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"진행 중인 통화"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"모바일 데이터"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"연결됨"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"일시적으로 연결됨"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"현재 앱"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"접근성"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"단축키"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"단축키 맞춤설정"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"단축키 맞춤설정"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"단축키를 삭제하시겠어요?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"기본값으로 재설정하시겠어요?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"키를 눌러 단축키 지정"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"이미 사용 중인 키 조합입니다. 다른 키를 사용해 보세요."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"단축키를 설정할 수 없습니다."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"단축키 추가"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"단축키 삭제"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"키보드를 사용하여 이동"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"단축키에 관해 알아보세요."</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"터치패드를 사용하여 이동"</string> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index ad70e7961dc6..eb5960fa23cd 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Спутник, байланыш жакшы"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Спутник, байланыш бар"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Спутник SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Шашылыш чалуулар же SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"сигнал жок"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"бир мамыча"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"түзмөккө кирүү"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Манжаңыздын изи менен ачыңыз"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Аныктыкты текшерүү талап кылынат. Аныктыгын текшерүү үчүн манжа изинин сенсоруна тийип коюңуз."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Учурдагы чалуу"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобилдик трафик"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Туташты"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Убактылуу туташып турат"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Учурдагы колдонмо"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Атайын мүмкүнчүлүктөр"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Ыкчам баскычтар"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Ыкчам баскычтарды ыңгайлаштыруу"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Ыкчам баскычтарды тууралоо"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Ыкчам баскыч өчүрүлсүнбү?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Баштапкы абалга келтиресизби?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Ыкчам баскычты дайындоо үчүн баскычты басыңыз"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Ачкычтардын айкалышы колдонулууда. Башка ачкычты байкап көрүңүз."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Ыкчам баскычты коюу мүмкүн эмес."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Ыкчам баскыч кошуу"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Ыкчам баскычты өчүрүү"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Керектүү нерселерге баскычтоп аркылуу өтүү"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Ыкчам баскычтар тууралуу билип алыңыз"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Керектүү жерге сенсордук такта аркылуу өтөсүз"</string> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index 1c3d4110b793..19ddc7aa5c9a 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ດາວທຽມ, ການເຊື່ອມຕໍ່ດີ"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ດາວທຽມ, ການເຊື່ອມຕໍ່ທີ່ພ້ອມນຳໃຊ້"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS ດາວທຽມ"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"ໂທສຸກເສີນ ຫຼື SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ບໍ່ມີສັນຍານ"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"1 ຂີດ"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ເຂົ້າອຸປະກອນ"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ໃຊ້ລາຍນິ້ວມືເພື່ອເປີດ"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ຕ້ອງພິສູດຢືນຢັນ. ແຕະໃສ່ເຊັນເຊີລາຍນິ້ວມືເພື່ອພິສູດຢືນຢັນ."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"ສາຍທີ່ສົນທະນາຢູ່"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"ອິນເຕີເນັດມືຖື"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"ເຊື່ອມຕໍ່ແລ້ວ"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ເຊື່ອມຕໍ່ແລ້ວຊົ່ວຄາວ"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"ແອັບປັດຈຸບັນ"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ການຊ່ວຍເຂົ້າເຖິງ"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"ຄີລັດ"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"ປັບແຕ່ງຄີລັດ"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ປັບແຕ່ງທາງລັດ"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"ລຶບທາງລັດອອກບໍ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ຣີເຊັດກັບຄືນເປັນຄ່າເລີ່ມຕົ້ນບໍ?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"ກົດປຸ່ມເພື່ອກຳນົດທາງລັດ"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"ນໍາໃຊ້ປຸ່ມປະສົມຢູ່ແລ້ວ. ໃຫ້ລອງປຸ່ມອື່ນ."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"ຕັ້ງທາງລັດບໍ່ໄດ້."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"ເພີ່ມທາງລັດ"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"ລຶບທາງລັດ"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ນຳທາງໂດຍໃຊ້ແປ້ນພິມຂອງທ່ານ"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ສຶກສາຄີລັດ"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ນຳທາງໂດຍໃຊ້ແຜ່ນສຳຜັດຂອງທ່ານ"</string> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index eb6fd2d9eea7..71ce30db0a02 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Palydovas, geras ryšys"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Palydovas, pasiekiamas ryšys"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Prisijungimas prie palydovo kritiniu atveju"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Skambučiai pagalbos numeriu arba pagalbos iškvietimas kritiniu atveju"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"„<xliff:g id="CARRIER_NAME">%1$s</xliff:g>“, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"nėra signalo"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"viena juosta"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"pasiektumėte įrenginį"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Naudokite kontrolinį kodą, kad atidarytumėte"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Reikia nustatyti tapatybę. Nustatykite tapatybę palietę kontrolinio kodo jutiklį."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Vykstantis skambutis"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiliojo ryšio duomenys"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Prisijungta"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Laikinai prijungta"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Esama programa"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pritaikomumas"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Spartieji klavišai"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Sparčiųjų klavišų tinkinimas"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Sparčiųjų klavišų tinkinimas"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Pašalinti spartųjį klavišą?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Iš naujo nustatyti numatytąjį nustatymą?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Paspauskite klavišą, kad priskirtumėte spartųjį klavišą"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Klavišų derinys jau naudojamas. Bandykite naudoti kitą klavišą."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Sparčiojo klavišo nustatyti negalima."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Pridėti spartųjį klavišą"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Ištrinti spartųjį klavišą"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naršykite naudodamiesi klaviatūra"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Sužinokite apie sparčiuosius klavišus"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naršykite naudodamiesi jutikline dalimi"</string> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 7740d2d14c0f..271c081ea3a9 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelīts, labs savienojums"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelīts, ir pieejams savienojums"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satelīta SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Ārkārtas izsaukumi vai ārkārtas zvani"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"nav signāla"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"viena josla"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"izmantotu ierīci"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Atvēršanai izmantojiet pirksta nospiedumu"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Nepieciešama autentifikācija. Pieskarieties pirksta nospieduma sensoram, lai veiktu autentificēšanu."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Notiekošs zvans"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilie dati"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Ir izveidots savienojums"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Īslaicīgi izveidots savienojums"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Pašreizējā lietotne"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Pieejamība"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Īsinājumtaustiņi"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Īsinājumtaustiņu pielāgošana"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Īsinājumtaustiņu pielāgošana"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Vai noņemt saīsni?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Vai atiestatīt noklusējuma vērtības?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Lai piešķirtu īsinājumtaustiņu, nospiediet taustiņu"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Taustiņu kombinācija jau tiek izmantota. Izmēģiniet citu taustiņu."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Nevar iestatīt saīsni."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Pievienot saīsni"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Dzēst saīsni"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Pārvietošanās, izmantojot tastatūru"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Uzziniet par īsinājumtaustiņiem."</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Pārvietošanās, izmantojot skārienpaliktni"</string> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index e4064e239b34..b478a5b38c4b 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Добра сателитска врска"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Достапна е сателитска врска"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Сателитски SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Итни повици или SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"нема сигнал"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"една цртичка"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"внесете уред"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Користете отпечаток за да се отвори"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Потребна е проверка. Допрете го сензорот за отпечаток за да автентицирате."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Тековен повик"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобилен интернет"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Поврзано"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Привремено поврзано"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Тековна апликација"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Пристапност"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Кратенки од тастатура"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Приспособете ги кратенките од тастатурата"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Приспособете ги кратенките"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Да се отстрани кратенката?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Да се ресетира на стандардните поставки?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Притиснете копче за да доделите кратенка"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Комбинацијата на копчиња веќе се користи. Обидете се со друго копче."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Кратенката не може да се постави."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Додај кратенка"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Избриши кратенка"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Движете се со користење на тастатурата"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Научете ги кратенките од тастатурата"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Движете се со користење на допирната подлога"</string> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 601e6a13e628..4885595c860b 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"സാറ്റലൈറ്റ്, മികച്ച കണക്ഷൻ"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"സാറ്റലൈറ്റ്, കണക്ഷൻ ലഭ്യമാണ്"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"സാറ്റലൈറ്റ് SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"എമർജൻസി കോൾ അല്ലെങ്കിൽ SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"സിഗ്നൽ ഇല്ല"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ഒരു ബാർ"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ഉപകരണം നൽകുക"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"തുറക്കുന്നതിന് നിങ്ങളുടെ ഫിംഗർപ്രിന്റ് ഉപയോഗിക്കുക"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"പരിശോധിച്ചുറപ്പിക്കേണ്ടതുണ്ട്. പരിശോധിച്ചുറപ്പിക്കാൻ, വിരലടയാള സെൻസറിൽ സ്പർശിക്കുക."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"കോളിലാണ്"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"മൊബൈൽ ഡാറ്റ"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"കണക്റ്റ് ചെയ്തു"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"താൽക്കാലികമായി കണക്റ്റ് ചെയ്തിരിക്കുന്നു"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"നിലവിലെ ആപ്പ്"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ഉപയോഗസഹായി"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"കീബോഡ് കുറുക്കുവഴികൾ"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"കീബോർഡ് കുറുക്കുവഴികൾ ഇഷ്ടാനുസൃതമാക്കുക"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"കുറുക്കുവഴികൾ ഇഷ്ടാനുസൃതമാക്കുക"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"കുറുക്കുവഴി നീക്കം ചെയ്യണോ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ഡിഫോൾട്ടിലേക്ക് തിരികെ റീസെറ്റ് ചെയ്യണോ?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"കുറുക്കുവഴി അസൈൻ ചെയ്യാൻ കീ അമർത്തുക"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"കീ കോമ്പിനേഷൻ ഇതിനകം ഉപയോഗത്തിലുണ്ട്. മറ്റൊരു കീ പരീക്ഷിക്കുക."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"കുറുക്കുവഴി സജ്ജീകരിക്കാനാകില്ല."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"കുറുക്കുവഴി ചേർക്കുക"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"കുറുക്കുവഴി ഇല്ലാതാക്കുക"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"നിങ്ങളുടെ കീബോർഡ് ഉപയോഗിച്ച് നാവിഗേറ്റ് ചെയ്യുക"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"കീബോർഡ് കുറുക്കുവഴികൾ മനസ്സിലാക്കുക"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"നിങ്ങളുടെ ടച്ച്പാഡ് ഉപയോഗിച്ച് നാവിഗേറ്റ് ചെയ്യുക"</string> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index b865eedbf26e..52dff9e8afdd 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Хиймэл дагуул, холболт сайн байна"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Хиймэл дагуул, холболт боломжтой"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Хиймэл дагуул SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Яаралтай дуудлага эсвэл SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"дохио байхгүй"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"нэг шон"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"төхөөрөмж оруулах"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Нээхийн тулд хурууны хээг ашиглана уу"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Баталгаажуулалт шаардлагатай. Баталгаажуулахын тулд хурууны хээ мэдрэгчид хүрнэ үү."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Үргэлжилж буй дуудлага"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобайл дата"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Холбогдсон"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Түр зуур холбогдсон"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Одоогийн апп"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Хандалт"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Товчлуурын шууд холбоос"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Товчлуурын шууд холбоосыг өөрчлөх"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Товчлолыг өөрчлөх"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Товчлолыг хасах уу?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Өгөгдмөл рүү буцааж шинэчлэх үү?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Товчлол оноохын тулд товч дарна уу"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Товчийн хослолыг аль хэдийн ашиглаж байна. Өөр товч туршиж үзнэ үү."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Товчлол тохируулах боломжгүй."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Товчлол нэмэх"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Товчлол устгах"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Гараа ашиглан шилжих"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Товчлуурын шууд холбоосыг мэдэж аваарай"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Мэдрэгч самбараа ашиглан шилжээрэй"</string> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index e257ba159788..85ae835df9fe 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"सॅटेलाइट, चांगले कनेक्शन"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"सॅटेलाइट, कनेक्शन उपलब्ध"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"सॅटेलाइट SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"आणीबाणी कॉल किंवा SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"कोणताही सिग्नल नाही"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"एक बार"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"डिव्हाइस एंटर करा"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"उघडण्यासाठी फिंगरप्रिंट वापरा"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ऑथेंटिकेशन आवश्यक आहे. ऑथेंटिकेट करण्यासाठी फिंगरप्रिंट सेन्सरला स्पर्श करा."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"सुरू असलेला कॉल"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"मोबाइल डेटा"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"कनेक्ट केले आहे"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"तात्पुरते कनेक्ट केलेले"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"सध्याचे अॅप"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"अॅक्सेसिबिलिटी"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"कीबोर्ड शॉर्टकट"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"कीबोर्ड शॉर्टकट कस्टमाइझ करा"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"शॉर्टकट कस्टमाइझ करा"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"शॉर्टकट काढून टाकायचा आहे का?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"डीफॉल्टवर पुन्हा रीसेट करायचे आहे का?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"शॉर्टकट असाइन करण्यासाठी की प्रेस करा"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"की कॉम्बिनेशन आधीपासून वापरले जात आहे. दुसरी की वापरून पहा."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"शॉर्टकट सेट करू शकत नाही."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"शॉर्टकट जोडा"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"शॉर्टकट हटवा"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"तुमचा कीबोर्ड वापरून नेव्हिगेट करा"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"कीबोर्ड शॉर्टकट जाणून घ्या"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"तुमचा टचपॅड वापरून नेव्हिगेट करा"</string> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index bf65859aab7e..b5f0d147f972 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, sambungan yang baik"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, sambungan tersedia"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS via Satelit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Panggilan kecemasan atau SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"tiada isyarat"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"satu bar"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"akses peranti"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gunakan cap jari untuk membuka"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Pengesahan diperlukan. Sentuh penderia cap jari untuk pengesahan."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Panggilan sedang berlangsung"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Data mudah alih"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Disambungkan"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Disambungkan buat sementara waktu"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Apl Semasa"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Kebolehaksesan"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Pintasan papan kekunci"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Sesuaikan pintasan papan kekunci"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Sesuaikan pintasan"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Alih keluar pintasan?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Tetapkan kembali kepada lalai?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Tekan kekunci untuk menetapkan pintasan"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Gabungan kekunci sudah digunakan. Cuba kekunci lain."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Pintasan tidak boleh ditetapkan."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Tambahkan pintasan"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Padamkan pintasan"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigasi menggunakan papan kekunci"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Ketahui pintasan papan kekunci"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigasi menggunakan pad sentuh anda"</string> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 1c4055687d26..d24c4a0b1631 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ဂြိုဟ်တု၊ ချိတ်ဆက်မှု ကောင်းသည်"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ဂြိုဟ်တု၊ ချိတ်ဆက်မှု ရနိုင်သည်"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"အရေးပေါ်ဖုန်းခေါ်ခြင်း (သို့) SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>၊ <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>။"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"လိုင်းမရှိပါ"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"တစ်ဘား"</string> @@ -830,7 +831,7 @@ <string name="keyboard_key_button_template" msgid="8005673627272051429">"ခလုတ် <xliff:g id="NAME">%1$s</xliff:g>"</string> <string name="keyboard_key_home" msgid="3734400625170020657">"ပင်မ"</string> <string name="keyboard_key_back" msgid="4185420465469481999">"နောက်သို့"</string> - <string name="keyboard_key_tab" msgid="4592772350906496730">"တဘ်ခလုတ်"</string> + <string name="keyboard_key_tab" msgid="4592772350906496730">"Tab"</string> <string name="keyboard_key_space" msgid="6980847564173394012">"Space"</string> <string name="keyboard_key_enter" msgid="8633362970109751646">"Enter ခလုတ်"</string> <string name="keyboard_key_backspace" msgid="4095278312039628074">"နောက်ပြန်ခလုတ်"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"စက်ပစ္စည်းသို့ ဝင်ရန်"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ဖွင့်ရန် လက်ဗွေကို သုံးပါ"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"အထောက်အထားစိစစ်ခြင်း လိုအပ်သည်။ အထောက်အထားစိစစ်ရန် လက်ဗွေ အာရုံခံကိရိယာကို ထိပါ။"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"လက်ရှိခေါ်ဆိုမှု"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"မိုဘိုင်းဒေတာ"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"ချိတ်ဆက်ထားသည်"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ယာယီချိတ်ဆက်ထားသည်"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"လက်ရှိအက်ပ်"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"အများသုံးနိုင်မှု"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"လက်ကွက်ဖြတ်လမ်းများ"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"လက်ကွက်ဖြတ်လမ်းများကို စိတ်ကြိုက်လုပ်ခြင်း"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ဖြတ်လမ်းများ စိတ်ကြိုက်ပြင်ဆင်ခြင်း"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"ဖြတ်လမ်းလင့်ခ် ဖယ်ရှားမလား။"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"မူရင်းသို့ ပြန်လည်ပြင်ဆင်သတ်မှတ်မလား။"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"ဖြတ်လမ်းလင့်ခ်သတ်မှတ်ရန် ကီးကို နှိပ်ပါ"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"ကီးပေါင်းစပ်ခြင်းကို သုံးနေပြီးဖြစ်သည်။ အခြားကီးကို စမ်းကြည့်ပါ။"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"ဖြတ်လမ်းလင့်ခ် သတ်မှတ်၍မရပါ။"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"ဖြတ်လမ်းလင့်ခ် ထည့်ရန်"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"ဖြတ်လမ်းလင့်ခ် ဖျက်ရန်"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"သင့်ကီးဘုတ်ကိုသုံး၍ လမ်းညွှန်ခြင်း"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"လက်ကွက်ဖြတ်လမ်းများကို လေ့လာပါ"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"သင့်တာ့ချ်ပက်ကိုသုံး၍ လမ်းညွှန်ခြင်း"</string> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 0b68bd921c6f..871ffe921f89 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellitt – god tilkobling"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellitt – tilkobling tilgjengelig"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS-alarm via satellitt"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Nødanrop eller SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ikke noe signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"én strek"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"åpne enheten"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Bruk fingeravtrykk for å åpne"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autentisering kreves. Trykk på fingeravtrykkssensoren for å autentisere."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Aktiv samtale"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobildata"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Tilkoblet"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Koblet til midlertidig"</string> @@ -1437,13 +1437,13 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktiv app"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Tilgjengelighet"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Hurtigtaster"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Tilpass hurtigtastene"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Tilpass snarveier"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Vil du fjerne hurtigtasten?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Vil du tilbakestille til standard?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Trykk på en tast for å tilordne hurtigtasten"</string> <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Dette fører til at den egendefinerte hurtigtasten slettes permanent."</string> <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Dette fører til at alle de egendefinerte snarveiene dine slettes permanent."</string> - <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Snarveier til søk"</string> + <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Søk etter snarveier"</string> <string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Ingen søkeresultater"</string> <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Skjul-ikon"</string> <string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"Handlings- eller Meta-tast-ikon"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Tastekombinasjonen brukes allerede. Prøv en annen tast."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Kan ikke angi snarveien."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Legg til snarvei"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Slett snarveien"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Naviger med tastaturet"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Lær deg hurtigtaster"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Naviger med styreflaten"</string> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index 818809b4acfc..58307c49ada7 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"स्याटलाइट, राम्रो कनेक्सन"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"स्याटलाइट, कनेक्सन उपलब्ध छ"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"स्याटलाइट SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"आपत्कालीन कल वा SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>।"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"सिग्नल छैन"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"एउटा बार"</string> @@ -884,7 +885,7 @@ <string name="group_system_access_google_assistant" msgid="7210074957915968110">"एसिस्टेन्ट खोल्नुहोस्"</string> <string name="group_system_lock_screen" msgid="7391191300363416543">"स्क्रिन लक गर्नुहोस्"</string> <string name="group_system_quick_memo" msgid="3764560265935722903">"नोट लेख्नुहोस्"</string> - <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"एकै पटक एकभन्दा बढी एप चलाउन मिल्ने सुविधा"</string> + <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"मल्टिटास्किङ"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"हालको एप दायाँ भागमा पारेर स्प्लिट स्क्रिन प्रयोग गर्नुहोस्"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"हालको एप बायाँ भागमा पारेर स्प्लिट स्क्रिन प्रयोग गर्नुहोस्"</string> <string name="system_multitasking_full_screen" msgid="4940465971687159429">"फुल स्क्रिन प्रयोग गर्नुहोस्"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"डिभाइस हाल्नुहोस्"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"फिंगरप्रिन्ट प्रयोग गरी खोल्नुहोस्"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"पुष्टि गर्नु पर्ने हुन्छ। पुष्टि गर्न फिंगरप्रिन्ट सेन्सर छुनुहोस्।"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"कल भइरहेको"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"मोबाइल डेटा"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"इन्टरनेटमा कनेक्ट गरिएको छ"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"यसमा केही समयका लागि कनेक्ट गरिएको हो"</string> @@ -1430,20 +1430,20 @@ <string name="shortcut_helper_category_system" msgid="462110876978937359">"सिस्टम"</string> <string name="shortcut_helper_category_system_controls" msgid="3153344561395751020">"सिस्टमसँग सम्बन्धित नियन्त्रणहरू"</string> <string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"सिस्टम एपहरू"</string> - <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"एकै पटक एकभन्दा बढी एप चलाउन मिल्ने सुविधा"</string> + <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"मल्टिटास्किङ"</string> <string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"स्प्लिट स्क्रिन"</string> <string name="shortcut_helper_category_input" msgid="8674018654124839566">"इनपुट"</string> <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"एपका सर्टकटहरू"</string> <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"हालको एप"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"सर्वसुलभता"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"किबोर्डका सर्टकटहरू"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"किबोर्डका सर्टकटहरू कस्टमाइज गर्नुहोस्"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"सर्टकटहरू कस्टमाइज गर्नुहोस्"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"सर्टकट हटाउने हो?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"सर्टकट रिसेट गरी डिफल्ट बनाउने हो?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"सर्टकट असाइन गर्न की थिच्नुहोस्"</string> <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"यसो गर्नुभयो भने तपाईंको कस्टम सर्टकट सदाका लागि मेटिने छ।"</string> <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"तपाईंले यसो गर्नुभयो भने तपाईंका सबै कस्टम सर्टकटहरू सदाका लागि मेटाइने छन्।"</string> - <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"खोजका सर्टकटहरू"</string> + <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"सर्टकटहरू खोज्नुहोस्"</string> <string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"कुनै पनि खोज परिणाम भेटिएन"</string> <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"\"कोल्याप्स गर्नुहोस्\" आइकन"</string> <string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"एक्सन वा Meta कीको आइकन"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"यो की कम्बिनेसन प्रयोग गरिसकिएको छ। अर्कै की प्रयोग गरी हेर्नुहोस्।"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"सर्टकट सेट गर्न सकिएन।"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"सर्टकट हाल्नुहोस्"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"सर्टकट मेटाउनुहोस्"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"किबोर्ड प्रयोग गरी नेभिगेट गर्नुहोस्"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"किबोर्डका सर्टकटहरू प्रयोग गर्न सिक्नुहोस्"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"टचप्याड प्रयोग गरी नेभिगेट गर्नुहोस्"</string> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 546cd081af72..6e8d328c1896 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelliet, goede verbinding"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelliet, verbinding beschikbaar"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS via satelliet"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Noodoproepen of SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"geen signaal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"1 streepje"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"apparaat opgeven"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gebruik vingerafdruk om te openen"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Verificatie vereist. Raak de vingerafdruksensor aan om de verificatie uit te voeren."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Actief gesprek"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobiele data"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Verbonden"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tijdelijk verbonden"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Huidige app"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Toegankelijkheid"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Sneltoetsen"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Sneltoetsen aanpassen"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Snelkoppelingen aanpassen"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Sneltoets verwijderen?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Resetten naar standaard?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Druk op de toets om de sneltoets toe te wijzen"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Toetsencombinatie is al in gebruik. Probeer een andere toets."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Sneltoets kan niet worden ingesteld."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Snelkoppeling toevoegen"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Snelkoppeling verwijderen"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigeren met je toetsenbord"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Leer sneltoetsen die je kunt gebruiken"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigeren met je touchpad"</string> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index d035f6a88de0..9986c11b49fd 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ସାଟେଲାଇଟ, ଭଲ କନେକ୍ସନ"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ସାଟେଲାଇଟ, କନେକ୍ସନ ଉପଲବ୍ଧ"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"ସେଟେଲାଇଟ SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"ଜରୁରୀକାଳୀନ କଲ କିମ୍ବା SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>।"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"କୌଣସି ସିଗନାଲ ନାହିଁ"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ଗୋଟିଏ ବାର"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ଡିଭାଇସ୍ ବିଷୟରେ ସୂଚନା ଲେଖନ୍ତୁ"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ଖୋଲିବାକୁ ଟିପଚିହ୍ନ ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ପ୍ରମାଣୀକରଣ ଆବଶ୍ୟକ। ପ୍ରମାଣୀକରଣ କରିବାକୁ ଟିପଚିହ୍ନ ସେନ୍ସରକୁ ସ୍ପର୍ଶ କରନ୍ତୁ।"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"ଚାଲିଥିବା କଲ"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"ମୋବାଇଲ ଡାଟା"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"ସଂଯୋଗ କରାଯାଇଛି"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ଅସ୍ଥାୟୀ ରୂପେ କନେକ୍ଟ କରାଯାଇଛି"</string> @@ -1428,7 +1428,7 @@ <string name="privacy_dialog_active_app_usage_2" msgid="2770926061339921767">"<xliff:g id="APP_NAME">%1$s</xliff:g> ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଉଛି (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>)"</string> <string name="privacy_dialog_recent_app_usage_2" msgid="2874689735085367167">"ଏବେ <xliff:g id="APP_NAME">%1$s</xliff:g> (<xliff:g id="ATTRIBUTION_LABEL">%2$s</xliff:g> • <xliff:g id="PROXY_LABEL">%3$s</xliff:g>) ଦ୍ୱାରା ବ୍ୟବହାର କରାଯାଉଛି"</string> <string name="shortcut_helper_category_system" msgid="462110876978937359">"ସିଷ୍ଟମ"</string> - <string name="shortcut_helper_category_system_controls" msgid="3153344561395751020">"ସିଷ୍ଟମ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ"</string> + <string name="shortcut_helper_category_system_controls" msgid="3153344561395751020">"ସିଷ୍ଟମ କଣ୍ଟ୍ରୋଲ"</string> <string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"ସିଷ୍ଟମ ଆପ୍ସ"</string> <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"ମଲ୍ଟିଟାସ୍କିଂ"</string> <string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"ବର୍ତ୍ତମାନର ଆପ"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ଆକ୍ସେସିବିଲିଟୀ"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"କୀବୋର୍ଡ ସର୍ଟକଟ"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"କୀବୋର୍ଡ ସର୍ଟକଟଗୁଡ଼ିକୁ କଷ୍ଟମାଇଜ କରନ୍ତୁ"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ସର୍ଟକଟଗୁଡ଼ିକୁ କଷ୍ଟମାଇଜ କରନ୍ତୁ"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"ସର୍ଟକଟକୁ କାଢ଼ି ଦେବେ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ଡିଫଲ୍ଟରେ ପୁଣି ରିସେଟ କରିବେ?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"ସର୍ଟକଟ ଆସାଇନ କରିବା ପାଇଁ କୀ\'କୁ ଦବାନ୍ତୁ"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"କୀ କମ୍ବିନେସନ ପୂର୍ବରୁ ବ୍ୟବହାର କରାଯାଉଛି। ଅନ୍ୟ ଏକ କୀ ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ।"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"ସର୍ଟକଟ ସେଟ କରାଯାଇପାରିବ ନାହିଁ।"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"ସର୍ଟକଟ ଯୋଗ କରନ୍ତୁ"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"ସର୍ଟକଟକୁ ଡିଲିଟ କରନ୍ତୁ"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ଆପଣଙ୍କ କୀବୋର୍ଡ ବ୍ୟବହାର କରି ନାଭିଗେଟ କରନ୍ତୁ"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"କୀବୋର୍ଡ ସର୍ଟକଟଗୁଡ଼ିକ ବିଷୟରେ ଜାଣନ୍ତୁ"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ଆପଣଙ୍କ ଟଚପେଡ ବ୍ୟବହାର କରି ନାଭିଗେଟ କରନ୍ତୁ"</string> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index 7b718de7f074..45888847bc2e 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -351,7 +351,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ਚਮਕ"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ਰੰਗ ਪਲਟਨਾ"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ਰੰਗ ਸੁਧਾਈ"</string> - <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"ਫੌਂਟ ਦਾ ਆਕਾਰ"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"ਫੌਂਟ ਸਾਈਜ਼"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ਵਰਤੋਂਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ਹੋ ਗਿਆ"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ਬੰਦ ਕਰੋ"</string> @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ਸੈਟੇਲਾਈਟ, ਕਨੈਕਸ਼ਨ ਵਧੀਆ ਹੈ"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ਸੈਟੇਲਾਈਟ, ਕਨੈਕਸ਼ਨ ਉਪਲਬਧ ਹੈ"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"ਸੈਟੇਲਾਈਟ SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"ਐਮਰਜੈਂਸੀ ਕਾਲਾਂ ਜਾਂ ਸਹਾਇਤਾ"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ਕੋਈ ਸਿਗਨਲ ਨਹੀਂ"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ਇੱਕ ਸਿਗਨਲ ਪੱਟੀ"</string> @@ -1069,7 +1070,7 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"ਕੋਈ ਸਿਰਲੇਖ ਨਹੀਂ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ਸਟੈਂਡਬਾਈ"</string> - <string name="font_scaling_dialog_title" msgid="6273107303850248375">"ਫ਼ੌਂਟ ਦਾ ਆਕਾਰ"</string> + <string name="font_scaling_dialog_title" msgid="6273107303850248375">"ਫ਼ੌਂਟ ਸਾਈਜ਼"</string> <string name="font_scaling_smaller" msgid="1012032217622008232">"ਛੋਟਾ ਕਰੋ"</string> <string name="font_scaling_larger" msgid="5476242157436806760">"ਵੱਡਾ ਕਰੋ"</string> <string name="magnification_window_title" msgid="4863914360847258333">"ਵੱਡਦਰਸ਼ੀਕਰਨ Window"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ਡੀਵਾਈਸ ਵਿੱਚ ਦਾਖਲ ਹੋਵੋ"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ਖੋਲ੍ਹਣ ਲਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਵਰਤੋ"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ਪ੍ਰਮਾਣੀਕਰਨ ਲੋੜੀਂਦਾ ਹੈ। ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਨੂੰ ਸਪਰਸ਼ ਕਰੋ।"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"ਜਾਰੀ ਕਾਲ"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"ਮੋਬਾਈਲ ਡਾਟਾ"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"ਕਨੈਕਟ ਹੈ"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"ਕੁਝ ਸਮੇਂ ਲਈ ਕਨੈਕਟ ਹੈ"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"ਮੌਜੂਦਾ ਐਪ"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ਪਹੁੰਚਯੋਗਤਾ"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"ਕੀ-ਬੋਰਡ ਸ਼ਾਰਟਕੱਟ ਵਿਉਂਤਬੱਧ ਕਰੋ"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ਸ਼ਾਰਟਕੱਟਾਂ ਨੂੰ ਵਿਉਂਤਬੱਧ ਕਰੋ"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"ਕੀ ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਹਟਾਉਣਾ ਹੈ?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ਕੀ ਵਾਪਸ ਪੂਰਵ-ਨਿਰਧਾਰਿਤ \'ਤੇ ਰੀਸੈੱਟ ਕਰਨਾ ਹੈ?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"ਸ਼ਾਰਟਕੱਟ ਨਿਰਧਾਰਿਤ ਕਰਨ ਲਈ ਕੁੰਜੀ ਦਬਾਓ"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"ਕੁੰਜੀ ਸੁਮੇਲ ਪਹਿਲਾਂ ਹੀ ਵਰਤੋਂ ਵਿੱਚ ਹੈ। ਕੋਈ ਹੋਰ ਕੁੰਜੀ ਵਰਤ ਕੇ ਦੇਖੋ।"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਸੈੱਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"ਸ਼ਾਰਟਕੱਟ ਸ਼ਾਮਲ ਕਰੋ"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"ਸ਼ਾਰਟਕੱਟ ਮਿਟਾਓ"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ਆਪਣੇ ਕੀ-ਬੋਰਡ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਨੈਵੀਗੇਟ ਕਰੋ"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ਕੀ-ਬੋਰਡ ਦੇ ਸ਼ਾਰਟਕੱਟਾਂ ਬਾਰੇ ਜਾਣੋ"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ਆਪਣੇ ਟੱਚਪੈਡ ਦੀ ਵਰਤੋਂ ਕਰ ਕੇ ਨੈਵੀਗੇਟ ਕਰੋ"</string> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index b6dc2f61656c..67ca4393ee64 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelita – połączenie dobre"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelita – połączenie dostępne"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satelitarne połączenie alarmowe"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Połączenia alarmowe lub SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"brak sygnału"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"1 pasek"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"otwórz urządzenie"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"By otworzyć, użyj odcisku palca"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Wymagane uwierzytelnienie. Dotknij czytnika liniii papilarnych, by uwierzytelnić."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Trwa rozmowa"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilna transmisja danych"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Połączono"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tymczasowe połączenie"</string> @@ -1437,13 +1437,13 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Bieżąca aplikacja"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ułatwienia dostępu"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Skróty klawiszowe"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Dostosuj skróty klawiszowe"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Dostosuj skróty"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Usunąć skrót?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Zresetować do ustawień domyślnych?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Naciśnij klawisz, aby przypisać skrót"</string> <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Spowoduje to trwałe usunięcie skrótu niestandardowego."</string> <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Spowoduje to trwałe usunięcie wszystkich skrótów niestandardowych."</string> - <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Skróty do wyszukiwania"</string> + <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Szukaj skrótów"</string> <string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Brak wyników wyszukiwania"</string> <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Ikona zwijania"</string> <string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"Ikona klawisza działania/meta"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Ta kombinacja klawiszy jest już używana. Użyj innego klawisza."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Nie można ustawić skrótu."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Dodaj skrót"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Usuń skrót"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Nawiguj za pomocą klawiatury"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Dowiedz się więcej o skrótach klawiszowych"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Nawiguj za pomocą touchpada"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index e7bcaa25e7fb..ead72a21e432 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -688,7 +688,7 @@ <string name="stream_system" msgid="7663148785370565134">"Sistema"</string> <string name="stream_ring" msgid="7550670036738697526">"Toques"</string> <string name="stream_music" msgid="2188224742361847580">"Mídia"</string> - <string name="stream_alarm" msgid="16058075093011694">"Alarme"</string> + <string name="stream_alarm" msgid="16058075093011694">"Alarmes"</string> <string name="stream_notification" msgid="7930294049046243939">"Notificações"</string> <string name="stream_bluetooth_sco" msgid="6234562365528664331">"Bluetooth"</string> <string name="stream_dtmf" msgid="7322536356554673067">"Multifrequência de dois tons"</string> @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satélite, conexão boa"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satélite, conexão disponível"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS via satélite"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Chamadas de emergência ou SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"sem sinal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"uma barra"</string> @@ -871,7 +872,7 @@ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Mostrando atalhos de entrada"</string> <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Mostrando atalhos que abrem apps"</string> <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Mostrando atalhos do app atual"</string> - <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Mostrar as notificações"</string> + <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Ver notificações"</string> <string name="group_system_full_screenshot" msgid="5742204844232667785">"Fazer uma captura de tela"</string> <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar atalhos"</string> <string name="group_system_go_back" msgid="2730322046244918816">"Voltar"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"acessar o dispositivo"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use a impressão digital para abrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticação obrigatória. Toque no sensor de impressão digital para autenticar."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Chamada em andamento"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Dados móveis"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Conectado"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporariamente conectado"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App atual"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos do teclado"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalizar atalhos de teclado"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizar atalhos"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Remover atalho?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Redefinir para o padrão?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Pressione a tecla para atribuir o atalho"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Essa combinação de teclas já está em uso. Tente outra tecla."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Não é possível definir o atalho."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Adicionar atalho"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Excluir atalho"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navegue usando o teclado"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprenda atalhos do teclado"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navegue usando o touchpad"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index a9de96156d5b..303a2808d552 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satélite, boa ligação"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satélite, ligação disponível"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satélite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Chamadas de emergência ou SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"sem sinal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"1 barra"</string> @@ -883,7 +884,7 @@ <string name="group_system_access_system_settings" msgid="8731721963449070017">"Abrir definições"</string> <string name="group_system_access_google_assistant" msgid="7210074957915968110">"Abrir Assistente"</string> <string name="group_system_lock_screen" msgid="7391191300363416543">"Ecrã de bloqueio"</string> - <string name="group_system_quick_memo" msgid="3764560265935722903">"Tire notas"</string> + <string name="group_system_quick_memo" msgid="3764560265935722903">"Tirar notas"</string> <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Execução de várias tarefas em simultâneo"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Use o ecrã dividido com a app à direita"</string> <string name="system_multitasking_lhs" msgid="7348595296208696452">"Use o ecrã dividido com a app à esquerda"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"entrar no dispositivo"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Utilize a impressão digital para abrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticação necessária. Toque no sensor de impressões digitais para autenticar."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Chamada em curso"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Dados móveis"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Ligado"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ligado temporariamente"</string> @@ -1430,14 +1430,14 @@ <string name="shortcut_helper_category_system" msgid="462110876978937359">"Sistema"</string> <string name="shortcut_helper_category_system_controls" msgid="3153344561395751020">"Controlos do sistema"</string> <string name="shortcut_helper_category_system_apps" msgid="6001757545472556810">"Apps do sistema"</string> - <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Execução de várias tarefas em simultâneo"</string> + <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Multitasking"</string> <string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Ecrã dividido"</string> <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Entrada"</string> <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Atalhos de apps"</string> <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App atual"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos de teclado"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalize os atalhos de teclado"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalize os atalhos"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Remover atalho?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Repor para a predefinição?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Prima a tecla para atribuir o atalho"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"A combinação de teclas já está a ser usada. Experimente outra tecla."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Não é possível definir o atalho."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Adicionar atalho"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Eliminar atalho"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navegue com o teclado"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprenda atalhos de teclado"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navegue com o touchpad"</string> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index e7bcaa25e7fb..ead72a21e432 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -688,7 +688,7 @@ <string name="stream_system" msgid="7663148785370565134">"Sistema"</string> <string name="stream_ring" msgid="7550670036738697526">"Toques"</string> <string name="stream_music" msgid="2188224742361847580">"Mídia"</string> - <string name="stream_alarm" msgid="16058075093011694">"Alarme"</string> + <string name="stream_alarm" msgid="16058075093011694">"Alarmes"</string> <string name="stream_notification" msgid="7930294049046243939">"Notificações"</string> <string name="stream_bluetooth_sco" msgid="6234562365528664331">"Bluetooth"</string> <string name="stream_dtmf" msgid="7322536356554673067">"Multifrequência de dois tons"</string> @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satélite, conexão boa"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satélite, conexão disponível"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS via satélite"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Chamadas de emergência ou SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"sem sinal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"uma barra"</string> @@ -871,7 +872,7 @@ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Mostrando atalhos de entrada"</string> <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Mostrando atalhos que abrem apps"</string> <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Mostrando atalhos do app atual"</string> - <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Mostrar as notificações"</string> + <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Ver notificações"</string> <string name="group_system_full_screenshot" msgid="5742204844232667785">"Fazer uma captura de tela"</string> <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Mostrar atalhos"</string> <string name="group_system_go_back" msgid="2730322046244918816">"Voltar"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"acessar o dispositivo"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Use a impressão digital para abrir"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autenticação obrigatória. Toque no sensor de impressão digital para autenticar."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Chamada em andamento"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Dados móveis"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Conectado"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Temporariamente conectado"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"App atual"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Acessibilidade"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Atalhos do teclado"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalizar atalhos de teclado"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizar atalhos"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Remover atalho?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Redefinir para o padrão?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Pressione a tecla para atribuir o atalho"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Essa combinação de teclas já está em uso. Tente outra tecla."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Não é possível definir o atalho."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Adicionar atalho"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Excluir atalho"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navegue usando o teclado"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Aprenda atalhos do teclado"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navegue usando o touchpad"</string> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index 7fb1169af6f9..afd18f12cbf5 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, conexiune bună"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, conexiune disponibilă"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS prin satelit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Apeluri de urgență sau SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"fără semnal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"o bară"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"Accesează dispozitivul"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Folosește amprenta ca să deschizi"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autentificare obligatorie. Atinge senzorul de amprentă pentru a te autentifica."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Apel în desfășurare"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Date mobile"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Conectat"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Conectat temporar"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aplicația actuală"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accesibilitate"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Comenzi rapide de la tastatură"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalizează comenzile rapide de la tastatură"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Personalizează comenzile rapide"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Elimini comanda rapidă?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Resetezi la valorile prestabilite?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Apasă tasta pentru a atribui comanda rapidă"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Combinația de taste este deja folosită. Încearcă altă tastă."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Comanda rapidă nu poate fi setată."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Adaugă o comandă rapidă"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Șterge comanda rapidă"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navighează folosind tastatura"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Învață comenzile rapide de la tastatură"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navighează folosind touchpadul"</string> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 448c2457efe1..10dc51d71683 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Спутниковая связь, хорошее качество соединения"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Доступно соединение по спутниковой связи"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Спутниковый SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Экстренные вызовы или спутниковый SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"нет сигнала"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"одно деление"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"указать устройство"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Используйте отпечаток пальца для входа."</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Требуется аутентификация. Приложите палец к сканеру отпечатков."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Текущий вызов"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобильный интернет"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Подключено"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Временное подключение"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Это приложение"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Специальные возможности"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Сочетания клавиш"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Настройки сочетаний клавиш"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Настройки сочетаний клавиш"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Удалить сочетание клавиш?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Сбросить настройки?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Нажмите клавишу, чтобы назначить сочетание клавиш."</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Это сочетание клавиш уже используется. Попробуйте другое."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Это сочетание клавиш выбрать нельзя."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Добавить сочетание клавиш"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Удалить сочетание клавиш"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Навигация с помощью клавиатуры"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Узнайте о сочетаниях клавиш."</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Навигация с помощью сенсорной панели"</string> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index d5c90b566ad6..5a7a6a377527 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"චන්ද්රිකාව, හොඳ සම්බන්ධතාවයක්"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"චන්ද්රිකාව, සම්බන්ධතාවය තිබේ"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"චන්ද්රිකා SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"හදිසි ඇමතුම් හෝ SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"සංඥාව නැත"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"තීරු එකක්"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"උපාංගය ඇතුළු කරන්න"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"විවෘත කිරීමට ඇඟිලි සලකුණ භාවිත කරන්න"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"සත්යාපනය අවශ්යයි. සත්යාපනය කිරීමට ඇඟිලි සලකුණු සංවේදකය ස්පර්ශ කරන්න."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"කර ගෙන යන ඇමතුම"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"ජංගම දත්ත"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"සම්බන්ධයි"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"තාවකාලිකව සම්බන්ධ කළා"</string> @@ -1437,7 +1437,8 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"වත්මන් යෙදුම"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ප්රවේශ්යතාව"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"යතුරු පුවරු කෙටි මං"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"යතුරුපුවරු කෙටිමං අභිරුචිකරණය කරන්න"</string> + <!-- no translation found for shortcut_helper_customize_mode_title (8327297960035006036) --> + <skip /> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"කෙටිමඟ ඉවත් කරන්න ද?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"පෙරනිමියට යළි සකසන්න ද?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"කෙටිමඟ පැවරීමට යතුර ඔබන්න"</string> @@ -1465,6 +1466,10 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"යතුරු සංයෝජනය දැනටමත් භාවිත වේ. වෙනත් යතුරක් උත්සාහ කරන්න."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"කෙටිමඟ සැකසිය නොහැක."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <!-- no translation found for shortcut_helper_add_shortcut_button_label (7655779534665954910) --> + <skip /> + <!-- no translation found for shortcut_helper_delete_shortcut_button_label (3148773472696137052) --> + <skip /> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ඔබේ යතුරු පුවරුව භාවිතයෙන් සංචාලනය කරන්න"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"යතුරුපුවරු කෙටිමං ඉගෙන ගන්න"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ඔබේ ස්පර්ශ පෑඩ් භාවිතයෙන් සංචාලනය කරන්න"</string> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index af84fd19bb0c..d2d9cdeed413 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, dobrá kvalita pripojenia"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, pripojenie je k dispozícii"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Pomoc cez satelit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Tiesňové volania alebo pomoc v tiesni"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"žiadny signál"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"jedna čiarka"</string> @@ -881,7 +882,7 @@ <string name="group_system_cycle_back" msgid="8194102916946802902">"Cyklické prechádzanie dozadu nedávnymi aplikáciami"</string> <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Otvorenie zoznamu aplikácií"</string> <string name="group_system_access_system_settings" msgid="8731721963449070017">"Otvorenie nastavení"</string> - <string name="group_system_access_google_assistant" msgid="7210074957915968110">"Otvoriť asistenta"</string> + <string name="group_system_access_google_assistant" msgid="7210074957915968110">"Otvorenie Asistenta"</string> <string name="group_system_lock_screen" msgid="7391191300363416543">"Uzamknutie obrazovky"</string> <string name="group_system_quick_memo" msgid="3764560265935722903">"Napísanie poznámky"</string> <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Multitasking"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"vstúpte do zariadenia"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Otvorte odtlačkom prsta"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Vyžaduje sa overenie. Dotknite sa senzora odtlačkov prstov."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Prebiehajúci hovor"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobilné dáta"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Pripojené"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Dočasne pripojené"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktuálna aplikácia"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Dostupnosť"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Klávesové skratky"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Prispôsobenie klávesových skratiek"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Prispôsobenie skratiek"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Chcete skratku odstrániť?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Chcete resetovať na predvolené nastavenie?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Stlačením klávesa priraďte skratku"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Kombinácia klávesov sa už používa. Skúste iný kláves."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Skratku nie je možné nastaviť."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Pridať skratku"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Odstrániť skratku"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Pohybujte sa v systéme pomocou klávesnice"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Naučte sa klávesové skratky"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Pohybujte sa v systéme pomocou touchpadu"</string> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index 1242774768b3..c473962ca1ba 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satelit, dobra povezava"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satelit, povezava je na voljo"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS prek satelita"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Klici v sili ali SOS prek satelita"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ni signala"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ena črtica"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"vstop v napravo"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Odprite s prstnim odtisom"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Zahtevano je preverjanje pristnosti. Za preverjanje pristnosti se dotaknite tipala prstnih odtisov."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Aktivni klic"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Prenos podatkov v mobilnem omrežju"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Povezano"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Začasno vzpostavljena povezava"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Trenutna aplikacija"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Dostopnost"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Bližnjične tipke"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Prilagajanje bližnjičnih tipk"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Prilagajanje bližnjic"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Želite odstraniti bližnjico?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Želite ponastaviti na privzete bližnjice?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Pritisnite tipko za dodelitev bližnjice"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Kombinacija tipk je že v uporabi. Poskusite z drugo tipko."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Bližnjice ni mogoče nastaviti."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Dodajanje bližnjice"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Izbris bližnjice"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Krmarjenje s tipkovnico"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Učenje bližnjičnih tipk"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Krmarjenje s sledilno ploščico"</string> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index c3d13539e1f9..3c7d05b2e318 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Sateliti. Lidhje e mirë"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Sateliti. Ofrohet lidhje"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS satelitor"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Telefonatat e urgjencës ose SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"nuk ka sinjal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"një vijë"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"për të hyrë në pajisje"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Përdor gjurmën e gishtit për ta hapur"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Kërkohet vërtetimi. Prek sensorin e gjurmës së gishtit për t\'u vërtetuar."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Telefonatë në vazhdim"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Të dhënat celulare"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Lidhur"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Lidhur përkohësisht"</string> @@ -1437,7 +1437,8 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aplikacioni aktual"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Qasshmëria"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Shkurtoret e tastierës"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Personalizo shkurtoret e tastierës"</string> + <!-- no translation found for shortcut_helper_customize_mode_title (8327297960035006036) --> + <skip /> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Të hiqet shkurtorja?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Të rivendosen përsëri te parazgjedhjet?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Shtyp tastin për të caktuar shkurtoren"</string> @@ -1465,6 +1466,10 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Kombinimi i tasteve është tashmë në përdorim. Provo një tast tjetër."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Shkurtorja nuk mund të caktohet."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <!-- no translation found for shortcut_helper_add_shortcut_button_label (7655779534665954910) --> + <skip /> + <!-- no translation found for shortcut_helper_delete_shortcut_button_label (3148773472696137052) --> + <skip /> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigo duke përdorur tastierën tënde"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Mëso shkurtoret e tastierës"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigo duke përdorur bllokun me prekje"</string> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index 344b012c2c80..b7ddd4d7c6d2 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Сателит, веза је добра"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Сателит, веза је доступна"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Хитна помоћ преко сателита"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Хитни позиви или хитна помоћ"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"нема сигнала"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"једна црта"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"унесите уређај"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Отворите помоћу отиска прста"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Потребна је потврда идентитета. Додирните сензор за отисак прста да бисте потврдили идентитет."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Позив је у току"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобилни подаци"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Повезано"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Привремено повезано"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Актуелна апликација"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Приступачност"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Тастерске пречице"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Прилагодите тастерске пречице"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Прилагодите пречице"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Желите да уклоните пречицу?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Желите да ресетујете на подразумевано?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Притисните тастер да бисте доделили пречицу"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Комбинација тастера се већ користи. Пробајте са другим тастером."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Подешавање пречице није успело."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Додајте пречицу"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Избришите пречицу"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Крећите се помоћу тастатуре"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Сазнајте више о тастерским пречицама"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Крећите се помоћу тачпеда"</string> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index 4d862d9842a8..2d2a94d4e7b2 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellit, bra anslutning"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellit, anslutning tillgänglig"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS-larm via satellit"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Nödsamtal eller SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ingen signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"en stapel"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ange enhet"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Öppna med fingeravtryck"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Autentisering krävs. Identifiera dig genom att trycka på fingeravtryckssensorn."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Pågående samtal"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobildata"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Ansluten"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tillfälligt ansluten"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Aktuell app"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Tillgänglighet"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Kortkommandon"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Anpassa kortkommandon"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Anpassa kortkommandon"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Vill du ta bort kortkommandot?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Vill du återställa till standardinställningarna?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Tryck på tangenten för att tilldela ett kortkommando"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Tangentkombinationen används redan. Testa en annan tangent."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Det går inte att ställa in kortkommandot."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Lägg till genväg"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Radera genväg"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Navigera med tangentbordet"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Lär dig kortkommandon"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Navigera med styrplattan"</string> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 731765437ced..424434d182a7 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Setilaiti, muunganisho thabiti"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Setilaiti, muunganisho unapatikana"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Msaada kupitia Setilaiti"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Simu za dharura"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"hakuna mtandao"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"upau mmoja"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"weka kifaa"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Tumia alama ya kidole kufungua"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Uthibitishaji unahitajika. Gusa kitambua alama ya kidole ili uthibitishe."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Simu inayoendelea"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Data ya mtandao wa simu"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Imeunganishwa"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Imeunganishwa kwa muda"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Programu Inayotumika Sasa"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ufikivu"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Mikato ya kibodi"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Weka mapendeleo ya mikato ya kibodi"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Kuweka mapendeleo ya njia za mkato"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Ungependa kuondoa njia ya mkato?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Ungependa kurejesha njia za mkato chaguomsingi?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Bonyeza kitufe ukabidhi njia ya mkato"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Tayari unatumia mchanganyiko wa vitufe. Jaribu kitufe kingine."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Haiwezi kuweka njia ya mkato."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Weka njia ya mkato"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Futa njia ya mkato"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Kusogeza kwa kutumia kibodi yako"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Fahamu kuhusu mikato ya kibodi"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Kusogeza kwa kutumia padi yako ya kugusa"</string> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index 5a7defae136f..cb340789345e 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"சாட்டிலைட், நிலையான இணைப்பு"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"சாட்டிலைட், இணைப்பு கிடைக்கிறது"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"சாட்டிலைட் SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"அவசர அழைப்புகள் அல்லது SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"சிக்னல் இல்லை"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ஒரு கோடு"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"சாதனத்தைத் திற"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"கைரேகையைப் பயன்படுத்தி திறந்திடுங்கள்"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"அங்கீகாரம் தேவை. கைரேகை சென்சாரைத் தொட்டு அங்கீகரியுங்கள்."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"செயலில் உள்ள அழைப்பு"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"மொபைல் டேட்டா"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"இணைக்கப்பட்டது"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"தற்காலிகமாக இணைக்கப்பட்டுள்ளது"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"தற்போதைய ஆப்ஸ்"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"மாற்றுத்திறன் வசதி"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"கீபோர்டு ஷார்ட்கட்கள்"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"கீபோர்டு ஷார்ட்கட்களைப் பிரத்தியேகப்படுத்துதல்"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ஷார்ட்கட்களைப் பிரத்தியேகமாக்குதல்"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"ஷார்ட்கட்டை அகற்றவா?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"மீண்டும் இயல்புநிலைக்கு மீட்டமைக்கவா?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"ஷார்ட்கட்டை அமைக்க பட்டனை அழுத்துங்கள்"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"பட்டன் சேர்க்கை ஏற்கெனவே பயன்பாட்டில் உள்ளது. வேறொரு பட்டனைப் பயன்படுத்திப் பார்க்கவும்."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"ஷார்ட்கட்டை அமைக்க முடியாது."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"ஷார்ட்கட்டைச் சேர்க்கும்"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"ஷார்ட்கட்டை அகற்றும்"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"கீபோர்டைப் பயன்படுத்திச் செல்லுதல்"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"கீபோர்டு ஷார்ட்கட்கள் குறித்துத் தெரிந்துகொள்ளுங்கள்"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"டச்பேடைப் பயன்படுத்திச் செல்லுதல்"</string> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 1be6ce61a399..8dac7651ae49 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"శాటిలైట్, కనెక్షన్ బాగుంది"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"శాటిలైట్, కనెక్షన్ అందుబాటులో ఉంది"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"ఎమర్జెన్సీ శాటిలైట్ సహాయం"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"ఎమర్జెన్సీ కాల్స్ లేదా SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"సిగ్నల్ లేదు"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"సిగ్నల్ ఒక బార్ ఉంది"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"పరికరాన్ని ఎంటర్ చేయండి"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"తెరవడానికి వేలిముద్రను ఉపయోగించండి"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ప్రామాణీకరణ అవసరం. ప్రామాణీకరించడానికి వేలిముద్ర సెన్సార్ను తాకండి."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"కాల్ కొనసాగుతోంది"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"మొబైల్ డేటా"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"కనెక్ట్ చేయబడింది"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"తాత్కాలికంగా కనెక్ట్ చేయబడింది"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"ప్రస్తుత యాప్"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"యాక్సెసిబిలిటీ"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"కీబోర్డ్ షార్ట్కట్లు"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"కీబోర్డ్ షార్ట్కట్లను అనుకూలంగా మార్చండి"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"షార్ట్కట్లను అనుకూలంగా మార్చండి"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"షార్ట్కట్ను తీసివేయాలా?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"తిరిగి ఆటోమేటిక్ సెట్టింగ్కు రీసెట్ చేయాలా?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"షార్ట్కట్ను కేటాయించడానికి కీని నొక్కండి"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"కీ కాంబినేషన్ ఇప్పటికే వినియోగంలో ఉంది. వేరొక కీని ట్రై చేయండి."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"షార్ట్కట్ను సెట్ చేయడం సాధ్యం కాదు."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"షార్ట్కట్ను జోడించండి"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"షార్ట్కట్ను తొలగించండి"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"మీ కీబోర్డ్ ఉపయోగించి నావిగేట్ చేయండి"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"కీబోర్డ్ షార్ట్కట్ల గురించి తెలుసుకోండి"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"మీ టచ్ప్యాడ్ను ఉపయోగించి నావిగేట్ చేయండి"</string> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 3770addf98e3..cd111fd54d02 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"ดาวเทียม, การเชื่อมต่อดี"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"ดาวเทียม, การเชื่อมต่อที่พร้อมใช้งาน"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"SOS ดาวเทียม"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"การโทรฉุกเฉินหรือ SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ไม่มีสัญญาณ"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"1 ขีด"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"เข้าถึงอุปกรณ์"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"ใช้ลายนิ้วมือเพื่อเปิด"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"ต้องมีการตรวจสอบสิทธิ์ แตะเซ็นเซอร์ลายนิ้วมือเพื่อตรวจสอบสิทธิ์"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"สายที่สนทนาอยู่"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"อินเทอร์เน็ตมือถือ"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"เชื่อมต่อแล้ว"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"เชื่อมต่อแล้วชั่วคราว"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"แอปปัจจุบัน"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"การช่วยเหลือพิเศษ"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"แป้นพิมพ์ลัด"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"ปรับแต่งแป้นพิมพ์ลัด"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"ปรับแต่งแป้นพิมพ์ลัด"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"นำแป้นพิมพ์ลัดออกใช่ไหม"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"รีเซ็ตกลับเป็นค่าเริ่มต้นไหม"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"กดแป้นเพื่อกำหนดแป้นพิมพ์ลัด"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"มีการใช้แป้นที่กดร่วมกันนี้แล้ว โปรดลองใช้แป้นอื่น"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"ตั้งค่าแป้นพิมพ์ลัดไม่ได้"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"เพิ่มทางลัด"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"ลบทางลัด"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"ไปยังส่วนต่างๆ โดยใช้แป้นพิมพ์"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"ดูข้อมูลเกี่ยวกับแป้นพิมพ์ลัด"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"ไปยังส่วนต่างๆ โดยใช้ทัชแพด"</string> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index d28915eccb73..3c5448e20664 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Satellite, malakas ang koneksyon"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Satellite, may koneksyon"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Satellite SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Mga emergency na tawag o SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"walang signal"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"isang bar"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"ilagay ang device"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Gamitin ang fingerprint para buksan"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Kailangan ng pag-authenticate. Pindutin ang sensor para sa fingerprint para mag-authenticate."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Kasalukuyang tawag"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobile data"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Nakakonekta"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Pansamantalang nakakonekta"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Kasalukuyang App"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Accessibility"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Mga keyboard shortcut"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"I-customize ang mga keyboard shortcut"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"I-customize ang mga shortcut"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Alisin ang shortcut?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"I-reset pabalik sa default?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Pindutin ang key para magtalaga ng shortcut"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Ginagamit na ang kumbinasyon ng key. Sumubok ng ibang key."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Hindi maitakda ang shortcut."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Maglagay ng shortcut"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Mag-delete ng shortcut"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Mag-navigate gamit ang iyong keyboard"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Matuto ng mga keyboard shortcut"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Mag-navigate gamit ang iyong touchpad"</string> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 29a5763385bd..61ed4e54209b 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Uydu, bağlantı güçlü"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Uydu, bağlantı mevcut"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Acil Uydu Bağlantısı"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Acil durum aramaları veya acil yardım"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"sinyal yok"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"tek çubuk"</string> @@ -882,7 +883,7 @@ <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Uygulama listesini aç"</string> <string name="group_system_access_system_settings" msgid="8731721963449070017">"Ayarları aç"</string> <string name="group_system_access_google_assistant" msgid="7210074957915968110">"Asistan\'ı aç"</string> - <string name="group_system_lock_screen" msgid="7391191300363416543">"Kilit ekranı"</string> + <string name="group_system_lock_screen" msgid="7391191300363416543">"Ekranı kilitle"</string> <string name="group_system_quick_memo" msgid="3764560265935722903">"Not al"</string> <string name="keyboard_shortcut_group_system_multitasking" msgid="6967816258924795558">"Çoklu görev"</string> <string name="system_multitasking_rhs" msgid="8779289852395243004">"Sağdaki uygulamayla birlikte bölünmüş ekranı kullan"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"cihaz girin"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Açmak için parmak izi kullanın"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Kimlik doğrulaması gerekiyor. Kimlik doğrulaması için parmak izi sensörüne dokunun."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Devam eden arama"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobil veri"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Bağlı"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Geçici olarak bağlandı"</string> @@ -1437,13 +1437,13 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Mevcut Uygulama"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Erişilebilirlik"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Klavye kısayolları"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Klavye kısayollarını özelleştirin"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Kısayolları özelleştirin"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Kısayol kaldırılsın mı?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Varsayılan kısayollara sıfırlansın mı?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Kısayol atamak için tuşa basın"</string> <string name="shortcut_customize_mode_remove_shortcut_description" msgid="6851287900585057128">"Bu işlem, özel kısayolunuzu kalıcı olarak siler."</string> <string name="shortcut_customize_mode_reset_shortcut_description" msgid="2081849715634358684">"Bu işlem, tüm özel kısayollarınızı kalıcı olarak siler."</string> - <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Arama kısayolları"</string> + <string name="shortcut_helper_search_placeholder" msgid="5488547526269871819">"Kısayollarda ara"</string> <string name="shortcut_helper_no_search_results" msgid="8554756497996692160">"Arama sonucu yok"</string> <string name="shortcut_helper_content_description_collapse_icon" msgid="8028015738431664954">"Daralt simgesi"</string> <string name="shortcut_helper_content_description_meta_key" msgid="3989315044342124818">"İşlem veya Meta tuşu simgesi"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Tuş kombinasyonu zaten kullanılıyor. Başka bir tuş deneyin."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Kısayol ayarlanamıyor."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Kısayol ekle"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Kısayolu sil"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Klavyenizi kullanarak gezinin"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Klavye kısayollarını öğrenin"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Dokunmatik alanınızı kullanarak gezinin"</string> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index ea839cc9f96a..778b25bf4651 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Хороше з’єднання із супутником"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Доступне з’єднання із супутником"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Супутниковий сигнал SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Екстрені виклики або сигнал SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"немає сигналу"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"одна смужка сигналу"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"відкрити пристрій"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Щоб відкрити, використайте відбиток пальця"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Пройдіть автентифікацію. Для цього торкніться сканера відбитків пальців."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Поточний виклик"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Мобільний трафік"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Підключено"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Тимчасово з’єднано"</string> @@ -1437,7 +1437,8 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Поточний додаток"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Доступність"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Комбінації клавіш"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Налаштуйте комбінації клавіш"</string> + <!-- no translation found for shortcut_helper_customize_mode_title (8327297960035006036) --> + <skip /> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Видалити комбінацію клавіш?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Відновити комбінації клавіш за умовчанням?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Натисніть клавішу, щоб призначити комбінацію клавіш"</string> @@ -1465,6 +1466,10 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Комбінація клавіш уже використовується. Спробуйте іншу клавішу."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Не вдалося встановити комбінацію клавіш."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <!-- no translation found for shortcut_helper_add_shortcut_button_label (7655779534665954910) --> + <skip /> + <!-- no translation found for shortcut_helper_delete_shortcut_button_label (3148773472696137052) --> + <skip /> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Навігація за допомогою клавіатури"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Дізнайтеся більше про комбінації клавіш"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Навігація за допомогою сенсорної панелі"</string> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index 63fa93d74ea9..2f3e6f4bcfe8 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"سیٹلائٹ، کنکشن اچھا ہے"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"سیٹلائٹ، کنکشن دستیاب ہے"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"سیٹلائٹ SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"ایمرجنسی کالز یا SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>، <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>۔"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"کوئی سگنل نہیں"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ایک بار"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"آلہ درج کریں"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"کھولنے کے لیے فنگر پرنٹ کا استعمال کریں"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"توثیق مطلوب ہے۔ توثیق کرنے کے لیے فنگر پرنٹ سینسر کو ٹچ کریں۔"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"جاری کال"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"موبائل ڈیٹا"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"منسلک ہے"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"عارضی طور پر منسلک ہے"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"موجودہ ایپ"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"ایکسیسبیلٹی"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"کی بورڈ شارٹ کٹس"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"کی بورڈ شارٹ کٹس کو حسب ضرورت بنائیں"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"شارٹ کٹس کو حسب ضرورت بنائیں"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"شارٹ کٹ ہٹائیں؟"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"ڈیفالٹ پر واپس ری سیٹ کریں؟"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"شارٹ کٹ تفویض کرنے کے لیے کلید کو دبائیں"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"کلیدی مجموعہ پہلے سے استعمال میں ہے۔ دوسری کلید آزمائیں۔"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"شارٹ کٹ سیٹ نہیں کیا جا سکتا۔"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"شارٹ کٹ شامل کریں"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"شارٹ کٹ حذف کریں"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"اپنے کی بورڈ کا استعمال کر کے نیویگیٹ کریں"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"کی بورڈ شارٹ کٹس جانیں"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"اپنے ٹچ پیڈ کا استعمال کر کے نیویگیٹ کریں"</string> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index a20f42d88c7c..23137bd9898c 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Sputnik, aloqa sifati yaxshi"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Sputnik, aloqa mavjud"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Sputnik SOS"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Favqulodda chaqiruvlar yoki SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"signal yoʻq"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"bitta ustun"</string> @@ -871,12 +872,12 @@ <string name="keyboard_shortcut_a11y_filter_input" msgid="4589316004510335529">"Kirish bilan bogʻliq tezkor tugmalarni koʻrsatiladi"</string> <string name="keyboard_shortcut_a11y_filter_open_apps" msgid="6175417687221004059">"Ilovalarni ochuvchi tezkor tugmalar koʻrsatiladi"</string> <string name="keyboard_shortcut_a11y_filter_current_app" msgid="7944592357493737911">"Joriy ilova uchun tezkor tugmalar koʻrsatiladi"</string> - <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Bildirishnomalarni ochish"</string> + <string name="group_system_access_notification_shade" msgid="1619028907006553677">"Bildirishnomalarni koʻrish"</string> <string name="group_system_full_screenshot" msgid="5742204844232667785">"Skrinshot olish"</string> <string name="group_system_access_system_app_shortcuts" msgid="8562482996626694026">"Yorliqlarni ochish"</string> <string name="group_system_go_back" msgid="2730322046244918816">"Orqaga"</string> <string name="group_system_access_home_screen" msgid="4130366993484706483">"Bosh ekranni ochish"</string> - <string name="group_system_overview_open_apps" msgid="5659958952937994104">"Oxirgi ilovalarni ochish"</string> + <string name="group_system_overview_open_apps" msgid="5659958952937994104">"Oxirgi ilovalarni koʻrish"</string> <string name="group_system_cycle_forward" msgid="5478663965957647805">"Oxirgi ilovalarni oldinga varaqlash"</string> <string name="group_system_cycle_back" msgid="8194102916946802902">"Oxirgi ilovalarni orqaga varaqlash"</string> <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"Ilovalar roʻyxatini ochish"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"qurilmani ochish"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Ochish uchun barmoq izidan foydalaning"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Haqiqiylikni tekshirish talab etiladi. Autentifikatsiya uchun barmoq izi skaneriga tegining."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Joriy chaqiruv"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Mobil internet"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Ulangan"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Vaqtincha ulangan"</string> @@ -1437,7 +1437,8 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Joriy ilova"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Qulayliklar"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Tezkor tugmalar"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Tezkor tugmalarni moslash"</string> + <!-- no translation found for shortcut_helper_customize_mode_title (8327297960035006036) --> + <skip /> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Tezkor tugma olib tashlansinmi?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Asliga qaytarilsinmi?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Tezkor tugma sozlash uchun tugmani bosing"</string> @@ -1465,6 +1466,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Bu tugmalar birikmasi band. Boshqasini ishlating."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Buyruq sozlanmadi."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Yorliq yaratish"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Yorliqni oʻchirish"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Klaviatura yordamida kezing"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Tezkor tugmalar haqida"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Sensorli panel yordamida kezing"</string> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index 2a8fa4c9cc7b..3b4b132698f3 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Kết nối vệ tinh tốt"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Hiện có kết nối vệ tinh"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Liên lạc khẩn cấp qua vệ tinh"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Cuộc gọi khẩn cấp hoặc SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"không có tín hiệu"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"1 vạch"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"truy cập thiết bị"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Dùng vân tay để mở"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Bạn cần phải xác thực. Hãy chạm vào cảm biến vân tay để xác thực."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Cuộc gọi đang diễn ra"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Dữ liệu di động"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Đã kết nối"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Tạm thời có kết nối"</string> @@ -1433,11 +1433,11 @@ <string name="shortcut_helper_category_multitasking" msgid="7413381961404090136">"Đa nhiệm"</string> <string name="shortcutHelper_category_split_screen" msgid="1159669813444812244">"Chia đôi màn hình"</string> <string name="shortcut_helper_category_input" msgid="8674018654124839566">"Phương thức nhập"</string> - <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Lối tắt ứng dụng"</string> + <string name="shortcut_helper_category_app_shortcuts" msgid="8010249408308587117">"Phím tắt cho ứng dụng"</string> <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"Ứng dụng hiện tại"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Hỗ trợ tiếp cận"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Phím tắt"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Tuỳ chỉnh phím tắt"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Tuỳ chỉnh phím tắt"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Xoá phím tắt?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Đặt lại về phím tắt mặc định?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Nhấn phím để chỉ định phím tắt"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Tổ hợp phím đã được sử dụng. Hãy thử một phím khác."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Không đặt được lối tắt."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Thêm phím tắt"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Xoá phím tắt"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Di chuyển bằng bàn phím"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Tìm hiểu về phím tắt"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Di chuyển bằng bàn di chuột"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 8f0b2f11da93..e66048e8022a 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"卫星,连接质量良好"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"卫星,可连接"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"卫星紧急呼救"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"紧急呼叫或紧急求救"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>,<xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>。"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"无信号"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"信号强度为一格"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"进入设备"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"使用指纹即可打开"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"需要进行身份验证。请轻触指纹传感器以验证身份。"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"正在通话"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"移动数据网络"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"已连接"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"已暂时连接"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"当前应用"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"无障碍功能"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"键盘快捷键"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"自定义键盘快捷键"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"自定义快捷方式"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"要移除快捷键吗?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"要重置为默认快捷键吗?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"按下按键即可指定快捷键"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"按键组合已被使用,请尝试使用其他按键。"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"无法设置快捷方式。"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"添加快捷方式"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"删除快捷方式"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"使用键盘导航"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"了解键盘快捷键"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"使用触控板导航"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index afae659eb972..f9631f267948 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"衛星,連線質素好"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"衛星,可以連線"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"緊急衛星連接"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"緊急電話或 SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>,<xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>。"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"無訊號"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"一格"</string> @@ -877,8 +878,8 @@ <string name="group_system_go_back" msgid="2730322046244918816">"返回"</string> <string name="group_system_access_home_screen" msgid="4130366993484706483">"前往主畫面"</string> <string name="group_system_overview_open_apps" msgid="5659958952937994104">"查看最近使用的應用程式"</string> - <string name="group_system_cycle_forward" msgid="5478663965957647805">"輪流切換最近使用的應用程式 (向前)"</string> - <string name="group_system_cycle_back" msgid="8194102916946802902">"輪流切換最近使用的應用程式 (向後)"</string> + <string name="group_system_cycle_forward" msgid="5478663965957647805">"順序查看最近使用的應用程式"</string> + <string name="group_system_cycle_back" msgid="8194102916946802902">"倒序查看最近使用的應用程式"</string> <string name="group_system_access_all_apps_search" msgid="1553588630154197469">"開啟應用程式清單"</string> <string name="group_system_access_system_settings" msgid="8731721963449070017">"開啟設定"</string> <string name="group_system_access_google_assistant" msgid="7210074957915968110">"開啟「Google 助理」"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"進入裝置"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"使用指紋即可開啟"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"需要驗證。掂一下指紋感應器就可以驗證。"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"通話中"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"流動數據"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"已連線"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"已暫時連線"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"目前的應用程式"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"無障礙功能"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"鍵盤快速鍵"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"自訂鍵盤快速鍵"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"自訂快速鍵"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"要移除快速鍵嗎?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"要重設至預設捷徑嗎?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"按鍵即可指派快速鍵"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"此按鍵組合已在使用,請改用其他按鍵。"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"無法設定快速鍵。"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"新增捷徑"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"刪除捷徑"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"使用鍵盤導覽"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"瞭解鍵盤快速鍵"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"使用觸控板導覽"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index f52e906add3e..4394dd9a0bd7 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -759,7 +759,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"衛星,連線品質良好"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"衛星,可連線"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"緊急衛星連線"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"緊急電話或緊急求救"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>,<xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>。"</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"沒有訊號"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"訊號強度一格"</string> @@ -1289,8 +1290,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"進入裝置"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"使用指紋即可開啟"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"需要驗證。輕觸指紋感應器即可進行驗證。"</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"通話中"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"行動數據"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"已連線"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"已暫時建立連線"</string> @@ -1437,7 +1437,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"目前的應用程式"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"無障礙"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"鍵盤快速鍵"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"自訂鍵盤快速鍵"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"自訂快速鍵"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"要移除快速鍵嗎?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"要重設為預設值嗎?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"按下按鍵即可指派快速鍵"</string> @@ -1465,6 +1465,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"按鍵組合重複,請改用其他按鍵。"</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"無法設定捷徑。"</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"新增快速鍵"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"刪除快速鍵"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"使用鍵盤操作"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"學習鍵盤快速鍵"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"使用觸控板操作"</string> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index a63167ed8ac2..f7f4bcfcdc83 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -761,7 +761,8 @@ <string name="accessibility_status_bar_satellite_good_connection" msgid="308079391708578704">"Isethelayithi, uxhumano oluhle"</string> <string name="accessibility_status_bar_satellite_available" msgid="6514855015496916829">"Isethelayithi, uxhumano luyatholakala"</string> <string name="satellite_connected_carrier_text" msgid="118524195198532589">"Isethelayithi yokuxhumana ngezimo eziphuthumayo"</string> - <string name="satellite_emergency_only_carrier_text" msgid="828510231597991206">"Ikholi ephuthumayo noma i-SOS"</string> + <!-- no translation found for satellite_emergency_only_carrier_text (9103913890116841786) --> + <skip /> <string name="accessibility_phone_string_format" msgid="7798841417881811812">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>, <xliff:g id="SIGNAL_STRENGTH_DESCRIPTION">%2$s</xliff:g>."</string> <string name="accessibility_no_signal" msgid="7052827511409250167">"ayikho isignali"</string> <string name="accessibility_one_bar" msgid="5342012847647834506">"ibha eyodwa"</string> @@ -1291,8 +1292,7 @@ <string name="accessibility_enter_hint" msgid="2617864063504824834">"faka idivayisi"</string> <string name="keyguard_try_fingerprint" msgid="2825130772993061165">"Sebenzisa izigxivizo zeminwe ukuvula"</string> <string name="accessibility_fingerprint_bouncer" msgid="7189102492498735519">"Ukufakazela ubuqiniso budingekile. Thinta inzwa yezigxivizo zeminwe ukuze uqinisekise."</string> - <!-- no translation found for ongoing_call_content_description (6394763878322348560) --> - <skip /> + <string name="ongoing_call_content_description" msgid="6394763878322348560">"Ikholi eqhubekayo"</string> <string name="mobile_data_settings_title" msgid="3955246641380064901">"Idatha yeselula"</string> <string name="mobile_data_connection_active" msgid="944490013299018227">"Ixhunyiwe"</string> <string name="mobile_data_temp_connection_active" msgid="4590222725908806824">"Ixhume okwesikhashana"</string> @@ -1439,7 +1439,7 @@ <string name="shortcut_helper_category_current_app_shortcuts" msgid="4017840565974573628">"I-App yamanje"</string> <string name="shortcut_helper_category_a11y" msgid="6314444792641773464">"Ukufinyeleleka"</string> <string name="shortcut_helper_title" msgid="8567500639300970049">"Izinqamuleli zekhibhodi"</string> - <string name="shortcut_helper_customize_mode_title" msgid="1467657117101096033">"Hlela izinqamuleli zekhibhodi ngendlela oyifisayo"</string> + <string name="shortcut_helper_customize_mode_title" msgid="8327297960035006036">"Qamba ngokwabahlinzekelwayo izinqamuleli"</string> <string name="shortcut_customize_mode_remove_shortcut_dialog_title" msgid="7106420484940737208">"Susa isinqamuleli?"</string> <string name="shortcut_customize_mode_reset_shortcut_dialog_title" msgid="8131184731313717780">"Setha kabusha ubuyele kokuzenzakalelayo?"</string> <string name="shortcut_customize_mode_add_shortcut_description" msgid="6866025005347407696">"Cindezela ukhiye ukuze unikeze isinqamuleli"</string> @@ -1467,6 +1467,8 @@ <string name="shortcut_customizer_key_combination_in_use_error_message" msgid="7693234470526626327">"Inhlanganisela yokhiye isiyasetshenziswa kakade. Zama omunye ukhiye."</string> <string name="shortcut_customizer_generic_error_message" msgid="3128454624049722741">"Isinqamuleli asikwazi ukusethwa."</string> <string name="shortcut_helper_plus_symbol" msgid="4534843157353732011">"+"</string> + <string name="shortcut_helper_add_shortcut_button_label" msgid="7655779534665954910">"Faka isinqamuleli"</string> + <string name="shortcut_helper_delete_shortcut_button_label" msgid="3148773472696137052">"Sula isinqamuleli"</string> <string name="launch_keyboard_tutorial_notification_title" msgid="8849933155160522519">"Funa usebenzisa ikhibhodi yakho"</string> <string name="launch_keyboard_tutorial_notification_content" msgid="2880339951512757918">"Funda izinqamuleli zamakhibhodi"</string> <string name="launch_touchpad_tutorial_notification_title" msgid="2243780062772196901">"Funa usebenzisa iphedi yokuthinta"</string> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginEnabler.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginEnabler.java index 1c5da827eeb3..3d2ce4229bd5 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginEnabler.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginEnabler.java @@ -27,9 +27,10 @@ public interface PluginEnabler { int DISABLED_INVALID_VERSION = 2; int DISABLED_FROM_EXPLICIT_CRASH = 3; int DISABLED_FROM_SYSTEM_CRASH = 4; + int DISABLED_UNKNOWN = 100; @IntDef({ENABLED, DISABLED_MANUALLY, DISABLED_INVALID_VERSION, DISABLED_FROM_EXPLICIT_CRASH, - DISABLED_FROM_SYSTEM_CRASH}) + DISABLED_FROM_SYSTEM_CRASH, DISABLED_UNKNOWN}) @interface DisableReason { } diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModel.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModel.kt index 5baec1e025e8..73aaf7f8e460 100644 --- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/viewmodel/PinBouncerViewModel.kt @@ -29,11 +29,11 @@ import android.view.KeyEvent.isConfirmKey import android.view.View import androidx.compose.ui.input.key.KeyEvent import androidx.compose.ui.input.key.KeyEventType +import com.android.app.tracing.coroutines.launchTraced as launch import com.android.keyguard.PinShapeAdapter import com.android.systemui.authentication.shared.model.AuthenticationMethodModel import com.android.systemui.bouncer.domain.interactor.BouncerInteractor import com.android.systemui.bouncer.domain.interactor.SimBouncerInteractor -import com.android.systemui.bouncer.shared.flag.ComposeBouncerFlags import com.android.systemui.bouncer.ui.helper.BouncerHapticPlayer import com.android.systemui.res.R import dagger.assisted.Assisted @@ -50,7 +50,6 @@ import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.receiveAsFlow -import com.android.app.tracing.coroutines.launchTraced as launch /** Holds UI state and handles user input for the PIN code bouncer UI. */ class PinBouncerViewModel @@ -289,11 +288,10 @@ constructor( * feedback on the view. */ fun onDigitButtonDown(view: View?) { - if (ComposeBouncerFlags.isOnlyComposeBouncerEnabled()) { - // Current PIN bouncer informs FalsingInteractor#avoidGesture() upon every Pin button - // touch. - super.onDown() - } + // This ends up calling FalsingInteractor#avoidGesture() each time a PIN button is touched. + // It helps make sure that legitimate touch in the PIN bouncer isn't treated as false touch. + super.onDown() + if (bouncerHapticPlayer?.isEnabled == true) { bouncerHapticPlayer.playNumpadKeyFeedback() } else { diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCoreStartable.kt b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCoreStartable.kt index b79538aac3e6..60cdccdeaadd 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingCoreStartable.kt +++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingCoreStartable.kt @@ -21,8 +21,9 @@ import javax.inject.Inject /** Initializes classes related to falsing. */ @SysUISingleton -class FalsingCoreStartable @Inject constructor(val falsingCollector: FalsingCollector) : - CoreStartable { +class FalsingCoreStartable +@Inject +constructor(@FalsingCollectorActual val falsingCollector: FalsingCollector) : CoreStartable { override fun start() { falsingCollector.init() } diff --git a/packages/SystemUI/src/com/android/systemui/education/data/repository/UserContextualEducationRepository.kt b/packages/SystemUI/src/com/android/systemui/education/data/repository/UserContextualEducationRepository.kt index 2412ad442e66..9596a540b63b 100644 --- a/packages/SystemUI/src/com/android/systemui/education/data/repository/UserContextualEducationRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/education/data/repository/UserContextualEducationRepository.kt @@ -77,8 +77,6 @@ interface ContextualEducationRepository { transform: (EduDeviceConnectionTime) -> EduDeviceConnectionTime ) - suspend fun clear() - val keyboardShortcutTriggered: Flow<GestureType> } @@ -280,8 +278,4 @@ constructor( preferences.remove(key) } } - - override suspend fun clear() { - datastore.filterNotNull().first().edit { it.clear() } - } } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardClockViewModel.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardClockViewModel.kt index 8fe225a8b93f..88fdc83fa7a0 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardClockViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardClockViewModel.kt @@ -100,7 +100,7 @@ constructor( keyguardClockInteractor.clockShouldBeCentered.stateIn( scope = applicationScope, started = SharingStarted.WhileSubscribed(), - initialValue = false, + initialValue = true, ) // To translate elements below smartspace in weather clock to avoid overlapping between date diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt index 4e97eb5bc9d1..47161191b229 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt @@ -1744,7 +1744,8 @@ constructor( println("location: $desiredLocation") println( "state: ${desiredHostState?.expansion}, " + - "only active ${desiredHostState?.showsOnlyActiveMedia}" + "only active ${desiredHostState?.showsOnlyActiveMedia}, " + + "visible ${desiredHostState?.visible}" ) println("isSwipedAway: ${MediaPlayerData.isSwipedAway}") println("allowMediaPlayerOnLockScreen: $allowMediaPlayerOnLockScreen") diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt index b4dabbe036e9..a6aa159692ec 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManager.kt @@ -37,12 +37,14 @@ import com.android.app.animation.Interpolators import com.android.app.tracing.coroutines.launchTraced as launch import com.android.app.tracing.traceSection import com.android.keyguard.KeyguardViewController +import com.android.systemui.Dumpable import com.android.systemui.Flags.mediaControlsLockscreenShadeBugFix import com.android.systemui.communal.ui.viewmodel.CommunalTransitionViewModel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dreams.DreamOverlayStateController +import com.android.systemui.dump.DumpManager import com.android.systemui.keyguard.WakefulnessLifecycle import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor import com.android.systemui.media.controls.domain.pipeline.MediaDataManager @@ -62,6 +64,7 @@ import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.statusbar.policy.SplitShadeStateController import com.android.systemui.util.animation.UniqueObjectHostView import com.android.systemui.util.settings.SecureSettings +import java.io.PrintWriter import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi @@ -119,7 +122,8 @@ constructor( @Application private val coroutineScope: CoroutineScope, private val splitShadeStateController: SplitShadeStateController, private val logger: MediaViewLogger, -) { + private val dumpManager: DumpManager, +) : Dumpable { /** Track the media player setting status on lock screen. */ private var allowMediaPlayerOnLockScreen: Boolean = true @@ -476,6 +480,7 @@ constructor( } init { + dumpManager.registerNormalDumpable(TAG, this) updateConfiguration() configurationController.addCallback( object : ConfigurationController.ConfigurationListener { @@ -1344,6 +1349,19 @@ constructor( return isCommunalShowing && !isPrimaryBouncerShowing && !isAnyShadeFullyExpanded } + override fun dump(pw: PrintWriter, args: Array<out String>) { + pw.apply { + println( + "current attachment: $currentAttachmentLocation, " + + "desired location: $desiredLocation, " + + "visible ${getHost(desiredLocation)?.visible}" + ) + println("previous location: $previousLocation") + println("bounds: $currentBounds, target $targetBounds") + println("clipping: $currentClipping, target $targetClipping") + } + } + companion object { /** Attached in expanded quick settings */ const val LOCATION_QS = 0 diff --git a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt index a2ddc20844e7..86e92941256b 100644 --- a/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt +++ b/packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaViewController.kt @@ -883,7 +883,6 @@ constructor( currentEndLocation = endLocation currentStartLocation = startLocation currentTransitionProgress = transitionProgress - logger.logMediaLocation("setCurrentState", startLocation, endLocation) val shouldAnimate = animateNextStateChange && !applyImmediately @@ -900,6 +899,7 @@ constructor( // If the view isn't bound, we can drop the animation, otherwise we'll execute it animateNextStateChange = false if (transitionLayout == null) { + logger.logMediaLocation("setCurrentState: view not bound", startLocation, endLocation) return } @@ -949,7 +949,7 @@ constructor( ) } logger.logMediaSize( - "setCurrentState (progress $transitionProgress)", + "setCurrentState $startLocation -> $endLocation (progress $transitionProgress)", result.width, result.height, ) diff --git a/packages/SystemUI/src/com/android/systemui/plugins/PluginEnablerImpl.java b/packages/SystemUI/src/com/android/systemui/plugins/PluginEnablerImpl.java index 40f59744e038..7f1c7a525f97 100644 --- a/packages/SystemUI/src/com/android/systemui/plugins/PluginEnablerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/plugins/PluginEnablerImpl.java @@ -18,6 +18,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.shared.plugins.PluginEnabler; @@ -28,6 +29,7 @@ import javax.inject.Singleton; /** */ @Singleton public class PluginEnablerImpl implements PluginEnabler { + private static final String TAG = "PluginEnablerImpl"; private static final String CRASH_DISABLED_PLUGINS_PREF_FILE = "auto_disabled_plugins_prefs"; private final PackageManager mPm; @@ -64,8 +66,13 @@ public class PluginEnablerImpl implements PluginEnabler { @Override public boolean isEnabled(ComponentName component) { - return mPm.getComponentEnabledSetting(component) - != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + try { + return mPm.getComponentEnabledSetting(component) + != PackageManager.COMPONENT_ENABLED_STATE_DISABLED; + } catch (IllegalArgumentException ex) { + Log.e(TAG, "Package Manager Exception", ex); + return false; + } } @Override @@ -73,6 +80,6 @@ public class PluginEnablerImpl implements PluginEnabler { if (isEnabled(componentName)) { return ENABLED; } - return mAutoDisabledPrefs.getInt(componentName.flattenToString(), DISABLED_MANUALLY); + return mAutoDisabledPrefs.getInt(componentName.flattenToString(), DISABLED_UNKNOWN); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt index 56fece8ecf5c..65fba28c5465 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/composefragment/QSFragmentCompose.kt @@ -100,6 +100,7 @@ import com.android.compose.modifiers.height import com.android.compose.modifiers.padding import com.android.compose.modifiers.thenIf import com.android.compose.theme.PlatformTheme +import com.android.mechanics.GestureContext import com.android.systemui.Dumpable import com.android.systemui.brightness.ui.compose.BrightnessSliderContainer import com.android.systemui.compose.modifiers.sysuiResTag @@ -935,6 +936,8 @@ private class ExpansionTransition(currentProgress: Float) : override val isUserInputOngoing: Boolean get() = true + override val gestureContext: GestureContext? = null + private val finishCompletable = CompletableDeferred<Unit>() override suspend fun run() { diff --git a/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModuleBase.kt b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModuleBase.kt index 3fd87689b169..e2a39160defc 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModuleBase.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/dagger/QSModuleBase.kt @@ -54,11 +54,11 @@ interface QSModuleBase { /** A map of internal QS tiles. Ensures that this can be injected even if it is empty */ @Multibinds fun tileMap(): Map<String?, QSTileImpl<*>?>? - @Binds fun bindsQsSceneAdapter(impl: QSSceneAdapterImpl?): QSSceneAdapter? + @Binds fun bindsQsSceneAdapter(impl: QSSceneAdapterImpl): QSSceneAdapter /** Dims the screen */ @Binds fun bindReduceBrightColorsController( - impl: ReduceBrightColorsControllerImpl? - ): ReduceBrightColorsController? + impl: ReduceBrightColorsControllerImpl + ): ReduceBrightColorsController } diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt index 3a23a71cf7bf..8657c1723507 100644 --- a/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt +++ b/packages/SystemUI/src/com/android/systemui/scene/domain/startable/SceneContainerStartable.kt @@ -94,7 +94,6 @@ import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChangedBy -import kotlinx.coroutines.flow.emptyFlow import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterIsInstance import kotlinx.coroutines.flow.filterNot @@ -717,14 +716,7 @@ constructor( } applicationScope.launch { - keyguardInteractor.isAodAvailable - .flatMapLatest { isAodAvailable -> - if (!isAodAvailable) { - powerInteractor.detailedWakefulness - } else { - emptyFlow() - } - } + powerInteractor.detailedWakefulness .distinctUntilChangedBy { it.isAwake() } .collect { wakefulness -> when { diff --git a/packages/SystemUI/src/com/android/systemui/shade/OWNERS b/packages/SystemUI/src/com/android/systemui/shade/OWNERS index 5b8277284117..89454b84a528 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/OWNERS +++ b/packages/SystemUI/src/com/android/systemui/shade/OWNERS @@ -1,5 +1,7 @@ justinweir@google.com syeonlee@google.com +nicomazz@google.com +burakov@google.com per-file *Notification* = set noparent per-file *Notification* = file:../statusbar/notification/OWNERS @@ -9,13 +11,13 @@ per-file NotificationsQSContainerController.kt = kozynski@google.com, asc@google per-file *ShadeHeader* = syeonlee@google.com, kozynski@google.com, asc@google.com per-file *Interactor* = set noparent -per-file *Interactor* = justinweir@google.com, syeonlee@google.com, nijamkin@google.com +per-file *Interactor* = justinweir@google.com, syeonlee@google.com, nijamkin@google.com, nicomazz@google.com, burakov@google.com per-file *Repository* = set noparent -per-file *Repository* = justinweir@google.com, syeonlee@google.com, nijamkin@google.com +per-file *Repository* = justinweir@google.com, syeonlee@google.com, nijamkin@google.com, nicomazz@google.com, burakov@google.com -per-file NotificationShadeWindow* = pixel@google.com, cinek@google.com, juliacr@google.com, justinweir@google.com, syeonlee@google.com +per-file NotificationShadeWindow* = pixel@google.com, cinek@google.com, juliacr@google.com, justinweir@google.com, syeonlee@google.com, nicomazz@google.com, burakov@google.com per-file NotificationPanelUnfoldAnimationController.kt = alexflo@google.com, jeffdq@google.com, juliacr@google.com -per-file NotificationPanelView.java = pixel@google.com, cinek@google.com, juliacr@google.com, justinweir@google.com, syeonlee@google.com -per-file NotificationPanelViewController.java = pixel@google.com, cinek@google.com, juliacr@google.com, justinweir@google.com, syeonlee@google.com +per-file NotificationPanelView.java = pixel@google.com, cinek@google.com, juliacr@google.com, justinweir@google.com, syeonlee@google.com, nicomazz@google.com, burakov@google.com +per-file NotificationPanelViewController.java = pixel@google.com, cinek@google.com, juliacr@google.com, justinweir@google.com, syeonlee@google.com, nicomazz@google.com, burakov@google.com diff --git a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt index f67d33122063..fc26499a27a7 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/domain/interactor/ShadeDisplaysInteractor.kt @@ -91,8 +91,10 @@ constructor( try { withContext(mainThreadContext) { traceReparenting { - shadeDisplayChangeLatencyTracker.onShadeDisplayChanging(destinationId) - collapseAndExpandShadeIfNeeded { reparentToDisplayId(id = destinationId) } + collapseAndExpandShadeIfNeeded { + shadeDisplayChangeLatencyTracker.onShadeDisplayChanging(destinationId) + reparentToDisplayId(id = destinationId) + } checkContextDisplayMatchesExpected(destinationId) } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java b/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java index af51c49204bb..fed3f6e81130 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ImmersiveModeConfirmation.java @@ -22,8 +22,6 @@ import static android.app.StatusBarManager.DISABLE_BACK; import static android.app.StatusBarManager.DISABLE_HOME; import static android.app.StatusBarManager.DISABLE_RECENT; import static android.view.Display.DEFAULT_DISPLAY; -import static android.view.ViewRootImpl.CLIENT_IMMERSIVE_CONFIRMATION; -import static android.view.ViewRootImpl.CLIENT_TRANSIENT; import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; import static android.window.DisplayAreaOrganizer.FEATURE_UNDEFINED; import static android.window.DisplayAreaOrganizer.KEY_ROOT_DISPLAY_AREA_ID; @@ -90,8 +88,8 @@ import kotlin.Lazy; import javax.inject.Inject; /** - * Helper to manage showing/hiding a confirmation prompt when the navigation bar is hidden - * entering immersive mode. + * Helper to manage showing/hiding a confirmation prompt when the navigation bar is hidden + * entering immersive mode. */ public class ImmersiveModeConfirmation implements CoreStartable, CommandQueue.Callbacks, TaskStackChangeListener { @@ -140,9 +138,9 @@ public class ImmersiveModeConfirmation implements CoreStartable, CommandQueue.Ca @Inject public ImmersiveModeConfirmation(Context context, CommandQueue commandQueue, - SecureSettings secureSettings, - dagger.Lazy<ViewCapture> daggerLazyViewCapture, - @Background Handler backgroundHandler) { + SecureSettings secureSettings, + dagger.Lazy<ViewCapture> daggerLazyViewCapture, + @Background Handler backgroundHandler) { mSysUiContext = context; final Display display = mSysUiContext.getDisplay(); mDisplayContext = display.getDisplayId() == DEFAULT_DISPLAY @@ -213,7 +211,7 @@ public class ImmersiveModeConfirmation implements CoreStartable, CommandQueue.Ca public void immersiveModeChanged(int rootDisplayAreaId, boolean isImmersiveMode) { mHandler.removeMessages(H.SHOW); if (isImmersiveMode) { - if (DEBUG) Log.d(TAG, "immersiveModeChanged() sConfirmed=" + sConfirmed); + if (DEBUG) Log.d(TAG, "immersiveModeChanged() sConfirmed=" + sConfirmed); boolean userSetupComplete = (mSecureSettings.getIntForUser( Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0); @@ -314,44 +312,42 @@ public class ImmersiveModeConfirmation implements CoreStartable, CommandQueue.Ca @Override public void start() { - if (CLIENT_TRANSIENT || CLIENT_IMMERSIVE_CONFIRMATION) { - mCommandQueue.addCallback(this); - - final Resources r = mSysUiContext.getResources(); - mShowDelayMs = r.getInteger(R.integer.dock_enter_exit_duration) * 3L; - mCanSystemBarsBeShownByUser = !r.getBoolean( - R.bool.config_remoteInsetsControllerControlsSystemBars) || r.getBoolean( - R.bool.config_remoteInsetsControllerSystemBarsCanBeShownByUserAction); - IVrManager vrManager = IVrManager.Stub.asInterface( - ServiceManager.getService(Context.VR_SERVICE)); - if (vrManager != null) { - try { - mVrModeEnabled = vrManager.getVrModeState(); - vrManager.registerListener(mVrStateCallbacks); - mVrStateCallbacks.onVrStateChanged(mVrModeEnabled); - } catch (RemoteException e) { - // Ignore, we cannot do anything if we failed to access vr manager. - } - } - TaskStackChangeListeners.getInstance().registerTaskStackListener(this); - mContentObserver = new ContentObserver(mBackgroundHandler) { - @Override - public void onChange(boolean selfChange) { - onSettingChanged(mSysUiContext.getUserId()); - } - }; + mCommandQueue.addCallback(this); - // Register to listen for changes in Settings.Secure settings. - mSecureSettings.registerContentObserverForUserSync( - Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS, mContentObserver, - UserHandle.USER_CURRENT); - mSecureSettings.registerContentObserverForUserSync( - Settings.Secure.USER_SETUP_COMPLETE, mContentObserver, - UserHandle.USER_CURRENT); - mBackgroundHandler.post(() -> { - loadSetting(UserHandle.USER_CURRENT); - }); + final Resources r = mSysUiContext.getResources(); + mShowDelayMs = r.getInteger(R.integer.dock_enter_exit_duration) * 3L; + mCanSystemBarsBeShownByUser = !r.getBoolean( + R.bool.config_remoteInsetsControllerControlsSystemBars) || r.getBoolean( + R.bool.config_remoteInsetsControllerSystemBarsCanBeShownByUserAction); + IVrManager vrManager = IVrManager.Stub.asInterface( + ServiceManager.getService(Context.VR_SERVICE)); + if (vrManager != null) { + try { + mVrModeEnabled = vrManager.getVrModeState(); + vrManager.registerListener(mVrStateCallbacks); + mVrStateCallbacks.onVrStateChanged(mVrModeEnabled); + } catch (RemoteException e) { + // Ignore, we cannot do anything if we failed to access vr manager. + } } + TaskStackChangeListeners.getInstance().registerTaskStackListener(this); + mContentObserver = new ContentObserver(mBackgroundHandler) { + @Override + public void onChange(boolean selfChange) { + onSettingChanged(mSysUiContext.getUserId()); + } + }; + + // Register to listen for changes in Settings.Secure settings. + mSecureSettings.registerContentObserverForUserSync( + Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS, mContentObserver, + UserHandle.USER_CURRENT); + mSecureSettings.registerContentObserverForUserSync( + Settings.Secure.USER_SETUP_COMPLETE, mContentObserver, + UserHandle.USER_CURRENT); + mBackgroundHandler.post(() -> { + loadSetting(UserHandle.USER_CURRENT); + }); } private final IVrStateCallbacks mVrStateCallbacks = new IVrStateCallbacks.Stub() { @@ -542,7 +538,7 @@ public class ImmersiveModeConfirmation implements CoreStartable, CommandQueue.Ca /** * Returns options that specify the {@link RootDisplayArea} to attach the confirmation window. - * {@code null} if the {@code rootDisplayAreaId} is {@link FEATURE_UNDEFINED}. + * {@code null} if the {@code rootDisplayAreaId} is {@link FEATURE_UNDEFINED}. */ @Nullable private Bundle getOptionsForWindowContext(int rootDisplayAreaId) { @@ -600,10 +596,7 @@ public class ImmersiveModeConfirmation implements CoreStartable, CommandQueue.Ca @Override public void handleMessage(Message msg) { - if (!CLIENT_TRANSIENT && !CLIENT_IMMERSIVE_CONFIRMATION) { - return; - } - switch(msg.what) { + switch (msg.what) { case SHOW: handleShow(msg.arg1); break; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StabilizeHeadsUpGroup.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StabilizeHeadsUpGroup.kt new file mode 100644 index 000000000000..629cb831f17a --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/StabilizeHeadsUpGroup.kt @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.statusbar.notification.collection.coordinator + +import com.android.systemui.Flags +import com.android.systemui.flags.FlagToken +import com.android.systemui.flags.RefactorFlagUtils + +/** Helper for reading or using the every change not allowed in heads up Group mode flag state. */ +@Suppress("NOTHING_TO_INLINE") +object StabilizeHeadsUpGroup { + /** The aconfig flag name */ + const val FLAG_NAME: String = Flags.FLAG_STABILIZE_HEADS_UP_GROUP + + /** A token used for dependency declaration */ + val token: FlagToken + get() = FlagToken(FLAG_NAME, isEnabled) + + /** Is the refactor enabled */ + @JvmStatic + inline val isEnabled + get() = Flags.stabilizeHeadsUpGroup() + + /** + * Called to ensure code is only run when the flag is enabled. This protects users from the + * unintended behaviors caused by accidentally running new logic, while also crashing on an eng + * build to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun isUnexpectedlyInLegacyMode() = + RefactorFlagUtils.isUnexpectedlyInLegacyMode(isEnabled, FLAG_NAME) + + /** + * Called to ensure code is only run when the flag is enabled. This will throw an exception if + * the flag is not enabled to ensure that the refactor author catches issues in testing. + * Caution!! Using this check incorrectly will cause crashes in nextfood builds! + */ + @JvmStatic + inline fun assertInNewMode() = RefactorFlagUtils.assertInNewMode(isEnabled, FLAG_NAME) + + /** + * Called to ensure code is only run when the flag is disabled. This will throw an exception if + * the flag is enabled to ensure that the refactor author catches issues in testing. + */ + @JvmStatic + inline fun assertInLegacyMode() = RefactorFlagUtils.assertInLegacyMode(isEnabled, FLAG_NAME) +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java index 3c31d893cf72..49d5029bbc70 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinator.java @@ -26,6 +26,7 @@ import com.android.systemui.Flags; import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Background; +import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor; @@ -41,11 +42,12 @@ import com.android.systemui.statusbar.notification.collection.GroupEntry; import com.android.systemui.statusbar.notification.collection.ListEntry; import com.android.systemui.statusbar.notification.collection.NotifPipeline; import com.android.systemui.statusbar.notification.collection.NotificationEntry; +import com.android.systemui.statusbar.notification.collection.listbuilder.OnBeforeRenderListListener; import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifStabilityManager; import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider; import com.android.systemui.statusbar.notification.domain.interactor.SeenNotificationsInteractor; -import com.android.systemui.statusbar.notification.shared.NotificationMinimalism; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; +import com.android.systemui.statusbar.notification.shared.NotificationMinimalism; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.DelayableExecutor; import com.android.systemui.util.kotlin.BooleanFlowOperators; @@ -54,6 +56,7 @@ import com.android.systemui.util.kotlin.JavaAdapter; import java.io.PrintWriter; import java.util.HashMap; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Set; @@ -68,6 +71,7 @@ import javax.inject.Inject; @SysUISingleton public class VisualStabilityCoordinator implements Coordinator, Dumpable { private final DelayableExecutor mDelayableExecutor; + private final DelayableExecutor mMainExecutor; private final HeadsUpManager mHeadsUpManager; private final SeenNotificationsInteractor mSeenNotificationsInteractor; private final ShadeAnimationInteractor mShadeAnimationInteractor; @@ -91,6 +95,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { private boolean mCommunalShowing = false; private boolean mLockscreenShowing = false; private boolean mLockscreenInGoneTransition = false; + private Set<String> mHeadsUpGroupKeys = new HashSet<>(); private boolean mPipelineRunAllowed; private boolean mReorderingAllowed; @@ -110,6 +115,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { @Inject public VisualStabilityCoordinator( @Background DelayableExecutor delayableExecutor, + @Main DelayableExecutor mainExecutor, DumpManager dumpManager, HeadsUpManager headsUpManager, ShadeAnimationInteractor shadeAnimationInteractor, @@ -133,6 +139,7 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { mWakefulnessLifecycle = wakefulnessLifecycle; mStatusBarStateController = statusBarStateController; mDelayableExecutor = delayableExecutor; + mMainExecutor = mainExecutor; mCommunalSceneInteractor = communalSceneInteractor; mShadeInteractor = shadeInteractor; mKeyguardTransitionInteractor = keyguardTransitionInteractor; @@ -161,6 +168,11 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { ), this::onCommunalShowingChanged); + + if (StabilizeHeadsUpGroup.isEnabled()) { + pipeline.addOnBeforeRenderListListener(mOnBeforeRenderListListener); + } + if (SceneContainerFlag.isEnabled()) { mJavaAdapter.alwaysCollectFlow(mKeyguardTransitionInteractor.transitionValue( KeyguardState.LOCKSCREEN), @@ -176,10 +188,37 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { mKeyguardStateController.addCallback(mKeyguardFadeAwayAnimationCallback); } } - pipeline.setVisualStabilityManager(mNotifStabilityManager); } + /** + * Setter of heads up group keys. + */ + @VisibleForTesting + public void setHeadsUpGroupKeys(Set<String> currentHeadsUpGroupKeys) { + if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) { + return; + } + + if (currentHeadsUpGroupKeys == null) { + currentHeadsUpGroupKeys = new HashSet<>(); + } + + boolean isAnyHeadsUpGroupRemoved = false; + for (String headsUpKey: mHeadsUpGroupKeys) { + if (!currentHeadsUpGroupKeys.contains(headsUpKey)) { + isAnyHeadsUpGroupRemoved = true; + break; + } + } + mHeadsUpGroupKeys = currentHeadsUpGroupKeys; + + if (isAnyHeadsUpGroupRemoved) { + updateAllowedStates("headsUpGroupEntryChange", + mHeadsUpGroupKeys.isEmpty(), /* async= */ true); + } + } + final KeyguardStateController.Callback mKeyguardFadeAwayAnimationCallback = new KeyguardStateController.Callback() { @Override @@ -206,6 +245,64 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { return false; } + private boolean isParentHeadsUpGroup(NotificationEntry entry) { + if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) { + return false; + } + if (entry == null) { + return false; + } + + final GroupEntry parent = entry.getParent(); + + if (parent == null) { + return false; + } + + return isHeadsUpGroup(parent); + } + + private boolean isHeadsUpGroup(GroupEntry groupEntry) { + if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) { + return false; + } + + if (groupEntry == null) { + return false; + } + + final NotificationEntry summary = groupEntry.getSummary(); + if (summary == null) { + return false; + } + + return mHeadsUpManager.isHeadsUpEntry(summary.getKey()); + } + /** + * When reordering is enabled, non-heads-up groups can be pruned. + * @return true if the given group entry can be pruned. + */ + private boolean canReorderGroupEntry(GroupEntry entry) { + if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) { + return false; + } + + return entry != null && mReorderingAllowed && !isHeadsUpGroup(entry); + } + + /** + * When reordering is enabled, notifications in non-heads-up groups notifications + * are allowed to change. + * @return true if the given notification entry can changed. + */ + private boolean canReorderNotificationEntry(NotificationEntry entry) { + if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) { + return false; + } + + return entry != null && mReorderingAllowed && !isParentHeadsUpGroup(entry); + } + @Override public void onBeginRun() { mIsSuppressingPipelineRun = false; @@ -222,25 +319,50 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { @Override public boolean isGroupChangeAllowed(@NonNull NotificationEntry entry) { - final boolean isGroupChangeAllowedForEntry = - mReorderingAllowed || canMoveForHeadsUp(entry); + final boolean isGroupChangeAllowedForEntry; + if (StabilizeHeadsUpGroup.isEnabled()) { + isGroupChangeAllowedForEntry = + isEveryChangeAllowed() + || canReorderNotificationEntry(entry) + || canMoveForHeadsUp(entry); + } else { + isGroupChangeAllowedForEntry = mReorderingAllowed + || canMoveForHeadsUp(entry); + } mIsSuppressingGroupChange |= !isGroupChangeAllowedForEntry; return isGroupChangeAllowedForEntry; } @Override public boolean isGroupPruneAllowed(@NonNull GroupEntry entry) { - final boolean isGroupPruneAllowedForEntry = mReorderingAllowed; + boolean isGroupPruneAllowedForEntry; + if (StabilizeHeadsUpGroup.isEnabled()) { + isGroupPruneAllowedForEntry = isEveryChangeAllowed() + || canReorderGroupEntry(entry); + } else { + isGroupPruneAllowedForEntry = mReorderingAllowed; + } + mIsSuppressingGroupChange |= !isGroupPruneAllowedForEntry; return isGroupPruneAllowedForEntry; } @Override public boolean isSectionChangeAllowed(@NonNull NotificationEntry entry) { - final boolean isSectionChangeAllowedForEntry = - mReorderingAllowed - || canMoveForHeadsUp(entry) - || mEntriesThatCanChangeSection.containsKey(entry.getKey()); + final boolean isSectionChangeAllowedForEntry; + if (StabilizeHeadsUpGroup.isEnabled()) { + isSectionChangeAllowedForEntry = + isEveryChangeAllowed() + || canReorderNotificationEntry(entry) + || canMoveForHeadsUp(entry) + || mEntriesThatCanChangeSection.containsKey(entry.getKey()); + } else { + isSectionChangeAllowedForEntry = + mReorderingAllowed + || canMoveForHeadsUp(entry) + || mEntriesThatCanChangeSection.containsKey(entry.getKey()); + } + if (!isSectionChangeAllowedForEntry) { mEntriesWithSuppressedSectionChange.add(entry.getKey()); } @@ -249,12 +371,27 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { @Override public boolean isEntryReorderingAllowed(@NonNull ListEntry entry) { - return mReorderingAllowed || canMoveForHeadsUp(entry.getRepresentativeEntry()); + if (StabilizeHeadsUpGroup.isEnabled()) { + if (isEveryChangeAllowed()) { + return true; + } + + final NotificationEntry notificationEntry = entry.getRepresentativeEntry(); + return canReorderNotificationEntry(notificationEntry) + || canMoveForHeadsUp(notificationEntry); + } else { + return mReorderingAllowed || canMoveForHeadsUp( + entry.getRepresentativeEntry()); + } } @Override public boolean isEveryChangeAllowed() { - return mReorderingAllowed; + if (StabilizeHeadsUpGroup.isEnabled()) { + return mReorderingAllowed && mHeadsUpGroupKeys.isEmpty(); + } else { + return mReorderingAllowed; + } } @Override @@ -263,7 +400,37 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { } }; + private final OnBeforeRenderListListener mOnBeforeRenderListListener = + new OnBeforeRenderListListener() { + @Override + public void onBeforeRenderList(List<ListEntry> entries) { + if (StabilizeHeadsUpGroup.isUnexpectedlyInLegacyMode()) { + return; + } + + final Set<String> currentHeadsUpKeys = new HashSet<>(); + + for (int i = 0; i < entries.size(); i++) { + if (entries.get(i) instanceof GroupEntry groupEntry) { + final NotificationEntry summary = groupEntry.getSummary(); + if (summary == null) continue; + + final String summaryKey = summary.getKey(); + if (mHeadsUpManager.isHeadsUpEntry(summaryKey)) { + currentHeadsUpKeys.add(summaryKey); + } + } + } + + setHeadsUpGroupKeys(currentHeadsUpKeys); + } + }; + private void updateAllowedStates(String field, boolean value) { + updateAllowedStates(field, value, /* async = */ false); + } + + private void updateAllowedStates(String field, boolean value, boolean async) { boolean wasPipelineRunAllowed = mPipelineRunAllowed; boolean wasReorderingAllowed = mReorderingAllowed; // No need to run notification pipeline when the lockscreen is in fading animation. @@ -275,20 +442,28 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { mLogger.logAllowancesChanged( wasPipelineRunAllowed, mPipelineRunAllowed, wasReorderingAllowed, mReorderingAllowed, - field, value); + field, value, async); } + if (async) { + mMainExecutor.execute(this::maybeInvalidateList); + } else { + maybeInvalidateList(); + } + mVisualStabilityProvider.setReorderingAllowed(mReorderingAllowed); + } + + private void maybeInvalidateList() { if (mPipelineRunAllowed && mIsSuppressingPipelineRun) { mNotifStabilityManager.invalidateList("pipeline run suppression ended"); } else if (mReorderingAllowed && (mIsSuppressingGroupChange || isSuppressingSectionChange() || mIsSuppressingEntryReorder)) { - String reason = "reorder suppression ended for" + final String reason = "reorder suppression ended for" + " group=" + mIsSuppressingGroupChange + " section=" + isSuppressingSectionChange() + " sort=" + mIsSuppressingEntryReorder; mNotifStabilityManager.invalidateList(reason); } - mVisualStabilityProvider.setReorderingAllowed(mReorderingAllowed); } private boolean isSuppressingSectionChange() { @@ -393,6 +568,9 @@ public class VisualStabilityCoordinator implements Coordinator, Dumpable { pw.println("isSuppressingPipelineRun: " + mIsSuppressingPipelineRun); pw.println("isSuppressingGroupChange: " + mIsSuppressingGroupChange); pw.println("isSuppressingEntryReorder: " + mIsSuppressingEntryReorder); + if (StabilizeHeadsUpGroup.isEnabled()) { + pw.println("headsUpGroupKeys: " + mHeadsUpGroupKeys.size()); + } pw.println("entriesWithSuppressedSectionChange: " + mEntriesWithSuppressedSectionChange.size()); for (String key : mEntriesWithSuppressedSectionChange) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorLogger.kt index fe23e4e12db4..5051afc53881 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/VisualStabilityCoordinatorLogger.kt @@ -32,7 +32,8 @@ constructor(@VisualStabilityLog private val buffer: LogBuffer) { wasReorderingAllowed: Boolean, isReorderingAllowed: Boolean, field: String, - value: Boolean + value: Boolean, + async: Boolean, ) { buffer.log( TAG, @@ -44,13 +45,15 @@ constructor(@VisualStabilityLog private val buffer: LogBuffer) { bool4 = isReorderingAllowed str1 = field str2 = value.toString() + str3 = async.toString() }, { "stability allowances changed:" + " pipelineRunAllowed $bool1->$bool2" + " reorderingAllowed $bool3->$bool4" + " when setting $str1=$str2" - } + " async=$str3" + }, ) } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java index ea48fb4ffd92..086c32cbae5d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java @@ -60,7 +60,6 @@ import com.android.systemui.statusbar.notification.collection.render.Notificatio import com.android.systemui.statusbar.notification.data.NotificationDataLayerModule; import com.android.systemui.statusbar.notification.domain.NotificationDomainLayerModule; import com.android.systemui.statusbar.notification.domain.interactor.NotificationLaunchAnimationInteractor; -import com.android.systemui.statusbar.notification.footer.ui.viewmodel.FooterViewModelModule; import com.android.systemui.statusbar.notification.headsup.HeadsUpManager; import com.android.systemui.statusbar.notification.icon.ConversationIconManager; import com.android.systemui.statusbar.notification.icon.IconManager; @@ -109,7 +108,6 @@ import javax.inject.Provider; * Dagger Module for classes found within the com.android.systemui.statusbar.notification package. */ @Module(includes = { - FooterViewModelModule.class, KeyguardNotificationVisibilityProviderModule.class, NotificationDataLayerModule.class, NotificationDomainLayerModule.class, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/view/FooterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/view/FooterView.java index a670f69df601..c88dd7af6b24 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/view/FooterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/view/FooterView.java @@ -40,6 +40,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import com.android.systemui.res.R; +import com.android.systemui.scene.shared.flag.SceneContainerFlag; import com.android.systemui.statusbar.notification.ColorUpdateLogger; import com.android.systemui.statusbar.notification.footer.shared.NotifRedesignFooter; import com.android.systemui.statusbar.notification.row.FooterViewButton; @@ -333,11 +334,9 @@ public class FooterView extends StackScrollerDecorView { /** * Whether the touch is outside the Clear all button. - * - * TODO(b/293167744): This is an artifact from the time when we could press underneath the - * shade to dismiss it. Check if it's safe to remove. */ public boolean isOnEmptySpace(float touchX, float touchY) { + SceneContainerFlag.assertInLegacyMode(); return touchX < mContent.getX() || touchX > mContent.getX() + mContent.getWidth() || touchY < mContent.getY() diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModel.kt index 5696e9f0c5a2..c895c41960d4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModel.kt @@ -19,7 +19,6 @@ package com.android.systemui.statusbar.notification.footer.ui.viewmodel import android.content.Intent import android.provider.Settings import com.android.internal.jank.InteractionJankMonitor -import com.android.systemui.dagger.SysUISingleton import com.android.systemui.res.R import com.android.systemui.shade.domain.interactor.ShadeInteractor import com.android.systemui.shared.notifications.domain.interactor.NotificationSettingsInteractor @@ -32,10 +31,8 @@ import com.android.systemui.util.kotlin.sample import com.android.systemui.util.ui.AnimatableEvent import com.android.systemui.util.ui.AnimatedValue import com.android.systemui.util.ui.toAnimatedValueFlow -import dagger.Module -import dagger.Provides -import java.util.Optional -import javax.inject.Provider +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged @@ -44,7 +41,9 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onStart /** ViewModel for [FooterView]. */ -class FooterViewModel( +class FooterViewModel +@AssistedInject +constructor( activeNotificationsInteractor: ActiveNotificationsInteractor, notificationSettingsInteractor: NotificationSettingsInteractor, seenNotificationsInteractor: SeenNotificationsInteractor, @@ -141,25 +140,9 @@ class FooterViewModel( AnimatedValue.NotAnimating(!messageVisible) }, ) -} -// TODO: b/293167744 - remove this, use new viewmodel style -@Module -object FooterViewModelModule { - @Provides - @SysUISingleton - fun provideOptional( - activeNotificationsInteractor: Provider<ActiveNotificationsInteractor>, - notificationSettingsInteractor: Provider<NotificationSettingsInteractor>, - seenNotificationsInteractor: Provider<SeenNotificationsInteractor>, - shadeInteractor: Provider<ShadeInteractor>, - ): Optional<FooterViewModel> = - Optional.of( - FooterViewModel( - activeNotificationsInteractor.get(), - notificationSettingsInteractor.get(), - seenNotificationsInteractor.get(), - shadeInteractor.get(), - ) - ) + @AssistedFactory + interface Factory { + fun create(): FooterViewModel + } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationListViewBinder.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationListViewBinder.kt index 1d7e658932ac..6385d53dbc8b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationListViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewbinder/NotificationListViewBinder.kt @@ -99,6 +99,9 @@ constructor( .inflate(R.layout.status_bar_notification_shelf, view, false) as NotificationShelf view.setShelf(shelf) + // Create viewModels once, and only when needed. + val footerViewModel by lazy { viewModel.footerViewModelFactory.create() } + val emptyShadeViewModel by lazy { viewModel.emptyShadeViewModelFactory.create() } view.repeatWhenAttached { lifecycleScope.launch { if (SceneContainerFlag.isEnabled) { @@ -109,12 +112,18 @@ constructor( val hasNonClearableSilentNotifications: StateFlow<Boolean> = viewModel.hasNonClearableSilentNotifications.stateIn(this) - launch { reinflateAndBindFooter(view, hasNonClearableSilentNotifications) } + launch { + reinflateAndBindFooter( + footerViewModel, + view, + hasNonClearableSilentNotifications, + ) + } launch { if (ModesEmptyShadeFix.isEnabled) { - reinflateAndBindEmptyShade(view) + reinflateAndBindEmptyShade(emptyShadeViewModel, view) } else { - bindEmptyShadeLegacy(viewModel.emptyShadeViewFactory.create(), view) + bindEmptyShadeLegacy(emptyShadeViewModel, view) } } launch { bindSilentHeaderClickListener(view, hasNonClearableSilentNotifications) } @@ -134,31 +143,30 @@ constructor( } private suspend fun reinflateAndBindFooter( + footerViewModel: FooterViewModel, parentView: NotificationStackScrollLayout, hasNonClearableSilentNotifications: StateFlow<Boolean>, ) { - viewModel.footer.getOrNull()?.let { footerViewModel -> - // The footer needs to be re-inflated every time the theme or the font size changes. - configuration - .inflateLayout<FooterView>( - if (NotifRedesignFooter.isEnabled) R.layout.notification_2025_footer - else R.layout.status_bar_notification_footer, - parentView, - attachToRoot = false, - ) - .flowOn(backgroundDispatcher) - .collectLatest { footerView: FooterView -> - traceAsync("bind FooterView") { - parentView.setFooterView(footerView) - bindFooter( - footerView, - footerViewModel, - parentView, - hasNonClearableSilentNotifications, - ) - } + // The footer needs to be re-inflated every time the theme or the font size changes. + configuration + .inflateLayout<FooterView>( + if (NotifRedesignFooter.isEnabled) R.layout.notification_2025_footer + else R.layout.status_bar_notification_footer, + parentView, + attachToRoot = false, + ) + .flowOn(backgroundDispatcher) + .collectLatest { footerView: FooterView -> + traceAsync("bind FooterView") { + parentView.setFooterView(footerView) + bindFooter( + footerView, + footerViewModel, + parentView, + hasNonClearableSilentNotifications, + ) } - } + } } /** @@ -219,7 +227,10 @@ constructor( notificationActivityStarter.get().startHistoryIntent(view, /* showHistory= */ true) } - private suspend fun reinflateAndBindEmptyShade(parentView: NotificationStackScrollLayout) { + private suspend fun reinflateAndBindEmptyShade( + emptyShadeViewModel: EmptyShadeViewModel, + parentView: NotificationStackScrollLayout, + ) { ModesEmptyShadeFix.assertInNewMode() // The empty shade needs to be re-inflated every time the theme or the font size // changes. @@ -233,7 +244,7 @@ constructor( .collectLatest { emptyShadeView: EmptyShadeView -> traceAsync("bind EmptyShadeView") { parentView.setEmptyShadeView(emptyShadeView) - bindEmptyShade(emptyShadeView, viewModel.emptyShadeViewFactory.create()) + bindEmptyShade(emptyShadeView, emptyShadeViewModel) } } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModel.kt index fcc671a5bae6..5ed1889de01e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModel.kt @@ -56,8 +56,8 @@ class NotificationListViewModel constructor( val shelf: NotificationShelfViewModel, val hideListViewModel: HideListViewModel, - val footer: Optional<FooterViewModel>, - val emptyShadeViewFactory: EmptyShadeViewModel.Factory, + val footerViewModelFactory: FooterViewModel.Factory, + val emptyShadeViewModelFactory: EmptyShadeViewModel.Factory, val logger: Optional<NotificationLoggerViewModel>, activeNotificationsInteractor: ActiveNotificationsInteractor, notificationStackInteractor: NotificationStackInteractor, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt index 5d550226a79e..8e12e081e861 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationsPlaceholderViewModel.kt @@ -16,15 +16,21 @@ package com.android.systemui.statusbar.notification.stack.ui.viewmodel +import androidx.compose.runtime.getValue import com.android.app.tracing.coroutines.launchTraced as launch +import com.android.compose.animation.scene.ContentKey import com.android.compose.animation.scene.ObservableTransitionState import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FeatureFlagsClassic import com.android.systemui.flags.Flags import com.android.systemui.lifecycle.ExclusiveActivatable +import com.android.systemui.lifecycle.Hydrator import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag +import com.android.systemui.scene.shared.model.Overlays +import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shade.domain.interactor.ShadeInteractor +import com.android.systemui.shade.shared.model.ShadeMode import com.android.systemui.statusbar.domain.interactor.RemoteInputInteractor import com.android.systemui.statusbar.notification.domain.interactor.HeadsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.NotificationStackAppearanceInteractor @@ -63,6 +69,24 @@ constructor( tag = "NotificationsPlaceholderViewModel", ) { + private val hydrator = Hydrator("NotificationsPlaceholderViewModel") + + /** The content key to use for the notification shade. */ + val notificationsShadeContentKey: ContentKey by + hydrator.hydratedStateOf( + traceName = "notificationsShadeContentKey", + initialValue = getNotificationsShadeContentKey(shadeInteractor.shadeMode.value), + source = shadeInteractor.shadeMode.map { getNotificationsShadeContentKey(it) }, + ) + + /** The content key to use for the quick settings shade. */ + val quickSettingsShadeContentKey: ContentKey by + hydrator.hydratedStateOf( + traceName = "quickSettingsShadeContentKey", + initialValue = getQuickSettingsShadeContentKey(shadeInteractor.shadeMode.value), + source = shadeInteractor.shadeMode.map { getQuickSettingsShadeContentKey(it) }, + ) + /** DEBUG: whether the placeholder should be made slightly visible for positional debugging. */ val isVisualDebuggingEnabled: Boolean = featureFlags.isEnabled(Flags.NSSL_DEBUG_LINES) @@ -71,6 +95,8 @@ constructor( override suspend fun onActivated(): Nothing { coroutineScope { + launch { hydrator.activate() } + launch { shadeInteractor.isAnyExpanded .filter { it } @@ -79,8 +105,7 @@ constructor( launch { sceneInteractor.transitionState - .map { state -> state is ObservableTransitionState.Idle } - .filter { it } + .filter { it is ObservableTransitionState.Idle } .collect { headsUpNotificationInteractor.onTransitionIdle() } } } @@ -163,6 +188,18 @@ constructor( interactor.setAccessibilityScrollEventConsumer(consumer) } + private fun getNotificationsShadeContentKey(shadeMode: ShadeMode): ContentKey { + return if (shadeMode is ShadeMode.Dual) Overlays.NotificationsShade else Scenes.Shade + } + + private fun getQuickSettingsShadeContentKey(shadeMode: ShadeMode): ContentKey { + return when (shadeMode) { + is ShadeMode.Single -> Scenes.QuickSettings + is ShadeMode.Split -> Scenes.Shade + is ShadeMode.Dual -> Overlays.QuickSettingsShade + } + } + @AssistedFactory interface Factory { fun create(): NotificationsPlaceholderViewModel diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractor.kt index fdc2d8d96f9b..5fa15b831299 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractor.kt @@ -43,6 +43,7 @@ import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.combine @@ -123,12 +124,20 @@ constructor( * explicitly wants a shortcut to DND). Please prefer using [modes] or [activeModes] in all * other scenarios. */ - val dndMode: StateFlow<ZenMode?> by lazy { - ModesUi.assertInNewMode() - zenModeRepository.modes - .map { modes -> modes.singleOrNull { it.isManualDnd } } - .stateIn(scope = backgroundScope, started = SharingStarted.Eagerly, initialValue = null) - } + val dndMode: StateFlow<ZenMode?> = + if (ModesUi.isEnabled) + zenModeRepository.modes + .map { modes -> modes.singleOrNull { it.isManualDnd } } + .stateIn( + scope = backgroundScope, + started = SharingStarted.Eagerly, + initialValue = null, + ) + else MutableStateFlow<ZenMode?>(null) + get() { + ModesUi.assertInNewMode() + return field + } /** Flow returning the currently active mode(s), if any. */ val activeModes: Flow<ActiveZenModes> = diff --git a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt index 07c4de0ac0c4..b0d6d62289c7 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModel.kt @@ -35,6 +35,7 @@ import com.android.systemui.res.R import com.android.systemui.statusbar.VibratorHelper import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.statusbar.policy.onConfigChanged +import com.android.systemui.util.time.SystemClock import com.android.systemui.volume.Events import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope @@ -56,6 +57,7 @@ import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.launch +private const val DRAWER_STATE_ANIMATION_DURATION = 400L private const val SHOW_RINGER_TOAST_COUNT = 12 @VolumeDialogScope @@ -71,6 +73,7 @@ constructor( private val volumeDialogLogger: VolumeDialogLogger, private val visibilityInteractor: VolumeDialogVisibilityInteractor, configurationController: ConfigurationController, + private val systemClock: SystemClock, ) { private val drawerState = MutableStateFlow<RingerDrawerState>(RingerDrawerState.Initial) @@ -108,6 +111,7 @@ constructor( .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) .build() + private var lastClickTime = 0L init { ringerViewModel .onEach { viewModelState -> @@ -124,6 +128,9 @@ constructor( } fun onRingerButtonClicked(ringerMode: RingerMode, isSelectedButton: Boolean = false) { + val currentTime = systemClock.currentTimeMillis() + if (currentTime - lastClickTime < DRAWER_STATE_ANIMATION_DURATION) return + lastClickTime = currentTime if (drawerState.value is RingerDrawerState.Open && !isSelectedButton) { Events.writeEvent(Events.EVENT_RINGER_TOGGLE, ringerMode.value) volumeDialogLogger.onRingerModeChanged(ringerMode) diff --git a/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt index 7da041e7ef19..411288ff1274 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/domain/interactor/AudioSharingInteractor.kt @@ -22,6 +22,7 @@ import android.media.AudioManager.STREAM_MUSIC import androidx.annotation.IntRange import com.android.app.tracing.coroutines.launchTraced as launch import com.android.settingslib.bluetooth.BluetoothUtils +import com.android.settingslib.bluetooth.CachedBluetoothDevice import com.android.settingslib.flags.Flags import com.android.settingslib.volume.data.repository.AudioSharingRepository import com.android.settingslib.volume.data.repository.AudioSharingRepository.Companion.AUDIO_SHARING_VOLUME_MAX @@ -42,12 +43,19 @@ import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.first import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map +import kotlinx.coroutines.launch import kotlinx.coroutines.withContext interface AudioSharingInteractor { /** Audio sharing state on the device. */ val isInAudioSharing: Flow<Boolean> + /** Primary audio sharing device. */ + val primaryDevice: Flow<CachedBluetoothDevice?> + + /** Secondary audio sharing device. */ + val secondaryDevice: Flow<CachedBluetoothDevice?> + /** Audio sharing secondary headset volume changes. */ val volume: Flow<Int?> @@ -86,6 +94,11 @@ constructor( private val audioSharingRepository: AudioSharingRepository, ) : AudioSharingInteractor { override val isInAudioSharing: Flow<Boolean> = audioSharingRepository.inAudioSharing + override val primaryDevice: Flow<CachedBluetoothDevice?> + get() = audioSharingRepository.primaryDevice + + override val secondaryDevice: Flow<CachedBluetoothDevice?> + get() = audioSharingRepository.secondaryDevice override val volume: Flow<Int?> = combine(audioSharingRepository.secondaryGroupId, audioSharingRepository.volumeMap) { @@ -148,6 +161,8 @@ constructor( @SysUISingleton class AudioSharingInteractorEmptyImpl @Inject constructor() : AudioSharingInteractor { override val isInAudioSharing: Flow<Boolean> = flowOf(false) + override val primaryDevice: Flow<CachedBluetoothDevice?> = flowOf(null) + override val secondaryDevice: Flow<CachedBluetoothDevice?> = flowOf(null) override val volume: Flow<Int?> = emptyFlow() override val volumeMin: Int = EMPTY_VOLUME override val volumeMax: Int = EMPTY_VOLUME diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractor.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractor.kt index 1e4afc0ac5fe..a326da45a7fc 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractor.kt @@ -21,6 +21,7 @@ import com.android.settingslib.volume.data.repository.AudioSystemRepository import com.android.settingslib.volume.domain.interactor.AudioModeInteractor import com.android.settingslib.volume.shared.model.AudioStream import com.android.systemui.Flags +import com.android.systemui.volume.domain.interactor.AudioSharingInteractor import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaOutputInteractor import com.android.systemui.volume.panel.component.mediaoutput.shared.model.MediaDeviceSession import com.android.systemui.volume.panel.component.mediaoutput.shared.model.isTheSameSession @@ -44,6 +45,7 @@ constructor( mediaOutputInteractor: MediaOutputInteractor, audioModeInteractor: AudioModeInteractor, private val audioSystemRepository: AudioSystemRepository, + audioSharingInteractor: AudioSharingInteractor, ) { val volumePanelSliders: StateFlow<List<SliderType>> = @@ -51,7 +53,8 @@ constructor( mediaOutputInteractor.activeMediaDeviceSessions, mediaOutputInteractor.defaultActiveMediaSession.filterData(), audioModeInteractor.isOngoingCall, - ) { activeSessions, defaultSession, isOngoingCall -> + audioSharingInteractor.volume, + ) { activeSessions, defaultSession, isOngoingCall, audioSharingVolume -> coroutineScope { val viewModels = buildList { if (isOngoingCall) { @@ -61,8 +64,14 @@ constructor( if (defaultSession?.isTheSameSession(activeSessions.remote) == true) { addSession(activeSessions.remote) addStream(AudioManager.STREAM_MUSIC) + if (Flags.showAudioSharingSliderInVolumePanel()) { + audioSharingVolume?.let { addAudioSharingStream() } + } } else { addStream(AudioManager.STREAM_MUSIC) + if (Flags.showAudioSharingSliderInVolumePanel()) { + audioSharingVolume?.let { addAudioSharingStream() } + } addSession(activeSessions.remote) } @@ -89,13 +98,18 @@ constructor( // Hide other streams except STREAM_MUSIC if the isSingleVolume mode is on. This makes sure // the volume slider in volume panel is consistent with the volume slider inside system // settings app. - if (Flags.onlyShowMediaStreamSliderInSingleVolumeMode() && - audioSystemRepository.isSingleVolume && - stream != AudioManager.STREAM_MUSIC + if ( + Flags.onlyShowMediaStreamSliderInSingleVolumeMode() && + audioSystemRepository.isSingleVolume && + stream != AudioManager.STREAM_MUSIC ) { return } add(SliderType.Stream(AudioStream(stream))) } + + private fun MutableList<SliderType>.addAudioSharingStream() { + add(SliderType.AudioSharingStream) + } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/domain/model/SliderType.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/domain/model/SliderType.kt index 6129ce543e2e..f180744eac22 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/domain/model/SliderType.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/domain/model/SliderType.kt @@ -27,4 +27,7 @@ sealed interface SliderType { /** The represents media device casting volume. */ data class MediaDeviceCast(val session: MediaDeviceSession) : SliderType + + /** Represents the audio sharing volume stream. */ + data object AudioSharingStream : SliderType } diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt new file mode 100644 index 000000000000..4ce9fe561aed --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModel.kt @@ -0,0 +1,130 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel + +import android.content.Context +import com.android.internal.logging.UiEventLogger +import com.android.systemui.Flags +import com.android.systemui.common.shared.model.Icon +import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel +import com.android.systemui.res.R +import com.android.systemui.volume.domain.interactor.AudioSharingInteractor +import com.android.systemui.volume.panel.ui.VolumePanelUiEvent +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import kotlin.math.roundToInt +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharingStarted +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.combine +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach +import kotlinx.coroutines.flow.stateIn + +@OptIn(ExperimentalCoroutinesApi::class) +class AudioSharingStreamSliderViewModel +@AssistedInject +constructor( + @Assisted private val coroutineScope: CoroutineScope, + private val context: Context, + private val audioSharingInteractor: AudioSharingInteractor, + private val uiEventLogger: UiEventLogger, + private val hapticsViewModelFactory: SliderHapticsViewModel.Factory, +) : SliderViewModel { + private val volumeChanges = MutableStateFlow<Int?>(null) + + override val slider: StateFlow<SliderState> = + combine(audioSharingInteractor.volume, audioSharingInteractor.secondaryDevice) { + volume, + device -> + val deviceName = device?.name ?: return@combine SliderState.Empty + if (volume == null) { + SliderState.Empty + } else { + State( + value = volume.toFloat(), + valueRange = + audioSharingInteractor.volumeMin.toFloat()..audioSharingInteractor + .volumeMax + .toFloat(), + icon = Icon.Resource(R.drawable.ic_volume_media_bt, null), + label = deviceName, + ) + } + } + .stateIn(coroutineScope, SharingStarted.Eagerly, SliderState.Empty) + + init { + volumeChanges + .filterNotNull() + .onEach { audioSharingInteractor.setStreamVolume(it) } + .launchIn(coroutineScope) + } + + override fun onValueChanged(state: SliderState, newValue: Float) { + val audioViewModel = state as? State + audioViewModel ?: return + volumeChanges.tryEmit(newValue.roundToInt()) + } + + override fun onValueChangeFinished() { + uiEventLogger.log(VolumePanelUiEvent.VOLUME_PANEL_AUDIO_SHARING_SLIDER_TOUCHED) + } + + override fun toggleMuted(state: SliderState) {} + + override fun getSliderHapticsViewModelFactory(): SliderHapticsViewModel.Factory? = + if (Flags.hapticsForComposeSliders() && slider.value != SliderState.Empty) { + hapticsViewModelFactory + } else { + null + } + + private data class State( + override val value: Float, + override val valueRange: ClosedFloatingPointRange<Float>, + override val icon: Icon, + override val label: String, + ) : SliderState { + override val isEnabled: Boolean + get() = true + + override val a11yStep: Int + get() = 1 + + override val disabledMessage: String? + get() = null + + override val isMutable: Boolean + get() = false + + override val a11yClickDescription: String? + get() = null + + override val a11yStateDescription: String? + get() = null + } + + @AssistedFactory + interface Factory { + fun create(coroutineScope: CoroutineScope): AudioSharingStreamSliderViewModel + } +} diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt index 328d1245e4a5..4410cb156723 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModel.kt @@ -21,6 +21,7 @@ import android.media.AudioManager import android.util.Log import com.android.app.tracing.coroutines.launchTraced as launch import com.android.internal.logging.UiEventLogger +import com.android.settingslib.bluetooth.CachedBluetoothDevice import com.android.settingslib.volume.domain.interactor.AudioVolumeInteractor import com.android.settingslib.volume.shared.model.AudioStream import com.android.settingslib.volume.shared.model.AudioStreamModel @@ -31,6 +32,8 @@ import com.android.systemui.haptics.slider.compose.ui.SliderHapticsViewModel import com.android.systemui.modes.shared.ModesUiIcons import com.android.systemui.res.R import com.android.systemui.statusbar.policy.domain.interactor.ZenModeInteractor +import com.android.systemui.util.kotlin.combine +import com.android.systemui.volume.domain.interactor.AudioSharingInteractor import com.android.systemui.volume.panel.shared.VolumePanelLogger import com.android.systemui.volume.panel.ui.VolumePanelUiEvent import dagger.assisted.Assisted @@ -42,7 +45,6 @@ import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow -import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.launchIn @@ -59,6 +61,7 @@ constructor( private val context: Context, private val audioVolumeInteractor: AudioVolumeInteractor, private val zenModeInteractor: ZenModeInteractor, + private val audioSharingInteractor: AudioSharingInteractor, private val uiEventLogger: UiEventLogger, private val volumePanelLogger: VolumePanelLogger, private val hapticsViewModelFactory: SliderHapticsViewModel.Factory, @@ -66,14 +69,6 @@ constructor( private val volumeChanges = MutableStateFlow<Int?>(null) private val audioStream = audioStreamWrapper.audioStream - private val iconsByStream = - mapOf( - AudioStream(AudioManager.STREAM_MUSIC) to R.drawable.ic_music_note, - AudioStream(AudioManager.STREAM_VOICE_CALL) to R.drawable.ic_call, - AudioStream(AudioManager.STREAM_RING) to R.drawable.ic_ring_volume, - AudioStream(AudioManager.STREAM_NOTIFICATION) to R.drawable.ic_volume_ringer, - AudioStream(AudioManager.STREAM_ALARM) to R.drawable.ic_volume_alarm, - ) private val labelsByStream = mapOf( AudioStream(AudioManager.STREAM_MUSIC) to R.string.stream_music, @@ -102,9 +97,18 @@ constructor( audioVolumeInteractor.canChangeVolume(audioStream), audioVolumeInteractor.ringerMode, streamDisabledMessage(), - ) { model, isEnabled, ringerMode, streamDisabledMessage -> + audioSharingInteractor.isInAudioSharing, + audioSharingInteractor.primaryDevice, + ) { model, isEnabled, ringerMode, streamDisabledMessage, isInAudioSharing, primaryDevice + -> volumePanelLogger.onVolumeUpdateReceived(audioStream, model.volume) - model.toState(isEnabled, ringerMode, streamDisabledMessage) + model.toState( + isEnabled, + ringerMode, + streamDisabledMessage, + isInAudioSharing, + primaryDevice, + ) } .stateIn(coroutineScope, SharingStarted.Eagerly, SliderState.Empty) @@ -147,14 +151,15 @@ constructor( isEnabled: Boolean, ringerMode: RingerMode, disabledMessage: String?, + inAudioSharing: Boolean, + primaryDevice: CachedBluetoothDevice?, ): State { - val label = - labelsByStream[audioStream]?.let(context::getString) - ?: error("No label for the stream: $audioStream") + val label = getLabel(inAudioSharing, primaryDevice) + val icon = getIcon(ringerMode, inAudioSharing) return State( value = volume.toFloat(), valueRange = volumeRange.first.toFloat()..volumeRange.last.toFloat(), - icon = getIcon(ringerMode), + icon = icon, label = label, disabledMessage = disabledMessage, isEnabled = isEnabled, @@ -222,7 +227,22 @@ constructor( } } - private fun AudioStreamModel.getIcon(ringerMode: RingerMode): Icon { + private fun AudioStreamModel.getLabel( + inAudioSharing: Boolean, + primaryDevice: CachedBluetoothDevice?, + ): String = + if ( + Flags.showAudioSharingSliderInVolumePanel() && + audioStream.value == AudioManager.STREAM_MUSIC && + inAudioSharing + ) { + primaryDevice?.name ?: context.getString(R.string.stream_music) + } else { + labelsByStream[audioStream]?.let(context::getString) + ?: error("No label for the stream: $audioStream") + } + + private fun AudioStreamModel.getIcon(ringerMode: RingerMode, inAudioSharing: Boolean): Icon { val iconRes = if (isMuted) { if (isAffectedByRingerMode) { @@ -232,18 +252,36 @@ constructor( R.drawable.ic_volume_off } } else { - R.drawable.ic_volume_off + if ( + Flags.showAudioSharingSliderInVolumePanel() && + audioStream.value == AudioManager.STREAM_MUSIC && + inAudioSharing + ) { + R.drawable.ic_volume_media_bt_mute + } else R.drawable.ic_volume_off } } else { - iconsByStream[audioStream] - ?: run { - Log.wtf(TAG, "No icon for the stream: $audioStream") - R.drawable.ic_music_note - } + getIconByStream(audioStream, inAudioSharing) } return Icon.Resource(iconRes, null) } + private fun getIconByStream(audioStream: AudioStream, inAudioSharing: Boolean): Int = + when (audioStream.value) { + AudioManager.STREAM_MUSIC -> + if (Flags.showAudioSharingSliderInVolumePanel() && inAudioSharing) { + R.drawable.ic_volume_media_bt + } else R.drawable.ic_music_note + AudioManager.STREAM_VOICE_CALL -> R.drawable.ic_call + AudioManager.STREAM_RING -> R.drawable.ic_ring_volume + AudioManager.STREAM_NOTIFICATION -> R.drawable.ic_volume_ringer + AudioManager.STREAM_ALARM -> R.drawable.ic_volume_alarm + else -> { + Log.wtf(TAG, "No icon for the stream: $audioStream") + R.drawable.ic_music_note + } + } + private val AudioStreamModel.volumeRange: IntRange get() = minVolume..maxVolume diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/ui/viewmodel/AudioVolumeComponentViewModel.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/ui/viewmodel/AudioVolumeComponentViewModel.kt index 96afbc1feaaf..28f11050fa4a 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/ui/viewmodel/AudioVolumeComponentViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/component/volume/ui/viewmodel/AudioVolumeComponentViewModel.kt @@ -16,6 +16,7 @@ package com.android.systemui.volume.panel.component.volume.ui.viewmodel +import com.android.app.tracing.coroutines.launchTraced as launch import com.android.settingslib.volume.domain.interactor.AudioModeInteractor import com.android.settingslib.volume.shared.model.AudioStream import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor.MediaDeviceSessionInteractor @@ -23,6 +24,7 @@ import com.android.systemui.volume.panel.component.mediaoutput.domain.interactor import com.android.systemui.volume.panel.component.mediaoutput.shared.model.MediaDeviceSession import com.android.systemui.volume.panel.component.volume.domain.interactor.AudioSlidersInteractor import com.android.systemui.volume.panel.component.volume.domain.model.SliderType +import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.AudioSharingStreamSliderViewModel import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.AudioStreamSliderViewModel import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.CastVolumeSliderViewModel import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.SliderViewModel @@ -45,7 +47,6 @@ import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.transformLatest -import com.android.app.tracing.coroutines.launchTraced as launch /** * Controls the behaviour of the whole audio @@ -61,6 +62,7 @@ constructor( mediaDeviceSessionInteractor: MediaDeviceSessionInteractor, private val streamSliderViewModelFactory: AudioStreamSliderViewModel.Factory, private val castVolumeSliderViewModelFactory: CastVolumeSliderViewModel.Factory, + private val audioSharingStreamSliderViewModelFactory: AudioSharingStreamSliderViewModel.Factory, audioModeInteractor: AudioModeInteractor, streamsInteractor: AudioSlidersInteractor, ) { @@ -108,6 +110,7 @@ constructor( is SliderType.Stream -> createStreamViewModel(type.stream) is SliderType.MediaDeviceCast -> createSessionViewModel(type.session) + is SliderType.AudioSharingStream -> createAudioSharingViewModel() } } emit(viewModels) @@ -138,11 +141,15 @@ constructor( } private fun CoroutineScope.createStreamViewModel( - stream: AudioStream, + stream: AudioStream ): AudioStreamSliderViewModel { return streamSliderViewModelFactory.create( AudioStreamSliderViewModel.FactoryAudioStreamWrapper(stream), this, ) } + + private fun CoroutineScope.createAudioSharingViewModel(): AudioSharingStreamSliderViewModel { + return audioSharingStreamSliderViewModelFactory.create(this) + } } diff --git a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/VolumePanelUiEvent.kt b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/VolumePanelUiEvent.kt index 8b8714fcca8c..d3a4fe86e827 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/panel/ui/VolumePanelUiEvent.kt +++ b/packages/SystemUI/src/com/android/systemui/volume/panel/ui/VolumePanelUiEvent.kt @@ -34,6 +34,8 @@ enum class VolumePanelUiEvent(val metricId: Int) : UiEventLogger.UiEventEnum { @UiEvent(doc = "The notification volume slider is touched") VOLUME_PANEL_NOTIFICATION_SLIDER_TOUCHED(1642), @UiEvent(doc = "The alarm volume slider is touched") VOLUME_PANEL_ALARM_SLIDER_TOUCHED(1643), + @UiEvent(doc = "The audio sharing volume slider is touched") + VOLUME_PANEL_AUDIO_SHARING_SLIDER_TOUCHED(2068), @UiEvent(doc = "Live caption toggle is shown") VOLUME_PANEL_LIVE_CAPTION_TOGGLE_SHOWN(1644), @UiEvent(doc = "Live caption toggle is gone") VOLUME_PANEL_LIVE_CAPTION_TOGGLE_GONE(1645), @UiEvent(doc = "Live caption toggle is clicked") VOLUME_PANEL_LIVE_CAPTION_TOGGLE_CLICKED(1646), diff --git a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt index 0508c2cf0426..072caa74df20 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/media/controls/ui/controller/MediaHierarchyManagerTest.kt @@ -31,6 +31,7 @@ import com.android.systemui.communal.shared.model.CommunalScenes import com.android.systemui.communal.ui.viewmodel.communalTransitionViewModel import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq import com.android.systemui.dreams.DreamOverlayStateController +import com.android.systemui.dump.DumpManager import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.keyguard.WakefulnessLifecycle import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository @@ -110,6 +111,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { @Mock private lateinit var dreamOverlayStateController: DreamOverlayStateController @Mock private lateinit var shadeInteractor: ShadeInteractor @Mock lateinit var logger: MediaViewLogger + @Mock lateinit var dumpManager: DumpManager @Captor private lateinit var wakefullnessObserver: ArgumentCaptor<(WakefulnessLifecycle.Observer)> @Captor @@ -166,6 +168,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { testScope.backgroundScope, ResourcesSplitShadeStateController(), logger, + dumpManager, ) verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture()) verify(statusBarStateController).addCallback(statusBarCallback.capture()) @@ -209,7 +212,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), - anyLong() + anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) @@ -222,7 +225,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), - anyLong() + anyLong(), ) } @@ -236,7 +239,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), - anyLong() + anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) @@ -249,7 +252,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), - anyLong() + anyLong(), ) } @@ -263,7 +266,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), - anyLong() + anyLong(), ) clearInvocations(mediaCarouselController) configurationController.notifyConfigurationChanged() @@ -273,7 +276,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), - anyLong() + anyLong(), ) } @@ -287,7 +290,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), - anyLong() + anyLong(), ) val observer = wakefullnessObserver.value assertNotNull("lifecycle observer wasn't registered", observer) @@ -299,7 +302,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), anyBoolean(), anyLong(), - anyLong() + anyLong(), ) } @@ -315,7 +318,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), - anyLong() + anyLong(), ) clearInvocations(mediaCarouselController) @@ -327,7 +330,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), - anyLong() + anyLong(), ) // Let's make sure alpha is set @@ -528,7 +531,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), - anyLong() + anyLong(), ) clearInvocations(mediaCarouselController) @@ -539,7 +542,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), - anyLong() + anyLong(), ) } @@ -559,7 +562,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), - anyLong() + anyLong(), ) clearInvocations(mediaCarouselController) @@ -576,7 +579,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), - anyLong() + anyLong(), ) } @@ -597,7 +600,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), - anyLong() + anyLong(), ) val captor = ArgumentCaptor.forClass(Boolean::class.java) @@ -630,7 +633,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), - anyLong() + anyLong(), ) val captor = ArgumentCaptor.forClass(Boolean::class.java) @@ -666,7 +669,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), - anyLong() + anyLong(), ) } @@ -689,7 +692,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { nullable(), eq(false), anyLong(), - anyLong() + anyLong(), ) clearInvocations(mediaCarouselController) @@ -704,7 +707,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), - anyLong() + anyLong(), ) } @@ -734,7 +737,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { anyOrNull(), eq(false), anyLong(), - anyLong() + anyLong(), ) clearInvocations(mediaCarouselController) @@ -749,7 +752,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { any<MediaHostState>(), eq(false), anyLong(), - anyLong() + anyLong(), ) } @@ -788,7 +791,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() { whenever(statusBarStateController.state).thenReturn(StatusBarState.SHADE_LOCKED) statusBarCallback.value.onStatePreChange( StatusBarState.KEYGUARD, - StatusBarState.SHADE_LOCKED + StatusBarState.SHADE_LOCKED, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/bluetooth/LocalBluetoothManagerKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/bluetooth/LocalBluetoothManagerKosmos.kt index eef89e7dac68..3d58cf58d7b9 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/bluetooth/LocalBluetoothManagerKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/bluetooth/LocalBluetoothManagerKosmos.kt @@ -18,10 +18,12 @@ package com.android.systemui.bluetooth import com.android.settingslib.bluetooth.LocalBluetoothManager import com.android.systemui.kosmos.Kosmos -import com.android.systemui.util.mockito.mock -import com.android.systemui.util.mockito.whenever +import org.mockito.kotlin.mock var Kosmos.localBluetoothManager: LocalBluetoothManager? by Kosmos.Fixture { - mock { whenever(cachedDeviceManager).thenReturn(cachedBluetoothDeviceManager) } + mock { + on { cachedDeviceManager }.thenReturn(cachedBluetoothDeviceManager) + on { profileManager }.thenReturn(localBluetoothProfileManager) + } } diff --git a/packages/CrashRecovery/framework/java/android/service/watchdog/PackageConfig.aidl b/packages/SystemUI/tests/utils/src/com/android/systemui/bluetooth/LocalBluetoothProfileManagerKosmos.kt index 013158676f79..34d7848a70aa 100644 --- a/packages/CrashRecovery/framework/java/android/service/watchdog/PackageConfig.aidl +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/bluetooth/LocalBluetoothProfileManagerKosmos.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 The Android Open Source Project + * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,9 +14,10 @@ * limitations under the License. */ -package android.service.watchdog; +package com.android.systemui.bluetooth -/** - * @hide - */ -parcelable PackageConfig; +import com.android.settingslib.bluetooth.LocalBluetoothProfileManager +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.util.mockito.mock + +var Kosmos.localBluetoothProfileManager: LocalBluetoothProfileManager by Kosmos.Fixture { mock {} } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/education/data/repository/FakeContextualEducationRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/education/data/repository/FakeContextualEducationRepository.kt index 9a6f2f60aac8..4667bf5292fa 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/education/data/repository/FakeContextualEducationRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/education/data/repository/FakeContextualEducationRepository.kt @@ -96,7 +96,7 @@ class FakeContextualEducationRepository : ContextualEducationRepository { override suspend fun updateGestureEduModel( gestureType: GestureType, - transform: (GestureEduModel) -> GestureEduModel, + transform: (GestureEduModel) -> GestureEduModel ) { val gestureModels = when (gestureType) { @@ -117,11 +117,6 @@ class FakeContextualEducationRepository : ContextualEducationRepository { _eduDeviceConnectionTime.value = transform(currentModel) } - override suspend fun clear() { - val currentUserMap = userGestureMap[currentUser]!! - currentUserMap.clear() - } - override val keyboardShortcutTriggered: Flow<GestureType> get() = _keyboardShortcutTriggered.filterNotNull() diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelKosmos.kt index 01cac4c1e030..99323dbd7cce 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/footer/ui/viewmodel/FooterViewModelKosmos.kt @@ -31,3 +31,8 @@ val Kosmos.footerViewModel by Fixture { shadeInteractor = shadeInteractor, ) } +val Kosmos.footerViewModelFactory: FooterViewModel.Factory by Fixture { + object : FooterViewModel.Factory { + override fun create() = footerViewModel + } +} diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelKosmos.kt index c3bc744e09b0..fbc2a21b0888 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/NotificationListViewModelKosmos.kt @@ -24,7 +24,7 @@ import com.android.systemui.shade.domain.interactor.shadeInteractor import com.android.systemui.statusbar.domain.interactor.remoteInputInteractor import com.android.systemui.statusbar.notification.domain.interactor.activeNotificationsInteractor import com.android.systemui.statusbar.notification.emptyshade.ui.viewmodel.emptyShadeViewModelFactory -import com.android.systemui.statusbar.notification.footer.ui.viewmodel.footerViewModel +import com.android.systemui.statusbar.notification.footer.ui.viewmodel.footerViewModelFactory import com.android.systemui.statusbar.notification.shelf.ui.viewmodel.notificationShelfViewModel import com.android.systemui.statusbar.notification.stack.domain.interactor.headsUpNotificationInteractor import com.android.systemui.statusbar.notification.stack.domain.interactor.notificationStackInteractor @@ -35,7 +35,7 @@ val Kosmos.notificationListViewModel by Fixture { NotificationListViewModel( notificationShelfViewModel, hideListViewModel, - Optional.of(footerViewModel), + footerViewModelFactory, emptyShadeViewModelFactory, Optional.of(notificationListLoggerViewModel), activeNotificationsInteractor, diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioSharingRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioSharingRepository.kt index 5da6ee95234c..6e76cf34c652 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioSharingRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/data/repository/FakeAudioSharingRepository.kt @@ -16,6 +16,7 @@ package com.android.systemui.volume.data.repository +import com.android.settingslib.bluetooth.CachedBluetoothDevice import com.android.settingslib.volume.data.repository.AudioSharingRepository import com.android.settingslib.volume.data.repository.GroupIdToVolumes import kotlinx.coroutines.flow.MutableStateFlow @@ -28,11 +29,17 @@ class FakeAudioSharingRepository : AudioSharingRepository { MutableStateFlow(TEST_GROUP_ID_INVALID) private val mutableSecondaryGroupId: MutableStateFlow<Int> = MutableStateFlow(TEST_GROUP_ID_INVALID) + private val mutablePrimaryDevice: MutableStateFlow<CachedBluetoothDevice?> = + MutableStateFlow(null) + private val mutableSecondaryDevice: MutableStateFlow<CachedBluetoothDevice?> = + MutableStateFlow(null) private val mutableVolumeMap: MutableStateFlow<GroupIdToVolumes> = MutableStateFlow(emptyMap()) override val inAudioSharing: StateFlow<Boolean> = mutableInAudioSharing override val primaryGroupId: StateFlow<Int> = mutablePrimaryGroupId override val secondaryGroupId: StateFlow<Int> = mutableSecondaryGroupId + override val primaryDevice: StateFlow<CachedBluetoothDevice?> = mutablePrimaryDevice + override val secondaryDevice: StateFlow<CachedBluetoothDevice?> = mutableSecondaryDevice override val volumeMap: StateFlow<GroupIdToVolumes> = mutableVolumeMap override suspend fun audioSharingAvailable(): Boolean = mutableAvailable @@ -55,6 +62,14 @@ class FakeAudioSharingRepository : AudioSharingRepository { mutableSecondaryGroupId.value = groupId } + fun setPrimaryDevice(device: CachedBluetoothDevice?) { + mutablePrimaryDevice.value = device + } + + fun setSecondaryDevice(device: CachedBluetoothDevice?) { + mutableSecondaryDevice.value = device + } + fun setVolumeMap(volumeMap: GroupIdToVolumes) { mutableVolumeMap.value = volumeMap } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt index 4fda95bab2ec..9f3150f7366a 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/dialog/ringer/ui/viewmodel/VolumeDialogRingerDrawerViewModelKosmos.kt @@ -23,6 +23,8 @@ import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.kosmos.testDispatcher import com.android.systemui.statusbar.notification.domain.interactor.notificationsSoundPolicyInteractor import com.android.systemui.statusbar.policy.configurationController +import com.android.systemui.util.time.fakeSystemClock +import com.android.systemui.util.time.systemClock import com.android.systemui.volume.dialog.domain.interactor.volumeDialogVisibilityInteractor import com.android.systemui.volume.dialog.ringer.domain.volumeDialogRingerInteractor import com.android.systemui.volume.dialog.shared.volumeDialogLogger @@ -39,5 +41,6 @@ val Kosmos.volumeDialogRingerDrawerViewModel by volumeDialogLogger = volumeDialogLogger, visibilityInteractor = volumeDialogVisibilityInteractor, configurationController = configurationController, + systemClock = fakeSystemClock, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/FakeAudioSharingInteractor.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/FakeAudioSharingInteractor.kt index 1fb5e77a3210..78cafbf99f49 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/FakeAudioSharingInteractor.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/domain/interactor/FakeAudioSharingInteractor.kt @@ -19,10 +19,11 @@ package com.android.systemui.volume.domain.interactor import android.content.Context import androidx.annotation.IntRange import com.android.dream.lowlight.dagger.qualifiers.Application +import com.android.settingslib.bluetooth.CachedBluetoothDevice import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow -class FakeAudioSharingInteractor : AudioSharingInteractor { +class FakeAudioSharingInteractor() : AudioSharingInteractor { private val mutableInAudioSharing: MutableStateFlow<Boolean> = MutableStateFlow(false) private val mutableVolume: MutableStateFlow<Int?> = MutableStateFlow(null) private var audioSharingVolumeBarAvailable = false @@ -31,6 +32,8 @@ class FakeAudioSharingInteractor : AudioSharingInteractor { override val volume: Flow<Int?> = mutableVolume override val volumeMin: Int = AUDIO_SHARING_VOLUME_MIN override val volumeMax: Int = AUDIO_SHARING_VOLUME_MAX + override val primaryDevice = MutableStateFlow<CachedBluetoothDevice?>(null) + override val secondaryDevice = MutableStateFlow<CachedBluetoothDevice?>(null) override suspend fun audioSharingVolumeBarAvailable(@Application context: Context): Boolean = audioSharingVolumeBarAvailable @@ -54,6 +57,14 @@ class FakeAudioSharingInteractor : AudioSharingInteractor { audioSharingVolumeBarAvailable = available } + fun setPrimaryDevice(device: CachedBluetoothDevice?) { + primaryDevice.value = device + } + + fun setSecondaryDevice(device: CachedBluetoothDevice?) { + secondaryDevice.value = device + } + companion object { const val AUDIO_SHARING_VOLUME_MIN = 0 const val AUDIO_SHARING_VOLUME_MAX = 255 diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorKosmos.kt index 3bc920edd948..88734cd3b000 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/domain/interactor/AudioSlidersInteractorKosmos.kt @@ -20,6 +20,7 @@ import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.applicationCoroutineScope import com.android.systemui.volume.data.repository.audioSystemRepository import com.android.systemui.volume.domain.interactor.audioModeInteractor +import com.android.systemui.volume.domain.interactor.audioSharingInteractor import com.android.systemui.volume.mediaOutputInteractor val Kosmos.audioSlidersInteractor by @@ -29,5 +30,6 @@ val Kosmos.audioSlidersInteractor by mediaOutputInteractor, audioModeInteractor, audioSystemRepository, + audioSharingInteractor, ) } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelKosmos.kt new file mode 100644 index 000000000000..96bc9722635a --- /dev/null +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioSharingStreamSliderViewModelKosmos.kt @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel + +import android.content.applicationContext +import com.android.internal.logging.uiEventLogger +import com.android.systemui.haptics.slider.sliderHapticsViewModelFactory +import com.android.systemui.kosmos.Kosmos +import com.android.systemui.volume.domain.interactor.audioSharingInteractor +import kotlinx.coroutines.CoroutineScope + +val Kosmos.audioSharingStreamSliderViewModelFactory by + Kosmos.Fixture { + object : AudioSharingStreamSliderViewModel.Factory { + override fun create(coroutineScope: CoroutineScope): AudioSharingStreamSliderViewModel { + return AudioSharingStreamSliderViewModel( + coroutineScope, + applicationContext, + audioSharingInteractor, + uiEventLogger, + sliderHapticsViewModelFactory, + ) + } + } + } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModelKosmos.kt index a78670d7f1cc..88c716e0ab10 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/slider/ui/viewmodel/AudioStreamSliderViewModelKosmos.kt @@ -21,6 +21,7 @@ import com.android.internal.logging.uiEventLogger import com.android.systemui.haptics.slider.sliderHapticsViewModelFactory import com.android.systemui.kosmos.Kosmos import com.android.systemui.statusbar.policy.domain.interactor.zenModeInteractor +import com.android.systemui.volume.domain.interactor.audioSharingInteractor import com.android.systemui.volume.domain.interactor.audioVolumeInteractor import com.android.systemui.volume.shared.volumePanelLogger import kotlinx.coroutines.CoroutineScope @@ -39,6 +40,7 @@ val Kosmos.audioStreamSliderViewModelFactory by applicationContext, audioVolumeInteractor, zenModeInteractor, + audioSharingInteractor, uiEventLogger, volumePanelLogger, sliderHapticsViewModelFactory, diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/ui/viewmodel/VolumeSlidersViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/ui/viewmodel/VolumeSlidersViewModelKosmos.kt index 6e848ce26d9b..a6a4f8368941 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/ui/viewmodel/VolumeSlidersViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/volume/panel/component/volume/ui/viewmodel/VolumeSlidersViewModelKosmos.kt @@ -22,6 +22,7 @@ import com.android.systemui.volume.domain.interactor.audioModeInteractor import com.android.systemui.volume.mediaDeviceSessionInteractor import com.android.systemui.volume.mediaOutputInteractor import com.android.systemui.volume.panel.component.volume.domain.interactor.audioSlidersInteractor +import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.audioSharingStreamSliderViewModelFactory import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.audioStreamSliderViewModelFactory import com.android.systemui.volume.panel.component.volume.slider.ui.viewmodel.castVolumeSliderViewModelFactory @@ -33,6 +34,7 @@ val Kosmos.audioVolumeComponentViewModel by mediaDeviceSessionInteractor, audioStreamSliderViewModelFactory, castVolumeSliderViewModelFactory, + audioSharingStreamSliderViewModelFactory, audioModeInteractor, audioSlidersInteractor, ) diff --git a/packages/Vcn/service-b/src/com/android/server/vcn/routeselection/IpSecPacketLossDetector.java b/packages/Vcn/service-b/src/com/android/server/vcn/routeselection/IpSecPacketLossDetector.java index 6467af4355f6..c8c645f1276d 100644 --- a/packages/Vcn/service-b/src/com/android/server/vcn/routeselection/IpSecPacketLossDetector.java +++ b/packages/Vcn/service-b/src/com/android/server/vcn/routeselection/IpSecPacketLossDetector.java @@ -138,6 +138,8 @@ public class IpSecPacketLossDetector extends NetworkMetricMonitor { @NonNull private final Object mCancellationToken = new Object(); @NonNull private final PacketLossCalculator mPacketLossCalculator; + @Nullable private BroadcastReceiver mDeviceIdleReceiver; + @Nullable private IpSecTransformWrapper mInboundTransform; @Nullable private IpSecTransformState mLastIpSecTransformState; @@ -168,19 +170,21 @@ public class IpSecPacketLossDetector extends NetworkMetricMonitor { // Register for system broadcasts to monitor idle mode change final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED); + + mDeviceIdleReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + if (PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED.equals( + intent.getAction()) + && mPowerManager.isDeviceIdleMode()) { + mLastIpSecTransformState = null; + } + } + }; getVcnContext() .getContext() .registerReceiver( - new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED.equals( - intent.getAction()) - && mPowerManager.isDeviceIdleMode()) { - mLastIpSecTransformState = null; - } - } - }, + mDeviceIdleReceiver, intentFilter, null /* broadcastPermission not required */, mHandler); @@ -338,7 +342,12 @@ public class IpSecPacketLossDetector extends NetworkMetricMonitor { super.close(); if (mInboundTransform != null) { - mInboundTransform.close(); + mInboundTransform = null; + } + + if (mDeviceIdleReceiver != null) { + getVcnContext().getContext().unregisterReceiver(mDeviceIdleReceiver); + mDeviceIdleReceiver = null; } } diff --git a/packages/Vcn/service-b/src/com/android/server/vcn/routeselection/NetworkMetricMonitor.java b/packages/Vcn/service-b/src/com/android/server/vcn/routeselection/NetworkMetricMonitor.java index 14853440a129..55829a5fe978 100644 --- a/packages/Vcn/service-b/src/com/android/server/vcn/routeselection/NetworkMetricMonitor.java +++ b/packages/Vcn/service-b/src/com/android/server/vcn/routeselection/NetworkMetricMonitor.java @@ -165,7 +165,7 @@ public abstract class NetworkMetricMonitor implements AutoCloseable { } } - /** Set the IpSecTransform that applied to the Network being monitored */ + /** Set the IpSecTransform that is applied to the Network being monitored */ public void setInboundTransform(@NonNull IpSecTransform inTransform) { setInboundTransformInternal(new IpSecTransformWrapper(inTransform)); } diff --git a/ravenwood/scripts/pta-framework.sh b/ravenwood/scripts/pta-framework.sh new file mode 100755 index 000000000000..224ab59e2e09 --- /dev/null +++ b/ravenwood/scripts/pta-framework.sh @@ -0,0 +1,91 @@ +#!/bin/bash +# Copyright (C) 2024 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# +# Use "ravehleper pta" to create a shell script which: +# - Reads the text "policy" files +# - Convert to java annotations (using sed) +# + +set -e + + +# Uncomment it to always build ravenhelper (slow) +# ${BUILD_CMD:-m} ravenhelper + +# Get the target directory. Default to $ANDROID_BUILD_TOP. +TARGET_DIR="${TARGET_DIR:-${ANDROID_BUILD_TOP?\$ANDROID_BUILD_TOP must be set}}" + +echo "Target dir=$TARGET_DIR" + +cd "$TARGET_DIR" + +# Add -v or -d as needed. +extra_args="$@" + +OUT_SCRIPT="${OUT_SCRIPT:-/tmp/pta.sh}" + +rm -f "$OUT_SCRIPT" + +# If you want to run on other files, run this script with the following +# env vars predefined. + +POLICIES="${POLICIES:- +frameworks/base/ravenwood/texts/ravenwood-common-policies.txt +frameworks/base/ravenwood/texts/ravenwood-framework-policies.txt +}" + +SOURCES="${SOURCES:- +frameworks/base/core/java/ +frameworks/base/graphics/java/ +}" + +AAC="${AAC:-frameworks/base/ravenwood/texts/ravenwood-annotation-allowed-classes.txt}" + +with_flag() { + local flag="$1" + shift + + for arg in "$@"; do + echo "$flag $arg" + done +} + +run() { + echo "Running: $*" + "$@" +} + +run_pta() { + local extra_args="$@" + + run ${RAVENHELPER_CMD:-ravenhelper pta} \ + --output-script $OUT_SCRIPT \ + --annotation-allowed-classes-file $AAC \ + $(with_flag --policy-override-file $POLICIES) \ + $(with_flag --src $SOURCES) \ + $extra_args + + if ! [[ -f $OUT_SCRIPT ]] ; then + # no operations generated. + exit 0 + fi + + echo + echo "Created script at $OUT_SCRIPT. Run it with: sh $OUT_SCRIPT" + return 0 +} + +run_pta "$extra_args"
\ No newline at end of file diff --git a/ravenwood/texts/ravenwood-common-policies.txt b/ravenwood/texts/ravenwood-common-policies.txt index 83c31512eb70..fd4ea6cf40c2 100644 --- a/ravenwood/texts/ravenwood-common-policies.txt +++ b/ravenwood/texts/ravenwood-common-policies.txt @@ -1,5 +1,8 @@ # Ravenwood "policy" that should apply to all code. +# The "no-pta" marker is used to exclude the lines from "ravenhelper pta", +# which tries to convert policies to annotations. + # Keep all AIDL interfaces class :aidl keepclass @@ -13,8 +16,8 @@ class :sysprops keepclass class :r keepclass # Support APIs not available in standard JRE -class java.io.FileDescriptor keep +class java.io.FileDescriptor # no-pta method getInt$ @com.android.ravenwood.RavenwoodJdkPatch.getInt$ method setInt$ @com.android.ravenwood.RavenwoodJdkPatch.setInt$ -class java.util.LinkedHashMap keep +class java.util.LinkedHashMap # no-pta method eldest @com.android.ravenwood.RavenwoodJdkPatch.eldest diff --git a/ravenwood/texts/ravenwood-framework-policies.txt b/ravenwood/texts/ravenwood-framework-policies.txt index 26b6fe3d82ad..4033782c607e 100644 --- a/ravenwood/texts/ravenwood-framework-policies.txt +++ b/ravenwood/texts/ravenwood-framework-policies.txt @@ -1,62 +1,65 @@ # Ravenwood "policy" file for framework-minus-apex. +# The "no-pta" marker is used to exclude the lines from "ravenhelper pta", +# which tries to convert policies to annotations. + # To avoid VerifyError on nano proto files (b/324063814), we rename nano proto classes. # Note: The "rename" directive must use slashes (/) as a package name separator. rename com/.*/nano/ devicenano/ rename android/.*/nano/ devicenano/ # StatsD auto-generated -class com.android.internal.util.FrameworkStatsLog keepclass +class com.android.internal.util.FrameworkStatsLog keepclass # no-pta # Exported to Mainline modules; cannot use annotations -class com.android.internal.util.FastXmlSerializer keepclass -class com.android.internal.util.FileRotator keepclass -class com.android.internal.util.HexDump keepclass -class com.android.internal.util.IndentingPrintWriter keepclass -class com.android.internal.util.LocalLog keepclass -class com.android.internal.util.MessageUtils keepclass -class com.android.internal.util.TokenBucket keepclass -class android.os.HandlerExecutor keepclass -class android.util.BackupUtils keepclass -class android.util.IndentingPrintWriter keepclass -class android.util.LocalLog keepclass -class android.util.Pair keepclass -class android.util.Rational keepclass +class com.android.internal.util.FastXmlSerializer keepclass # no-pta +class com.android.internal.util.FileRotator keepclass # no-pta +class com.android.internal.util.HexDump keepclass # no-pta +class com.android.internal.util.IndentingPrintWriter keepclass # no-pta +class com.android.internal.util.LocalLog keepclass # no-pta +class com.android.internal.util.MessageUtils keepclass # no-pta +class com.android.internal.util.TokenBucket keepclass # no-pta +class android.os.HandlerExecutor keepclass # no-pta +class android.util.BackupUtils keepclass # no-pta +class android.util.IndentingPrintWriter keepclass # no-pta +class android.util.LocalLog keepclass # no-pta +class android.util.Pair keepclass # no-pta +class android.util.Rational keepclass # no-pta # From modules-utils; cannot use annotations -class com.android.internal.util.Preconditions keepclass -class com.android.internal.logging.InstanceId keepclass -class com.android.internal.logging.InstanceIdSequence keepclass -class com.android.internal.logging.UiEvent keepclass -class com.android.internal.logging.UiEventLogger keepclass +class com.android.internal.util.Preconditions keepclass # no-pta +class com.android.internal.logging.InstanceId keepclass # no-pta +class com.android.internal.logging.InstanceIdSequence keepclass # no-pta +class com.android.internal.logging.UiEvent keepclass # no-pta +class com.android.internal.logging.UiEventLogger keepclass # no-pta # From modules-utils; cannot use annotations -class com.android.modules.utils.BinaryXmlPullParser keepclass -class com.android.modules.utils.BinaryXmlSerializer keepclass -class com.android.modules.utils.FastDataInput keepclass -class com.android.modules.utils.FastDataOutput keepclass -class com.android.modules.utils.ModifiedUtf8 keepclass -class com.android.modules.utils.TypedXmlPullParser keepclass -class com.android.modules.utils.TypedXmlSerializer keepclass +class com.android.modules.utils.BinaryXmlPullParser keepclass # no-pta +class com.android.modules.utils.BinaryXmlSerializer keepclass # no-pta +class com.android.modules.utils.FastDataInput keepclass # no-pta +class com.android.modules.utils.FastDataOutput keepclass # no-pta +class com.android.modules.utils.ModifiedUtf8 keepclass # no-pta +class com.android.modules.utils.TypedXmlPullParser keepclass # no-pta +class com.android.modules.utils.TypedXmlSerializer keepclass # no-pta # Uri -class android.net.Uri keepclass -class android.net.UriCodec keepclass +class android.net.Uri keepclass # no-pta +class android.net.UriCodec keepclass # no-pta # Telephony -class android.telephony.PinResult keepclass +class android.telephony.PinResult keepclass # no-pta # Just enough to support mocking, no further functionality -class android.content.BroadcastReceiver keep +class android.content.BroadcastReceiver keep # no-pta method <init> ()V keep -class android.content.Context keep +class android.content.Context keep # no-pta method <init> ()V keep - method getSystemService (Ljava/lang/Class;)Ljava/lang/Object; keep -class android.content.pm.PackageManager + method getSystemService (Ljava/lang/Class;)Ljava/lang/Object; keep # no-pta +class android.content.pm.PackageManager # no-pta method <init> ()V keep -class android.text.ClipboardManager keep +class android.text.ClipboardManager keep # no-pta method <init> ()V keep # Just enough to allow ResourcesManager to run -class android.hardware.display.DisplayManagerGlobal keep +class android.hardware.display.DisplayManagerGlobal keep # no-pta method getInstance ()Landroid/hardware/display/DisplayManagerGlobal; ignore diff --git a/ravenwood/texts/ravenwood-services-policies.txt b/ravenwood/texts/ravenwood-services-policies.txt index 530e5c8f5986..e3be9afdba5c 100644 --- a/ravenwood/texts/ravenwood-services-policies.txt +++ b/ravenwood/texts/ravenwood-services-policies.txt @@ -1,12 +1,15 @@ # Ravenwood "policy" file for services.core. +# The "no-pta" marker is used to exclude the lines from "ravenhelper pta", +# which tries to convert policies to annotations. + # Auto-generated from XSD -class com.android.server.compat.config.Change keepclass -class com.android.server.compat.config.Config keepclass -class com.android.server.compat.config.XmlParser keepclass -class com.android.server.compat.overrides.ChangeOverrides keepclass -class com.android.server.compat.overrides.OverrideValue keepclass -class com.android.server.compat.overrides.Overrides keepclass -class com.android.server.compat.overrides.RawOverrideValue keepclass -class com.android.server.compat.overrides.XmlParser keepclass -class com.android.server.compat.overrides.XmlWriter keepclass
\ No newline at end of file +class com.android.server.compat.config.Change keepclass # no-pta +class com.android.server.compat.config.Config keepclass # no-pta +class com.android.server.compat.config.XmlParser keepclass # no-pta +class com.android.server.compat.overrides.ChangeOverrides keepclass # no-pta +class com.android.server.compat.overrides.OverrideValue keepclass # no-pta +class com.android.server.compat.overrides.Overrides keepclass # no-pta +class com.android.server.compat.overrides.RawOverrideValue keepclass # no-pta +class com.android.server.compat.overrides.XmlParser keepclass # no-pta +class com.android.server.compat.overrides.XmlWriter keepclass # no-pta
\ No newline at end of file diff --git a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt index c5500831e21a..9782f3d0f591 100644 --- a/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt +++ b/ravenwood/tools/hoststubgen/src/com/android/hoststubgen/filters/TextFileFilterPolicyParser.kt @@ -69,9 +69,9 @@ interface PolicyFileProcessor { fun onRename(pattern: Pattern, prefix: String) /** "class" directive. */ - fun onSimpleClassStart(className: String) + fun onClassStart(className: String) fun onSimpleClassPolicy(className: String, policy: FilterPolicyWithReason) - fun onSimpleClassEnd(className: String) + fun onClassEnd(className: String) fun onSubClassPolicy(superClassName: String, policy: FilterPolicyWithReason) fun onRedirectionClass(fromClassName: String, toClassName: String) @@ -162,10 +162,10 @@ class TextFileFilterPolicyBuilder( ) } - override fun onSimpleClassStart(className: String) { + override fun onClassStart(className: String) { } - override fun onSimpleClassEnd(className: String) { + override fun onClassEnd(className: String) { } override fun onSimpleClassPolicy(className: String, policy: FilterPolicyWithReason) { @@ -273,20 +273,23 @@ class TextFileFilterPolicyParser { private var rFilePolicy: FilterPolicyWithReason? = null /** Name of the file that's currently being processed. */ - var filename: String? = null + var filename: String = "" private set /** 1-based line number in the current file */ var lineNumber = -1 private set + /** Current line */ + var currentLineText = "" + private set + /** * Parse a given "policy" file. */ fun parse(reader: Reader, inputName: String, processor: PolicyFileProcessor) { filename = inputName - log.i("Parsing text policy file $inputName ...") this.processor = processor BufferedReader(reader).use { rd -> lineNumber = 0 @@ -297,6 +300,7 @@ class TextFileFilterPolicyParser { break } lineNumber++ + currentLineText = line line = normalizeTextLine(line) // Remove comment and trim. if (line.isEmpty()) { continue @@ -312,7 +316,7 @@ class TextFileFilterPolicyParser { private fun finishLastClass() { currentClassName?.let { className -> - processor.onSimpleClassEnd(className) + processor.onClassEnd(className) currentClassName = null } } @@ -416,7 +420,7 @@ class TextFileFilterPolicyParser { if (fields.size <= 1) { throw ParseException("Class ('c') expects 1 or 2 fields.") } - val className = fields[1] + val className = fields[1].toHumanReadableClassName() // superClass is set when the class name starts with a "*". val superClass = resolveExtendingClass(className) @@ -436,6 +440,8 @@ class TextFileFilterPolicyParser { // It's a redirection class. val toClass = policyStr.substring(1) + currentClassName = className + processor.onClassStart(className) processor.onRedirectionClass(className, toClass) } else if (policyStr.startsWith("~")) { if (classType != SpecialClass.NotSpecial) { @@ -447,6 +453,8 @@ class TextFileFilterPolicyParser { // It's a class-load hook val callback = policyStr.substring(1) + currentClassName = className + processor.onClassStart(className) processor.onClassLoadHook(className, callback) } else { // Special case: if it's a class directive with no policy, then it encloses @@ -455,7 +463,6 @@ class TextFileFilterPolicyParser { if (policyStr == "") { if (classType == SpecialClass.NotSpecial && superClass == null) { currentClassName = className - processor.onSimpleClassStart(className) return } throw ParseException("Special class or subclass directive must have a policy") @@ -471,7 +478,7 @@ class TextFileFilterPolicyParser { // TODO: Duplicate check, etc if (superClass == null) { currentClassName = className - processor.onSimpleClassStart(className) + processor.onClassStart(className) processor.onSimpleClassPolicy(className, policy.withReason(FILTER_REASON)) } else { processor.onSubClassPolicy( diff --git a/ravenwood/tools/ravenhelper/Android.bp b/ravenwood/tools/ravenhelper/Android.bp new file mode 100644 index 000000000000..a7ee4684506e --- /dev/null +++ b/ravenwood/tools/ravenhelper/Android.bp @@ -0,0 +1,26 @@ +package { + // See: http://go/android-license-faq + // A large-scale-change added 'default_applicable_licenses' to import + // all of the 'license_kinds' from "frameworks_base_license" + // to get the below license kinds: + // SPDX-license-identifier-Apache-2.0 + default_applicable_licenses: ["frameworks_base_license"], +} + +java_binary_host { + name: "ravenhelper", + main_class: "com.android.platform.test.ravenwood.ravenhelper.RavenHelperMain", + srcs: ["src/**/*.kt"], + static_libs: [ + "guava", + "hoststubgen-lib", + "junit", + "metalava-gradle-plugin-deps", // Get lint/PSI related classes from here. + "ow2-asm", + "ow2-asm-analysis", + "ow2-asm-commons", + "ow2-asm-tree", + "ow2-asm-util", + ], + visibility: ["//visibility:public"], +} diff --git a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/RavenHelperMain.kt b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/RavenHelperMain.kt new file mode 100644 index 000000000000..e6efbf6c5223 --- /dev/null +++ b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/RavenHelperMain.kt @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +@file:JvmName("RavenHelperMain") +package com.android.platform.test.ravenwood.ravenhelper + +/* + * This file contains the main entry point for the "ravenhelper" command, which + * contains subcommands to help various tasks. + */ + +import com.android.hoststubgen.GeneralUserErrorException +import com.android.hoststubgen.LogLevel +import com.android.hoststubgen.executableName +import com.android.hoststubgen.log +import com.android.hoststubgen.runMainWithBoilerplate +import com.android.platform.test.ravenwood.ravenhelper.policytoannot.PtaProcessor + +interface SubcommandHandler { + fun handle(args: List<String>) +} + +fun usage() { + System.out.println(""" + Usage: + ravenhelper SUBCOMMAND options... + + Subcommands: + pta: "policy-to-annotations" Convert policy file to annotations. + (See the pta-framework.sh script for usage.) 1 + + """.trimIndent()) +} + +fun main(args: Array<String>) { + executableName = "RavenHelper" + log.setConsoleLogLevel(LogLevel.Info) + + runMainWithBoilerplate { + log.i("$executableName started") + + if (args.size == 0) { + usage() + return + } + + // Find the subcommand handler. + val subcommand = args[0] + val handler: SubcommandHandler = when (subcommand) { + "pta" -> PtaProcessor() + else -> { + usage() + throw GeneralUserErrorException("Unknown subcommand '$subcommand'") + } + } + + // Run the subcommand. + handler.handle(args.copyOfRange(1, args.size).toList()) + } +} diff --git a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/Annotations.kt b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/Annotations.kt new file mode 100644 index 000000000000..4a11259a8ef7 --- /dev/null +++ b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/Annotations.kt @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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.platform.test.ravenwood.ravenhelper.policytoannot + +import com.android.hoststubgen.filters.FilterPolicy + + +/** + * This class knows about the Ravenwood annotations. + */ +class Annotations { + enum class Target { + Class, + Field, + Method, + } + + fun get(policy: FilterPolicy, target: Target): String? { + return when (policy) { + FilterPolicy.Keep -> + if (target == Target.Class) { + "@android.ravenwood.annotation.RavenwoodKeepPartialClass" + } else { + "@android.ravenwood.annotation.RavenwoodKeep" + } + FilterPolicy.KeepClass -> + "@android.ravenwood.annotation.RavenwoodKeepWholeClass" + FilterPolicy.Substitute -> + "@android.ravenwood.annotation.RavenwoodReplace" + FilterPolicy.Redirect -> + "@android.ravenwood.annotation.RavenwoodRedirect" + FilterPolicy.Throw -> + "@android.ravenwood.annotation.RavenwoodThrow" + FilterPolicy.Ignore -> null // Ignore has no annotation. (because it's not very safe.) + FilterPolicy.Remove -> + "@android.ravenwood.annotation.RavenwoodRemove" + } + } + + private fun withArg(annot: String, arg: String): String { + return "@$annot(\"$arg\")" + } + + fun getClassLoadHookAnnotation(arg: String): String { + return withArg("android.ravenwood.annotation.RavenwoodClassLoadHook", arg) + } + + fun getRedirectionClassAnnotation(arg: String): String { + return withArg("android.ravenwood.annotation.RavenwoodRedirectionClass", arg) + } +} + diff --git a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/Operations.kt b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/Operations.kt new file mode 100644 index 000000000000..3531ba951b1c --- /dev/null +++ b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/Operations.kt @@ -0,0 +1,201 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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.platform.test.ravenwood.ravenhelper.policytoannot + +/* + * This file contains classes and functions about file edit operations, such as + * "insert a line", "delete a line". + */ + + +import com.android.hoststubgen.log +import java.io.BufferedWriter +import java.io.File + +enum class SourceOperationType { + /** Insert a line */ + Insert, + + /** delete a line */ + Delete, + + /** Insert a text at the beginning of a line */ + Prepend, +} + +data class SourceOperation( + /** Target file to edit. */ + val sourceFile: String, + + /** 1-based line number. Use -1 to add at the end of the file. */ + val lineNumber: Int, + + /** Operation type.*/ + val type: SourceOperationType, + + /** Operand -- text to insert or prepend. Ignored for delete. */ + val text: String = "", + + /** Human-readable description of why this operation was created */ + val description: String, +) { + override fun toString(): String { + return "SourceOperation(sourceFile='$sourceFile', " + + "lineNumber=$lineNumber, type=$type, text='$text' desc='$description')" + } +} + +/** + * Stores list of [SourceOperation]s for each file. + */ +class SourceOperations { + var size: Int = 0 + private set + private val fileOperations = mutableMapOf<String, MutableList<SourceOperation>>() + + fun add(op: SourceOperation) { + log.forVerbose { + log.v("Adding operation: $op") + } + size++ + fileOperations[op.sourceFile]?.let { ops -> + ops.add(op) + return + } + fileOperations[op.sourceFile] = mutableListOf(op) + } + + /** + * Get the collected [SourceOperation]s for each file. + */ + fun getOperations(): MutableMap<String, MutableList<SourceOperation>> { + return fileOperations + } +} + +/** + * Create a shell script to apply all the operations (using sed). + */ +fun createShellScript(ops: SourceOperations, writer: BufferedWriter) { + // File header. + // Note ${'$'} is an ugly way to put a dollar sign ($) in a multi-line string. + writer.write( + """ + #!/bin/bash + + set -e # Finish when any command fails. + + function apply() { + local file="${'$'}1" + + # The script is given via stdin. Write it to file. + local sed="/tmp/pta-script.sed.tmp" + cat > "${'$'}sed" + + echo "Running: sed -i -f \"${'$'}sed\" \"${'$'}file\"" + + if ! sed -i -f "${'$'}sed" "${'$'}file" ; then + echo 'Failed!' 1>&2 + return 1 + fi + } + + """.trimIndent() + ) + + ops.getOperations().toSortedMap().forEach { (origFile, ops) -> + val file = File(origFile).absolutePath + + writer.write("\n") + + writer.write("#") + writer.write("=".repeat(78)) + writer.write("\n") + + writer.write("\n") + + writer.write("apply \"$file\" <<'__END_OF_SCRIPT__'\n") + toSedScript(ops, writer) + writer.write("__END_OF_SCRIPT__\n") + } + + writer.write("\n") + + writer.write("echo \"All files updated successfully!\"\n") + writer.flush() +} + +/** + * Create a sed script to apply a list of operations. + */ +private fun toSedScript(ops: List<SourceOperation>, writer: BufferedWriter) { + ops.sortedBy { it.lineNumber }.forEach { op -> + if (op.text.contains('\n')) { + throw RuntimeException("Operation $op may not contain newlines.") + } + + // Convert each operation to a sed operation. Examples: + // + // - Insert "abc" to line 2 + // 2i\ + // abc + // + // - Insert "abc" to the end of the file + // $a\ + // abc + // + // - Delete line 2 + // 2d + // + // - Prepend abc to line 2 + // 2s/^/abc/ + // + // The line numbers are all the line numbers in the original file. Even though + // the script itself will change them because of inserts and deletes, we don't need to + // change the line numbers in the script. + + // Write the target line number. + writer.write("\n") + writer.write("# ${op.description}\n") + if (op.lineNumber >= 0) { + writer.write(op.lineNumber.toString()) + } else { + writer.write("$") + } + + when (op.type) { + SourceOperationType.Insert -> { + if (op.lineNumber >= 0) { + writer.write("i\\\n") // "Insert" + } else { + // If it's the end of the file, we need to use "a" (append) + writer.write("a\\\n") + } + writer.write(op.text) + writer.write("\n") + } + SourceOperationType.Delete -> { + writer.write("d\n") + } + SourceOperationType.Prepend -> { + if (op.text.contains('/')) { + TODO("Operation $op contains character(s) that needs to be escaped.") + } + writer.write("s/^/${op.text}/\n") + } + } + } +}
\ No newline at end of file diff --git a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaOptions.kt b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaOptions.kt new file mode 100644 index 000000000000..08bd95fd532b --- /dev/null +++ b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaOptions.kt @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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.platform.test.ravenwood.ravenhelper.policytoannot + +import com.android.hoststubgen.ArgIterator +import com.android.hoststubgen.ArgumentsException +import com.android.hoststubgen.SetOnce +import com.android.hoststubgen.ensureFileExists +import com.android.hoststubgen.log + +/** + * Options for the "ravenhelper pta" subcommand. + */ +class PtaOptions( + /** Text policy files */ + var policyOverrideFiles: MutableList<String> = mutableListOf(), + + /** Annotation allowed list file. */ + var annotationAllowedClassesFile: SetOnce<String?> = SetOnce(null), + + /** Source files or directories. */ + var sourceFilesOrDirectories: MutableList<String> = mutableListOf(), + + /** Output script file. */ + var outputScriptFile: SetOnce<String?> = SetOnce(null), + + /** Dump the operations (for debugging) */ + var dumpOperations: SetOnce<Boolean> = SetOnce(false), +) { + companion object { + fun parseArgs(args: List<String>): PtaOptions { + val ret = PtaOptions() + val ai = ArgIterator.withAtFiles(args.toTypedArray()) + + while (true) { + val arg = ai.nextArgOptional() ?: break + + fun nextArg(): String = ai.nextArgRequired(arg) + + if (log.maybeHandleCommandLineArg(arg) { nextArg() }) { + continue + } + try { + when (arg) { + // TODO: Write help + "-h", "--help" -> TODO("Help is not implemented yet") + + "-p", "--policy-override-file" -> + ret.policyOverrideFiles.add(nextArg().ensureFileExists()) + + "-a", "--annotation-allowed-classes-file" -> + ret.annotationAllowedClassesFile.set(nextArg().ensureFileExists()) + + "-s", "--src" -> + ret.sourceFilesOrDirectories.add(nextArg().ensureFileExists()) + + "--dump" -> + ret.dumpOperations.set(true) + + "-o", "--output-script" -> + ret.outputScriptFile.set(nextArg()) + + else -> throw ArgumentsException("Unknown option: $arg") + } + } catch (e: SetOnce.SetMoreThanOnceException) { + throw ArgumentsException("Duplicate or conflicting argument found: $arg") + } + } + + if (ret.policyOverrideFiles.size == 0) { + throw ArgumentsException("Must specify at least one policy file") + } + + if (ret.sourceFilesOrDirectories.size == 0) { + throw ArgumentsException("Must specify at least one source path") + } + + return ret + } + } + + override fun toString(): String { + return """ + PtaOptions{ + policyOverrideFiles=$policyOverrideFiles + annotationAllowedClassesFile=$annotationAllowedClassesFile + sourceFilesOrDirectories=$sourceFilesOrDirectories + outputScriptFile=$outputScriptFile + dumpOperations=$dumpOperations + } + """.trimIndent() + } +}
\ No newline at end of file diff --git a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaProcessor.kt b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaProcessor.kt new file mode 100644 index 000000000000..5984e4fc8f9f --- /dev/null +++ b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/policytoannot/PtaProcessor.kt @@ -0,0 +1,479 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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.platform.test.ravenwood.ravenhelper.policytoannot + +import com.android.hoststubgen.LogLevel +import com.android.hoststubgen.asm.CLASS_INITIALIZER_NAME +import com.android.hoststubgen.asm.toJvmClassName +import com.android.hoststubgen.filters.FilterPolicyWithReason +import com.android.hoststubgen.filters.PolicyFileProcessor +import com.android.hoststubgen.filters.SpecialClass +import com.android.hoststubgen.filters.TextFileFilterPolicyParser +import com.android.hoststubgen.filters.TextFilePolicyMethodReplaceFilter +import com.android.hoststubgen.log +import com.android.hoststubgen.utils.ClassFilter +import com.android.platform.test.ravenwood.ravenhelper.SubcommandHandler +import com.android.platform.test.ravenwood.ravenhelper.psi.createUastEnvironment +import com.android.platform.test.ravenwood.ravenhelper.sourcemap.AllClassInfo +import com.android.platform.test.ravenwood.ravenhelper.sourcemap.ClassInfo +import com.android.platform.test.ravenwood.ravenhelper.sourcemap.MethodInfo +import com.android.platform.test.ravenwood.ravenhelper.sourcemap.SourceLoader +import java.io.BufferedWriter +import java.io.FileOutputStream +import java.io.FileReader +import java.io.OutputStreamWriter +import java.util.regex.Pattern + +/** + * This is the main routine of the "pta" -- policy-to-annotation -- subcommands. + */ +class PtaProcessor : SubcommandHandler { + override fun handle(args: List<String>) { + val options = PtaOptions.parseArgs(args) + + log.v("Options: $options") + + val converter = TextPolicyToAnnotationConverter( + options.policyOverrideFiles, + options.sourceFilesOrDirectories, + options.annotationAllowedClassesFile.get, + Annotations(), + options.dumpOperations.get || log.isEnabled(LogLevel.Debug), + ) + converter.process() + + val ops = converter.resultOperations + + if (ops.size == 0) { + log.i("No files need to be updated.") + return + } + + val scriptWriter = BufferedWriter(OutputStreamWriter( + options.outputScriptFile.get?.let { file -> + FileOutputStream(file) + } ?: System.out + )) + + scriptWriter.use { writer -> + options.outputScriptFile.get?.let { + log.i("Creating script file at $it ...") + } + createShellScript(ops, writer) + } + } +} + +/** + * This class implements the actual logic. + */ +private class TextPolicyToAnnotationConverter( + val policyFiles: List<String>, + val sourceFilesOrDirectories: List<String>, + val annotationAllowedClassesFile: String?, + val annotations: Annotations, + val dumpOperations: Boolean, +) { + private val annotationAllowedClasses: ClassFilter = annotationAllowedClassesFile.let { file -> + if (file == null) { + ClassFilter.newNullFilter(true) // Allow all classes + } else { + ClassFilter.loadFromFile(file, false) + } + } + + val resultOperations = SourceOperations() + private val classes = AllClassInfo() + private val policyParser = TextFileFilterPolicyParser() + private val annotationNeedingClasses = mutableSetOf<String>() + + /** + * Entry point. + */ + fun process() { + // First, load + val env = createUastEnvironment() + try { + loadSources() + + processPolicies() + + addToAnnotationsAllowedListFile() + + if (dumpOperations) { + log.withIndent { + resultOperations.getOperations().toSortedMap().forEach { (file, ops) -> + log.i("ops: $file") + ops.forEach { op -> + log.i(" line: ${op.lineNumber}: ${op.type}: \"${op.text}\" " + + "(${op.description})") + } + } + } + } + } finally { + env.dispose() + } + } + + /** + * Load all the java source files into [classes]. + */ + private fun loadSources() { + val env = createUastEnvironment() + try { + val loader = SourceLoader(env) + loader.load(sourceFilesOrDirectories, classes) + } finally { + env.dispose() + } + } + + private fun addToAnnotationsAllowedListFile() { + log.i("Generating operations to update annotation allowlist file...") + log.withIndent { + annotationNeedingClasses.sorted().forEach { className -> + if (!annotationAllowedClasses.matches(className.toJvmClassName())) { + resultOperations.add( + SourceOperation( + annotationAllowedClassesFile!!, + -1, // add to the end + SourceOperationType.Insert, + className, + "add to annotation allowlist" + )) + } + } + } + } + + /** + * Process the policy files with [Processor]. + */ + private fun processPolicies() { + log.i("Loading the policy files and generating operations...") + log.withIndent { + policyFiles.forEach { policyFile -> + log.i("Parsing $policyFile ...") + log.withIndent { + policyParser.parse(FileReader(policyFile), policyFile, Processor()) + } + } + } + } + + private inner class Processor : PolicyFileProcessor { + + var classPolicyText = "" + var classPolicyLine = -1 + + // Whether the current class has a skip marker, in which case we ignore all members. + // Applicable only within a "simple class" + var classSkipping = false + + var classLineConverted = false + var classHasMember = false + + private fun currentLineHasSkipMarker(): Boolean { + val ret = policyParser.currentLineText.contains("no-pta") + + if (ret) { + log.forVerbose { + log.v("Current line has a skip marker: ${policyParser.currentLineText}") + } + } + + return ret + } + + private fun shouldSkipCurrentLine(): Boolean { + // If a line contains a special marker "no-pta", we'll skip it. + return classSkipping || currentLineHasSkipMarker() + } + + /** Print a warning about an unsupported policy directive. */ + private fun warnOnPolicy(message: String, policyLine: String, lineNumber: Int) { + log.w("Warning: $message") + log.w(" policy: \"$policyLine\"") + log.w(" at ${policyParser.filename}:$lineNumber") + } + + /** Print a warning about an unsupported policy directive. */ + private fun warnOnCurrentPolicy(message: String) { + warnOnPolicy(message, policyParser.currentLineText, policyParser.lineNumber) + } + + /** Print a warning about an unsupported policy directive on the class line. */ + private fun warnOnClassPolicy(message: String) { + warnOnPolicy(message, classPolicyText, classPolicyLine) + } + + override fun onPackage(name: String, policy: FilterPolicyWithReason) { + warnOnCurrentPolicy("'package' directive isn't supported (yet).") + } + + override fun onRename(pattern: Pattern, prefix: String) { + // Rename will never be supported, so don't show a warning. + } + + private fun addOperation(op: SourceOperation) { + resultOperations.add(op) + } + + private fun commentOutPolicy(lineNumber: Int, description: String) { + addOperation( + SourceOperation( + policyParser.filename, + lineNumber, + SourceOperationType.Prepend, + "#[PTA]: ", // comment out. + description, + ) + ) + } + + override fun onClassStart(className: String) { + classSkipping = currentLineHasSkipMarker() + classLineConverted = false + classHasMember = false + classPolicyLine = policyParser.lineNumber + classPolicyText = policyParser.currentLineText + } + + override fun onClassEnd(className: String) { + if (classSkipping) { + classSkipping = false + return + } + if (!classLineConverted) { + // Class line is still needed in the policy file. + // (Because the source file wasn't found.) + return + } + if (!classHasMember) { + commentOutPolicy(classPolicyLine, "remove class policy on $className") + } else { + warnOnClassPolicy( + "Class policy on $className can't be removed because it still has members.") + } + } + + private fun findClass(className: String): ClassInfo? { + val ci = classes.findClass(className) + if (ci == null) { + warnOnCurrentPolicy("Class not found: $className") + } + return ci + } + + private fun addClassAnnotation( + className: String, + annotation: String, + ): Boolean { + val ci = findClass(className) ?: return false + + // Add the annotation to the source file. + addOperation( + SourceOperation( + ci.location.file, + ci.location.line, + SourceOperationType.Insert, + ci.location.getIndent() + annotation, + "add class annotation to $className" + ) + ) + annotationNeedingClasses.add(className) + return true + } + + override fun onSimpleClassPolicy(className: String, policy: FilterPolicyWithReason) { + if (shouldSkipCurrentLine()) { + return + } + log.v("Found simple class policy: $className - ${policy.policy}") + + val annot = annotations.get(policy.policy, Annotations.Target.Class)!! + if (addClassAnnotation(className, annot)) { + classLineConverted = true + } + } + + override fun onSubClassPolicy(superClassName: String, policy: FilterPolicyWithReason) { + warnOnCurrentPolicy("Subclass policies isn't supported (yet).") + } + + override fun onRedirectionClass(fromClassName: String, toClassName: String) { + if (shouldSkipCurrentLine()) { + return + } + + log.v("Found class redirection: $fromClassName - $toClassName") + + if (addClassAnnotation( + fromClassName, + annotations.getRedirectionClassAnnotation(toClassName), + )) { + commentOutPolicy(policyParser.lineNumber, + "remove class redirection policy on $fromClassName") + } + } + + override fun onClassLoadHook(className: String, callback: String) { + if (shouldSkipCurrentLine()) { + return + } + + log.v("Found class load hook: $className - $callback") + + if (addClassAnnotation( + className, + annotations.getClassLoadHookAnnotation(callback), + )) { + commentOutPolicy(policyParser.lineNumber, + "remove class load hook policy on $className") + } + } + + override fun onSpecialClassPolicy(type: SpecialClass, policy: FilterPolicyWithReason) { + // This can't be converted to an annotation, so don't show a warning. + } + + override fun onField(className: String, fieldName: String, policy: FilterPolicyWithReason) { + if (shouldSkipCurrentLine()) { + return + } + + log.v("Found field policy: $className.$fieldName - ${policy.policy}") + + val ci = findClass(className) ?: return + + ci.findField(fieldName)?.let { fi -> + val annot = annotations.get(policy.policy, Annotations.Target.Field)!! + + addOperation( + SourceOperation( + fi.location.file, + fi.location.line, + SourceOperationType.Insert, + fi.location.getIndent() + annot, + "add annotation to field $className.$fieldName", + ) + ) + commentOutPolicy(policyParser.lineNumber, + "remove field policy $className.$fieldName") + + annotationNeedingClasses.add(className) + } ?: { + warnOnCurrentPolicy("Field not found: $className.$fieldName") + } + } + + override fun onSimpleMethodPolicy( + className: String, + methodName: String, + methodDesc: String, + policy: FilterPolicyWithReason + ) { + if (shouldSkipCurrentLine()) { + return + } + val readableName = "$className.$methodName$methodDesc" + log.v("Found simple method policy: $readableName - ${policy.policy}") + + + // Inner method to get the matching methods for this policy. + // + // If this policy can't be converted for any reason, it'll return null. + // Otherwise, it'll return a pair of method list and the annotation string. + fun getMethods(): Pair<List<MethodInfo>, String>? { + if (methodName == CLASS_INITIALIZER_NAME) { + warnOnClassPolicy("Policy for class initializers not supported.") + return null + } + val ci = findClass(className) ?: return null + val methods = ci.findMethods(methodName, methodDesc) + if (methods == null) { + warnOnCurrentPolicy("Method not found: $readableName") + return null + } + + // If the policy is "ignore", we can't convert it to an annotation, in which case + // annotations.get() will return null. + val annot = annotations.get(policy.policy, Annotations.Target.Method) + if (annot == null) { + warnOnCurrentPolicy("Annotation for policy '${policy.policy}' isn't available") + return null + } + return Pair(methods, annot) + } + + val methodsAndAnnot = getMethods() + + if (methodsAndAnnot == null) { + classHasMember = true + return // This policy can't converted. + } + val methods = methodsAndAnnot.first + val annot = methodsAndAnnot.second + + var found = false + methods.forEach { mi -> + found = true + addOperation( + SourceOperation( + mi.location.file, + mi.location.line, + SourceOperationType.Insert, + mi.location.getIndent() + annot, + "add annotation to method $readableName", + ) + ) + } + if (found) { + commentOutPolicy( + policyParser.lineNumber, + "remove method policy $readableName" + ) + + annotationNeedingClasses.add(className) + } else { + warnOnCurrentPolicy("Method not found: $readableName") + } + } + + override fun onMethodInClassReplace( + className: String, + methodName: String, + methodDesc: String, + targetName: String, + policy: FilterPolicyWithReason + ) { + warnOnCurrentPolicy("Found method replace but it's not supported yet: " + + "$className.$methodName$methodDesc - $targetName") + } + + override fun onMethodOutClassReplace( + className: String, + methodName: String, + methodDesc: String, + replaceSpec: TextFilePolicyMethodReplaceFilter.MethodCallReplaceSpec, + policy: FilterPolicyWithReason + ) { + // This can't be converted to an annotation. + classHasMember = true + } + } +}
\ No newline at end of file diff --git a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/psi/PsiUtil.kt b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/psi/PsiUtil.kt new file mode 100644 index 000000000000..6775135e1ac5 --- /dev/null +++ b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/psi/PsiUtil.kt @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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.platform.test.ravenwood.ravenhelper.psi + +import com.android.tools.lint.UastEnvironment + +// PSI is a library to parse Java/Kotlin source files, which is part of JetBrains' IntelliJ/ +// Android Studio, and other IDEs. +// +// PSI is normally used by IntelliJ's plugins, and as such, there isn't really a good documentation +// on how to use it from a standalone program. However, fortunately, Android Studio's Lint +// and Metalava both use PSI. Metalava reuses some of the APIs exposed by Lint. We also use the +// same Lint APIs used by Metalava here. +// +// Some code pointers around the relevant projects: +// +// - We stole code from Metalava, but the recent version of Metalava is too complicated, +// and hard to understand. Older Metalava, such as this one: +// https://android.git.corp.google.com/platform/tools/metalava/+/refs/heads/android13-dev +// is easier to understand. +// +// - PSI is source code is available in IntelliJ's code base: +// https://github.com/JetBrains/intellij-community.git +// +// - Lint is in Android studio. +// https://android.googlesource.com/platform/tools/base/+/studio-master-dev/source.md + + +/** + * Create [UastEnvironment] enough to parse Java source files. + */ +fun createUastEnvironment(): UastEnvironment { + val config = UastEnvironment.Configuration.create( + enableKotlinScripting = false, + useFirUast = false, + ) + + config.javaLanguageLevel = com.intellij.pom.java.LanguageLevel.JDK_21 + + // The following code exists in Metalava, but we don't seem to need it. + // We may need to when we need to support kotlin. +// config.kotlinLanguageLevel = kotlinLanguageLevel +// config.addSourceRoots(listOf(File(root))) +// config.addClasspathRoots(classpath.map { it.absoluteFile }) +// options.jdkHome?.let { +// if (options.isJdkModular(it)) { +// config.kotlinCompilerConfig.put(JVMConfigurationKeys.JDK_HOME, it) +// config.kotlinCompilerConfig.put(JVMConfigurationKeys.NO_JDK, false) +// } +// } + + return UastEnvironment.create(config) +} diff --git a/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/sourcemap/SourceMapGenerator.kt b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/sourcemap/SourceMapGenerator.kt new file mode 100644 index 000000000000..58e4497f9f9c --- /dev/null +++ b/ravenwood/tools/ravenhelper/src/com/android/platform/test/ravenwood/ravenhelper/sourcemap/SourceMapGenerator.kt @@ -0,0 +1,419 @@ +/* + * Copyright (C) 2025 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT 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.platform.test.ravenwood.ravenhelper.sourcemap + +/* + * This file contains classes used to parse Java source files to build "source map" which + * basically tells you what classes/methods/fields are declared in what line of what file. + */ + +import com.android.hoststubgen.GeneralUserErrorException +import com.android.hoststubgen.log +import com.android.tools.lint.UastEnvironment +import com.intellij.openapi.editor.Document +import com.intellij.openapi.vfs.StandardFileSystems +import com.intellij.psi.PsiClass +import com.intellij.psi.PsiClassOwner +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFile +import com.intellij.psi.PsiManager +import com.intellij.psi.PsiMethod +import com.intellij.psi.PsiNameIdentifierOwner +import com.intellij.psi.SyntheticElement +import java.io.File + + +/** + * Represents the location of an item. (class, field or method) + */ +data class Location ( + /** Full path filename. */ + val file: String, + + /** 1-based line number */ + val line: Int, + + /** Indent of the line */ + val indent: Int, +) { + + fun getIndent(): String { + return " ".repeat(indent) + } + + fun dump() { + log.i("Location: $file:$line (indent: $indent)") + } +} + +/** + * Represents the type of item. + */ +enum class ItemType { + Class, + Field, + Method, +} + +/** Holds a field's location. */ +data class FieldInfo ( + val name: String, + val location: Location, +) { + fun dump() { + log.i("Field: $name") + log.withIndent { + location.dump() + } + } +} + +/** Holds a method's location. */ +data class MethodInfo ( + val name: String, + /** "Simplified" description. */ + val simpleDesc: String, + val location: Location, +) { + fun dump() { + log.i("Method: $name$simpleDesc") + log.withIndent { + location.dump() + } + } +} + +/** Holds a class's location and members. */ +data class ClassInfo ( + val fullName: String, + val location: Location, + val fields: MutableMap<String, FieldInfo> = mutableMapOf(), + val methods: MutableMap<String, MutableList<MethodInfo>> = mutableMapOf(), +) { + fun add(fi: FieldInfo) { + fields.put(fi.name, fi) + } + + fun add(mi: MethodInfo) { + val list = methods.get(mi.name) + if (list != null) { + list.add(mi) + } else { + methods.put(mi.name, mutableListOf(mi)) + } + } + + fun dump() { + log.i("Class: $fullName") + log.withIndent { + location.dump() + + // Sort and print fields and methods. + methods.toSortedMap().forEach { entry -> + entry.value.sortedBy { method -> method.simpleDesc }.forEach { + it.dump() + } + } + } + } + + /** Find a field by name */ + fun findField(fieldName: String): FieldInfo? { + return fields[fieldName] + } + + /** + * Find a field by name and descriptor. + * + * If [descriptor] is "*", then all methods with the name will be returned. + */ + fun findMethods(methodName: String, methodDesc: String): List<MethodInfo>? { + val list = methods[methodName] ?: return null + + // Wildcard method policy. + if (methodDesc == "*") { + return list + } + + val simpleDesc = simplifyMethodDesc(methodDesc) + list.forEach { mi -> + if (simpleDesc == mi.simpleDesc) { + return listOf(mi) + } + } + log.w("Method $fullName.$methodName found, but none match description '$methodDesc'") + return null + } +} + +/** + * Stores all classes + */ +data class AllClassInfo ( + val classes: MutableMap<String, ClassInfo> = mutableMapOf(), +) { + fun add(ci: ClassInfo) { + classes.put(ci.fullName, ci) + } + + fun dump() { + classes.toSortedMap { a, b -> a.compareTo(b) }.forEach { + it.value.dump() + } + } + + fun findClass(name: String): ClassInfo? { + return classes.get(name) + } +} + +fun typeToSimpleDesc(origType: String): String { + var type = origType + + // Detect arrays. + var arrayPrefix = "" + while (type.endsWith("[]")) { + arrayPrefix += "[" + type = type.substring(0, type.length - 2) + } + + // Delete generic parameters. (delete everything after '<') + type.indexOf('<').let { pos -> + if (pos >= 0) { + type = type.substring(0, pos) + } + } + + // Handle builtins. + val builtinType = when (type) { + "byte" -> "B" + "short" -> "S" + "int" -> "I" + "long" -> "J" + "float" -> "F" + "double" -> "D" + "boolean" -> "Z" + "char" -> "C" + "void" -> "V" + else -> null + } + + builtinType?.let { + return arrayPrefix + builtinType + } + + return arrayPrefix + "L" + type + ";" +} + +/** + * Get a "simple" description of a method. + * + * "Simple" descriptions are similar to "real" ones, except: + * - No return type. + * - No package names in type names. + */ +fun getSimpleDesc(method: PsiMethod): String { + val sb = StringBuilder() + + sb.append("(") + + val params = method.parameterList + for (i in 0..<params.parametersCount) { + val param = params.getParameter(i) + + val type = param?.type?.presentableText + + if (type == null) { + throw RuntimeException( + "Unable to decode parameter list from method from ${params.parent}") + } + + sb.append(typeToSimpleDesc(type)) + } + + sb.append(")") + + return sb.toString() +} + +private val reTypeFinder = "L.*/".toRegex() + +private fun simplifyMethodDesc(origMethodDesc: String): String { + // We don't need the return type, so remove everything after the ')'. + val pos = origMethodDesc.indexOf(')') + var desc = if (pos < 0) { origMethodDesc } else { origMethodDesc.substring(0, pos + 1) } + + // Then we remove the package names from all the class names. + // i.e. convert "Ljava/lang/String" to "LString". + + return desc.replace(reTypeFinder, "L") +} + +/** + * Class that reads and parses java source files using PSI and populate [AllClassInfo]. + */ +class SourceLoader( + val environment: UastEnvironment, +) { + private val fileSystem = StandardFileSystems.local() + private val manager = PsiManager.getInstance(environment.ideaProject) + + /** Classes that were parsed */ + private var numParsedClasses = 0 + + /** + * Main entry point. + */ + fun load(filesOrDirectories: List<String>, classes: AllClassInfo) { + val psiFiles = mutableListOf<PsiFile>() + log.i("Loading source files...") + log.iTime("Discovering source files") { + load(filesOrDirectories.map { File(it) }, psiFiles) + } + + log.i("${psiFiles.size} file(s) found.") + + if (psiFiles.size == 0) { + throw GeneralUserErrorException("No source files found.") + } + + log.iTime("Parsing source files") { + log.withIndent { + for (file in psiFiles.asSequence().distinct()) { + val classesInFile = (file as? PsiClassOwner)?.classes?.toList() + classesInFile?.forEach { clazz -> + loadClass(clazz)?.let { classes.add(it) } + + clazz.innerClasses.forEach { inner -> + loadClass(inner)?.let { classes.add(it) } + } + } + } + } + } + log.i("$numParsedClasses class(es) found.") + } + + private fun load(filesOrDirectories: List<File>, result: MutableList<PsiFile>) { + filesOrDirectories.forEach { + load(it, result) + } + } + + private fun load(file: File, result: MutableList<PsiFile>) { + if (file.isDirectory) { + file.listFiles()?.forEach { child -> + load(child, result) + } + return + } + + // It's a file + when (file.extension) { + "java" -> { + // Load it. + } + "kt" -> { + log.w("Kotlin not supported, not loading ${file.path}") + return + } + else -> return // Silently skip + } + fileSystem.findFileByPath(file.path)?.let { virtualFile -> + manager.findFile(virtualFile)?.let { psiFile -> + result.add(psiFile) + } + } + } + + private fun loadClass(clazz: PsiClass): ClassInfo? { + if (clazz is SyntheticElement) { + return null + } + log.forVerbose { + log.v("Class found: ${clazz.qualifiedName}") + } + numParsedClasses++ + + log.withIndent { + val ci = ClassInfo( + clazz.qualifiedName!!, + getLocation(clazz) ?: return null, + ) + + // Load fields. + clazz.fields.filter { it !is SyntheticElement }.forEach { + val name = it.name + log.forDebug { log.d("Field found: $name") } + val loc = getLocation(it) ?: return@forEach + ci.add(FieldInfo(name, loc)) + } + + // Load methods. + clazz.methods.filter { it !is SyntheticElement }.forEach { + val name = resolveMethodName(it) + val simpleDesc = getSimpleDesc(it) + log.forDebug { log.d("Method found: $name$simpleDesc") } + val loc = getLocation(it) ?: return@forEach + ci.add(MethodInfo(name, simpleDesc, loc)) + } + return ci + } + } + + private fun resolveMethodName(method: PsiMethod): String { + val clazz = method.containingClass!! + if (clazz.name == method.name) { + return "<init>" // It's a constructor. + } + return method.name + } + + private fun getLocation(elem: PsiElement): Location? { + val lineAndIndent = getLineNumberAndIndent(elem) + if (lineAndIndent == null) { + log.w("Unable to determine location of $elem") + return null + } + return Location( + elem.containingFile.originalFile.virtualFile.path, + lineAndIndent.first, + lineAndIndent.second, + ) + } + + private fun getLineNumberAndIndent(element: PsiElement): Pair<Int, Int>? { + val psiFile: PsiFile = element.containingFile ?: return null + val document: Document = psiFile.viewProvider.document ?: return null + + // Actual elements such as PsiClass, PsiMethod and PsiField contains the leading + // javadoc, etc, so use the "identifier"'s element, if available. + // For synthesized elements, this may return null. + val targetRange = ( + (element as PsiNameIdentifierOwner).nameIdentifier?.textRange ?: element.textRange + ) ?: return null + val lineNumber = document.getLineNumber(targetRange.startOffset) + val lineStartOffset = document.getLineStartOffset(lineNumber) + + val lineLeadingText = document.getText( + com.intellij.openapi.util.TextRange(lineStartOffset, targetRange.startOffset)) + + val indent = lineLeadingText.takeWhile { it.isWhitespace() }.length + + // Line numbers are 0-based, add 1 for human-readable format + return Pair(lineNumber + 1, indent) + } +}
\ No newline at end of file diff --git a/services/core/java/com/android/server/GestureLauncherService.java b/services/core/java/com/android/server/GestureLauncherService.java index 6459016eec75..87222a60d82d 100644 --- a/services/core/java/com/android/server/GestureLauncherService.java +++ b/services/core/java/com/android/server/GestureLauncherService.java @@ -564,7 +564,8 @@ public class GestureLauncherService extends SystemService { return Settings.Secure.getIntForUser( context.getContentResolver(), Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE, - LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER, + context.getResources().getInteger( + R.integer.config_doubleTapPowerGestureMultiTargetDefaultAction), userId); } diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index 600aa1fdaa04..644077a7e6bb 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -528,6 +528,8 @@ public final class BatteryStatsService extends IBatteryStats.Stub public void systemServicesReady() { mStats.saveBatteryUsageStatsOnReset(mBatteryUsageStatsProvider, mPowerStatsStore, isBatteryUsageStatsAccumulationSupported()); + mStats.resetBatteryHistoryOnNewSession( + !Flags.extendedBatteryHistoryContinuousCollectionEnabled()); MultiStatePowerAttributor attributor = (MultiStatePowerAttributor) mPowerAttributor; mStats.setPowerStatsCollectorEnabled(BatteryConsumer.POWER_COMPONENT_CPU, diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 8a63f9a24ea3..d2073aaa834c 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -2589,7 +2589,6 @@ public class AppOpsService extends IAppOpsService.Stub { Map<String, Ops> packages = uidState.pkgOps; Iterator<Map.Entry<String, Ops>> it = packages.entrySet().iterator(); - boolean uidChanged = false; while (it.hasNext()) { Map.Entry<String, Ops> ent = it.next(); String packageName = ent.getKey(); @@ -2622,7 +2621,6 @@ public class AppOpsService extends IAppOpsService.Stub { newMode, UserHandle.getUserId(curOp.uid)); changed = true; - uidChanged = true; final int uid = curOp.uidState.uid; callbacks = addCallbacks(callbacks, curOp.op, uid, packageName, previousMode, mOpModeWatchers.get(curOp.op)); diff --git a/services/core/java/com/android/server/location/contexthub/HubInfoRegistry.java b/services/core/java/com/android/server/location/contexthub/HubInfoRegistry.java index 6e650c207358..bf54fd720d42 100644 --- a/services/core/java/com/android/server/location/contexthub/HubInfoRegistry.java +++ b/services/core/java/com/android/server/location/contexthub/HubInfoRegistry.java @@ -30,6 +30,7 @@ import com.android.internal.annotations.GuardedBy; import java.util.ArrayList; import java.util.Collections; +import java.util.Iterator; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -271,9 +272,10 @@ class HubInfoRegistry implements ContextHubHalEndpointCallback.IEndpointLifecycl void unregisterEndpointDiscoveryCallback(IContextHubEndpointDiscoveryCallback callback) { Objects.requireNonNull(callback, "callback cannot be null"); synchronized (mCallbackLock) { - for (DiscoveryCallback discoveryCallback : mEndpointDiscoveryCallbacks) { - if (discoveryCallback.getCallback().asBinder() == callback.asBinder()) { - mEndpointDiscoveryCallbacks.remove(discoveryCallback); + Iterator<DiscoveryCallback> iterator = mEndpointDiscoveryCallbacks.iterator(); + while (iterator.hasNext()) { + if (iterator.next().getCallback().asBinder() == callback.asBinder()) { + iterator.remove(); break; } } @@ -303,7 +305,9 @@ class HubInfoRegistry implements ContextHubHalEndpointCallback.IEndpointLifecycl HubEndpointInfo[] endpointInfos, BiConsumer<IContextHubEndpointDiscoveryCallback, HubEndpointInfo[]> consumer) { synchronized (mCallbackLock) { - for (DiscoveryCallback discoveryCallback : mEndpointDiscoveryCallbacks) { + Iterator<DiscoveryCallback> iterator = mEndpointDiscoveryCallbacks.iterator(); + while (iterator.hasNext()) { + DiscoveryCallback discoveryCallback = iterator.next(); ArrayList<HubEndpointInfo> infoList = new ArrayList<>(); for (HubEndpointInfo endpointInfo : endpointInfos) { if (discoveryCallback.isMatch(endpointInfo)) { diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java index d6f7d3bdd4a4..23e9ac5008f7 100644 --- a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java +++ b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java @@ -545,6 +545,16 @@ final class MediaRoute2ProviderServiceProxy extends MediaRoute2Provider { for (RoutingSessionInfo session : sessions) { if (session == null) continue; session = assignProviderIdForSession(session); + + if (Flags.enableMirroringInMediaRouter2()) { + var systemSessionCallback = + mSystemSessionCallbacks.get(session.getOriginalId()); + if (systemSessionCallback != null) { + systemSessionCallback.onSessionUpdate(session); + continue; + } + } + int sourceIndex = findSessionByIdLocked(session); if (sourceIndex < 0) { mSessionInfos.add(targetIndex++, session); diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java index 8931e3a1426e..011659a616d3 100644 --- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java +++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider2.java @@ -128,8 +128,20 @@ import java.util.stream.Stream; targetProviderProxyId, existingSession.getProviderId())) { // The currently selected route and target route both belong to the same // provider. We tell the provider to handle the transfer. - targetProviderProxyRecord.requestTransfer( - existingSession.getOriginalId(), serviceTargetRoute); + if (serviceTargetRoute == null) { + notifyRequestFailed( + requestId, MediaRoute2ProviderService.REASON_ROUTE_NOT_AVAILABLE); + } else { + targetProviderProxyRecord.mProxy.transferToRoute( + requestId, + clientUserHandle, + clientPackageName, + existingSession.getOriginalId(), + targetProviderProxyRecord.mNewOriginalIdToSourceOriginalIdMap.get( + routeOriginalId), + transferReason); + } + return; } else { // The target route is handled by a provider other than the target one. We need // to release the existing session. @@ -429,11 +441,6 @@ import java.util.stream.Stream; } } - public void requestTransfer(String sessionId, MediaRoute2Info targetRoute) { - // TODO: Map the target route to the source route original id. - throw new UnsupportedOperationException("TODO Implement"); - } - public void releaseSession(long requestId, String originalSessionId) { mProxy.releaseSession(requestId, originalSessionId); } @@ -491,18 +498,19 @@ import java.util.stream.Stream; () -> { if (mSessionRecord != null) { mSessionRecord.onSessionUpdate(sessionInfo); + } else { + SystemMediaSessionRecord systemMediaSessionRecord = + new SystemMediaSessionRecord(mProviderId, sessionInfo); + RoutingSessionInfo translatedSession; + synchronized (mLock) { + mSessionRecord = systemMediaSessionRecord; + mPackageNameToSessionRecord.put( + mClientPackageName, systemMediaSessionRecord); + mPendingSessionCreations.remove(mRequestId); + translatedSession = systemMediaSessionRecord.mTranslatedSessionInfo; + } + onSessionOverrideUpdated(translatedSession); } - SystemMediaSessionRecord systemMediaSessionRecord = - new SystemMediaSessionRecord(mProviderId, sessionInfo); - RoutingSessionInfo translatedSession; - synchronized (mLock) { - mSessionRecord = systemMediaSessionRecord; - mPackageNameToSessionRecord.put( - mClientPackageName, systemMediaSessionRecord); - mPendingSessionCreations.remove(mRequestId); - translatedSession = systemMediaSessionRecord.mTranslatedSessionInfo; - } - onSessionOverrideUpdated(translatedSession); }); } @@ -546,7 +554,6 @@ import java.util.stream.Stream; * The same as {@link #mSourceSessionInfo}, except ids are {@link #asSystemRouteId system * provider ids}. */ - @GuardedBy("SystemMediaRoute2Provider2.this.mLock") @NonNull private RoutingSessionInfo mTranslatedSessionInfo; @@ -559,10 +566,10 @@ import java.util.stream.Stream; @Override public void onSessionUpdate(@NonNull RoutingSessionInfo sessionInfo) { - RoutingSessionInfo translatedSessionInfo = mTranslatedSessionInfo; + RoutingSessionInfo translatedSessionInfo = asSystemProviderSession(sessionInfo); synchronized (mLock) { mSourceSessionInfo = sessionInfo; - mTranslatedSessionInfo = asSystemProviderSession(sessionInfo); + mTranslatedSessionInfo = translatedSessionInfo; } onSessionOverrideUpdated(translatedSessionInfo); } diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index f3eed7d22bec..837003f87598 100644 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -27,6 +27,7 @@ import static android.app.AppOpsManager.OP_RECEIVE_SENSITIVE_NOTIFICATIONS; import static android.app.Flags.FLAG_LIFETIME_EXTENSION_REFACTOR; import static android.app.Flags.lifetimeExtensionRefactor; import static android.app.Flags.notificationClassificationUi; +import static android.app.Flags.redactSensitiveContentNotificationsOnLockscreen; import static android.app.Flags.sortSectionByTime; import static android.app.Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION; import static android.app.Notification.EXTRA_BUILDER_APPLICATION_INFO; @@ -254,6 +255,10 @@ import android.content.pm.VersionedPackage; import android.content.res.Resources; import android.database.ContentObserver; import android.metrics.LogMaker; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; +import android.net.NetworkRequest; import android.net.Uri; import android.os.Binder; import android.os.Build; @@ -656,6 +661,7 @@ public class NotificationManagerService extends SystemService { private UsageStatsManagerInternal mUsageStatsManagerInternal; private TelecomManager mTelecomManager; private PowerManager mPowerManager; + private ConnectivityManager mConnectivityManager; private PostNotificationTrackerFactory mPostNotificationTrackerFactory; private LockPatternUtils mLockUtils; @@ -777,6 +783,8 @@ public class NotificationManagerService extends SystemService { private ModuleInfo mAdservicesModuleInfo; + private boolean mConnectedToWifi; + static class Archive { final SparseArray<Boolean> mEnabled; final int mBufferSize; @@ -2573,6 +2581,7 @@ public class NotificationManagerService extends SystemService { TelecomManager telecomManager, NotificationChannelLogger channelLogger, SystemUiSystemPropertiesFlags.FlagResolver flagResolver, PermissionManager permissionManager, PowerManager powerManager, + ConnectivityManager connectivityManager, PostNotificationTrackerFactory postNotificationTrackerFactory) { mHandler = handler; Resources resources = getContext().getResources(); @@ -2605,6 +2614,8 @@ public class NotificationManagerService extends SystemService { mUm = userManager; mTelecomManager = telecomManager; mPowerManager = powerManager; + mConnectivityManager = connectivityManager; + registerNetworkCallback(); mPostNotificationTrackerFactory = postNotificationTrackerFactory; mPlatformCompat = IPlatformCompat.Stub.asInterface( ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE)); @@ -2820,6 +2831,36 @@ public class NotificationManagerService extends SystemService { mAppOps.startWatchingMode(AppOpsManager.OP_POST_NOTIFICATION, null, mAppOpsListener); } + private void registerNetworkCallback() { + NetworkRequest request = new NetworkRequest.Builder().addTransportType( + NetworkCapabilities.TRANSPORT_WIFI).build(); + mConnectivityManager.registerNetworkCallback(request, + new ConnectivityManager.NetworkCallback() { + // Need to post to another thread, as we can't call synchronous ConnectivityManager + // methods from the callback itself, due to potential race conditions. + @Override + public void onAvailable(@NonNull Network network) { + mHandler.post(() -> updateWifiConnectionState()); + } + @Override + public void onLost(@NonNull Network network) { + mHandler.post(() -> updateWifiConnectionState()); + } + }); + updateWifiConnectionState(); + } + + @VisibleForTesting() + void updateWifiConnectionState() { + Network current = mConnectivityManager.getActiveNetwork(); + NetworkCapabilities capabilities = mConnectivityManager.getNetworkCapabilities(current); + if (current == null || capabilities == null) { + mConnectedToWifi = false; + return; + } + mConnectedToWifi = capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI); + } + /** * Cleanup broadcast receivers change listeners. */ @@ -2930,6 +2971,7 @@ public class NotificationManagerService extends SystemService { new NotificationChannelLoggerImpl(), SystemUiSystemPropertiesFlags.getResolver(), getContext().getSystemService(PermissionManager.class), getContext().getSystemService(PowerManager.class), + getContext().getSystemService(ConnectivityManager.class), new PostNotificationTrackerFactory() {}); publishBinderService(Context.NOTIFICATION_SERVICE, mService, /* allowIsolated= */ false, @@ -11645,12 +11687,20 @@ public class NotificationManagerService extends SystemService { new NotificationListenerService.Ranking(); ArrayList<Notification.Action> smartActions = record.getSystemGeneratedSmartActions(); ArrayList<CharSequence> smartReplies = record.getSmartReplies(); - if (redactSensitiveNotificationsFromUntrustedListeners() - && info != null - && !mListeners.isUidTrusted(info.uid) - && mListeners.hasSensitiveContent(record)) { - smartActions = null; - smartReplies = null; + boolean hasSensitiveContent = record.hasSensitiveContent(); + if (redactSensitiveNotificationsFromUntrustedListeners()) { + if (!mListeners.isUidTrusted(info.uid) && mListeners.hasSensitiveContent(record)) { + smartActions = null; + smartReplies = null; + } + if (redactSensitiveContentNotificationsOnLockscreen()) { + if (mListeners.hasSensitiveContent(record) && mConnectedToWifi + && info.isSystemUi) { + // We don't inform systemUI of sensitive content if + // connected to wifi, though we do still redact from untrusted listeners. + hasSensitiveContent = false; + } + } } ranking.populate( key, @@ -11680,7 +11730,7 @@ public class NotificationManagerService extends SystemService { : (record.getRankingScore() > 0 ? RANKING_PROMOTED : RANKING_DEMOTED), record.getNotification().isBubbleNotification(), record.getProposedImportance(), - record.hasSensitiveContent() + hasSensitiveContent ); rankings.add(ranking); } diff --git a/services/core/java/com/android/server/power/hint/TEST_MAPPING b/services/core/java/com/android/server/power/hint/TEST_MAPPING index 545070050977..fd81277e9ba4 100644 --- a/services/core/java/com/android/server/power/hint/TEST_MAPPING +++ b/services/core/java/com/android/server/power/hint/TEST_MAPPING @@ -15,5 +15,22 @@ {"exclude-annotation": "org.junit.Ignore"} ] } + ], + "postsubmit": [ + { + "name": "CtsSystemHealthTestCases", + "options": [ + {"exclude-annotation": "androidx.test.filters.FlakyTest"}, + {"exclude-annotation": "org.junit.Ignore"} + ] + }, + { + "name": "CtsOsTestCases", + "options": [ + {"include-filter": "android.os.health.cts.HeadroomTest"}, + {"exclude-annotation": "androidx.test.filters.FlakyTest"}, + {"exclude-annotation": "org.junit.Ignore"} + ] + } ] }
\ No newline at end of file diff --git a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java index 9206cce12cd6..68768b8fa223 100644 --- a/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java +++ b/services/core/java/com/android/server/power/stats/BatteryStatsImpl.java @@ -225,11 +225,19 @@ public class BatteryStatsImpl extends BatteryStats { @VisibleForTesting public static final int WAKE_LOCK_WEIGHT = 50; + /** + * Minimum duration of a battery session. Attempt to automatically start a new + * session within this interval are ignored. Explicit resets (e.g. with an adb command) are + * not affected by this restriction. + */ + private static final long MIN_BATTERY_SESSION_DURATION_MILLIS = 60000; + public static final int RESET_REASON_CORRUPT_FILE = 1; public static final int RESET_REASON_ADB_COMMAND = 2; public static final int RESET_REASON_FULL_CHARGE = 3; public static final int RESET_REASON_ENERGY_CONSUMER_BUCKETS_CHANGE = 4; public static final int RESET_REASON_PLUGGED_IN_FOR_LONG_DURATION = 5; + @NonNull private final MonotonicClock mMonotonicClock; @@ -305,6 +313,81 @@ public class BatteryStatsImpl extends BatteryStats { private final SparseBooleanArray mPowerStatsCollectorEnabled = new SparseBooleanArray(); private boolean mMoveWscLoggingToNotifierEnabled = false; + static class BatteryStatsSession { + private final BatteryStatsHistory mHistory; + private final long mMonotonicStartTime; + private final long mStartClockTime; + private final long mEstimatedBatteryCapacityMah; + private final long mBatteryTimeRemainingMs; + private final long mChargeTimeRemainingMs; + private final String[] mCustomEnergyConsumerNames; + private final BatteryStatsImpl mBatteryStats; + + BatteryStatsSession(BatteryStatsHistory history, long monotonicStartTime, + long startClockTime, long batteryTimeRemainingMs, long chargeTimeRemainingMs, + long estimatedBatteryCapacityMah, String[] customEnergyConsumerNames, + BatteryStatsImpl batteryStats) { + mHistory = history; + mMonotonicStartTime = monotonicStartTime; + mStartClockTime = startClockTime; + mEstimatedBatteryCapacityMah = estimatedBatteryCapacityMah; + mBatteryTimeRemainingMs = batteryTimeRemainingMs; + mChargeTimeRemainingMs = chargeTimeRemainingMs; + mCustomEnergyConsumerNames = customEnergyConsumerNames; + mBatteryStats = batteryStats; + } + + BatteryStatsHistory getHistory() { + return mHistory; + } + + long getMonotonicStartTime() { + return mMonotonicStartTime; + } + + long getStartClockTime() { + return mStartClockTime; + } + + long getBatteryTimeRemainingMs() { + return mBatteryTimeRemainingMs; + } + + long getChargeTimeRemainingMs() { + return mChargeTimeRemainingMs; + } + + double getEstimatedBatteryCapacity() { + return mEstimatedBatteryCapacityMah; + } + + String[] getCustomEnergyConsumerNames() { + return mCustomEnergyConsumerNames; + } + + /** @deprecated This method will be removed once PowerCalculators are removed from the + * code base. */ + @Deprecated + public BatteryStatsImpl getBatteryStats() { + return mBatteryStats; + } + } + + BatteryStatsSession getBatteryStatsSession() { + synchronized (this) { + long elapsedTimeUs = mClock.elapsedRealtime() * 1000; + long batteryTimeRemainingUs = computeBatteryTimeRemaining(elapsedTimeUs); + long batteryTimeRemainingMs = + batteryTimeRemainingUs >= 0 ? batteryTimeRemainingUs / 1000 : -1; + long chargeTimeRemainingUs = computeChargeTimeRemaining(elapsedTimeUs); + long chargeTimeRemainingMs = + chargeTimeRemainingUs >= 0 ? chargeTimeRemainingUs / 1000 : -1; + return new BatteryStatsSession(mHistory, getMonotonicStartTime(), getStartClockTime(), + batteryTimeRemainingMs, chargeTimeRemainingMs, getEstimatedBatteryCapacity(), + getCustomEnergyConsumerNames(), this); + } + } + private ScreenPowerStatsCollector.ScreenUsageTimeRetriever mScreenUsageTimeRetriever = new ScreenPowerStatsCollector.ScreenUsageTimeRetriever() { @@ -554,6 +637,7 @@ public class BatteryStatsImpl extends BatteryStats { } private boolean mSaveBatteryUsageStatsOnReset; + private boolean mResetBatteryHistoryOnNewSession; private boolean mAccumulateBatteryUsageStats; private BatteryUsageStatsProvider mBatteryUsageStatsProvider; private PowerStatsStore mPowerStatsStore; @@ -1753,8 +1837,7 @@ public class BatteryStatsImpl extends BatteryStats { */ private LongSamplingCounterArray mBinderThreadCpuTimesUs; - @VisibleForTesting - protected PowerProfile mPowerProfile; + private final PowerProfile mPowerProfile; @VisibleForTesting @GuardedBy("this") @@ -11627,10 +11710,6 @@ public class BatteryStatsImpl extends BatteryStats { setDisplayCountLocked(mPowerProfile.getNumDisplays()); } - PowerProfile getPowerProfile() { - return mPowerProfile; - } - /** * Starts tracking CPU time-in-state for threads of the system server process, * keeping a separate account of threads receiving incoming binder calls. @@ -12074,6 +12153,13 @@ public class BatteryStatsImpl extends BatteryStats { mAccumulateBatteryUsageStats = accumulateBatteryUsageStats; } + /** + * Enables or disables battery history reset at the beginning of a battery stats session. + */ + public void resetBatteryHistoryOnNewSession(boolean enabled) { + mResetBatteryHistoryOnNewSession = enabled; + } + @GuardedBy("this") public void resetAllStatsAndHistoryLocked(int reason) { final long mSecUptime = mClock.uptimeMillis(); @@ -12107,11 +12193,29 @@ public class BatteryStatsImpl extends BatteryStats { initActiveHistoryEventsLocked(mSecRealtime, mSecUptime); } + /** + * Starts a new battery stats session, resetting counters and timers. If this method is called + * before MIN_BATTERY_SESSION_DURATION_MILLIS from the beginning of the current session, the + * call is ignored. + */ + public void startNewSession(int reason) { + if (mMonotonicClock.monotonicTime() + < mMonotonicStartTime + MIN_BATTERY_SESSION_DURATION_MILLIS) { + Slog.i(TAG, "Battery session session duration is too short, ignoring reset request"); + return; + } + + mHandler.post(()-> { + saveBatteryUsageStatsOnReset(); + synchronized (BatteryStatsImpl.this) { + resetAllStatsLocked(mClock.uptimeMillis(), mClock.elapsedRealtime(), reason); + } + }); + } + @GuardedBy("this") private void resetAllStatsLocked(long uptimeMillis, long elapsedRealtimeMillis, int resetReason) { - saveBatteryUsageStatsOnReset(resetReason); - final long uptimeUs = uptimeMillis * 1000; final long elapsedRealtimeUs = elapsedRealtimeMillis * 1000; mStartCount = 0; @@ -12250,7 +12354,11 @@ public class BatteryStatsImpl extends BatteryStats { initDischarge(elapsedRealtimeUs); - mHistory.reset(); + if ((resetReason != RESET_REASON_FULL_CHARGE + && resetReason != RESET_REASON_PLUGGED_IN_FOR_LONG_DURATION) + || mResetBatteryHistoryOnNewSession) { + mHistory.reset(); + } // Store the empty state to disk to ensure consistency writeSyncLocked(); @@ -12266,14 +12374,14 @@ public class BatteryStatsImpl extends BatteryStats { mHandler.sendEmptyMessage(MSG_REPORT_RESET_STATS); } - private void saveBatteryUsageStatsOnReset(int resetReason) { - if (!mSaveBatteryUsageStatsOnReset - || resetReason == BatteryStatsImpl.RESET_REASON_CORRUPT_FILE) { + private void saveBatteryUsageStatsOnReset() { + if (!mSaveBatteryUsageStatsOnReset) { return; } if (mAccumulateBatteryUsageStats) { - mBatteryUsageStatsProvider.accumulateBatteryUsageStats(this); + mBatteryUsageStatsProvider.accumulateBatteryUsageStats(getBatteryStatsSession(), + mHandler); } else { final BatteryUsageStats batteryUsageStats; synchronized (this) { @@ -14926,7 +15034,7 @@ public class BatteryStatsImpl extends BatteryStats { "Resetting due to long plug in duration. elapsed time = " + elapsedRealtimeMs + " ms, last plug in time = " + mBatteryPluggedInRealTimeMs + " ms, last reset time = " + mRealtimeStartUs / 1000); - resetAllStatsAndHistoryLocked(RESET_REASON_PLUGGED_IN_FOR_LONG_DURATION); + startNewSession(RESET_REASON_PLUGGED_IN_FOR_LONG_DURATION); } scheduleNextResetWhilePluggedInCheck(); @@ -15064,7 +15172,7 @@ public class BatteryStatsImpl extends BatteryStats { }); } doWrite = true; - resetAllStatsLocked(mSecUptime, mSecRealtime, RESET_REASON_FULL_CHARGE); + startNewSession(RESET_REASON_FULL_CHARGE); if (chargeUah > 0 && level > 0) { // Only use the reported coulomb charge value if it is supported and reported. mEstimatedBatteryCapacityMah = (int) ((chargeUah / 1000) / (level / 100.0)); @@ -15980,6 +16088,8 @@ public class BatteryStatsImpl extends BatteryStats { if (mEnergyConsumerStatsConfig != null && !mEnergyConsumerStatsConfig.isCompatible(config)) { // Supported power buckets changed since last boot. + // Save accumulated battery usage stats before resetting + saveBatteryUsageStatsOnReset(); // Existing data is no longer reliable. resetAllStatsLocked(SystemClock.uptimeMillis(), SystemClock.elapsedRealtime(), RESET_REASON_ENERGY_CONSUMER_BUCKETS_CHANGE); @@ -15999,7 +16109,10 @@ public class BatteryStatsImpl extends BatteryStats { } } else { if (mEnergyConsumerStatsConfig != null) { - // EnergyConsumer no longer supported, wipe out the existing data. + // EnergyConsumer no longer supported + // Save accumulated battery usage stats before resetting + saveBatteryUsageStatsOnReset(); + // Wipe out the current battery session data. resetAllStatsLocked(SystemClock.uptimeMillis(), SystemClock.elapsedRealtime(), RESET_REASON_ENERGY_CONSUMER_BUCKETS_CHANGE); } diff --git a/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java b/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java index 8c588b4c9b98..977c6db66106 100644 --- a/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java +++ b/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java @@ -17,6 +17,7 @@ package com.android.server.power.stats; import android.annotation.NonNull; +import android.annotation.UserIdInt; import android.content.Context; import android.hardware.SensorManager; import android.os.BatteryConsumer; @@ -25,6 +26,8 @@ import android.os.BatteryUsageStats; import android.os.BatteryUsageStatsQuery; import android.os.Handler; import android.os.Process; +import android.os.UidBatteryConsumer; +import android.os.UserHandle; import android.util.Log; import android.util.LogWriter; import android.util.Slog; @@ -34,6 +37,8 @@ import com.android.internal.os.Clock; import com.android.internal.os.CpuScalingPolicies; import com.android.internal.os.MonotonicClock; import com.android.internal.os.PowerProfile; +import com.android.internal.util.ArrayUtils; +import com.android.server.power.stats.BatteryStatsImpl.BatteryStatsSession; import java.io.PrintWriter; import java.util.ArrayList; @@ -58,7 +63,6 @@ public class BatteryUsageStatsProvider { private final MonotonicClock mMonotonicClock; private final Object mLock = new Object(); private List<PowerCalculator> mPowerCalculators; - private UserPowerCalculator mUserPowerCalculator; private long mLastAccumulationMonotonicHistorySize; private static class AccumulatedBatteryUsageStats { @@ -81,7 +85,6 @@ public class BatteryUsageStatsProvider { mAccumulatedBatteryUsageStatsSpanSize = accumulatedBatteryUsageStatsSpanSize; mClock = clock; mMonotonicClock = monotonicClock; - mUserPowerCalculator = new UserPowerCalculator(); mPowerStatsStore.addSectionReader(new BatteryUsageStatsSection.Reader()); mPowerStatsStore.addSectionReader(new AccumulatedBatteryUsageStatsSection.Reader()); @@ -195,22 +198,20 @@ public class BatteryUsageStatsProvider { mLastAccumulationMonotonicHistorySize = historySize; } + BatteryStatsSession session = stats.getBatteryStatsSession(); + // No need to store the accumulated stats asynchronously, as the entire accumulation // operation is async - handler.post(() -> accumulateBatteryUsageStats(stats, false)); + handler.post(() -> accumulateBatteryUsageStats(session, handler)); } /** * Computes BatteryUsageStats for the period since the last accumulated stats were stored, - * adds them to the accumulated stats and asynchronously saves the result. + * adds them to the accumulated stats and saves the result on the handler thread. */ - public void accumulateBatteryUsageStats(BatteryStatsImpl stats) { - accumulateBatteryUsageStats(stats, true); - } - - private void accumulateBatteryUsageStats(BatteryStatsImpl stats, boolean storeAsync) { + public void accumulateBatteryUsageStats(BatteryStatsSession session, Handler handler) { AccumulatedBatteryUsageStats accumulatedStats = loadAccumulatedBatteryUsageStats(); - updateAccumulatedBatteryUsageStats(accumulatedStats, stats); + updateAccumulatedBatteryUsageStats(accumulatedStats, session); PowerStatsSpan powerStatsSpan = new PowerStatsSpan(AccumulatedBatteryUsageStatsSection.ID); powerStatsSpan.addSection( @@ -219,12 +220,12 @@ public class BatteryUsageStatsProvider { accumulatedStats.startWallClockTime, accumulatedStats.endMonotonicTime - accumulatedStats.startMonotonicTime); mMonotonicClock.write(); - if (storeAsync) { - mPowerStatsStore.storePowerStatsSpanAsync(powerStatsSpan, - accumulatedStats.builder::discard); - } else { + if (handler.getLooper().isCurrentThread()) { mPowerStatsStore.storePowerStatsSpan(powerStatsSpan); accumulatedStats.builder.discard(); + } else { + mPowerStatsStore.storePowerStatsSpanAsync(powerStatsSpan, + accumulatedStats.builder::discard); } } @@ -252,9 +253,10 @@ public class BatteryUsageStatsProvider { synchronized (stats) { stats.prepareForDumpLocked(); } + BatteryStatsSession session = stats.getBatteryStatsSession(); final long currentTimeMillis = mClock.currentTimeMillis(); for (int i = 0; i < queries.size(); i++) { - results.add(getBatteryUsageStats(stats, queries.get(i), currentTimeMillis)); + results.add(getBatteryUsageStats(session, queries.get(i), currentTimeMillis)); } return results; @@ -265,22 +267,23 @@ public class BatteryUsageStatsProvider { */ public BatteryUsageStats getBatteryUsageStats(BatteryStatsImpl stats, BatteryUsageStatsQuery query) { - return getBatteryUsageStats(stats, query, mClock.currentTimeMillis()); + return getBatteryUsageStats(stats.getBatteryStatsSession(), query, + mClock.currentTimeMillis()); } - private BatteryUsageStats getBatteryUsageStats(BatteryStatsImpl stats, + private BatteryUsageStats getBatteryUsageStats(BatteryStatsSession session, BatteryUsageStatsQuery query, long currentTimeMs) { BatteryUsageStats batteryUsageStats; if ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_ACCUMULATED) != 0) { - batteryUsageStats = getAccumulatedBatteryUsageStats(stats, query); + batteryUsageStats = getAccumulatedBatteryUsageStats(session, query); } else if (query.getAggregatedToTimestamp() == 0) { - BatteryUsageStats.Builder builder = computeBatteryUsageStats(stats, query, + BatteryUsageStats.Builder builder = computeBatteryUsageStats(session, query, query.getMonotonicStartTime(), query.getMonotonicEndTime(), currentTimeMs); batteryUsageStats = builder.build(); } else { - batteryUsageStats = getAggregatedBatteryUsageStats(stats, query); + batteryUsageStats = getAggregatedBatteryUsageStats(session, query); } if (DEBUG) { Slog.d(TAG, "query = " + query); @@ -291,13 +294,13 @@ public class BatteryUsageStatsProvider { return batteryUsageStats; } - private BatteryUsageStats getAccumulatedBatteryUsageStats(BatteryStatsImpl stats, + private BatteryUsageStats getAccumulatedBatteryUsageStats(BatteryStatsSession session, BatteryUsageStatsQuery query) { AccumulatedBatteryUsageStats accumulatedStats = loadAccumulatedBatteryUsageStats(); if (accumulatedStats.endMonotonicTime == MonotonicClock.UNDEFINED || mMonotonicClock.monotonicTime() - accumulatedStats.endMonotonicTime > query.getMaxStatsAge()) { - updateAccumulatedBatteryUsageStats(accumulatedStats, stats); + updateAccumulatedBatteryUsageStats(accumulatedStats, session); } return accumulatedStats.builder.build(); } @@ -329,19 +332,19 @@ public class BatteryUsageStatsProvider { } private void updateAccumulatedBatteryUsageStats(AccumulatedBatteryUsageStats accumulatedStats, - BatteryStatsImpl stats) { + BatteryStatsSession session) { long startMonotonicTime = accumulatedStats.endMonotonicTime; if (startMonotonicTime == MonotonicClock.UNDEFINED) { - startMonotonicTime = stats.getMonotonicStartTime(); + startMonotonicTime = session.getMonotonicStartTime(); } long endWallClockTime = mClock.currentTimeMillis(); long endMonotonicTime = mMonotonicClock.monotonicTime(); if (accumulatedStats.builder == null) { accumulatedStats.builder = new BatteryUsageStats.Builder( - stats.getCustomEnergyConsumerNames(), true, true, true, 0); - accumulatedStats.startWallClockTime = stats.getStartClockTime(); - accumulatedStats.startMonotonicTime = stats.getMonotonicStartTime(); + session.getCustomEnergyConsumerNames(), true, true, true, 0); + accumulatedStats.startWallClockTime = session.getStartClockTime(); + accumulatedStats.startMonotonicTime = session.getMonotonicStartTime(); accumulatedStats.builder.setStatsStartTimestamp(accumulatedStats.startWallClockTime); } @@ -350,121 +353,118 @@ public class BatteryUsageStatsProvider { accumulatedStats.builder.setStatsEndTimestamp(endWallClockTime); accumulatedStats.builder.setStatsDuration(endWallClockTime - startMonotonicTime); - mPowerAttributor.estimatePowerConsumption(accumulatedStats.builder, stats.getHistory(), + mPowerAttributor.estimatePowerConsumption(accumulatedStats.builder, session.getHistory(), startMonotonicTime, endMonotonicTime); - populateGeneralInfo(accumulatedStats.builder, stats); + populateBatterySessionInfo(accumulatedStats.builder, session); } - private BatteryUsageStats.Builder computeBatteryUsageStats(BatteryStatsImpl stats, + private BatteryUsageStats.Builder computeBatteryUsageStats(BatteryStatsSession session, BatteryUsageStatsQuery query, long monotonicStartTime, long monotonicEndTime, long currentTimeMs) { final boolean includeProcessStateData = ((query.getFlags() - & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0) - && stats.isProcessStateDataAvailable(); + & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0); final boolean includeVirtualUids = ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS) != 0); final double minConsumedPowerThreshold = query.getMinConsumedPowerThreshold(); - String[] customEnergyConsumerNames; - synchronized (stats) { - customEnergyConsumerNames = stats.getCustomEnergyConsumerNames(); - } + String[] customEnergyConsumerNames = session.getCustomEnergyConsumerNames(); final BatteryUsageStats.Builder batteryUsageStatsBuilder = new BatteryUsageStats.Builder( customEnergyConsumerNames, includeProcessStateData, query.isScreenStateDataNeeded(), query.isPowerStateDataNeeded(), minConsumedPowerThreshold); - synchronized (stats) { - final List<PowerCalculator> powerCalculators = getPowerCalculators(); - boolean usePowerCalculators = !powerCalculators.isEmpty(); - if (usePowerCalculators - && (monotonicStartTime != MonotonicClock.UNDEFINED - || monotonicEndTime != MonotonicClock.UNDEFINED)) { - Slog.wtfStack(TAG, "BatteryUsageStatsQuery specifies a time " - + "range that is incompatible with PowerCalculators: " - + powerCalculators); - usePowerCalculators = false; - } - - if (monotonicStartTime == MonotonicClock.UNDEFINED) { - monotonicStartTime = stats.getMonotonicStartTime(); - } - batteryUsageStatsBuilder.setStatsStartTimestamp(stats.getStartClockTime() - + (monotonicStartTime - stats.getMonotonicStartTime())); - if (monotonicEndTime != MonotonicClock.UNDEFINED) { - batteryUsageStatsBuilder.setStatsEndTimestamp(stats.getStartClockTime() - + (monotonicEndTime - stats.getMonotonicStartTime())); - } else { - batteryUsageStatsBuilder.setStatsEndTimestamp(currentTimeMs); - } + final List<PowerCalculator> powerCalculators = getPowerCalculators(); + boolean usePowerCalculators = !powerCalculators.isEmpty(); + if (usePowerCalculators + && (monotonicStartTime != MonotonicClock.UNDEFINED + || monotonicEndTime != MonotonicClock.UNDEFINED)) { + Slog.wtfStack(TAG, "BatteryUsageStatsQuery specifies a time " + + "range that is incompatible with PowerCalculators: " + + powerCalculators); + usePowerCalculators = false; + } - if (usePowerCalculators) { - final long realtimeUs = mClock.elapsedRealtime() * 1000; - final long uptimeUs = mClock.uptimeMillis() * 1000; - final int[] powerComponents = query.getPowerComponents(); - SparseArray<? extends BatteryStats.Uid> uidStats = stats.getUidStats(); - for (int i = uidStats.size() - 1; i >= 0; i--) { - final BatteryStats.Uid uid = uidStats.valueAt(i); - if (!includeVirtualUids && uid.getUid() == Process.SDK_SANDBOX_VIRTUAL_UID) { - continue; - } + if (monotonicStartTime == MonotonicClock.UNDEFINED) { + monotonicStartTime = session.getMonotonicStartTime(); + } + batteryUsageStatsBuilder.setStatsStartTimestamp(session.getStartClockTime() + + (monotonicStartTime - session.getMonotonicStartTime())); + if (monotonicEndTime != MonotonicClock.UNDEFINED) { + batteryUsageStatsBuilder.setStatsEndTimestamp(session.getStartClockTime() + + (monotonicEndTime - session.getMonotonicStartTime())); + } else { + batteryUsageStatsBuilder.setStatsEndTimestamp(currentTimeMs); + } - batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(uid); - } - for (int i = 0, count = powerCalculators.size(); i < count; i++) { - PowerCalculator powerCalculator = powerCalculators.get(i); - if (powerComponents != null) { - boolean include = false; - for (int powerComponent : powerComponents) { - if (powerCalculator.isPowerComponentSupported(powerComponent)) { - include = true; - break; - } - } - if (!include) { - continue; - } - } - powerCalculator.calculate(batteryUsageStatsBuilder, stats, realtimeUs, uptimeUs, - query); - } - } - if ((query.getFlags() - & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY) != 0) { - batteryUsageStatsBuilder.setBatteryHistory(stats.copyHistory()); - } + if (usePowerCalculators) { + BatteryStatsImpl stats = session.getBatteryStats(); + applyPowerCalculators(batteryUsageStatsBuilder, stats, query, includeVirtualUids); + } + if ((query.getFlags() + & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY) != 0) { + batteryUsageStatsBuilder.setBatteryHistory(session.getHistory().copy()); } - mPowerAttributor.estimatePowerConsumption(batteryUsageStatsBuilder, stats.getHistory(), + mPowerAttributor.estimatePowerConsumption(batteryUsageStatsBuilder, session.getHistory(), monotonicStartTime, monotonicEndTime); // Combine apps by the user if necessary - mUserPowerCalculator.calculate(batteryUsageStatsBuilder, stats, 0, 0, query); + buildUserBatteryConsumers(batteryUsageStatsBuilder, query.getUserIds()); - populateGeneralInfo(batteryUsageStatsBuilder, stats); + populateBatterySessionInfo(batteryUsageStatsBuilder, session); return batteryUsageStatsBuilder; } - private void populateGeneralInfo(BatteryUsageStats.Builder builder, BatteryStatsImpl stats) { - builder.setBatteryCapacity(stats.getEstimatedBatteryCapacity()); - final long batteryTimeRemainingMs = stats.computeBatteryTimeRemaining( - mClock.elapsedRealtime() * 1000); - if (batteryTimeRemainingMs != -1) { - builder.setBatteryTimeRemainingMs(batteryTimeRemainingMs / 1000); - } - final long chargeTimeRemainingMs = stats.computeChargeTimeRemaining( - mClock.elapsedRealtime() * 1000); - if (chargeTimeRemainingMs != -1) { - builder.setChargeTimeRemainingMs(chargeTimeRemainingMs / 1000); + private void applyPowerCalculators(BatteryUsageStats.Builder batteryUsageStatsBuilder, + BatteryStatsImpl stats, BatteryUsageStatsQuery query, + boolean includeVirtualUids) { + synchronized (stats) { + final List<PowerCalculator> powerCalculators = getPowerCalculators(); + final long realtimeUs = mClock.elapsedRealtime() * 1000; + final long uptimeUs = mClock.uptimeMillis() * 1000; + final int[] powerComponents = query.getPowerComponents(); + SparseArray<? extends BatteryStats.Uid> uidStats = stats.getUidStats(); + for (int i = uidStats.size() - 1; i >= 0; i--) { + final BatteryStats.Uid uid = uidStats.valueAt(i); + if (!includeVirtualUids + && uid.getUid() == Process.SDK_SANDBOX_VIRTUAL_UID) { + continue; + } + + batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(uid); + } + for (int i = 0, count = powerCalculators.size(); i < count; i++) { + PowerCalculator powerCalculator = powerCalculators.get(i); + if (powerComponents != null) { + boolean include = false; + for (int powerComponent : powerComponents) { + if (powerCalculator.isPowerComponentSupported(powerComponent)) { + include = true; + break; + } + } + if (!include) { + continue; + } + } + powerCalculator.calculate(batteryUsageStatsBuilder, stats, realtimeUs, uptimeUs, + query); + } } } - private BatteryUsageStats getAggregatedBatteryUsageStats(BatteryStatsImpl stats, + private void populateBatterySessionInfo(BatteryUsageStats.Builder builder, + BatteryStatsSession session) { + builder.setBatteryCapacity(session.getEstimatedBatteryCapacity()); + builder.setBatteryTimeRemainingMs(session.getBatteryTimeRemainingMs()); + builder.setChargeTimeRemainingMs(session.getChargeTimeRemainingMs()); + } + + private BatteryUsageStats getAggregatedBatteryUsageStats(BatteryStatsSession stats, BatteryUsageStatsQuery query) { final boolean includeProcessStateData = ((query.getFlags() - & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0) - && stats.isProcessStateDataAvailable(); + & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0); final double minConsumedPowerThreshold = query.getMinConsumedPowerThreshold(); final String[] customEnergyConsumerNames = stats.getCustomEnergyConsumerNames(); @@ -539,4 +539,33 @@ public class BatteryUsageStatsProvider { } return builder.build(); } + + private void buildUserBatteryConsumers(BatteryUsageStats.Builder builder, + @UserIdInt int[] userIds) { + if (ArrayUtils.contains(userIds, UserHandle.USER_ALL)) { + return; + } + + SparseArray<UidBatteryConsumer.Builder> uidBatteryConsumerBuilders = + builder.getUidBatteryConsumerBuilders(); + + for (int i = uidBatteryConsumerBuilders.size() - 1; i >= 0; i--) { + final UidBatteryConsumer.Builder uidBuilder = uidBatteryConsumerBuilders.valueAt(i); + if (uidBuilder.isVirtualUid()) { + continue; + } + + final int uid = uidBuilder.getUid(); + if (UserHandle.getAppId(uid) < Process.FIRST_APPLICATION_UID) { + continue; + } + + final int userId = UserHandle.getUserId(uid); + if (!ArrayUtils.contains(userIds, userId)) { + uidBuilder.excludeFromBatteryUsageStats(); + builder.getOrCreateUserBatteryConsumerBuilder(userId) + .addUidBatteryConsumer(uidBuilder); + } + } + } } diff --git a/services/core/java/com/android/server/power/stats/PowerStatsStore.java b/services/core/java/com/android/server/power/stats/PowerStatsStore.java index b688d4b3ecde..cdf2f25a109f 100644 --- a/services/core/java/com/android/server/power/stats/PowerStatsStore.java +++ b/services/core/java/com/android/server/power/stats/PowerStatsStore.java @@ -205,21 +205,30 @@ public class PowerStatsStore { */ public void storeBatteryUsageStatsAsync(long monotonicStartTime, BatteryUsageStats batteryUsageStats) { - mHandler.post(() -> { + if (mHandler.getLooper().isCurrentThread()) { + storeBatteryUsageStats(monotonicStartTime, batteryUsageStats); + } else { + mHandler.post(() -> { + storeBatteryUsageStats(monotonicStartTime, batteryUsageStats); + }); + } + } + + private void storeBatteryUsageStats(long monotonicStartTime, + BatteryUsageStats batteryUsageStats) { + try { + PowerStatsSpan span = new PowerStatsSpan(monotonicStartTime); + span.addTimeFrame(monotonicStartTime, batteryUsageStats.getStatsStartTimestamp(), + batteryUsageStats.getStatsDuration()); + span.addSection(new BatteryUsageStatsSection(batteryUsageStats)); + storePowerStatsSpan(span); + } finally { try { - PowerStatsSpan span = new PowerStatsSpan(monotonicStartTime); - span.addTimeFrame(monotonicStartTime, batteryUsageStats.getStatsStartTimestamp(), - batteryUsageStats.getStatsDuration()); - span.addSection(new BatteryUsageStatsSection(batteryUsageStats)); - storePowerStatsSpan(span); - } finally { - try { - batteryUsageStats.close(); - } catch (IOException e) { - Slog.e(TAG, "Cannot close BatteryUsageStats", e); - } + batteryUsageStats.close(); + } catch (IOException e) { + Slog.e(TAG, "Cannot close BatteryUsageStats", e); } - }); + } } /** diff --git a/services/core/java/com/android/server/power/stats/UserPowerCalculator.java b/services/core/java/com/android/server/power/stats/UserPowerCalculator.java deleted file mode 100644 index e08d036f125e..000000000000 --- a/services/core/java/com/android/server/power/stats/UserPowerCalculator.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.power.stats; - -import android.os.BatteryConsumer; -import android.os.BatteryStats; -import android.os.BatteryUsageStats; -import android.os.BatteryUsageStatsQuery; -import android.os.Process; -import android.os.UidBatteryConsumer; -import android.os.UserHandle; -import android.util.SparseArray; - -import com.android.internal.util.ArrayUtils; - -/** - * Computes power consumed by Users - */ -public class UserPowerCalculator extends PowerCalculator { - - @Override - public boolean isPowerComponentSupported(@BatteryConsumer.PowerComponent int powerComponent) { - return true; - } - - @Override - public void calculate(BatteryUsageStats.Builder builder, BatteryStats batteryStats, - long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) { - final int[] userIds = query.getUserIds(); - if (ArrayUtils.contains(userIds, UserHandle.USER_ALL)) { - return; - } - - SparseArray<UidBatteryConsumer.Builder> uidBatteryConsumerBuilders = - builder.getUidBatteryConsumerBuilders(); - - for (int i = uidBatteryConsumerBuilders.size() - 1; i >= 0; i--) { - final UidBatteryConsumer.Builder uidBuilder = uidBatteryConsumerBuilders.valueAt(i); - if (uidBuilder.isVirtualUid()) { - continue; - } - - final int uid = uidBuilder.getUid(); - if (UserHandle.getAppId(uid) < Process.FIRST_APPLICATION_UID) { - continue; - } - - final int userId = UserHandle.getUserId(uid); - if (!ArrayUtils.contains(userIds, userId)) { - uidBuilder.excludeFromBatteryUsageStats(); - builder.getOrCreateUserBatteryConsumerBuilder(userId) - .addUidBatteryConsumer(uidBuilder); - } - } - } -} diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index a24522a5080d..0226650ec560 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -364,6 +364,7 @@ import com.android.internal.content.ReferrerIntent; import com.android.internal.os.TimeoutRecord; import com.android.internal.os.TransferPipe; import com.android.internal.policy.AttributeCache; +import com.android.internal.policy.PhoneWindow; import com.android.internal.protolog.ProtoLog; import com.android.internal.util.XmlUtils; import com.android.modules.utils.TypedXmlPullParser; @@ -2025,8 +2026,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A || ent.array.getBoolean(R.styleable.Window_windowShowWallpaper, false); mStyleFillsParent = mOccludesParent; mNoDisplay = ent.array.getBoolean(R.styleable.Window_windowNoDisplay, false); - mOptOutEdgeToEdge = ent.array.getBoolean( - R.styleable.Window_windowOptOutEdgeToEdgeEnforcement, false); + mOptOutEdgeToEdge = PhoneWindow.isOptingOutEdgeToEdgeEnforcement( + aInfo.applicationInfo, false /* local */, ent.array); } else { mStyleFillsParent = mOccludesParent = true; mNoDisplay = false; diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java index 12c8f9ccac7c..906befc1edcc 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java +++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java @@ -1664,6 +1664,12 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks { activityIdleInternal(null /* idleActivity */, false /* fromTimeout */, true /* processPausingActivities */, null /* configuration */); + if (rootTask.getParent() == null) { + // The activities in the task may already be finishing. Then the task could be removed + // when performing the idle check. + return; + } + // Reparent all the tasks to the bottom of the display final DisplayContent toDisplay = mRootWindowContainer.getDisplayContent(DEFAULT_DISPLAY); diff --git a/services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java b/services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java index f48ef4fa8f5f..c6831881ea48 100644 --- a/services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java +++ b/services/core/java/com/android/server/wm/AppCompatSizeCompatModePolicy.java @@ -228,7 +228,10 @@ class AppCompatSizeCompatModePolicy { int rotation = newParentConfiguration.windowConfiguration.getRotation(); final boolean isFixedToUserRotation = mActivityRecord.mDisplayContent == null || mActivityRecord.mDisplayContent.getDisplayRotation().isFixedToUserRotation(); - if (!isFixedToUserRotation && !appCompatDisplayInsets.mIsFloating) { + // Ignore parent rotation for floating tasks as window rotation is independent of its parent + // and thus will remain, and so should be reconfigured, in its original rotation. + if (!isFixedToUserRotation + && !newParentConfiguration.windowConfiguration.tasksAreFloating()) { // Use parent rotation because the original display can be rotated. resolvedConfig.windowConfiguration.setRotation(rotation); } else { diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 01e00e9d67f7..999666e22985 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -22,7 +22,6 @@ import static android.view.InsetsFrameProvider.SOURCE_ARBITRARY_RECTANGLE; import static android.view.InsetsFrameProvider.SOURCE_CONTAINER_BOUNDS; import static android.view.InsetsFrameProvider.SOURCE_DISPLAY; import static android.view.InsetsFrameProvider.SOURCE_FRAME; -import static android.view.ViewRootImpl.CLIENT_IMMERSIVE_CONFIRMATION; import static android.view.ViewRootImpl.CLIENT_TRANSIENT; import static android.view.WindowInsetsController.APPEARANCE_FORCE_LIGHT_NAVIGATION_BARS; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; @@ -193,7 +192,6 @@ public class DisplayPolicy { private final boolean mCarDockEnablesAccelerometer; private final boolean mDeskDockEnablesAccelerometer; private final AccessibilityManager mAccessibilityManager; - private final ImmersiveModeConfirmation mImmersiveModeConfirmation; private final ScreenshotHelper mScreenshotHelper; private final Object mServiceAcquireLock = new Object(); @@ -634,12 +632,6 @@ public class DisplayPolicy { }; displayContent.mAppTransition.registerListenerLocked(mAppTransitionListener); displayContent.mTransitionController.registerLegacyListener(mAppTransitionListener); - if (CLIENT_TRANSIENT || CLIENT_IMMERSIVE_CONFIRMATION) { - mImmersiveModeConfirmation = null; - } else { - mImmersiveModeConfirmation = new ImmersiveModeConfirmation(mContext, looper, - mService.mVrModeEnabled, mCanSystemBarsBeShownByUser); - } // TODO: Make it can take screenshot on external display mScreenshotHelper = displayContent.isDefaultDisplay @@ -2294,11 +2286,7 @@ public class DisplayPolicy { } } } - if (CLIENT_IMMERSIVE_CONFIRMATION || CLIENT_TRANSIENT) { - mStatusBarManagerInternal.confirmImmersivePrompt(); - } else { - mImmersiveModeConfirmation.confirmCurrentPrompt(); - } + mStatusBarManagerInternal.confirmImmersivePrompt(); } boolean isKeyguardShowing() { @@ -2523,16 +2511,9 @@ public class DisplayPolicy { // The immersive confirmation window should be attached to the immersive window root. final RootDisplayArea root = win.getRootDisplayArea(); final int rootDisplayAreaId = root == null ? FEATURE_UNDEFINED : root.mFeatureId; - if (!CLIENT_TRANSIENT && !CLIENT_IMMERSIVE_CONFIRMATION) { - mImmersiveModeConfirmation.immersiveModeChangedLw(rootDisplayAreaId, - isImmersiveMode, - mService.mPolicy.isUserSetupComplete(), - isNavBarEmpty(disableFlags)); - } else { - // TODO(b/277290737): Move this to the client side, instead of using a proxy. - callStatusBarSafely(statusBar -> statusBar.immersiveModeChanged(getDisplayId(), + // TODO(b/277290737): Move this to the client side, instead of using a proxy. + callStatusBarSafely(statusBar -> statusBar.immersiveModeChanged(getDisplayId(), rootDisplayAreaId, isImmersiveMode)); - } } // Show transient bars for panic if needed. @@ -2745,15 +2726,8 @@ public class DisplayPolicy { void onPowerKeyDown(boolean isScreenOn) { // Detect user pressing the power button in panic when an application has // taken over the whole screen. - boolean panic = false; - if (!CLIENT_TRANSIENT && !CLIENT_IMMERSIVE_CONFIRMATION) { - panic = mImmersiveModeConfirmation.onPowerKeyDown(isScreenOn, - SystemClock.elapsedRealtime(), isImmersiveMode(mSystemUiControllingWindow), - isNavBarEmpty(mLastDisableFlags)); - } else { - panic = isPowerKeyDownPanic(isScreenOn, SystemClock.elapsedRealtime(), + boolean panic = isPowerKeyDownPanic(isScreenOn, SystemClock.elapsedRealtime(), isImmersiveMode(mSystemUiControllingWindow), isNavBarEmpty(mLastDisableFlags)); - } if (panic) { mHandler.post(mHiddenNavPanic); } @@ -2774,27 +2748,6 @@ public class DisplayPolicy { return false; } - void onVrStateChangedLw(boolean enabled) { - if (!CLIENT_TRANSIENT && !CLIENT_IMMERSIVE_CONFIRMATION) { - mImmersiveModeConfirmation.onVrStateChangedLw(enabled); - } - } - - /** - * Called when the state of lock task mode changes. This should be used to disable immersive - * mode confirmation. - * - * @param lockTaskState the new lock task mode state. One of - * {@link ActivityManager#LOCK_TASK_MODE_NONE}, - * {@link ActivityManager#LOCK_TASK_MODE_LOCKED}, - * {@link ActivityManager#LOCK_TASK_MODE_PINNED}. - */ - public void onLockTaskStateChangedLw(int lockTaskState) { - if (!CLIENT_TRANSIENT && !CLIENT_IMMERSIVE_CONFIRMATION) { - mImmersiveModeConfirmation.onLockTaskModeChangedLw(lockTaskState); - } - } - /** Called when a {@link android.os.PowerManager#USER_ACTIVITY_EVENT_TOUCH} is sent. */ public void onUserActivityEventTouch() { // If there is keyguard, it may use INPUT_FEATURE_DISABLE_USER_ACTIVITY (InputDispatcher @@ -2808,14 +2761,6 @@ public class DisplayPolicy { mService.mAtmService.setProcessAnimatingWhileDozing(w != null ? w.getProcess() : null); } - boolean onSystemUiSettingsChanged() { - if (CLIENT_TRANSIENT || CLIENT_IMMERSIVE_CONFIRMATION) { - return false; - } else { - return mImmersiveModeConfirmation.onSettingChanged(mService.mCurrentUserId); - } - } - /** * Request a screenshot be taken. * @@ -3025,9 +2970,6 @@ public class DisplayPolicy { mDisplayContent.mTransitionController.unregisterLegacyListener(mAppTransitionListener); mHandler.post(mGestureNavigationSettingsObserver::unregister); mHandler.post(mForceShowNavBarSettingsObserver::unregister); - if (!CLIENT_TRANSIENT && !CLIENT_IMMERSIVE_CONFIRMATION) { - mImmersiveModeConfirmation.release(); - } if (mService.mPointerLocationEnabled) { setPointerLocationEnabled(false); } diff --git a/services/core/java/com/android/server/wm/EventLogTags.logtags b/services/core/java/com/android/server/wm/EventLogTags.logtags index 9d6688648021..5767db1461d0 100644 --- a/services/core/java/com/android/server/wm/EventLogTags.logtags +++ b/services/core/java/com/android/server/wm/EventLogTags.logtags @@ -69,7 +69,7 @@ option java_package com.android.server.wm # bootanim finished: 31007 wm_boot_animation_done (time|2|3) -# Notify keyguard occlude statuc change to SysUI. +# Notify keyguard occlude status change to SysUI. 31008 wm_set_keyguard_occluded (occluded|1),(animate|1),(transit|1),(Channel|3) # Back navigation. diff --git a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java deleted file mode 100644 index d79c11cecdc0..000000000000 --- a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java +++ /dev/null @@ -1,533 +0,0 @@ -/* - * Copyright (C) 2018 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.wm; - -import static android.app.ActivityManager.LOCK_TASK_MODE_LOCKED; -import static android.app.ActivityManager.LOCK_TASK_MODE_NONE; -import static android.view.Display.DEFAULT_DISPLAY; -import static android.view.ViewRootImpl.CLIENT_TRANSIENT; -import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; -import static android.window.DisplayAreaOrganizer.FEATURE_UNDEFINED; -import static android.window.DisplayAreaOrganizer.KEY_ROOT_DISPLAY_AREA_ID; - -import android.animation.ArgbEvaluator; -import android.animation.ValueAnimator; -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.app.ActivityManager; -import android.app.ActivityThread; -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.graphics.Insets; -import android.graphics.PixelFormat; -import android.graphics.Rect; -import android.graphics.drawable.ColorDrawable; -import android.os.Binder; -import android.os.Bundle; -import android.os.Handler; -import android.os.IBinder; -import android.os.Looper; -import android.os.Message; -import android.os.UserHandle; -import android.os.UserManager; -import android.provider.Settings; -import android.util.DisplayMetrics; -import android.util.Slog; -import android.view.Display; -import android.view.Gravity; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewTreeObserver; -import android.view.WindowInsets; -import android.view.WindowInsets.Type; -import android.view.WindowManager; -import android.view.animation.AnimationUtils; -import android.view.animation.Interpolator; -import android.widget.Button; -import android.widget.FrameLayout; -import android.widget.RelativeLayout; - -import com.android.internal.R; - -/** - * Helper to manage showing/hiding a confirmation prompt when the navigation bar is hidden - * entering immersive mode. - */ -public class ImmersiveModeConfirmation { - private static final String TAG = "ImmersiveModeConfirmation"; - private static final boolean DEBUG = false; - private static final boolean DEBUG_SHOW_EVERY_TIME = false; // super annoying, use with caution - private static final String CONFIRMED = "confirmed"; - private static final int IMMERSIVE_MODE_CONFIRMATION_WINDOW_TYPE = - WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL; - - private static boolean sConfirmed; - - private final Context mContext; - private final H mHandler; - private final long mShowDelayMs; - private final long mPanicThresholdMs; - private final IBinder mWindowToken = new Binder(); - - private ClingWindowView mClingWindow; - private long mPanicTime; - /** The last {@link WindowManager} that is used to add the confirmation window. */ - @Nullable - private WindowManager mWindowManager; - /** - * The WindowContext that is registered with {@link #mWindowManager} with options to specify the - * {@link RootDisplayArea} to attach the confirmation window. - */ - @Nullable - private Context mWindowContext; - /** - * The root display area feature id that the {@link #mWindowContext} is attaching to. - */ - private int mWindowContextRootDisplayAreaId = FEATURE_UNDEFINED; - // Local copy of vr mode enabled state, to avoid calling into VrManager with - // the lock held. - private boolean mVrModeEnabled; - private boolean mCanSystemBarsBeShownByUser; - private int mLockTaskState = LOCK_TASK_MODE_NONE; - - ImmersiveModeConfirmation(Context context, Looper looper, boolean vrModeEnabled, - boolean canSystemBarsBeShownByUser) { - final Display display = context.getDisplay(); - final Context uiContext = ActivityThread.currentActivityThread().getSystemUiContext(); - mContext = display.getDisplayId() == DEFAULT_DISPLAY - ? uiContext : uiContext.createDisplayContext(display); - mHandler = new H(looper); - mShowDelayMs = context.getResources().getInteger(R.integer.dock_enter_exit_duration) * 3L; - mPanicThresholdMs = context.getResources() - .getInteger(R.integer.config_immersive_mode_confirmation_panic); - mVrModeEnabled = vrModeEnabled; - mCanSystemBarsBeShownByUser = canSystemBarsBeShownByUser; - } - - static boolean loadSetting(int currentUserId, Context context) { - final boolean wasConfirmed = sConfirmed; - sConfirmed = false; - if (DEBUG) Slog.d(TAG, String.format("loadSetting() currentUserId=%d", currentUserId)); - String value = null; - try { - value = Settings.Secure.getStringForUser(context.getContentResolver(), - Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS, - UserHandle.USER_CURRENT); - sConfirmed = CONFIRMED.equals(value); - if (DEBUG) Slog.d(TAG, "Loaded sConfirmed=" + sConfirmed); - } catch (Throwable t) { - Slog.w(TAG, "Error loading confirmations, value=" + value, t); - } - return sConfirmed != wasConfirmed; - } - - private static void saveSetting(Context context) { - if (DEBUG) Slog.d(TAG, "saveSetting()"); - try { - final String value = sConfirmed ? CONFIRMED : null; - Settings.Secure.putStringForUser(context.getContentResolver(), - Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS, - value, - UserHandle.USER_CURRENT); - if (DEBUG) Slog.d(TAG, "Saved value=" + value); - } catch (Throwable t) { - Slog.w(TAG, "Error saving confirmations, sConfirmed=" + sConfirmed, t); - } - } - - void release() { - mHandler.removeMessages(H.SHOW); - mHandler.removeMessages(H.HIDE); - } - - boolean onSettingChanged(int currentUserId) { - final boolean changed = loadSetting(currentUserId, mContext); - // Remove the window if the setting changes to be confirmed. - if (changed && sConfirmed) { - mHandler.sendEmptyMessage(H.HIDE); - } - return changed; - } - - void immersiveModeChangedLw(int rootDisplayAreaId, boolean isImmersiveMode, - boolean userSetupComplete, boolean navBarEmpty) { - mHandler.removeMessages(H.SHOW); - if (isImmersiveMode) { - if (DEBUG) Slog.d(TAG, "immersiveModeChanged() sConfirmed=" + sConfirmed); - if ((DEBUG_SHOW_EVERY_TIME || !sConfirmed) - && userSetupComplete - && !mVrModeEnabled - && mCanSystemBarsBeShownByUser - && !navBarEmpty - && !UserManager.isDeviceInDemoMode(mContext) - && (mLockTaskState != LOCK_TASK_MODE_LOCKED)) { - final Message msg = mHandler.obtainMessage(H.SHOW); - msg.arg1 = rootDisplayAreaId; - mHandler.sendMessageDelayed(msg, mShowDelayMs); - } - } else { - mHandler.sendEmptyMessage(H.HIDE); - } - } - - boolean onPowerKeyDown(boolean isScreenOn, long time, boolean inImmersiveMode, - boolean navBarEmpty) { - if (!isScreenOn && (time - mPanicTime < mPanicThresholdMs)) { - // turning the screen back on within the panic threshold - return mClingWindow == null; - } - if (isScreenOn && inImmersiveMode && !navBarEmpty) { - // turning the screen off, remember if we were in immersive mode - mPanicTime = time; - } else { - mPanicTime = 0; - } - return false; - } - - void confirmCurrentPrompt() { - if (mClingWindow != null) { - if (DEBUG) Slog.d(TAG, "confirmCurrentPrompt()"); - mHandler.post(mConfirm); - } - } - - private void handleHide() { - if (mClingWindow != null) { - if (DEBUG) Slog.d(TAG, "Hiding immersive mode confirmation"); - if (mWindowManager != null) { - try { - mWindowManager.removeView(mClingWindow); - } catch (WindowManager.InvalidDisplayException e) { - Slog.w(TAG, "Fail to hide the immersive confirmation window because of " - + e); - } - mWindowManager = null; - mWindowContext = null; - } - mClingWindow = null; - } - } - - private WindowManager.LayoutParams getClingWindowLayoutParams() { - final WindowManager.LayoutParams lp = new WindowManager.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT, - IMMERSIVE_MODE_CONFIRMATION_WINDOW_TYPE, - WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN - | WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED - | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, - PixelFormat.TRANSLUCENT); - lp.setFitInsetsTypes(lp.getFitInsetsTypes() & ~Type.statusBars()); - lp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; - // Trusted overlay so touches outside the touchable area are allowed to pass through - lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS - | WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY - | WindowManager.LayoutParams.PRIVATE_FLAG_IMMERSIVE_CONFIRMATION_WINDOW; - lp.setTitle("ImmersiveModeConfirmation"); - lp.windowAnimations = com.android.internal.R.style.Animation_ImmersiveModeConfirmation; - lp.token = getWindowToken(); - return lp; - } - - private FrameLayout.LayoutParams getBubbleLayoutParams() { - return new FrameLayout.LayoutParams( - getClingWindowWidth(), - ViewGroup.LayoutParams.WRAP_CONTENT, - Gravity.CENTER_HORIZONTAL | Gravity.TOP); - } - - /** - * Returns the width of the cling window. - */ - private int getClingWindowWidth() { - return mContext.getResources().getDimensionPixelSize( - R.dimen.immersive_mode_cling_width); - } - - /** - * @return the window token that's used by all ImmersiveModeConfirmation windows. - */ - IBinder getWindowToken() { - return mWindowToken; - } - - private class ClingWindowView extends FrameLayout { - private static final int BGCOLOR = 0x80000000; - private static final int OFFSET_DP = 96; - private static final int ANIMATION_DURATION = 250; - - private final Runnable mConfirm; - private final ColorDrawable mColor = new ColorDrawable(0); - private final Interpolator mInterpolator; - private ValueAnimator mColorAnim; - private ViewGroup mClingLayout; - - private Runnable mUpdateLayoutRunnable = new Runnable() { - @Override - public void run() { - if (mClingLayout != null && mClingLayout.getParent() != null) { - mClingLayout.setLayoutParams(getBubbleLayoutParams()); - } - } - }; - - private ViewTreeObserver.OnComputeInternalInsetsListener mInsetsListener = - new ViewTreeObserver.OnComputeInternalInsetsListener() { - private final int[] mTmpInt2 = new int[2]; - - @Override - public void onComputeInternalInsets( - ViewTreeObserver.InternalInsetsInfo inoutInfo) { - // Set touchable region to cover the cling layout. - mClingLayout.getLocationInWindow(mTmpInt2); - inoutInfo.setTouchableInsets( - ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION); - inoutInfo.touchableRegion.set( - mTmpInt2[0], - mTmpInt2[1], - mTmpInt2[0] + mClingLayout.getWidth(), - mTmpInt2[1] + mClingLayout.getHeight()); - } - }; - - private BroadcastReceiver mReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (intent.getAction().equals(Intent.ACTION_CONFIGURATION_CHANGED)) { - post(mUpdateLayoutRunnable); - } - } - }; - - ClingWindowView(Context context, Runnable confirm) { - super(context); - mConfirm = confirm; - setBackground(mColor); - setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); - mInterpolator = AnimationUtils - .loadInterpolator(mContext, android.R.interpolator.linear_out_slow_in); - } - - @Override - public void onAttachedToWindow() { - super.onAttachedToWindow(); - - DisplayMetrics metrics = new DisplayMetrics(); - mContext.getDisplay().getMetrics(metrics); - float density = metrics.density; - - getViewTreeObserver().addOnComputeInternalInsetsListener(mInsetsListener); - - // create the confirmation cling - mClingLayout = (ViewGroup) - View.inflate(getContext(), R.layout.immersive_mode_cling, null); - - final Button ok = mClingLayout.findViewById(R.id.ok); - ok.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - mConfirm.run(); - } - }); - addView(mClingLayout, getBubbleLayoutParams()); - - if (ActivityManager.isHighEndGfx()) { - final View cling = mClingLayout; - cling.setAlpha(0f); - cling.setTranslationY(-OFFSET_DP * density); - - postOnAnimation(new Runnable() { - @Override - public void run() { - cling.animate() - .alpha(1f) - .translationY(0) - .setDuration(ANIMATION_DURATION) - .setInterpolator(mInterpolator) - .withLayer() - .start(); - - mColorAnim = ValueAnimator.ofObject(new ArgbEvaluator(), 0, BGCOLOR); - mColorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - final int c = (Integer) animation.getAnimatedValue(); - mColor.setColor(c); - } - }); - mColorAnim.setDuration(ANIMATION_DURATION); - mColorAnim.setInterpolator(mInterpolator); - mColorAnim.start(); - } - }); - } else { - mColor.setColor(BGCOLOR); - } - - mContext.registerReceiver(mReceiver, - new IntentFilter(Intent.ACTION_CONFIGURATION_CHANGED)); - } - - @Override - public void onDetachedFromWindow() { - mContext.unregisterReceiver(mReceiver); - } - - @Override - public boolean onTouchEvent(MotionEvent motion) { - return true; - } - - @Override - public WindowInsets onApplyWindowInsets(WindowInsets insets) { - // If the top display cutout overlaps with the full-width (windowWidth=-1)/centered - // dialog, then adjust the dialog contents by the cutout - final int width = getWidth(); - final int windowWidth = getClingWindowWidth(); - final Rect topDisplayCutout = insets.getDisplayCutout() != null - ? insets.getDisplayCutout().getBoundingRectTop() - : new Rect(); - final boolean intersectsTopCutout = topDisplayCutout.intersects( - width - (windowWidth / 2), 0, - width + (windowWidth / 2), topDisplayCutout.bottom); - if (windowWidth < 0 || (width > 0 && intersectsTopCutout)) { - final View iconView = findViewById(R.id.immersive_cling_icon); - RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) - iconView.getLayoutParams(); - lp.topMargin = topDisplayCutout.bottom; - iconView.setLayoutParams(lp); - } - // we will be hiding the nav bar, so layout as if it's already hidden - return new WindowInsets.Builder(insets).setInsets( - Type.systemBars(), Insets.NONE).build(); - } - } - - /** - * DO HOLD THE WINDOW MANAGER LOCK WHEN CALLING THIS METHOD - * The reason why we add this method is to avoid the deadlock of WMG->WMS and WMS->WMG - * when ImmersiveModeConfirmation object is created. - * - * @return the WindowManager specifying with the {@code rootDisplayAreaId} to attach the - * confirmation window. - */ - @NonNull - private WindowManager createWindowManager(int rootDisplayAreaId) { - if (mWindowManager != null) { - throw new IllegalStateException( - "Must not create a new WindowManager while there is an existing one"); - } - // Create window context to specify the RootDisplayArea - final Bundle options = getOptionsForWindowContext(rootDisplayAreaId); - mWindowContextRootDisplayAreaId = rootDisplayAreaId; - mWindowContext = mContext.createWindowContext( - IMMERSIVE_MODE_CONFIRMATION_WINDOW_TYPE, options); - mWindowManager = mWindowContext.getSystemService(WindowManager.class); - return mWindowManager; - } - - /** - * Returns options that specify the {@link RootDisplayArea} to attach the confirmation window. - * {@code null} if the {@code rootDisplayAreaId} is {@link FEATURE_UNDEFINED}. - */ - @Nullable - private Bundle getOptionsForWindowContext(int rootDisplayAreaId) { - // In case we don't care which root display area the window manager is specifying. - if (rootDisplayAreaId == FEATURE_UNDEFINED) { - return null; - } - - final Bundle options = new Bundle(); - options.putInt(KEY_ROOT_DISPLAY_AREA_ID, rootDisplayAreaId); - return options; - } - - private void handleShow(int rootDisplayAreaId) { - if (mClingWindow != null) { - if (rootDisplayAreaId == mWindowContextRootDisplayAreaId) { - if (DEBUG) Slog.d(TAG, "Immersive mode confirmation has already been shown"); - return; - } else { - // Hide the existing confirmation before show a new one in the new root. - if (DEBUG) Slog.d(TAG, "Immersive mode confirmation was shown in a different root"); - handleHide(); - } - } - - if (DEBUG) Slog.d(TAG, "Showing immersive mode confirmation"); - mClingWindow = new ClingWindowView(mContext, mConfirm); - // show the confirmation - final WindowManager.LayoutParams lp = getClingWindowLayoutParams(); - try { - createWindowManager(rootDisplayAreaId).addView(mClingWindow, lp); - } catch (WindowManager.InvalidDisplayException e) { - Slog.w(TAG, "Fail to show the immersive confirmation window because of " + e); - } - } - - private final Runnable mConfirm = new Runnable() { - @Override - public void run() { - if (DEBUG) Slog.d(TAG, "mConfirm.run()"); - if (!sConfirmed) { - sConfirmed = true; - saveSetting(mContext); - } - handleHide(); - } - }; - - private final class H extends Handler { - private static final int SHOW = 1; - private static final int HIDE = 2; - - H(Looper looper) { - super(looper); - } - - @Override - public void handleMessage(Message msg) { - if (CLIENT_TRANSIENT) { - return; - } - switch(msg.what) { - case SHOW: - handleShow(msg.arg1); - break; - case HIDE: - handleHide(); - break; - } - } - } - - void onVrStateChangedLw(boolean enabled) { - mVrModeEnabled = enabled; - if (mVrModeEnabled) { - mHandler.removeMessages(H.SHOW); - mHandler.sendEmptyMessage(H.HIDE); - } - } - - void onLockTaskModeChangedLw(int lockTaskState) { - mLockTaskState = lockTaskState; - } -} diff --git a/services/core/java/com/android/server/wm/LockTaskController.java b/services/core/java/com/android/server/wm/LockTaskController.java index 790858d2eec2..b3eccdbc2452 100644 --- a/services/core/java/com/android/server/wm/LockTaskController.java +++ b/services/core/java/com/android/server/wm/LockTaskController.java @@ -609,7 +609,6 @@ public class LockTaskController { statusBarService.showPinningEnterExitToast(false /* entering */); } } - mWindowManager.onLockTaskStateChanged(mLockTaskModeState); } catch (RemoteException ex) { throw new RuntimeException(ex); } @@ -745,7 +744,6 @@ public class LockTaskController { statusBarService.showPinningEnterExitToast(true /* entering */); } } - mWindowManager.onLockTaskStateChanged(lockTaskModeState); mLockTaskModeState = lockTaskModeState; mTaskChangeNotificationController.notifyLockTaskModeChanged(mLockTaskModeState); setStatusBarState(lockTaskModeState, userId); diff --git a/services/core/java/com/android/server/wm/Transition.java b/services/core/java/com/android/server/wm/Transition.java index f4a455a9c2dd..75cefdff2b0b 100644 --- a/services/core/java/com/android/server/wm/Transition.java +++ b/services/core/java/com/android/server/wm/Transition.java @@ -2890,6 +2890,13 @@ class Transition implements BLASTSyncEngine.TransactionReadyListener { leashReference = leashReference.getParent(); } } + if (wc == leashReference + && sortedTargets.get(i).mWindowingMode == WINDOWING_MODE_PINNED) { + // If a PiP task is the only target, we wanna make sure the transition root leash + // is at the top in case PiP is sent to back. This is done because a pinned task is + // meant to be always-on-top throughout a transition. + leashReference = ancestor.getTopChild(); + } final SurfaceControl rootLeash = leashReference.makeAnimationLeash().setName( "Transition Root: " + leashReference.getName()) .setCallsite("Transition.calculateTransitionRoots").build(); diff --git a/services/core/java/com/android/server/wm/WindowManagerFlags.java b/services/core/java/com/android/server/wm/WindowManagerFlags.java index 7ef8d8d0c16a..df70ed2e99a8 100644 --- a/services/core/java/com/android/server/wm/WindowManagerFlags.java +++ b/services/core/java/com/android/server/wm/WindowManagerFlags.java @@ -58,6 +58,8 @@ class WindowManagerFlags { final boolean mEnsureWallpaperInTransitions; + final boolean mAodTransition = Flags.aodTransition(); + /* End Available Flags */ WindowManagerFlags() { diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index bf23e757fee5..36d52ddb40e6 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -513,7 +513,6 @@ public class WindowManagerService extends IWindowManager.Stub public void onVrStateChanged(boolean enabled) { synchronized (mGlobalLock) { mVrModeEnabled = enabled; - mRoot.forAllDisplayPolicies(p -> p.onVrStateChangedLw(enabled)); } } }; @@ -881,11 +880,6 @@ public class WindowManagerService extends IWindowManager.Stub return; } - if (mImmersiveModeConfirmationsUri.equals(uri) || mPolicyControlUri.equals(uri)) { - updateSystemUiSettings(true /* handleChange */); - return; - } - if (mForceDesktopModeOnExternalDisplaysUri.equals(uri)) { updateForceDesktopModeOnExternalDisplays(); return; @@ -938,7 +932,6 @@ public class WindowManagerService extends IWindowManager.Stub } void loadSettings() { - updateSystemUiSettings(false /* handleChange */); updateMaximumObscuringOpacityForTouch(); updateDisableSecureWindows(); } @@ -955,21 +948,6 @@ public class WindowManagerService extends IWindowManager.Stub } } - void updateSystemUiSettings(boolean handleChange) { - synchronized (mGlobalLock) { - boolean changed = false; - if (handleChange) { - changed = getDefaultDisplayContentLocked().getDisplayPolicy() - .onSystemUiSettingsChanged(); - } else { - ImmersiveModeConfirmation.loadSetting(mCurrentUserId, mContext); - } - if (changed) { - mWindowPlacerLocked.requestTraversal(); - } - } - } - void updateForceDesktopModeOnExternalDisplays() { ContentResolver resolver = mContext.getContentResolver(); final boolean enableForceDesktopMode = Settings.Global.getInt(resolver, @@ -3315,7 +3293,6 @@ public class WindowManagerService extends IWindowManager.Stub @Override public void onUserSwitched() { - mSettingsObserver.updateSystemUiSettings(true /* handleChange */); synchronized (mGlobalLock) { // force a re-application of focused window sysui visibility on each display. mRoot.forAllDisplayPolicies(DisplayPolicy::resetSystemBarAttributes); @@ -9071,22 +9048,6 @@ public class WindowManagerService extends IWindowManager.Stub return mSurfaceControlFactory.get(); } - /** - * Called when the state of lock task mode changes. This should be used to disable immersive - * mode confirmation. - * - * @param lockTaskState the new lock task mode state. One of - * {@link ActivityManager#LOCK_TASK_MODE_NONE}, - * {@link ActivityManager#LOCK_TASK_MODE_LOCKED}, - * {@link ActivityManager#LOCK_TASK_MODE_PINNED}. - */ - void onLockTaskStateChanged(int lockTaskState) { - // TODO: pass in displayId to determine which display the lock task state changed - synchronized (mGlobalLock) { - mRoot.forAllDisplayPolicies(p -> p.onLockTaskStateChangedLw(lockTaskState)); - } - } - @Override public void syncInputTransactions(boolean waitForAnimations) { final long token = Binder.clearCallingIdentity(); diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryChargeCalculatorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryChargeCalculatorTest.java index 9b45ca79fdab..ec8ede06099f 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryChargeCalculatorTest.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryChargeCalculatorTest.java @@ -51,6 +51,7 @@ public class BatteryChargeCalculatorTest { @Before public void setup() { + mStatsRule.getBatteryStats().setNoAutoReset(true); mStatsRule.getBatteryStats().onSystemReady(mock(Context.class)); } @@ -83,8 +84,8 @@ public class BatteryChargeCalculatorTest { .isWithin(PRECISION).of(360.0); assertThat(batteryUsageStats.getDischargedPowerRange().getUpper()) .isWithin(PRECISION).of(400.0); - // 5_000_000 (current time) - 1_000_000 (started discharging) - assertThat(batteryUsageStats.getDischargeDurationMs()).isEqualTo(4_000_000); + // 5_000_000 (current time) - 0 (started discharging, see BatteryUsageStatsRule) + assertThat(batteryUsageStats.getDischargeDurationMs()).isEqualTo(5_000_000); assertThat(batteryUsageStats.getBatteryTimeRemainingMs()).isEqualTo(8_000_000); assertThat(batteryUsageStats.getChargeTimeRemainingMs()).isEqualTo(-1); diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsImplTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsImplTest.java index d83dc110800a..db3268729f1e 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsImplTest.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsImplTest.java @@ -141,8 +141,7 @@ public class BatteryStatsImplTest { HandlerThread bgThread = new HandlerThread("bg thread"); bgThread.start(); mHandler = new Handler(bgThread.getLooper()); - mBatteryStatsImpl = new MockBatteryStatsImpl(mMockClock, null, mHandler) - .setPowerProfile(mPowerProfile) + mBatteryStatsImpl = new MockBatteryStatsImpl(mMockClock, null, mHandler, mPowerProfile) .setCpuScalingPolicies(mCpuScalingPolicies) .setKernelCpuUidFreqTimeReader(mKernelUidCpuFreqTimeReader) .setKernelSingleUidTimeReader(mKernelSingleUidTimeReader) @@ -919,11 +918,11 @@ public class BatteryStatsImplTest { synchronized (mBatteryStatsImpl) { mBatteryStatsImpl.setOnBatteryLocked(mMockClock.realtime, mMockClock.uptime, true, BatteryManager.BATTERY_STATUS_DISCHARGING, 50, 0); - // Will not save to PowerStatsStore because "saveBatteryUsageStatsOnReset" has not - // been called yet. - mBatteryStatsImpl.resetAllStatsAndHistoryLocked( - BatteryStatsImpl.RESET_REASON_ADB_COMMAND); } + // Will not save to PowerStatsStore because "saveBatteryUsageStatsOnReset" has not + // been called yet. + mBatteryStatsImpl.startNewSession(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); + awaitCompletion(); assertThat(mPowerStatsStore.getTableOfContents()).isEmpty(); @@ -945,15 +944,8 @@ public class BatteryStatsImplTest { mMockClock.currentTime += 60000; // Battery stats reset should have the side-effect of saving accumulated battery usage stats - synchronized (mBatteryStatsImpl) { - mBatteryStatsImpl.resetAllStatsAndHistoryLocked( - BatteryStatsImpl.RESET_REASON_ADB_COMMAND); - } - - // Await completion - ConditionVariable done = new ConditionVariable(); - mHandler.post(done::open); - done.block(); + mBatteryStatsImpl.startNewSession(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); + awaitCompletion(); List<PowerStatsSpan.Metadata> contents = mPowerStatsStore.getTableOfContents(); assertThat(contents).hasSize(1); @@ -982,4 +974,11 @@ public class BatteryStatsImplTest { span.close(); } + + private void awaitCompletion() { + // Await completion + ConditionVariable done = new ConditionVariable(); + mHandler.post(done::open); + done.block(); + } } diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsNoteTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsNoteTest.java index 69579d6cb7d8..30ff8005563a 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsNoteTest.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsNoteTest.java @@ -32,7 +32,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.mock; import android.app.ActivityManager; import android.app.usage.NetworkStatsManager; @@ -67,7 +66,6 @@ import androidx.test.filters.SmallTest; import com.android.internal.os.BatteryStatsHistoryIterator; import com.android.internal.os.MonotonicClock; -import com.android.internal.os.PowerProfile; import com.android.internal.power.EnergyConsumerStats; import com.android.server.power.optimization.Flags; import com.android.server.power.stats.BatteryStatsImpl.DualTimer; @@ -1538,7 +1536,6 @@ public class BatteryStatsNoteTest { public void testGetPerStateActiveRadioDurationMs_initialModemActivity() { final MockClock clock = new MockClock(); // holds realtime and uptime in ms final MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clock); - bi.setPowerProfile(mock(PowerProfile.class)); final int ratCount = RADIO_ACCESS_TECHNOLOGY_COUNT; final int frequencyCount = ServiceState.FREQUENCY_RANGE_MMWAVE + 1; @@ -1680,7 +1677,6 @@ public class BatteryStatsNoteTest { public void testGetPerStateActiveRadioDurationMs_withModemActivity() { final MockClock clock = new MockClock(); // holds realtime and uptime in ms final MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clock); - bi.setPowerProfile(mock(PowerProfile.class)); final int ratCount = RADIO_ACCESS_TECHNOLOGY_COUNT; final int frequencyCount = ServiceState.FREQUENCY_RANGE_MMWAVE + 1; final int txLevelCount = CellSignalStrength.getNumSignalStrengthLevels(); @@ -1920,7 +1916,6 @@ public class BatteryStatsNoteTest { public void testGetPerStateActiveRadioDurationMs_withSpecificInfoModemActivity() { final MockClock clock = new MockClock(); // holds realtime and uptime in ms final MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clock); - bi.setPowerProfile(mock(PowerProfile.class)); final int ratCount = RADIO_ACCESS_TECHNOLOGY_COUNT; final int frequencyCount = ServiceState.FREQUENCY_RANGE_MMWAVE + 1; final int txLevelCount = CellSignalStrength.getNumSignalStrengthLevels(); @@ -2313,7 +2308,6 @@ public class BatteryStatsNoteTest { boolean update; final MockClock clocks = new MockClock(); // holds realtime and uptime in ms final MockBatteryStatsImpl bi = new MockBatteryStatsImpl(clocks); - bi.setPowerProfile(mock(PowerProfile.class)); final int txLevelCount = CellSignalStrength.getNumSignalStrengthLevels(); final ModemActivityInfo mai = new ModemActivityInfo(0L, 0L, 0L, new int[txLevelCount], 0L); diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsResetTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsResetTest.java index 3635e9a749e2..b6d49d0ade0a 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsResetTest.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryStatsResetTest.java @@ -34,7 +34,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import java.io.IOException; -import java.nio.file.Files; @SmallTest @RunWith(AndroidJUnit4.class) @@ -45,13 +44,17 @@ public class BatteryStatsResetTest { .setProvideMainThread(true) .build(); + @Rule(order = 1) + public final BatteryUsageStatsRule mStatsRule = new BatteryUsageStatsRule() + .createTempDirectory(); + private static final int BATTERY_NOMINAL_VOLTAGE_MV = 3700; private static final int BATTERY_CAPACITY_UAH = 4_000_000; private static final int BATTERY_CHARGE_RATE_SECONDS_PER_LEVEL = 100; private MockClock mMockClock; - private BatteryStatsImpl.BatteryStatsConfig mConfig; private MockBatteryStatsImpl mBatteryStatsImpl; + private BatteryStatsImpl.BatteryStatsConfig mConfig; /** * Battery status. Must be one of the following: @@ -92,10 +95,9 @@ public class BatteryStatsResetTest { @Before public void setUp() throws IOException { - mConfig = mock(BatteryStatsImpl.BatteryStatsConfig.class); - mMockClock = new MockClock(); - mBatteryStatsImpl = new MockBatteryStatsImpl(mConfig, mMockClock, - Files.createTempDirectory("BatteryStatsResetTest").toFile()); + mMockClock = mStatsRule.getMockClock(); + mConfig = mStatsRule.getBatteryStatsConfig(); + mBatteryStatsImpl = mStatsRule.getBatteryStats(); mBatteryStatsImpl.onSystemReady(mock(Context.class)); // Set up the battery state. Start off with a fully charged plugged in battery. @@ -112,6 +114,21 @@ public class BatteryStatsResetTest { @Test public void testResetOnUnplug_highBatteryLevel() { + mBatteryStatsImpl.resetBatteryHistoryOnNewSession(false); + long initialStartTime = mBatteryStatsImpl.getHistory().getStartTime(); + resetOnUnplug_highBatteryLevel(); + assertThat(mBatteryStatsImpl.getHistory().getStartTime()).isEqualTo(initialStartTime); + } + + @Test + public void testResetOnUnplug_highBatteryLevel_resetHistory() { + mBatteryStatsImpl.resetBatteryHistoryOnNewSession(true); + resetOnUnplug_highBatteryLevel(); + assertThat(mBatteryStatsImpl.getHistory().getStartTime()) + .isEqualTo(mBatteryStatsImpl.getMonotonicStartTime()); + } + + private void resetOnUnplug_highBatteryLevel() { when(mConfig.shouldResetOnUnplugHighBatteryLevel()).thenReturn(true); long expectedResetTimeUs = 0; @@ -149,6 +166,21 @@ public class BatteryStatsResetTest { @Test public void testResetOnUnplug_significantCharge() { + mBatteryStatsImpl.resetBatteryHistoryOnNewSession(false); + long initialStartTime = mBatteryStatsImpl.getHistory().getStartTime(); + resetOnUnplug_significantCharge(); + assertThat(mBatteryStatsImpl.getHistory().getStartTime()).isEqualTo(initialStartTime); + } + + @Test + public void testResetOnUnplug_significantCharge_resetHistory() { + mBatteryStatsImpl.resetBatteryHistoryOnNewSession(true); + resetOnUnplug_significantCharge(); + assertThat(mBatteryStatsImpl.getHistory().getStartTime()) + .isEqualTo(mBatteryStatsImpl.getMonotonicStartTime()); + } + + private void resetOnUnplug_significantCharge() { when(mConfig.shouldResetOnUnplugAfterSignificantCharge()).thenReturn(true); long expectedResetTimeUs = 0; @@ -244,7 +276,7 @@ public class BatteryStatsResetTest { } @Test - public void testResetWhilePluggedIn_longPlugIn() { + public void testResetWhilePluggedIn_longPlugIn() throws Throwable { // disable high battery level reset on unplug. when(mConfig.shouldResetOnUnplugHighBatteryLevel()).thenReturn(false); when(mConfig.shouldResetOnUnplugAfterSignificantCharge()).thenReturn(false); @@ -253,18 +285,22 @@ public class BatteryStatsResetTest { plugBattery(BatteryManager.BATTERY_PLUGGED_USB); mBatteryStatsImpl.maybeResetWhilePluggedInLocked(); - // Reset should not occur + mStatsRule.waitForBackgroundThread(); + // Reset should not have occurred assertThat(mBatteryStatsImpl.getStatsStartRealtime()).isEqualTo(expectedResetTimeUs); // Increment time a day incTimeMs(24L * 60L * 60L * 1000L); mBatteryStatsImpl.maybeResetWhilePluggedInLocked(); + // Reset should still not occur assertThat(mBatteryStatsImpl.getStatsStartRealtime()).isEqualTo(expectedResetTimeUs); // Increment time a day incTimeMs(24L * 60L * 60L * 1000L); mBatteryStatsImpl.maybeResetWhilePluggedInLocked(); + mStatsRule.waitForBackgroundThread(); + // Reset 47 hour threshold crossed, reset should occur. expectedResetTimeUs = mMockClock.elapsedRealtime() * 1000; assertThat(mBatteryStatsImpl.getStatsStartRealtime()).isEqualTo(expectedResetTimeUs); @@ -272,12 +308,14 @@ public class BatteryStatsResetTest { // Increment time a day incTimeMs(24L * 60L * 60L * 1000L); mBatteryStatsImpl.maybeResetWhilePluggedInLocked(); + mStatsRule.waitForBackgroundThread(); // Reset should not occur assertThat(mBatteryStatsImpl.getStatsStartRealtime()).isEqualTo(expectedResetTimeUs); // Increment time a day incTimeMs(24L * 60L * 60L * 1000L); mBatteryStatsImpl.maybeResetWhilePluggedInLocked(); + mStatsRule.waitForBackgroundThread(); // Reset another 47 hour threshold crossed, reset should occur. expectedResetTimeUs = mMockClock.elapsedRealtime() * 1000; assertThat(mBatteryStatsImpl.getStatsStartRealtime()).isEqualTo(expectedResetTimeUs); @@ -285,6 +323,7 @@ public class BatteryStatsResetTest { // Increment time a day incTimeMs(24L * 60L * 60L * 1000L); mBatteryStatsImpl.maybeResetWhilePluggedInLocked(); + mStatsRule.waitForBackgroundThread(); // Reset should not occur assertThat(mBatteryStatsImpl.getStatsStartRealtime()).isEqualTo(expectedResetTimeUs); @@ -294,12 +333,14 @@ public class BatteryStatsResetTest { // Increment time a day incTimeMs(24L * 60L * 60L * 1000L); mBatteryStatsImpl.maybeResetWhilePluggedInLocked(); + mStatsRule.waitForBackgroundThread(); // Reset should not occur, since unplug occurred recently. assertThat(mBatteryStatsImpl.getStatsStartRealtime()).isEqualTo(expectedResetTimeUs); // Increment time a day incTimeMs(24L * 60L * 60L * 1000L); mBatteryStatsImpl.maybeResetWhilePluggedInLocked(); + mStatsRule.waitForBackgroundThread(); // Reset another 47 hour threshold crossed, reset should occur. expectedResetTimeUs = mMockClock.elapsedRealtime() * 1000; assertThat(mBatteryStatsImpl.getStatsStartRealtime()).isEqualTo(expectedResetTimeUs); @@ -353,5 +394,10 @@ public class BatteryStatsResetTest { mBatteryChargeFullUah, mBatteryChargeTimeToFullSeconds, mMockClock.elapsedRealtime(), mMockClock.uptimeMillis(), mMockClock.currentTimeMillis()); + try { + mStatsRule.waitForBackgroundThread(); + } catch (Throwable e) { + throw new RuntimeException(e); + } } } diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java index 73dcfe77e67f..d427c9d9ee37 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsProviderTest.java @@ -35,7 +35,6 @@ import android.os.BatteryManager; import android.os.BatteryStats; import android.os.BatteryUsageStats; import android.os.BatteryUsageStatsQuery; -import android.os.ConditionVariable; import android.os.Handler; import android.os.Parcel; import android.os.Process; @@ -180,6 +179,7 @@ public class BatteryUsageStatsProviderTest { private BatteryStatsImpl prepareBatteryStats(boolean plugInAtTheEnd) { BatteryStatsImpl batteryStats = mStatsRule.getBatteryStats(); + batteryStats.setNoAutoReset(true); batteryStats.onSystemReady(mContext); synchronized (batteryStats) { @@ -481,13 +481,12 @@ public class BatteryUsageStatsProviderTest { } @Test - public void testAggregateBatteryStats() throws IOException { + public void testAggregateBatteryStats() throws Throwable { BatteryStatsImpl batteryStats = mStatsRule.getBatteryStats(); setTime(5 * MINUTE_IN_MS); - synchronized (batteryStats) { - batteryStats.resetAllStatsAndHistoryLocked(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); - } + batteryStats.startNewSession(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); + mStatsRule.waitForBackgroundThread(); PowerStatsStore powerStatsStore = new PowerStatsStore( new File(mStatsRule.getHistoryDir(), "powerstatsstore"), @@ -501,9 +500,8 @@ public class BatteryUsageStatsProviderTest { batteryStats.saveBatteryUsageStatsOnReset(provider, powerStatsStore, /* accumulateBatteryUsageStats */ false); - synchronized (batteryStats) { - batteryStats.resetAllStatsAndHistoryLocked(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); - } + batteryStats.startNewSession(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); + mStatsRule.waitForBackgroundThread(); synchronized (batteryStats) { batteryStats.noteFlashlightOnLocked(APP_UID, @@ -514,9 +512,8 @@ public class BatteryUsageStatsProviderTest { 20 * MINUTE_IN_MS, 20 * MINUTE_IN_MS); } setTime(25 * MINUTE_IN_MS); - synchronized (batteryStats) { - batteryStats.resetAllStatsAndHistoryLocked(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); - } + batteryStats.startNewSession(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); + mStatsRule.waitForBackgroundThread(); synchronized (batteryStats) { batteryStats.noteFlashlightOnLocked(APP_UID, @@ -527,9 +524,8 @@ public class BatteryUsageStatsProviderTest { 50 * MINUTE_IN_MS, 50 * MINUTE_IN_MS); } setTime(55 * MINUTE_IN_MS); - synchronized (batteryStats) { - batteryStats.resetAllStatsAndHistoryLocked(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); - } + batteryStats.startNewSession(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); + mStatsRule.waitForBackgroundThread(); // This section should be ignored because the timestamp is out or range synchronized (batteryStats) { @@ -541,9 +537,8 @@ public class BatteryUsageStatsProviderTest { 70 * MINUTE_IN_MS, 70 * MINUTE_IN_MS); } setTime(75 * MINUTE_IN_MS); - synchronized (batteryStats) { - batteryStats.resetAllStatsAndHistoryLocked(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); - } + batteryStats.startNewSession(BatteryStatsImpl.RESET_REASON_ADB_COMMAND); + mStatsRule.waitForBackgroundThread(); // This section should be ignored because it represents the current stats session synchronized (batteryStats) { @@ -556,10 +551,7 @@ public class BatteryUsageStatsProviderTest { } setTime(95 * MINUTE_IN_MS); - // Await completion - ConditionVariable done = new ConditionVariable(); - mStatsRule.getHandler().post(done::open); - done.block(); + mStatsRule.waitForBackgroundThread(); // Include the first and the second snapshot, but not the third or current BatteryUsageStatsQuery query = new BatteryUsageStatsQuery.Builder() diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsRule.java b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsRule.java index 9e7e0b646047..53a2522d299e 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsRule.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/BatteryUsageStatsRule.java @@ -86,6 +86,7 @@ public class BatteryUsageStatsRule implements TestRule { private String[] mCustomPowerComponentNames; private Throwable mThrowable; private final BatteryStatsImpl.BatteryStatsConfig.Builder mBatteryStatsConfigBuilder; + private BatteryStatsImpl.BatteryStatsConfig mBatteryStatsConfig; public BatteryUsageStatsRule() { this(0); @@ -119,9 +120,8 @@ public class BatteryUsageStatsRule implements TestRule { } clearDirectory(); } - mBatteryStats = new MockBatteryStatsImpl(mBatteryStatsConfigBuilder.build(), - mMockClock, mMonotonicClock, mHistoryDir, mHandler, new PowerStatsUidResolver()); - mBatteryStats.setPowerProfile(mPowerProfile); + mBatteryStats = new MockBatteryStatsImpl(getBatteryStatsConfig(), mMockClock, + mMonotonicClock, mHistoryDir, mHandler, mPowerProfile, new PowerStatsUidResolver()); mBatteryStats.setCpuScalingPolicies(new CpuScalingPolicies(mCpusByPolicy, mFreqsByPolicy)); synchronized (mBatteryStats) { mBatteryStats.initEnergyConsumerStatsLocked(mSupportedStandardBuckets, @@ -142,6 +142,17 @@ public class BatteryUsageStatsRule implements TestRule { } } + /** + * Returns the BatteryStatsConfig, which is wrapped into a Mockito.spy, so it can be + * observed and/or mocked. + */ + public BatteryStatsImpl.BatteryStatsConfig getBatteryStatsConfig() { + if (mBatteryStatsConfig == null) { + mBatteryStatsConfig = spy(mBatteryStatsConfigBuilder.build()); + } + return mBatteryStatsConfig; + } + public MockClock getMockClock() { return mMockClock; } diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java b/services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java index 8a081f8e16cc..a69e2fdb0b03 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/MockBatteryStatsImpl.java @@ -65,29 +65,27 @@ public class MockBatteryStatsImpl extends BatteryStatsImpl { } MockBatteryStatsImpl(Clock clock, File historyDirectory) { - this(clock, historyDirectory, new Handler(Looper.getMainLooper())); + this(clock, historyDirectory, new Handler(Looper.getMainLooper()), mockPowerProfile()); } - MockBatteryStatsImpl(Clock clock, File historyDirectory, Handler handler) { - this(DEFAULT_CONFIG, clock, historyDirectory, handler, new PowerStatsUidResolver()); + MockBatteryStatsImpl(Clock clock, File historyDirectory, Handler handler, + PowerProfile powerProfile) { + this(DEFAULT_CONFIG, clock, new MonotonicClock(0, clock), historyDirectory, handler, + powerProfile, new PowerStatsUidResolver()); } - MockBatteryStatsImpl(BatteryStatsConfig config, Clock clock, File historyDirectory) { - this(config, clock, historyDirectory, new Handler(Looper.getMainLooper()), - new PowerStatsUidResolver()); - } - - MockBatteryStatsImpl(BatteryStatsConfig config, Clock clock, - File historyDirectory, Handler handler, PowerStatsUidResolver powerStatsUidResolver) { + MockBatteryStatsImpl(BatteryStatsConfig config, Clock clock, File historyDirectory, + Handler handler, PowerStatsUidResolver powerStatsUidResolver) { this(config, clock, new MonotonicClock(0, clock), historyDirectory, handler, - powerStatsUidResolver); + mockPowerProfile(), powerStatsUidResolver); } MockBatteryStatsImpl(BatteryStatsConfig config, Clock clock, MonotonicClock monotonicClock, - File historyDirectory, Handler handler, PowerStatsUidResolver powerStatsUidResolver) { + File historyDirectory, Handler handler, PowerProfile powerProfile, + PowerStatsUidResolver powerStatsUidResolver) { super(config, clock, monotonicClock, historyDirectory, handler, mock(PlatformIdleStateCallback.class), mock(EnergyStatsRetriever.class), - mock(UserInfoProvider.class), mockPowerProfile(), + mock(UserInfoProvider.class), powerProfile, new CpuScalingPolicies(new SparseArray<>(), new SparseArray<>()), powerStatsUidResolver, mock(FrameworkStatsLogger.class), mock(BatteryStatsHistory.TraceDelegate.class), @@ -172,12 +170,6 @@ public class MockBatteryStatsImpl extends BatteryStatsImpl { return mNetworkStats; } - public MockBatteryStatsImpl setPowerProfile(PowerProfile powerProfile) { - mPowerProfile = powerProfile; - setTestCpuScalingPolicies(); - return this; - } - public MockBatteryStatsImpl setTestCpuScalingPolicies() { SparseArray<int[]> cpusByPolicy = new SparseArray<>(); cpusByPolicy.put(0, new int[]{0}); diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/UserPowerCalculatorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/UserPowerCalculatorTest.java deleted file mode 100644 index 438f0ec36177..000000000000 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/UserPowerCalculatorTest.java +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (C) 2021 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.power.stats; - -import static com.google.common.truth.Truth.assertThat; - -import android.os.BatteryConsumer; -import android.os.BatteryStats; -import android.os.BatteryUsageStatsQuery; -import android.os.Process; -import android.os.UidBatteryConsumer; -import android.os.UserBatteryConsumer; -import android.os.UserHandle; -import android.platform.test.ravenwood.RavenwoodRule; - -import androidx.test.filters.SmallTest; -import androidx.test.runner.AndroidJUnit4; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; - -@RunWith(AndroidJUnit4.class) -@SmallTest -public class UserPowerCalculatorTest { - @Rule(order = 0) - public final RavenwoodRule mRavenwood = new RavenwoodRule.Builder() - .setProvideMainThread(true) - .build(); - - public static final int USER1 = 0; - public static final int USER2 = 1625; - - private static final int APP_UID1 = Process.FIRST_APPLICATION_UID + 42; - private static final int APP_UID2 = Process.FIRST_APPLICATION_UID + 272; - private static final int APP_UID3 = Process.FIRST_APPLICATION_UID + 314; - - @Rule(order = 1) - public final BatteryUsageStatsRule mStatsRule = new BatteryUsageStatsRule(); - - @Test - public void testAllUsers() { - prepareUidBatteryConsumers(); - - UserPowerCalculator calculator = new UserPowerCalculator(); - - mStatsRule.apply(BatteryUsageStatsQuery.DEFAULT, calculator, new FakeAudioPowerCalculator(), - new FakeVideoPowerCalculator()); - - assertThat(mStatsRule.getUserBatteryConsumer(USER1)).isNull(); - - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID1)) - .getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)).isEqualTo(3000); - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID1)) - .getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)).isEqualTo(7000); - - assertThat(mStatsRule.getUserBatteryConsumer(USER2)).isNull(); - - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER2, APP_UID2)) - .getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)).isEqualTo(5555); - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER2, APP_UID2)) - .getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)).isEqualTo(9999); - } - - @Test - public void testSpecificUser() { - prepareUidBatteryConsumers(); - - UserPowerCalculator calculator = new UserPowerCalculator(); - - mStatsRule.apply(new BatteryUsageStatsQuery.Builder().addUser(UserHandle.of(USER1)).build(), - calculator, new FakeAudioPowerCalculator(), new FakeVideoPowerCalculator()); - - assertThat(mStatsRule.getUserBatteryConsumer(USER1)).isNull(); - - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID1)) - .getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)).isEqualTo(3000); - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID1)) - .getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)).isEqualTo(7000); - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID2))).isNull(); - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID3)) - .getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)).isEqualTo(7070); - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID3)) - .getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)).isEqualTo(11110); - - UserBatteryConsumer user2 = mStatsRule.getUserBatteryConsumer(USER2); - assertThat(user2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)) - .isEqualTo(15308); - assertThat(user2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)) - .isEqualTo(24196); - - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER2, APP_UID1))).isNull(); - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER2, APP_UID2))).isNull(); - assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER2, APP_UID3))).isNull(); - } - - private void prepareUidBatteryConsumers() { - prepareUidBatteryConsumer(USER1, APP_UID1, 1000, 2000, 3000, 4000); - prepareUidBatteryConsumer(USER2, APP_UID2, 2222, 3333, 4444, 5555); - prepareUidBatteryConsumer(USER1, APP_UID3, 3030, 4040, 5050, 6060); - prepareUidBatteryConsumer(USER2, APP_UID3, 4321, 5432, 6543, 7654); - } - - private void prepareUidBatteryConsumer(int userId, int uid, long audioDuration1Ms, - long audioDuration2Ms, long videoDuration1Ms, long videoDuration2Ms) { - BatteryStatsImpl.Uid uidStats = mStatsRule.getUidStats(UserHandle.getUid(userId, uid)); - - // Use "audio" and "video" to fake some power consumption. Could be any other type of usage. - uidStats.noteAudioTurnedOnLocked(0); - uidStats.noteAudioTurnedOffLocked(audioDuration1Ms); - uidStats.noteAudioTurnedOnLocked(1000000); - uidStats.noteAudioTurnedOffLocked(1000000 + audioDuration2Ms); - - uidStats.noteVideoTurnedOnLocked(0); - uidStats.noteVideoTurnedOffLocked(videoDuration1Ms); - uidStats.noteVideoTurnedOnLocked(2000000); - uidStats.noteVideoTurnedOffLocked(2000000 + videoDuration2Ms); - } - - private static class FakeAudioPowerCalculator extends PowerCalculator { - - @Override - public boolean isPowerComponentSupported( - @BatteryConsumer.PowerComponent int powerComponent) { - return powerComponent == BatteryConsumer.POWER_COMPONENT_AUDIO; - } - - @Override - protected void calculateApp(UidBatteryConsumer.Builder app, BatteryStats.Uid u, - long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) { - long durationMs = u.getAudioTurnedOnTimer().getTotalTimeLocked(rawRealtimeUs, 0); - app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO, durationMs / 1000); - } - } - - private static class FakeVideoPowerCalculator extends PowerCalculator { - - @Override - public boolean isPowerComponentSupported( - @BatteryConsumer.PowerComponent int powerComponent) { - return powerComponent == BatteryConsumer.POWER_COMPONENT_VIDEO; - } - - @Override - protected void calculateApp(UidBatteryConsumer.Builder app, BatteryStats.Uid u, - long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) { - long durationMs = u.getVideoTurnedOnTimer().getTotalTimeLocked(rawRealtimeUs, 0); - app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO, durationMs / 1000); - } - } -} diff --git a/services/tests/powerstatstests/src/com/android/server/power/stats/WakelockPowerStatsCollectorTest.java b/services/tests/powerstatstests/src/com/android/server/power/stats/WakelockPowerStatsCollectorTest.java index ed927c6ab699..d8059a6e1d2a 100644 --- a/services/tests/powerstatstests/src/com/android/server/power/stats/WakelockPowerStatsCollectorTest.java +++ b/services/tests/powerstatstests/src/com/android/server/power/stats/WakelockPowerStatsCollectorTest.java @@ -80,6 +80,7 @@ public class WakelockPowerStatsCollectorTest { POWER_COMPONENT_WAKELOCK); mBatteryStats.forceRecordAllHistory(); + mBatteryStats.setNoAutoReset(true); mStatsRule.advanceSuspendedTime(1000); diff --git a/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java b/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java index 92c6db5b7b96..5240f581fd9f 100644 --- a/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java @@ -166,8 +166,7 @@ public class GestureLauncherServiceTest { new GestureLauncherService( mContext, mMetricsLogger, mQuickAccessWalletClient, mUiEventLogger); - withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); - withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + Settings.Secure.clearProviderForTest(); } private WalletLaunchedReceiver registerWalletLaunchedReceiver(String action) { @@ -223,7 +222,7 @@ public class GestureLauncherServiceTest { withDoubleTapPowerModeConfigValue( DOUBLE_TAP_POWER_DISABLED_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(false); - withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); assertFalse(mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled( mContext, FAKE_USER_ID)); @@ -244,7 +243,7 @@ public class GestureLauncherServiceTest { public void testIsCameraDoubleTapPowerSettingEnabled_flagEnabled_configFalseSettingEnabled() { withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_DISABLED_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); - withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); assertFalse(mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled( mContext, FAKE_USER_ID)); @@ -265,7 +264,7 @@ public class GestureLauncherServiceTest { public void testIsCameraDoubleTapPowerSettingEnabled_flagEnabled_configTrueSettingDisabled() { withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(false); - withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); assertFalse(mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled( mContext, FAKE_USER_ID)); @@ -286,7 +285,7 @@ public class GestureLauncherServiceTest { public void testIsCameraDoubleTapPowerSettingEnabled_flagEnabled_configTrueSettingEnabled() { withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); - withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); assertTrue(mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled( mContext, FAKE_USER_ID)); @@ -329,7 +328,31 @@ public class GestureLauncherServiceTest { public void testIsCameraDoubleTapPowerSettingEnabled_actionWallet() { withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); - withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); + + assertFalse( + mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled( + mContext, FAKE_USER_ID)); + } + + @Test + @RequiresFlagsEnabled(FLAG_LAUNCH_WALLET_OPTION_ON_POWER_DOUBLE_TAP) + public void testIsCameraDoubleTapPowerSettingEnabled_defaultActionCamera() { + withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); + withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); + withDefaultDoubleTapPowerGestureActionConfig(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + + assertTrue( + mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled( + mContext, FAKE_USER_ID)); + } + + @Test + @RequiresFlagsEnabled(FLAG_LAUNCH_WALLET_OPTION_ON_POWER_DOUBLE_TAP) + public void testIsCameraDoubleTapPowerSettingEnabled_defaultActionNotCamera() { + withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); + withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); + withDefaultDoubleTapPowerGestureActionConfig(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); assertFalse( mGestureLauncherService.isCameraDoubleTapPowerSettingEnabled( @@ -341,7 +364,7 @@ public class GestureLauncherServiceTest { public void testIsWalletDoubleTapPowerSettingEnabled() { withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); - withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); assertTrue( mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled( @@ -353,7 +376,7 @@ public class GestureLauncherServiceTest { public void testIsWalletDoubleTapPowerSettingEnabled_configDisabled() { withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_DISABLED_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); - withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); assertFalse( mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled( @@ -365,7 +388,7 @@ public class GestureLauncherServiceTest { public void testIsWalletDoubleTapPowerSettingEnabled_settingDisabled() { withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(false); - withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); assertFalse( mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled( @@ -377,7 +400,31 @@ public class GestureLauncherServiceTest { public void testIsWalletDoubleTapPowerSettingEnabled_actionCamera() { withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); - withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + + assertFalse( + mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled( + mContext, FAKE_USER_ID)); + } + + @Test + @RequiresFlagsEnabled(FLAG_LAUNCH_WALLET_OPTION_ON_POWER_DOUBLE_TAP) + public void testIsWalletDoubleTapPowerSettingEnabled_defaultActionWallet() { + withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); + withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); + withDefaultDoubleTapPowerGestureActionConfig(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); + + assertTrue( + mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled( + mContext, FAKE_USER_ID)); + } + + @Test + @RequiresFlagsEnabled(FLAG_LAUNCH_WALLET_OPTION_ON_POWER_DOUBLE_TAP) + public void testIsWalletDoubleTapPowerSettingEnabled_defaultActionNotWallet() { + withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); + withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); + withDefaultDoubleTapPowerGestureActionConfig(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); assertFalse( mGestureLauncherService.isWalletDoubleTapPowerSettingEnabled( @@ -1858,7 +1905,7 @@ public class GestureLauncherServiceTest { UserHandle.USER_CURRENT); } - private void withDefaultDoubleTapPowerGestureAction(int action) { + private void withDoubleTapPowerGestureActionSettingValue(int action) { Settings.Secure.putIntForUser( mContentResolver, Settings.Secure.DOUBLE_TAP_POWER_BUTTON_GESTURE, @@ -1866,6 +1913,12 @@ public class GestureLauncherServiceTest { UserHandle.USER_CURRENT); } + private void withDefaultDoubleTapPowerGestureActionConfig(int action) { + when(mResources.getInteger( + com.android.internal.R.integer.config_doubleTapPowerGestureMultiTargetDefaultAction + )).thenReturn(action); + } + private void withEmergencyGestureEnabledConfigValue(boolean enableConfigValue) { when(mResources.getBoolean( com.android.internal.R.bool.config_emergencyGestureEnabled)) @@ -1931,7 +1984,7 @@ public class GestureLauncherServiceTest { } private void enableWalletGesture() { - withDefaultDoubleTapPowerGestureAction(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_WALLET_ON_DOUBLE_TAP_POWER); withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); withDoubleTapPowerModeConfigValue(DOUBLE_TAP_POWER_MULTI_TARGET_MODE); @@ -1951,7 +2004,7 @@ public class GestureLauncherServiceTest { withDoubleTapPowerModeConfigValue( DOUBLE_TAP_POWER_MULTI_TARGET_MODE); withMultiTargetDoubleTapPowerGestureEnableSettingValue(true); - withDefaultDoubleTapPowerGestureAction(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); + withDoubleTapPowerGestureActionSettingValue(LAUNCH_CAMERA_ON_DOUBLE_TAP_POWER); } else { withCameraDoubleTapPowerEnableConfigValue(true); withCameraDoubleTapPowerDisableSettingValue(0); 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 e43b28bb9404..fdb6a6802b7e 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -24,6 +24,7 @@ import static android.app.ActivityManagerInternal.ServiceNotificationPolicy.NOT_ import static android.app.ActivityManagerInternal.ServiceNotificationPolicy.SHOW_IMMEDIATELY; import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.Flags.FLAG_KEYGUARD_PRIVATE_NOTIFICATIONS; +import static android.app.Flags.FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN; import static android.app.Flags.FLAG_SORT_SECTION_BY_TIME; import static android.app.Notification.EXTRA_ALLOW_DURING_SETUP; import static android.app.Notification.EXTRA_PICTURE; @@ -251,6 +252,9 @@ import android.graphics.drawable.Icon; import android.media.AudioAttributes; import android.media.AudioManager; import android.media.session.MediaSession; +import android.net.ConnectivityManager; +import android.net.Network; +import android.net.NetworkCapabilities; import android.net.Uri; import android.os.Binder; import android.os.Build; @@ -475,6 +479,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { @Mock private PowerManager mPowerManager; @Mock + private ConnectivityManager mConnectivityManager; + @Mock private LightsManager mLightsManager; private final ArrayList<WakeLock> mAcquiredWakeLocks = new ArrayList<>(); private final TestPostNotificationTrackerFactory mPostNotificationTrackerFactory = @@ -765,6 +771,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mActivityIntentImmutable = spy(PendingIntent.getActivity(mContext, 0, new Intent().setPackage(mPkg), FLAG_IMMUTABLE)); + when(mConnectivityManager.getActiveNetwork()).thenReturn(null); + initNMS(); } @@ -798,7 +806,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mAppOpsManager, mUm, mHistoryManager, mStatsManager, mAmi, mToastRateLimiter, mPermissionHelper, mock(UsageStatsManagerInternal.class), mTelecomManager, mLogger, mTestFlagResolver, mPermissionManager, - mPowerManager, mPostNotificationTrackerFactory); + mPowerManager, mConnectivityManager, mPostNotificationTrackerFactory); mService.setAttentionHelper(mAttentionHelper); mService.setLockPatternUtils(mock(LockPatternUtils.class)); @@ -14314,7 +14322,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { mService.addNotification(pkgB); mService.setIsVisibleToListenerReturnValue(true); - NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(null); + ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class); + NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info); assertEquals(2, nru.getRankingMap().getOrderedKeys().length); // when only user 0 entering the lockdown mode, its notification will be suppressed. @@ -14324,7 +14333,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { assertTrue(mStrongAuthTracker.isInLockDownMode(0)); assertFalse(mStrongAuthTracker.isInLockDownMode(1)); - nru = mService.makeRankingUpdateLocked(null); + nru = mService.makeRankingUpdateLocked(info); assertEquals(1, nru.getRankingMap().getOrderedKeys().length); // User 0 exits lockdown mode. Its notification will be resumed. @@ -14333,7 +14342,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { assertFalse(mStrongAuthTracker.isInLockDownMode(0)); assertFalse(mStrongAuthTracker.isInLockDownMode(1)); - nru = mService.makeRankingUpdateLocked(null); + nru = mService.makeRankingUpdateLocked(info); assertEquals(2, nru.getRankingMap().getOrderedKeys().length); } @@ -14365,13 +14374,119 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { assertEquals(0, ranking2.getSmartReplies().size()); } + private NotificationRecord getSensitiveNotificationRecord() { + NotificationRecord record = new NotificationRecord(mContext, + generateSbn("a", 1000, 9, 0), mTestNotificationChannel); + Bundle signals = new Bundle(); + signals.putBoolean(Adjustment.KEY_SENSITIVE_CONTENT, true); + Adjustment adjustment = new Adjustment("a", record.getKey(), signals, "", 0); + record.addAdjustment(adjustment); + record.applyAdjustments(); + return record; + } + + @Test + public void testMakeRankingUpdate_clearsHasSensitiveContentIfConnectedToWifi() { + mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS, + FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); + when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); + when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) + .build() + ); + mService.updateWifiConnectionState(); + when(mListeners.hasSensitiveContent(any())).thenReturn(true); + NotificationRecord pkgA = new NotificationRecord(mContext, + generateSbn("a", 1000, 9, 0), mTestNotificationChannel); + mService.addNotification(pkgA); + ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class); + info.isSystemUi = true; + when(info.enabledAndUserMatches(anyInt())).thenReturn(true); + when(info.isSameUser(anyInt())).thenReturn(true); + NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info); + NotificationListenerService.Ranking ranking = + nru.getRankingMap().getRawRankingObject(pkgA.getSbn().getKey()); + assertFalse(ranking.hasSensitiveContent()); + } + + @Test + public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfNotConnectedToWifi() { + mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS, + FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); + when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); + when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) + .build() + ); + mService.updateWifiConnectionState(); + when(mListeners.hasSensitiveContent(any())).thenReturn(true); + NotificationRecord record = getSensitiveNotificationRecord(); + mService.addNotification(record); + ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class); + info.isSystemUi = true; + when(info.enabledAndUserMatches(anyInt())).thenReturn(true); + when(info.isSameUser(anyInt())).thenReturn(true); + NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info); + NotificationListenerService.Ranking ranking = + nru.getRankingMap().getRawRankingObject(record.getSbn().getKey()); + assertTrue(ranking.hasSensitiveContent()); + } + + @Test + public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfNotSysUi() { + mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS); + mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); + when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); + when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) + .build() + ); + mService.updateWifiConnectionState(); + when(mListeners.hasSensitiveContent(any())).thenReturn(true); + NotificationRecord record = getSensitiveNotificationRecord(); + mService.addNotification(record); + ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class); + when(info.enabledAndUserMatches(anyInt())).thenReturn(true); + when(info.isSameUser(anyInt())).thenReturn(true); + NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info); + NotificationListenerService.Ranking ranking = + nru.getRankingMap().getRawRankingObject(record.getSbn().getKey()); + assertTrue(ranking.hasSensitiveContent()); + } + + @Test + public void testMakeRankingUpdate_doesntClearHasSensitiveContentIfFlagDisabled() { + mSetFlagsRule.enableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS); + mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_CONTENT_NOTIFICATIONS_ON_LOCKSCREEN); + when(mConnectivityManager.getActiveNetwork()).thenReturn(mock(Network.class)); + when(mConnectivityManager.getNetworkCapabilities(any())).thenReturn( + new NetworkCapabilities.Builder() + .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) + .build() + ); + mService.updateWifiConnectionState(); + when(mListeners.hasSensitiveContent(any())).thenReturn(true); + NotificationRecord record = getSensitiveNotificationRecord(); + mService.addNotification(record); + ManagedServices.ManagedServiceInfo info = mock(ManagedServices.ManagedServiceInfo.class); + info.isSystemUi = true; + when(info.enabledAndUserMatches(anyInt())).thenReturn(true); + when(info.isSameUser(anyInt())).thenReturn(true); + NotificationRankingUpdate nru = mService.makeRankingUpdateLocked(info); + NotificationListenerService.Ranking ranking = + nru.getRankingMap().getRawRankingObject(record.getSbn().getKey()); + assertTrue(ranking.hasSensitiveContent()); + } + @Test public void testMakeRankingUpdate_doestntRedactIfFlagDisabled() { mSetFlagsRule.disableFlags(FLAG_REDACT_SENSITIVE_NOTIFICATIONS_FROM_UNTRUSTED_LISTENERS); when(mListeners.isUidTrusted(anyInt())).thenReturn(false); when(mListeners.hasSensitiveContent(any())).thenReturn(true); - NotificationRecord pkgA = new NotificationRecord(mContext, - generateSbn("a", 1000, 9, 0), mTestNotificationChannel); + NotificationRecord pkgA = getSensitiveNotificationRecord(); addSmartActionsAndReplies(pkgA); mService.addNotification(pkgA); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java index c1bb3e7408fc..82d87d40031a 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java @@ -47,6 +47,7 @@ import android.companion.ICompanionDeviceManager; import android.content.Context; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; +import android.net.ConnectivityManager; import android.os.Looper; import android.os.PowerManager; import android.os.UserHandle; @@ -171,6 +172,7 @@ public class RoleObserverTest extends UiServiceTestCase { mock(NotificationChannelLogger.class), new TestableFlagResolver(), mock(PermissionManager.class), mock(PowerManager.class), + mock(ConnectivityManager.class), new NotificationManagerService.PostNotificationTrackerFactory() {}); } catch (SecurityException e) { if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) { diff --git a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java index dc16de1aab5e..f509706d1692 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java @@ -118,7 +118,8 @@ public class DragDropControllerTests extends WindowTestsBase { static class TestDragDropController extends DragDropController { private Runnable mCloseCallback; - boolean mDeferDragStateClosed; + private boolean mDeferDragStateClosed; + private DragState mPendingCloseDragState; boolean mIsAccessibilityDrag; TestDragDropController(WindowManagerService service, Looper looper) { @@ -135,9 +136,26 @@ public class DragDropControllerTests extends WindowTestsBase { } } + /** + * Caller of this is expected to also call + * {@link TestDragDropController#continueDragStateClose} to properly close and clean up + * DragState. + */ + void deferDragStateClose() { + mDeferDragStateClosed = true; + } + + void continueDragStateClose() { + mDeferDragStateClosed = false; + if (mPendingCloseDragState != null) { + onDragStateClosedLocked(mPendingCloseDragState); + } + } + @Override void onDragStateClosedLocked(DragState dragState) { if (mDeferDragStateClosed) { + mPendingCloseDragState = dragState; return; } super.onDragStateClosedLocked(dragState); @@ -264,7 +282,7 @@ public class DragDropControllerTests extends WindowTestsBase { // Verify after consuming that the drag surface is relinquished try { - mTarget.mDeferDragStateClosed = true; + mTarget.deferDragStateClose(); mTarget.reportDropWindow(mWindow.mInputChannelToken, 0, 0); // Verify the drop event includes the drag surface mTarget.handleMotionEvent(false, mWindow.getDisplayId(), 0, 0); @@ -273,9 +291,9 @@ public class DragDropControllerTests extends WindowTestsBase { mTarget.reportDropResult(iwindow, true); } finally { - mTarget.mDeferDragStateClosed = false; + assertTrue(mTarget.dragSurfaceRelinquishedToDropTarget()); + mTarget.continueDragStateClose(); } - assertTrue(mTarget.dragSurfaceRelinquishedToDropTarget()); }); } @@ -350,7 +368,7 @@ public class DragDropControllerTests extends WindowTestsBase { | View.DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG)); try { - mTarget.mDeferDragStateClosed = true; + mTarget.deferDragStateClose(); mTarget.reportDropWindow(mWindow.mInputChannelToken, 0, 0); // Verify the drop event does not have the drag flags mTarget.handleMotionEvent(false, mWindow.getDisplayId(), 0, 0); @@ -360,7 +378,7 @@ public class DragDropControllerTests extends WindowTestsBase { mTarget.reportDropResult(iwindow, true); } finally { - mTarget.mDeferDragStateClosed = false; + mTarget.continueDragStateClose(); } }); } @@ -401,7 +419,7 @@ public class DragDropControllerTests extends WindowTestsBase { assertEquals(-startOffsetPx, dragEvent2.getY(), 0.0 /* delta */); try { - mTarget.mDeferDragStateClosed = true; + mTarget.deferDragStateClose(); // x, y is window-local coordinate. mTarget.reportDropWindow(window2.mInputChannelToken, dropCoordsPx, dropCoordsPx); @@ -424,7 +442,7 @@ public class DragDropControllerTests extends WindowTestsBase { assertEquals(ACTION_DRAG_ENDED, last(dragEvents2).getAction()); assertEquals(window2.getDisplayId(), last(dragEvents2).getDisplayId()); } finally { - mTarget.mDeferDragStateClosed = false; + mTarget.continueDragStateClose(); } }); } @@ -463,7 +481,7 @@ public class DragDropControllerTests extends WindowTestsBase { assertEquals(-window2.getBounds().top - 1, dragEvent2.getY(), 0.0 /* delta */); try { - mTarget.mDeferDragStateClosed = true; + mTarget.deferDragStateClose(); mTarget.handleMotionEvent(true, testDisplay.getDisplayId(), dropCoordsPx, dropCoordsPx); // x, y is window-local coordinate. @@ -488,7 +506,7 @@ public class DragDropControllerTests extends WindowTestsBase { assertEquals(ACTION_DRAG_ENDED, last(dragEvents2).getAction()); assertEquals(testDisplay.getDisplayId(), last(dragEvents2).getDisplayId()); } finally { - mTarget.mDeferDragStateClosed = false; + mTarget.continueDragStateClose(); } }); } diff --git a/tests/NetworkSecurityConfigTest/res/xml/domain_whitespace.xml b/tests/NetworkSecurityConfigTest/res/xml/domain_whitespace.xml index 99106ad37783..5d488410aef7 100644 --- a/tests/NetworkSecurityConfigTest/res/xml/domain_whitespace.xml +++ b/tests/NetworkSecurityConfigTest/res/xml/domain_whitespace.xml @@ -5,7 +5,7 @@ </domain> <domain> developer.android.com </domain> <pin-set> - <pin digest="SHA-256"> zCTnfLwLKbS9S2sbp+uFz4KZOocFvXxkV06Ce9O5M2w= </pin> + <pin digest="SHA-256"> YPtHaftLw6/0vnc2BnNKGF54xiCA28WFcccjkA4ypCM= </pin> </pin-set> </domain-config> </network-security-config> diff --git a/tests/NetworkSecurityConfigTest/res/xml/nested_domains.xml b/tests/NetworkSecurityConfigTest/res/xml/nested_domains.xml index 232f88ff6cc9..731f0f041042 100644 --- a/tests/NetworkSecurityConfigTest/res/xml/nested_domains.xml +++ b/tests/NetworkSecurityConfigTest/res/xml/nested_domains.xml @@ -9,7 +9,7 @@ <domain-config> <domain>developer.android.com</domain> <pin-set> - <pin digest="SHA-256">zCTnfLwLKbS9S2sbp+uFz4KZOocFvXxkV06Ce9O5M2w=</pin> + <pin digest="SHA-256">YPtHaftLw6/0vnc2BnNKGF54xiCA28WFcccjkA4ypCM=</pin> </pin-set> </domain-config> </domain-config> diff --git a/tests/NetworkSecurityConfigTest/res/xml/pins1.xml b/tests/NetworkSecurityConfigTest/res/xml/pins1.xml index 7cc81b0101f1..2e49188ec4dc 100644 --- a/tests/NetworkSecurityConfigTest/res/xml/pins1.xml +++ b/tests/NetworkSecurityConfigTest/res/xml/pins1.xml @@ -3,7 +3,7 @@ <domain-config> <domain>android.com</domain> <pin-set> - <pin digest="SHA-256">zCTnfLwLKbS9S2sbp+uFz4KZOocFvXxkV06Ce9O5M2w=</pin> + <pin digest="SHA-256">YPtHaftLw6/0vnc2BnNKGF54xiCA28WFcccjkA4ypCM=</pin> </pin-set> </domain-config> </network-security-config> diff --git a/tests/NetworkSecurityConfigTest/src/android/security/net/config/NetworkSecurityConfigTests.java b/tests/NetworkSecurityConfigTest/src/android/security/net/config/NetworkSecurityConfigTests.java index c6fe06858e3f..6207a6295ebf 100644 --- a/tests/NetworkSecurityConfigTest/src/android/security/net/config/NetworkSecurityConfigTests.java +++ b/tests/NetworkSecurityConfigTest/src/android/security/net/config/NetworkSecurityConfigTests.java @@ -40,9 +40,9 @@ public class NetworkSecurityConfigTests extends ActivityUnitTestCase<Activity> { super(Activity.class); } - // SHA-256 of the GTS intermediate CA (CN = GTS CA 1C3) for android.com (as of 09/2023). + // SHA-256 of the GTS intermediate CA (CN = WR2) for android.com (as of 01/2025). private static final byte[] GTS_INTERMEDIATE_SPKI_SHA256 = - hexToBytes("cc24e77cbc0b29b4bd4b6b1ba7eb85cf82993a8705bd7c64574e827bd3b9336c"); + hexToBytes("60fb4769fb4bc3aff4be773606734a185e78c62080dbc58571c723900e32a423"); private static final byte[] TEST_CA_BYTES = hexToBytes( diff --git a/tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java b/tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java index 39b5cb4c4f0d..e140d1a0a94c 100644 --- a/tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java +++ b/tests/NetworkSecurityConfigTest/src/android/security/net/config/TestUtils.java @@ -55,6 +55,7 @@ public final class TestUtils { throws Exception { URL url = new URL("https://" + host + ":" + port); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); + connection.setInstanceFollowRedirects(false); connection.setSSLSocketFactory(context.getSocketFactory()); try { connection.getInputStream(); @@ -68,6 +69,7 @@ public final class TestUtils { throws Exception { URL url = new URL("https://" + host + ":" + port); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); + connection.setInstanceFollowRedirects(false); connection.setSSLSocketFactory(context.getSocketFactory()); connection.getInputStream(); } diff --git a/tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java b/tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java index 5db02e376f3d..c11b6bb3435d 100644 --- a/tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java +++ b/tests/vcn/java/com/android/server/vcn/routeselection/IpSecPacketLossDetectorTest.java @@ -284,8 +284,11 @@ public class IpSecPacketLossDetectorTest extends NetworkEvaluationTestBase { // Stop the monitor mIpSecPacketLossDetector.close(); + mIpSecPacketLossDetector.close(); verifyStopped(); - verify(mIpSecTransform).close(); + + verify(mIpSecTransform, never()).close(); + verify(mContext).unregisterReceiver(any()); } @Test |