From 268fa16d5bb4e40d0909a5cb7907816014db4792 Mon Sep 17 00:00:00 2001 From: Rafael Higuera Silva Date: Fri, 5 Apr 2024 18:58:26 +0000 Subject: [PATCH 01/20] Add logic to log interaction of RAC warning dialog. Bug: 326618987 Test: make, atest EuiccRacConnectivityDialogFragmentTest Change-Id: Iccec9245da27d525cfb3d74504ab86859e152a6e Merged-In: Iccec9245da27d525cfb3d74504ab86859e152a6e (cherry picked from commit ea0453e5f67273f2f3ed2db4fa71a99238aada99) --- .../network/EraseEuiccDataDialogFragment.java | 3 + .../EuiccRacConnectivityDialogFragment.java | 41 +++++++-- ...uiccRacConnectivityDialogFragmentTest.java | 83 +++++++++++++++++++ 3 files changed, 121 insertions(+), 6 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/network/EuiccRacConnectivityDialogFragmentTest.java diff --git a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java index 3bf9db33321..01ced4ea197 100644 --- a/src/com/android/settings/network/EraseEuiccDataDialogFragment.java +++ b/src/com/android/settings/network/EraseEuiccDataDialogFragment.java @@ -43,6 +43,9 @@ public class EraseEuiccDataDialogFragment extends InstrumentedDialogFragment imp "com.android.settings.network"; public static void show(ResetDashboardFragment host) { + if (host.getActivity() == null) { + return; + } final EraseEuiccDataDialogFragment dialog = new EraseEuiccDataDialogFragment(); dialog.setTargetFragment(host, 0 /* requestCode */); final FragmentManager manager = host.getActivity().getSupportFragmentManager(); diff --git a/src/com/android/settings/network/EuiccRacConnectivityDialogFragment.java b/src/com/android/settings/network/EuiccRacConnectivityDialogFragment.java index 76a587e679f..663631ff51a 100644 --- a/src/com/android/settings/network/EuiccRacConnectivityDialogFragment.java +++ b/src/com/android/settings/network/EuiccRacConnectivityDialogFragment.java @@ -33,14 +33,25 @@ import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import com.android.settings.R; -import com.android.settings.core.instrumentation.InstrumentedDialogFragment; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.system.ResetDashboardFragment; +import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; +import com.android.settingslib.core.lifecycle.ObservableDialogFragment; -public class EuiccRacConnectivityDialogFragment extends InstrumentedDialogFragment - implements DialogInterface.OnClickListener { +public class EuiccRacConnectivityDialogFragment extends ObservableDialogFragment + implements DialogInterface.OnClickListener, DialogInterface.OnCancelListener { public static final String TAG = "EuiccRacConnectivityDlg"; + private static final int METRICS_TAG = + SettingsEnums.ACTION_RESET_ESIMS_RAC_CONNECTIVITY_WARNING; + private static final int METRICS_CANCEL_VALUE = 0; + private static final int METRICS_CONTINUE_VALUE = 1; + + private MetricsFeatureProvider mMetricsFeatureProvider; static void show(ResetDashboardFragment host) { + if (host.getActivity() == null) { + return; + } final EuiccRacConnectivityDialogFragment dialog = new EuiccRacConnectivityDialogFragment(); dialog.setTargetFragment(host, /* requestCode= */ 0); final FragmentManager manager = host.getActivity().getSupportFragmentManager(); @@ -48,8 +59,9 @@ public class EuiccRacConnectivityDialogFragment extends InstrumentedDialogFragme } @Override - public int getMetricsCategory() { - return SettingsEnums.RESET_EUICC; + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mMetricsFeatureProvider = FeatureFactory.getFeatureFactory().getMetricsFeatureProvider(); } @NonNull @@ -62,7 +74,7 @@ public class EuiccRacConnectivityDialogFragment extends InstrumentedDialogFragme new AlertDialog.Builder(getContext()) .setOnDismissListener(this) // Return is on the right side - .setPositiveButton(R.string.wifi_warning_return_button, null) + .setPositiveButton(R.string.wifi_warning_return_button, this) // Continue is on the left side .setNegativeButton(R.string.wifi_warning_continue_button, this); @@ -109,7 +121,24 @@ public class EuiccRacConnectivityDialogFragment extends InstrumentedDialogFragme // Positions of the buttons have been switch: // negative button = left button = the button to continue if (which == DialogInterface.BUTTON_NEGATIVE) { + logMetrics(METRICS_CONTINUE_VALUE); EraseEuiccDataDialogFragment.show(((ResetDashboardFragment) fragment)); + } else { + logMetrics(METRICS_CANCEL_VALUE); } } + + @Override + public void onCancel(@NonNull DialogInterface dialog) { + final Fragment fragment = getTargetFragment(); + if (!(fragment instanceof ResetDashboardFragment)) { + Log.e(TAG, "getTargetFragment return unexpected type"); + return; + } + logMetrics(METRICS_CANCEL_VALUE); + } + + private void logMetrics(int value) { + mMetricsFeatureProvider.action(getActivity(), METRICS_TAG, value); + } } diff --git a/tests/robotests/src/com/android/settings/network/EuiccRacConnectivityDialogFragmentTest.java b/tests/robotests/src/com/android/settings/network/EuiccRacConnectivityDialogFragmentTest.java new file mode 100644 index 00000000000..3a4ba6e2b73 --- /dev/null +++ b/tests/robotests/src/com/android/settings/network/EuiccRacConnectivityDialogFragmentTest.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.network; + +import static org.mockito.Mockito.verify; + +import android.app.settings.SettingsEnums; +import android.content.DialogInterface; + +import com.android.settings.system.ResetDashboardFragment; +import com.android.settings.testutils.FakeFeatureFactory; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.shadows.androidx.fragment.FragmentController; + +@RunWith(RobolectricTestRunner.class) +public class EuiccRacConnectivityDialogFragmentTest { + private static final int CONTINUE_VALUE = 1; + private static final int CANCEL_VALUE = 0; + + private EuiccRacConnectivityDialogFragment mRacDialogFragment; + private FakeFeatureFactory mFeatureFactory; + @Mock private DialogInterface mDialogInterface; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mFeatureFactory = FakeFeatureFactory.setupForTest(); + mRacDialogFragment = new EuiccRacConnectivityDialogFragment(); + + FragmentController.setupFragment(mRacDialogFragment); + mRacDialogFragment.setTargetFragment(new ResetDashboardFragment(), /* requestCode= */ 0); + } + + @Test + public void dialogAction_continue_intentResetESIMS_metricsLogged() { + mRacDialogFragment.onClick(mDialogInterface, DialogInterface.BUTTON_NEGATIVE); + verify(mFeatureFactory.metricsFeatureProvider) + .action( + mRacDialogFragment.getActivity(), + SettingsEnums.ACTION_RESET_ESIMS_RAC_CONNECTIVITY_WARNING, + CONTINUE_VALUE); + } + + @Test + public void dialogAction_backCancel_intentResetESIMS_metricsLogged() { + mRacDialogFragment.onCancel(mDialogInterface); + verify(mFeatureFactory.metricsFeatureProvider) + .action( + mRacDialogFragment.getActivity(), + SettingsEnums.ACTION_RESET_ESIMS_RAC_CONNECTIVITY_WARNING, + CANCEL_VALUE); + } + + @Test + public void dialogAction_buttonCancel_intentResetESIMS_metricsLogged() { + mRacDialogFragment.onCancel(mDialogInterface); + verify(mFeatureFactory.metricsFeatureProvider) + .action( + mRacDialogFragment.getActivity(), + SettingsEnums.ACTION_RESET_ESIMS_RAC_CONNECTIVITY_WARNING, + CANCEL_VALUE); + } +} From 477b291b5d112cf483c7d1ca1747f5e31ec4dae6 Mon Sep 17 00:00:00 2001 From: Hyunho Date: Sat, 17 Feb 2024 04:57:54 +0000 Subject: [PATCH 02/20] When the transfer status is CONVERTED, the menu on the pSIM is greyed out. UX update for converted pSIMs. Bug: 326896614 Test: manual test Change-Id: I68ca181ec16c839ed8dc5dba3f8dc75aba09ab5b --- res/values/strings.xml | 3 + .../NetworkProviderSimListController.java | 30 ++++++---- .../settings/network/SubscriptionUtil.java | 24 ++++++++ .../ConvertToEsimPreferenceController.java | 56 +++++++------------ .../settings/sim/SimSelectNotification.java | 1 - 5 files changed, 66 insertions(+), 48 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index daccf46e22b..4d0b92dda95 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -13186,4 +13186,7 @@ Clean your screen near the sensor and try again + + + Converted to eSIM. Remove and discard. diff --git a/src/com/android/settings/network/NetworkProviderSimListController.java b/src/com/android/settings/network/NetworkProviderSimListController.java index 02b19802df2..46a66a6cba4 100644 --- a/src/com/android/settings/network/NetworkProviderSimListController.java +++ b/src/com/android/settings/network/NetworkProviderSimListController.java @@ -44,6 +44,7 @@ public class NetworkProviderSimListController extends BasePreferenceController i DefaultLifecycleObserver, MobileNetworkRepository.MobileNetworkCallback, DefaultSubscriptionReceiver.DefaultSubscriptionListener { + private static final String TAG = "NetworkProviderSimListController"; private final SubscriptionManager mSubscriptionManager; @Nullable private PreferenceCategory mPreferenceCategory; @@ -104,16 +105,21 @@ public class NetworkProviderSimListController extends BasePreferenceController i final Drawable drawable = mContext.getDrawable( info.isEmbedded ? R.drawable.ic_sim_card_download : R.drawable.ic_sim_card); pref.setIcon(drawable); - pref.setOnPreferenceClickListener(clickedPref -> { - if (!info.isEmbedded && !isActiveSubscriptionId - && !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) { - SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId, - true); - } else { - MobileNetworkUtils.launchMobileNetworkSettings(mContext, info); - } - return true; - }); + if (SubscriptionUtil.isConvertedPsimSubscription(mContext, subId)) { + // If the subscription has been converted, disable the profile menu. + pref.setEnabled(false); + } else { + pref.setOnPreferenceClickListener(clickedPref -> { + if (!info.isEmbedded && !isActiveSubscriptionId + && !SubscriptionUtil.showToggleForPhysicalSim(mSubscriptionManager)) { + SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId, + true); + } else { + MobileNetworkUtils.launchMobileNetworkSettings(mContext, info); + } + return true; + }); + } mPreferences.put(subId, pref); } for (RestrictedPreference pref : existingPreferences.values()) { @@ -122,6 +128,10 @@ public class NetworkProviderSimListController extends BasePreferenceController i } public CharSequence getSummary(SubscriptionInfoEntity subInfo, CharSequence displayName) { + if (!subInfo.isEmbedded + && SubscriptionUtil.isConvertedPsimSubscription(mContext, subInfo.getSubId())) { + return mContext.getString(R.string.sim_category_converted_sim); + } if (subInfo.isActiveSubscriptionId) { CharSequence config = SubscriptionUtil.getDefaultSimConfig(mContext, subInfo.getSubId()); diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java index 56381e263b3..1ab3ed56e6b 100644 --- a/src/com/android/settings/network/SubscriptionUtil.java +++ b/src/com/android/settings/network/SubscriptionUtil.java @@ -18,6 +18,7 @@ package com.android.settings.network; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import static android.telephony.SubscriptionManager.PROFILE_CLASS_PROVISIONING; +import static android.telephony.SubscriptionManager.TRANSFER_STATUS_CONVERTED; import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT; import static com.android.internal.util.CollectionUtils.emptyIfNull; @@ -905,4 +906,27 @@ public class SubscriptionUtil { context.getSystemService(ConnectivityManager.class); return connectivityManager.getNetworkCapabilities(connectivityManager.getActiveNetwork()); } + + /** + * Checks if the subscription with the given subId is converted pSIM. + * + * @param context {@code Context} + * @param subId The subscription ID. + */ + static boolean isConvertedPsimSubscription(@NonNull Context context, int subId) { + SubscriptionManager subscriptionManager = context.getSystemService( + SubscriptionManager.class); + List allSubInofs = subscriptionManager.getAllSubscriptionInfoList(); + for (SubscriptionInfo subInfo : allSubInofs) { + if (subInfo != null) { + if (com.android.internal.telephony.flags.Flags.supportPsimToEsimConversion() + && subInfo.getSubscriptionId() == subId + && !subInfo.isEmbedded() + && subInfo.getTransferStatus() == TRANSFER_STATUS_CONVERTED) { + return true; + } + } + } + return false; + } } diff --git a/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java b/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java index 08e993b6cde..cf1350c8cb9 100644 --- a/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java +++ b/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java @@ -34,6 +34,7 @@ import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.euicc.EuiccManager; import android.text.TextUtils; +import android.util.Log; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; @@ -42,22 +43,20 @@ import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import com.android.internal.telephony.flags.Flags; import com.android.internal.telephony.util.TelephonyUtils; -import com.android.settings.R; import com.android.settings.network.MobileNetworkRepository; -import com.android.settings.network.SubscriptionUtil; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceController implements LifecycleObserver, MobileNetworkRepository.MobileNetworkCallback { - + private static final String TAG = "ConvertToEsimPreference"; private Preference mPreference; private LifecycleOwner mLifecycleOwner; private MobileNetworkRepository mMobileNetworkRepository; @@ -113,14 +112,27 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo * To avoid showing users dialogs that can cause confusion, * add conditions to allow conversion in the absence of active eSIM. */ - if (!mContext.getResources().getBoolean(R.bool.config_psim_conversion_menu_enabled) - || !isPsimConversionSupport(subId)) { + if (!Flags.supportPsimToEsimConversion()) { + Log.d(TAG, "supportPsimToEsimConversion flag is not enabled"); + return CONDITIONALLY_UNAVAILABLE; + } + + SubscriptionManager subscriptionManager = mContext.getSystemService( + SubscriptionManager.class); + SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfo(subId); + if (subInfo == null) { + return CONDITIONALLY_UNAVAILABLE; + } + EuiccManager euiccManager = (EuiccManager) + mContext.getSystemService(Context.EUICC_SERVICE); + if (!euiccManager.isPsimConversionSupported(subInfo.getCarrierId())) { + Log.i(TAG, "subId is not matched with pSIM conversion" + + " supported carriers:" + subInfo.getCarrierId()); return CONDITIONALLY_UNAVAILABLE; } if (findConversionSupportComponent()) { return mSubscriptionInfoEntity != null && mSubscriptionInfoEntity.isActiveSubscriptionId && !mSubscriptionInfoEntity.isEmbedded && isActiveSubscription(subId) - && !hasActiveEsimProfiles() ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } @@ -174,24 +186,6 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo return true; } - private boolean hasActiveEsimProfiles() { - SubscriptionManager subscriptionManager = mContext.getSystemService( - SubscriptionManager.class); - List subscriptionInfoList = - SubscriptionUtil.getActiveSubscriptions(subscriptionManager); - if (subscriptionInfoList == null || subscriptionInfoList.isEmpty()) { - return false; - } - int activatedEsimCount = (int) subscriptionInfoList - .stream() - .filter(SubscriptionInfo::isEmbedded) - .count(); - if (activatedEsimCount > 0) { - return true; - } - return false; - } - private boolean findConversionSupportComponent() { Intent intent = new Intent(EuiccService.ACTION_CONVERT_TO_EMBEDDED_SUBSCRIPTION); PackageManager packageManager = mContext.getPackageManager(); @@ -242,16 +236,4 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo } return true; } - - private boolean isPsimConversionSupport(int subId) { - SubscriptionManager subscriptionManager = mContext.getSystemService( - SubscriptionManager.class); - SubscriptionInfo subInfo = subscriptionManager.getActiveSubscriptionInfo(subId); - if (subInfo == null) { - return false; - } - final int[] supportedCarriers = mContext.getResources().getIntArray( - R.array.config_psim_conversion_menu_enabled_carrier); - return Arrays.stream(supportedCarriers).anyMatch(id -> id == subInfo.getCarrierId()); - } } diff --git a/src/com/android/settings/sim/SimSelectNotification.java b/src/com/android/settings/sim/SimSelectNotification.java index 9b235cea931..2a05105ff37 100644 --- a/src/com/android/settings/sim/SimSelectNotification.java +++ b/src/com/android/settings/sim/SimSelectNotification.java @@ -33,7 +33,6 @@ import static android.telephony.TelephonyManager.EXTRA_SUBSCRIPTION_ID; import static android.telephony.data.ApnSetting.TYPE_MMS; import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; -import static com.android.settings.sim.SimDialogActivity.PICK_DISMISS; import android.app.Notification; import android.app.NotificationChannel; From 321e08e538dc437cbbcc2aedf5c80c1b93d27f34 Mon Sep 17 00:00:00 2001 From: Varun Shah Date: Mon, 15 Apr 2024 23:58:44 +0000 Subject: [PATCH 03/20] Remove RUN_BACKUP_JOBS special app access page. Bug: 333624438 Test: visual Change-Id: Ib01bd6556768a943ae7fae013c6ccb82b1b96697 --- AndroidManifest.xml | 33 -------- res/values/strings.xml | 15 ---- res/xml/special_access.xml | 10 --- .../android/settings/SettingsActivityUtil.kt | 3 - .../settings/spa/SettingsSpaEnvironment.kt | 2 - .../spa/app/appinfo/AppInfoSettings.kt | 4 - .../spa/app/specialaccess/BackupTasksApps.kt | 54 ------------ .../BackupTasksAppsPreferenceController.kt | 35 -------- .../spa/app/specialaccess/SpecialAppAccess.kt | 1 - ...BackupTasksAppsPreferenceControllerTest.kt | 82 ------------------- .../app/specialaccess/BackupTasksAppsTest.kt | 44 ---------- 11 files changed, 283 deletions(-) delete mode 100644 src/com/android/settings/spa/app/specialaccess/BackupTasksApps.kt delete mode 100644 src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceController.kt delete mode 100644 tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceControllerTest.kt delete mode 100644 tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsTest.kt diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 2b2a1b82490..0ec6c2ab933 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -970,39 +970,6 @@ android:value="@string/menu_key_apps"/> - - - - - - - - - - - - - - - - - - - long jobs, data transfer, background tasks - - Perform backup tasks in background - - Allow app to run backup-related background tasks - - - Indicates that this app has a major use-case where it needs to backup or sync content. - Granting this permission allows the app to run in the background for a slightly longer time - in order to complete the backup-related work. - \n\nIf this permission is denied, the system will not give any special exemption to this - app to complete backup-related work in the background. - - - backup tasks, backup jobs - Delete private space - If you have a private space on your device, it will be permanently deleted. All apps in your space and their data will be deleted. + If you have a private space on your device, it will be permanently deleted and the Google Account added to your space will be removed.\n\nAll apps in your space and their data will also be permanently deleted. diff --git a/src/com/android/settings/privatespace/delete/ResetOptionsDeletePrivateSpaceController.java b/src/com/android/settings/privatespace/delete/ResetOptionsDeletePrivateSpaceController.java index 6e1f0df96d5..09d2955d1f2 100644 --- a/src/com/android/settings/privatespace/delete/ResetOptionsDeletePrivateSpaceController.java +++ b/src/com/android/settings/privatespace/delete/ResetOptionsDeletePrivateSpaceController.java @@ -125,7 +125,7 @@ public class ResetOptionsDeletePrivateSpaceController extends BasePreferenceCont public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) { Context context = getContext(); return new AlertDialog.Builder(context) - .setTitle(R.string.reset_private_space_delete_title) + .setTitle(R.string.private_space_delete_header) .setMessage(R.string.reset_private_space_delete_dialog) .setPositiveButton( R.string.private_space_delete_button_label, From 08d4b7a2ae666ac0eed2a3f48e7f37a061ff6283 Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Wed, 17 Apr 2024 15:40:36 +0800 Subject: [PATCH 12/20] Log optimization mode for app usage in BatteryUsageSlot. Bug: 335374932 Test: atest ConvertUtilsTest Change-Id: Icf86b9bee58b3b70d99e166d9fce0dfd7e30dea3 --- .../fuelgauge/PowerUsageFeatureProvider.java | 3 ++ .../PowerUsageFeatureProviderImpl.java | 5 ++ .../BatteryOptimizationModeCache.java | 54 +++++++++++++++++++ .../batteryusage/BatteryUsageDataLoader.java | 19 ++++--- .../fuelgauge/batteryusage/ConvertUtils.java | 28 +++++++--- .../fuelgauge/protos/battery_usage_slot.proto | 8 +++ .../PowerUsageFeatureProviderImplTest.java | 5 ++ .../batteryusage/ConvertUtilsTest.java | 10 +++- 8 files changed, 116 insertions(+), 16 deletions(-) create mode 100644 src/com/android/settings/fuelgauge/batteryusage/BatteryOptimizationModeCache.java diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java index 35a173b6142..dd30e692422 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProvider.java @@ -39,6 +39,9 @@ public interface PowerUsageFeatureProvider { /** Check whether the battery tips card is enabled in the battery usage page */ boolean isBatteryTipsEnabled(); + /** Check whether to log the optimization mode of app entry in period job */ + boolean isAppOptimizationModeLogged(); + /** * Returns a threshold (in milliseconds) for the minimal screen on time in battery usage list */ diff --git a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java index f0616ed7edc..5c66dbc0fa3 100644 --- a/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java +++ b/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImpl.java @@ -83,6 +83,11 @@ public class PowerUsageFeatureProviderImpl implements PowerUsageFeatureProvider return false; } + @Override + public boolean isAppOptimizationModeLogged() { + return false; + } + @Override public double getBatteryUsageListScreenOnTimeThresholdInMs() { return 0; diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryOptimizationModeCache.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryOptimizationModeCache.java new file mode 100644 index 00000000000..6b35fb9cccb --- /dev/null +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryOptimizationModeCache.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.fuelgauge.batteryusage; + +import android.content.Context; +import android.util.ArrayMap; + +import androidx.annotation.VisibleForTesting; + +import com.android.settings.fuelgauge.BatteryOptimizeUtils; +import com.android.settingslib.fuelgauge.PowerAllowlistBackend; + +import java.util.Map; + +/** A cache to log battery optimization mode of an app */ +final class BatteryOptimizationModeCache { + private static final String TAG = "BatteryOptimizationModeCache"; + + @VisibleForTesting final Map mBatteryOptimizeModeCacheMap; + + private final Context mContext; + + BatteryOptimizationModeCache(final Context context) { + mContext = context; + mBatteryOptimizeModeCacheMap = new ArrayMap<>(); + PowerAllowlistBackend.getInstance(mContext).refreshList(); + } + + BatteryOptimizationMode getBatteryOptimizeMode(final int uid, final String packageName) { + if (!mBatteryOptimizeModeCacheMap.containsKey(uid)) { + final BatteryOptimizeUtils batteryOptimizeUtils = + new BatteryOptimizeUtils(mContext, uid, packageName); + mBatteryOptimizeModeCacheMap.put( + uid, + BatteryOptimizationMode.forNumber( + batteryOptimizeUtils.getAppOptimizationMode(/* refreshList= */ false))); + } + return mBatteryOptimizeModeCacheMap.get(uid); + } +} diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java index 870faecd106..26bb6dd0a01 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageDataLoader.java @@ -27,6 +27,7 @@ import android.util.Log; import androidx.annotation.VisibleForTesting; import com.android.settings.fuelgauge.BatteryUsageHistoricalLogEntry.Action; +import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.fuelgauge.batteryusage.bugreport.BatteryUsageLogUtils; import com.android.settings.overlay.FeatureFactory; @@ -124,9 +125,15 @@ public final class BatteryUsageDataLoader { userIdsSeries, /* isFromPeriodJob= */ true, batteryDiffDataMap -> { + final PowerUsageFeatureProvider featureProvider = + FeatureFactory.getFeatureFactory() + .getPowerUsageFeatureProvider(); DatabaseUtils.sendBatteryUsageSlotData( context, - ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap)); + ConvertUtils.convertToBatteryUsageSlotList( + context, + batteryDiffDataMap, + featureProvider.isAppOptimizationModeLogged())); if (batteryDiffDataMap.values().stream() .anyMatch( data -> @@ -135,12 +142,10 @@ public final class BatteryUsageDataLoader { .isEmpty() || !data.getAppDiffEntryList() .isEmpty()))) { - FeatureFactory.getFeatureFactory() - .getPowerUsageFeatureProvider() - .detectPowerAnomaly( - context, - /* displayDrain= */ 0, - DetectRequestSourceType.TYPE_DATA_LOADER); + featureProvider.detectPowerAnomaly( + context, + /* displayDrain= */ 0, + DetectRequestSourceType.TYPE_DATA_LOADER); } }); if (batteryLevelData == null) { diff --git a/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java b/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java index df9f0634e04..1cbe6dae4cc 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java +++ b/src/com/android/settings/fuelgauge/batteryusage/ConvertUtils.java @@ -345,10 +345,15 @@ public final class ConvertUtils { /** Converts from {@link Map} to {@link List} */ public static List convertToBatteryUsageSlotList( - final Map batteryDiffDataMap) { + final Context context, + final Map batteryDiffDataMap, + final boolean isAppOptimizationModeLogged) { List batteryUsageSlotList = new ArrayList<>(); + final BatteryOptimizationModeCache optimizationModeCache = + isAppOptimizationModeLogged ? new BatteryOptimizationModeCache(context) : null; for (BatteryDiffData batteryDiffData : batteryDiffDataMap.values()) { - batteryUsageSlotList.add(convertToBatteryUsageSlot(batteryDiffData)); + batteryUsageSlotList.add( + convertToBatteryUsageSlot(batteryDiffData, optimizationModeCache)); } return batteryUsageSlotList; } @@ -479,9 +484,10 @@ public final class ConvertUtils { } } - @VisibleForTesting - static BatteryUsageDiff convertToBatteryUsageDiff(BatteryDiffEntry batteryDiffEntry) { + static BatteryUsageDiff convertToBatteryUsageDiff( + final BatteryDiffEntry batteryDiffEntry, + final @Nullable BatteryOptimizationModeCache optimizationModeCache) { BatteryUsageDiff.Builder builder = BatteryUsageDiff.newBuilder() .setUid(batteryDiffEntry.mUid) @@ -511,11 +517,18 @@ public final class ConvertUtils { if (batteryDiffEntry.mLegacyLabel != null) { builder.setLabel(batteryDiffEntry.mLegacyLabel); } + // Log the battery optimization mode of AppEntry while converting to batteryUsageSlot. + if (optimizationModeCache != null && !batteryDiffEntry.isSystemEntry()) { + builder.setAppOptimizationMode( + optimizationModeCache.getBatteryOptimizeMode( + (int) batteryDiffEntry.mUid, batteryDiffEntry.getPackageName())); + } return builder.build(); } private static BatteryUsageSlot convertToBatteryUsageSlot( - final BatteryDiffData batteryDiffData) { + final BatteryDiffData batteryDiffData, + final @Nullable BatteryOptimizationModeCache optimizationModeCache) { if (batteryDiffData == null) { return BatteryUsageSlot.getDefaultInstance(); } @@ -527,10 +540,11 @@ public final class ConvertUtils { .setEndBatteryLevel(batteryDiffData.getEndBatteryLevel()) .setScreenOnTime(batteryDiffData.getScreenOnTime()); for (BatteryDiffEntry batteryDiffEntry : batteryDiffData.getAppDiffEntryList()) { - builder.addAppUsage(convertToBatteryUsageDiff(batteryDiffEntry)); + builder.addAppUsage(convertToBatteryUsageDiff(batteryDiffEntry, optimizationModeCache)); } for (BatteryDiffEntry batteryDiffEntry : batteryDiffData.getSystemDiffEntryList()) { - builder.addSystemUsage(convertToBatteryUsageDiff(batteryDiffEntry)); + builder.addSystemUsage( + convertToBatteryUsageDiff(batteryDiffEntry, /* optimizationModeCache= */ null)); } return builder.build(); } diff --git a/src/com/android/settings/fuelgauge/protos/battery_usage_slot.proto b/src/com/android/settings/fuelgauge/protos/battery_usage_slot.proto index 7f677707ded..4e3e3c4d6cd 100644 --- a/src/com/android/settings/fuelgauge/protos/battery_usage_slot.proto +++ b/src/com/android/settings/fuelgauge/protos/battery_usage_slot.proto @@ -14,6 +14,13 @@ message BatteryUsageSlot { repeated BatteryUsageDiff system_usage = 7; } +enum BatteryOptimizationMode { + MODE_UNKNOWN = 0; + MODE_RESTRICTED = 1; + MODE_UNRESTRICTED = 2; + MODE_OPTIMIZED = 3; +} + message BatteryUsageDiff { optional int64 uid = 1; optional int64 user_id = 2; @@ -32,4 +39,5 @@ message BatteryUsageDiff { optional int64 background_usage_time = 15; optional int64 screen_on_time = 16; optional int64 foreground_service_usage_time = 17; + optional BatteryOptimizationMode app_optimization_mode = 18; } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java index db4c359a9ff..3158688a884 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageFeatureProviderImplTest.java @@ -72,6 +72,11 @@ public class PowerUsageFeatureProviderImplTest { assertThat(mPowerFeatureProvider.isBatteryTipsEnabled()).isFalse(); } + @Test + public void testIsAppOptimizationModeLogged_returnFalse() { + assertThat(mPowerFeatureProvider.isAppOptimizationModeLogged()).isFalse(); + } + @Test public void testGetBatteryUsageListConsumePowerThreshold_return0() { assertThat(mPowerFeatureProvider.getBatteryUsageListConsumePowerThreshold()).isEqualTo(0.0); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java index 5ce449b5d1d..3ed2dd1aa89 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ConvertUtilsTest.java @@ -382,9 +382,13 @@ public final class ConvertUtilsTest { /* foregroundServiceUsageConsumePower= */ 1.3, /* backgroundUsageConsumePower= */ 1.4, /* cachedUsageConsumePower= */ 1.5); + BatteryOptimizationModeCache optimizationModeCache = + new BatteryOptimizationModeCache(mContext); + optimizationModeCache.mBatteryOptimizeModeCacheMap.put( + (int) batteryDiffEntry.mUid, BatteryOptimizationMode.MODE_OPTIMIZED); final BatteryUsageDiff batteryUsageDiff = - ConvertUtils.convertToBatteryUsageDiff(batteryDiffEntry); + ConvertUtils.convertToBatteryUsageDiff(batteryDiffEntry, optimizationModeCache); assertThat(batteryUsageDiff.getUid()).isEqualTo(101L); assertThat(batteryUsageDiff.getUserId()).isEqualTo(1001L); @@ -402,6 +406,8 @@ public final class ConvertUtilsTest { assertThat(batteryUsageDiff.getBackgroundUsageTime()).isEqualTo(5678L); assertThat(batteryUsageDiff.getScreenOnTime()).isEqualTo(123L); assertThat(batteryUsageDiff.getKey()).isEqualTo("key"); + assertThat(batteryUsageDiff.getAppOptimizationMode()) + .isEqualTo(BatteryOptimizationMode.MODE_OPTIMIZED); assertThat(batteryUsageDiff.hasPackageName()).isFalse(); assertThat(batteryUsageDiff.hasLabel()).isFalse(); } @@ -591,7 +597,7 @@ public final class ConvertUtilsTest { Map.of(11L, batteryDiffData1, 21L, batteryDiffData2, 31L, batteryDiffData3); final List batteryUsageSlotList = - ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap); + ConvertUtils.convertToBatteryUsageSlotList(mContext, batteryDiffDataMap, false); assertThat(batteryUsageSlotList).hasSize(3); assertThat(batteryUsageSlotList.stream().map((s) -> s.getScreenOnTime()).sorted().toList()) From 3950632041addd1563eb032090ccc9d3b75847ea Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Thu, 18 Apr 2024 17:51:09 +0800 Subject: [PATCH 13/20] Help talkback to read the hyphen of time frame '{day}{time}-{time}' Talkback Hover: https://screenshot.googleplex.com/6Z5KMhXRPRWrqh9 Talkback Click: https://screenshot.googleplex.com/5iYVWXE95rgH98D Bug: 322855775 Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage Change-Id: I54b78e9e29c67d514c0346ddae8331450bf53f01 --- res/values/strings.xml | 2 ++ .../BatteryChartPreferenceController.java | 30 ++++++++++++++++--- .../batteryusage/BatteryChartView.java | 2 +- .../batteryusage/BatteryChartViewModel.java | 15 +++++++++- .../batteryusage/PowerUsageAdvanced.java | 4 ++- .../BatteryChartPreferenceControllerTest.java | 27 ++++++++++++----- .../ScreenOnTimeControllerTest.java | 6 ++-- 7 files changed, 68 insertions(+), 18 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4ee7c0e8971..dea6b60821e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6080,6 +6080,8 @@ now %1$s - %2$s + + %1$s to %2$s %1$s %2$s diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java index cf4f67fec25..b938c72e4b2 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java @@ -404,7 +404,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll } } - String getSlotInformation() { + String getSlotInformation(boolean isAccessibilityText) { if (mDailyViewModel == null || mHourlyViewModels == null) { // No data return null; @@ -413,13 +413,20 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll return null; } - final String selectedDayText = mDailyViewModel.getFullText(mDailyChartIndex); + final String selectedDayText = + isAccessibilityText + ? mDailyViewModel.getContentDescription(mDailyChartIndex) + : mDailyViewModel.getFullText(mDailyChartIndex); if (mHourlyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL) { return selectedDayText; } final String selectedHourText = - mHourlyViewModels.get(mDailyChartIndex).getFullText(mHourlyChartIndex); + isAccessibilityText + ? mHourlyViewModels + .get(mDailyChartIndex) + .getContentDescription(mHourlyChartIndex) + : mHourlyViewModels.get(mDailyChartIndex).getFullText(mHourlyChartIndex); if (isBatteryLevelDataInOneDay()) { return selectedHourText; } @@ -444,7 +451,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll } private String getAccessibilityAnnounceMessage() { - final String slotInformation = getSlotInformation(); + final String slotInformation = getSlotInformation(/* isAccessibilityText= */ true); final String slotInformationMessage = slotInformation == null ? mPrefContext.getString( @@ -600,6 +607,11 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll private abstract class BaseLabelTextGenerator implements BatteryChartViewModel.LabelTextGenerator { + @Override + public String generateContentDescription(List timestamps, int index) { + return generateFullText(timestamps, index); + } + @Override public String generateSlotBatteryLevelText(List levels, int index) { final int fromBatteryLevelIndex = @@ -673,6 +685,16 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll generateText(timestamps, index + 1)); } + @Override + public String generateContentDescription(List timestamps, int index) { + return index == timestamps.size() - 1 + ? generateText(timestamps, index) + : mContext.getString( + R.string.battery_usage_timestamps_content_description, + generateText(timestamps, index), + generateText(timestamps, index + 1)); + } + HourlyChartLabelTextGenerator updateSpecialCaseContext( @NonNull final BatteryLevelData batteryLevelData) { BatteryLevelData.PeriodBatteryLevelData firstDayLevelData = diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java index 111a5a1c677..37d2fceece2 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartView.java @@ -784,7 +784,7 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick } final AccessibilityNodeInfo childInfo = new AccessibilityNodeInfo(BatteryChartView.this, index); - final String slotTimeInfo = mViewModel.getFullText(index); + final String slotTimeInfo = mViewModel.getContentDescription(index); final String batteryLevelInfo = mViewModel.getSlotBatteryLevelText(index); onInitializeAccessibilityNodeInfo(childInfo); childInfo.setClickable(isValidToDraw(mViewModel, index)); diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewModel.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewModel.java index 86890d5926e..dfd15c322fc 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewModel.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartViewModel.java @@ -43,9 +43,12 @@ class BatteryChartViewModel { /** Generates the label text. The text may be abbreviated to save space. */ String generateText(List timestamps, int index); - /** Generates the full text for accessibility. */ + /** Generates the full text for slot information. */ String generateFullText(List timestamps, int index); + /** Generates the full text for accessibility. */ + String generateContentDescription(List timestamps, int index); + /** Generates the battery level text of a slot for accessibility.*/ String generateSlotBatteryLevelText(List levels, int index); } @@ -56,6 +59,7 @@ class BatteryChartViewModel { private final LabelTextGenerator mLabelTextGenerator; private final String[] mTexts; private final String[] mFullTexts; + private final String[] mContentDescription; private final String[] mBatteryLevelTexts; private int mSelectedIndex = SELECTED_INDEX_ALL; @@ -79,6 +83,7 @@ class BatteryChartViewModel { mLabelTextGenerator = labelTextGenerator; mTexts = new String[size()]; mFullTexts = new String[size()]; + mContentDescription = new String[size()]; // Last one for SELECTED_INDEX_ALL mBatteryLevelTexts = new String[size() + 1]; } @@ -105,6 +110,14 @@ class BatteryChartViewModel { return mFullTexts[index]; } + public String getContentDescription(int index) { + if (mContentDescription[index] == null) { + mContentDescription[index] = + mLabelTextGenerator.generateContentDescription(mTimestamps, index); + } + return mContentDescription[index]; + } + public String getSlotBatteryLevelText(int index) { final int textIndex = index != SELECTED_INDEX_ALL ? index : size(); if (mBatteryLevelTexts[textIndex] == null) { diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java index 45091f65466..ad29f28d426 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java +++ b/src/com/android/settings/fuelgauge/batteryusage/PowerUsageAdvanced.java @@ -239,7 +239,9 @@ public class PowerUsageAdvanced extends PowerUsageBase { } final int dailyIndex = mBatteryChartPreferenceController.getDailyChartIndex(); final int hourlyIndex = mBatteryChartPreferenceController.getHourlyChartIndex(); - final String slotInformation = mBatteryChartPreferenceController.getSlotInformation(); + final String slotInformation = + mBatteryChartPreferenceController.getSlotInformation( + /* isAccessibilityText= */ false); final BatteryDiffData slotUsageData = mBatteryUsageMap.get(dailyIndex).get(hourlyIndex); mScreenOnTimeController.handleSceenOnTimeUpdated( slotUsageData != null ? slotUsageData.getScreenOnTime() : 0L, slotInformation); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java index 6fb021cbdae..f62fdb8ce6f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java @@ -383,7 +383,7 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.mDailyChartIndex = SELECTED_INDEX_ALL; mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL; - assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(null); + assertThat(mBatteryChartPreferenceController.getSlotInformation(false)).isEqualTo(null); assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo()) .isEqualTo("Battery level percentage from 100% to 66%"); } @@ -394,7 +394,7 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL; - assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo(null); + assertThat(mBatteryChartPreferenceController.getSlotInformation(false)).isEqualTo(null); assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo()) .isEqualTo("Battery level percentage from 100% to 66%"); } @@ -405,7 +405,7 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.mDailyChartIndex = 1; mBatteryChartPreferenceController.mHourlyChartIndex = SELECTED_INDEX_ALL; - assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo("Sunday"); + assertThat(mBatteryChartPreferenceController.getSlotInformation(false)).isEqualTo("Sunday"); assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo()) .isEqualTo("Battery level percentage from 83% to 59%"); } @@ -416,8 +416,10 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mHourlyChartIndex = 2; - assertThat(mBatteryChartPreferenceController.getSlotInformation()) + assertThat(mBatteryChartPreferenceController.getSlotInformation(false)) .isEqualTo("10 AM - 12 PM"); + assertThat(mBatteryChartPreferenceController.getSlotInformation(true)) + .isEqualTo("10 AM to 12 PM"); assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo()) .isEqualTo("Battery level percentage from 97% to 95%"); } @@ -428,8 +430,10 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.mDailyChartIndex = 1; mBatteryChartPreferenceController.mHourlyChartIndex = 8; - assertThat(mBatteryChartPreferenceController.getSlotInformation()) + assertThat(mBatteryChartPreferenceController.getSlotInformation(false)) .isEqualTo("Sunday 4 PM - 6 PM"); + assertThat(mBatteryChartPreferenceController.getSlotInformation(true)) + .isEqualTo("Sunday 4 PM to 6 PM"); assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo()) .isEqualTo("Battery level percentage from 67% to 65%"); } @@ -440,8 +444,10 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mHourlyChartIndex = 0; - assertThat(mBatteryChartPreferenceController.getSlotInformation()) + assertThat(mBatteryChartPreferenceController.getSlotInformation(false)) .isEqualTo("7:01 AM - 8 AM"); + assertThat(mBatteryChartPreferenceController.getSlotInformation(true)) + .isEqualTo("7:01 AM to 8 AM"); assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo()) .isEqualTo("Battery level percentage from 100% to 99%"); } @@ -452,7 +458,10 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mHourlyChartIndex = 3; - assertThat(mBatteryChartPreferenceController.getSlotInformation()).isEqualTo("12 PM - now"); + assertThat(mBatteryChartPreferenceController.getSlotInformation(false)) + .isEqualTo("12 PM - now"); + assertThat(mBatteryChartPreferenceController.getSlotInformation(true)) + .isEqualTo("12 PM to now"); assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo()) .isEqualTo("Battery level percentage from 95% to 66%"); } @@ -463,8 +472,10 @@ public final class BatteryChartPreferenceControllerTest { mBatteryChartPreferenceController.mDailyChartIndex = 0; mBatteryChartPreferenceController.mHourlyChartIndex = 0; - assertThat(mBatteryChartPreferenceController.getSlotInformation()) + assertThat(mBatteryChartPreferenceController.getSlotInformation(false)) .isEqualTo("7:01 AM - now"); + assertThat(mBatteryChartPreferenceController.getSlotInformation(true)) + .isEqualTo("7:01 AM to now"); assertThat(mBatteryChartPreferenceController.getBatteryLevelPercentageInfo()) .isEqualTo("Battery level percentage from 100% to 66%"); } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeControllerTest.java index 282ec9e65b5..4bac42a4fee 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/ScreenOnTimeControllerTest.java @@ -68,7 +68,7 @@ public final class ScreenOnTimeControllerTest { @Test public void handleSceenOnTimeUpdated_nullScreenOnTime_hideAllPreference() { mScreenOnTimeController.handleSceenOnTimeUpdated( - /* screenOnTime= */ null, "Friday 12:00-now"); + /* screenOnTime= */ null, "Friday 12:00 to now"); verify(mRootPreference).setVisible(false); verify(mScreenOnTimeTextPreference).setVisible(false); @@ -84,9 +84,9 @@ public final class ScreenOnTimeControllerTest { @Test public void showCategoryTitle_notNull_slotTimestamp() { - mScreenOnTimeController.showCategoryTitle("Friday 12:00-now"); + mScreenOnTimeController.showCategoryTitle("Friday 12:00 to now"); - verify(mRootPreference).setTitle("Screen time for Friday 12:00-now"); + verify(mRootPreference).setTitle("Screen time for Friday 12:00 to now"); verify(mRootPreference).setVisible(true); } From 68530219751e22ec7b15a911ade19461b5006ceb Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Thu, 18 Apr 2024 18:59:25 +0800 Subject: [PATCH 14/20] Add content description string for '<1%'. Bug: 322855583 Test: atest SettingsRoboTests:com.android.settings.fuelgauge.batteryusage Change-Id: I704a591ab4cba21644e86457c2dd1000ceecc291 --- res/values/strings.xml | 2 ++ .../BatteryUsageBreakdownController.java | 24 ++++++++++++------- .../batteryusage/PowerGaugePreference.java | 12 ++++++++++ .../BatteryUsageBreakdownControllerTest.java | 10 ++++++-- .../PowerGaugePreferenceTest.java | 9 +++++++ 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index dea6b60821e..b34a682093a 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6108,6 +6108,8 @@ View by systems < %1$s + + less than %1$s diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java index 47c171e26bd..f9565f47a3e 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java @@ -88,6 +88,7 @@ public class BatteryUsageBreakdownController extends BasePreferenceController @VisibleForTesting FooterPreference mFooterPreference; @VisibleForTesting BatteryDiffData mBatteryDiffData; @VisibleForTesting String mPercentLessThanThresholdText; + @VisibleForTesting String mPercentLessThanThresholdContentDescription; @VisibleForTesting boolean mIsHighlightSlot; @VisibleForTesting int mAnomalyKeyNumber; @VisibleForTesting String mAnomalyEntryKey; @@ -202,10 +203,14 @@ public class BatteryUsageBreakdownController extends BasePreferenceController mSpinnerPreference = screen.findPreference(SPINNER_PREFERENCE_KEY); mAppListPreferenceGroup = screen.findPreference(APP_LIST_PREFERENCE_KEY); mFooterPreference = screen.findPreference(FOOTER_PREFERENCE_KEY); + final String formatPercentage = + Utils.formatPercentage(BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD, false); mPercentLessThanThresholdText = + mPrefContext.getString(R.string.battery_usage_less_than_percent, formatPercentage); + mPercentLessThanThresholdContentDescription = mPrefContext.getString( - R.string.battery_usage_less_than_percent, - Utils.formatPercentage(BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD, false)); + R.string.battery_usage_less_than_percent_content_description, + formatPercentage); mAppListPreferenceGroup.setOrderingAsAdded(false); mSpinnerPreference.initializeSpinner( @@ -394,12 +399,15 @@ public class BatteryUsageBreakdownController extends BasePreferenceController @VisibleForTesting void setPreferencePercentage(PowerGaugePreference preference, BatteryDiffEntry entry) { - preference.setPercentage( - entry.getPercentage() < BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD - ? mPercentLessThanThresholdText - : Utils.formatPercentage( - entry.getPercentage() + entry.getAdjustPercentageOffset(), - /* round= */ true)); + if (entry.getPercentage() < BatteryDiffData.SMALL_PERCENTAGE_THRESHOLD) { + preference.setPercentage(mPercentLessThanThresholdText); + preference.setPercentageContentDescription(mPercentLessThanThresholdContentDescription); + } else { + preference.setPercentage( + Utils.formatPercentage( + entry.getPercentage() + entry.getAdjustPercentageOffset(), + /* round= */ true)); + } } @VisibleForTesting diff --git a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java index fca618beceb..2f6b30ed341 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java +++ b/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreference.java @@ -18,6 +18,7 @@ package com.android.settings.fuelgauge.batteryusage; import android.content.Context; import android.graphics.drawable.Drawable; +import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; @@ -47,6 +48,7 @@ public class PowerGaugePreference extends AppPreference { private BatteryDiffEntry mBatteryDiffEntry; private CharSequence mContentDescription; private CharSequence mProgress; + private CharSequence mProgressContentDescription; private boolean mShowAnomalyIcon; public PowerGaugePreference( @@ -87,6 +89,13 @@ public class PowerGaugePreference extends AppPreference { /** Sets the percentage to show. */ public void setPercentage(CharSequence percentage) { mProgress = percentage; + mProgressContentDescription = percentage; + notifyChanged(); + } + + /** Sets the content description of the percentage. */ + public void setPercentageContentDescription(CharSequence contentDescription) { + mProgressContentDescription = contentDescription; notifyChanged(); } @@ -133,6 +142,9 @@ public class PowerGaugePreference extends AppPreference { final TextView subtitle = (TextView) view.findViewById(R.id.widget_summary); subtitle.setText(mProgress); + if (!TextUtils.isEmpty(mProgressContentDescription)) { + subtitle.setContentDescription(mProgressContentDescription); + } if (mShowAnomalyIcon) { subtitle.setCompoundDrawablesRelativeWithIntrinsicBounds( R.drawable.ic_warning_24dp, 0, 0, 0); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java index 7dcbe3a5ab7..4c648083106 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java @@ -271,7 +271,7 @@ public final class BatteryUsageBreakdownControllerTest { @Test public void setPreferencePercent_lessThanThreshold_expectedFormat() { - final PowerGaugePreference pref = new PowerGaugePreference(mContext); + final PowerGaugePreference pref = spy(new PowerGaugePreference(mContext)); final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry( /* isSystem= */ true, @@ -282,15 +282,18 @@ public final class BatteryUsageBreakdownControllerTest { batteryDiffEntry.mConsumePower = 0.8; batteryDiffEntry.setTotalConsumePower(100); mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%"; + mBatteryUsageBreakdownController.mPercentLessThanThresholdContentDescription = + "test content description"; mBatteryUsageBreakdownController.setPreferencePercentage(pref, batteryDiffEntry); assertThat(pref.getPercentage()).isEqualTo("< 1%"); + verify(pref).setPercentageContentDescription("test content description"); } @Test public void setPreferencePercent_greaterThanThreshold_expectedFormat() { - final PowerGaugePreference pref = new PowerGaugePreference(mContext); + final PowerGaugePreference pref = spy(new PowerGaugePreference(mContext)); final BatteryDiffEntry batteryDiffEntry = createBatteryDiffEntry( /* isSystem= */ true, @@ -301,10 +304,13 @@ public final class BatteryUsageBreakdownControllerTest { batteryDiffEntry.mConsumePower = 16; batteryDiffEntry.setTotalConsumePower(100); mBatteryUsageBreakdownController.mPercentLessThanThresholdText = "< 1%"; + mBatteryUsageBreakdownController.mPercentLessThanThresholdContentDescription = + "test content description"; mBatteryUsageBreakdownController.setPreferencePercentage(pref, batteryDiffEntry); assertThat(pref.getPercentage()).isEqualTo("16%"); + verify(pref, never()).setPercentageContentDescription(any()); } @Test diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java index ef4460bd8d6..f64ef495aeb 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/PowerGaugePreferenceTest.java @@ -101,4 +101,13 @@ public class PowerGaugePreferenceTest { assertThat(mPreferenceViewHolder.findViewById(android.R.id.title).getContentDescription()) .isEqualTo(CONTENT_DESCRIPTION); } + + @Test + public void testOnBindViewHolder_bindPercentageContentDescription() { + mPowerGaugePreference.setPercentageContentDescription(CONTENT_DESCRIPTION); + mPowerGaugePreference.onBindViewHolder(mPreferenceViewHolder); + + assertThat(mPreferenceViewHolder.findViewById(R.id.widget_summary).getContentDescription()) + .isEqualTo(CONTENT_DESCRIPTION); + } } From aebb53870c205afe5dc1f7491ea7bbf63615ea2c Mon Sep 17 00:00:00 2001 From: tomhsu Date: Mon, 15 Apr 2024 01:53:01 +0000 Subject: [PATCH 15/20] Fixs user input nothing, but save it successfully - If user inputs nothing, use original sim carrier name instead - Add a hint of showing original sim carrier name on edit field. fix: 333642116 fix: 335763360 Test: Manual test Test: atest passed Change-Id: I68fa6bb12c2039899c0a3d0d2aef7f7946b717d1 --- .../android/settings/spa/network/SimOnboardingLabelSim.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/spa/network/SimOnboardingLabelSim.kt b/src/com/android/settings/spa/network/SimOnboardingLabelSim.kt index 66b7d4bb11a..2b40a91f96a 100644 --- a/src/com/android/settings/spa/network/SimOnboardingLabelSim.kt +++ b/src/com/android/settings/spa/network/SimOnboardingLabelSim.kt @@ -85,13 +85,16 @@ private fun LabelSimPreference( onboardingService: SimOnboardingService, subInfo: SubscriptionInfo, ) { + val originalSimCarrierName = subInfo.displayName.toString() var titleSimName by remember { mutableStateOf(onboardingService.getSubscriptionInfoDisplayName(subInfo)) } val phoneNumber = phoneNumber(subInfo) val alertDialogPresenter = rememberAlertDialogPresenter( confirmButton = AlertDialogButton(stringResource(R.string.mobile_network_sim_name_rename)) { - onboardingService.addItemForRenaming(subInfo, titleSimName) + onboardingService.addItemForRenaming( + subInfo, if (titleSimName.isEmpty()) originalSimCarrierName else titleSimName + ) }, dismissButton = AlertDialogButton(stringResource(R.string.cancel)) { titleSimName = onboardingService.getSubscriptionInfoDisplayName(subInfo) @@ -105,6 +108,7 @@ private fun LabelSimPreference( SettingsOutlinedTextField( value = titleSimName, label = stringResource(R.string.sim_onboarding_label_sim_dialog_label), + placeholder = {Text(text = originalSimCarrierName)}, modifier = Modifier.fillMaxWidth() ) { titleSimName = it From 0a7a98a394955af46532ffcc24ed140c20f45e65 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 18 Apr 2024 22:27:38 -0700 Subject: [PATCH 16/20] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I2ae71da857787ac20d45d8c29a6b824662e510cc --- res/values-af/strings.xml | 3 ++ res/values-am/strings.xml | 3 ++ res/values-ar/strings.xml | 15 +++++---- res/values-as/strings.xml | 29 ++++++++-------- res/values-az/strings.xml | 3 ++ res/values-b+sr+Latn/strings.xml | 3 ++ res/values-be/strings.xml | 3 ++ res/values-bg/strings.xml | 3 ++ res/values-bn/strings.xml | 5 ++- res/values-bs/strings.xml | 3 ++ res/values-ca/strings.xml | 3 ++ res/values-cs/strings.xml | 5 ++- res/values-da/strings.xml | 3 ++ res/values-de/strings.xml | 21 +++++++----- res/values-el/strings.xml | 5 ++- res/values-en-rAU/strings.xml | 5 ++- res/values-en-rCA/strings.xml | 3 ++ res/values-en-rGB/strings.xml | 5 ++- res/values-en-rIN/strings.xml | 5 ++- res/values-en-rXC/strings.xml | 3 ++ res/values-es-rUS/strings.xml | 3 ++ res/values-es/strings.xml | 5 ++- res/values-et/strings.xml | 3 ++ res/values-eu/strings.xml | 5 ++- res/values-fa/strings.xml | 5 ++- res/values-fi/strings.xml | 3 ++ res/values-fr-rCA/strings.xml | 5 ++- res/values-fr/strings.xml | 3 ++ res/values-gl/strings.xml | 11 +++--- res/values-gu/strings.xml | 3 ++ res/values-hi/strings.xml | 57 +++++++++++++++++--------------- res/values-hr/strings.xml | 7 ++-- res/values-hu/strings.xml | 3 ++ res/values-hy/strings.xml | 5 ++- res/values-in/strings.xml | 3 ++ res/values-is/strings.xml | 3 ++ res/values-it/strings.xml | 3 ++ res/values-iw/strings.xml | 3 ++ res/values-ja/strings.xml | 5 ++- res/values-ka/strings.xml | 5 ++- res/values-kk/strings.xml | 11 +++--- res/values-km/strings.xml | 3 ++ res/values-kn/strings.xml | 5 ++- res/values-ko/strings.xml | 9 +++-- res/values-ky/strings.xml | 11 +++--- res/values-lo/strings.xml | 3 ++ res/values-lt/strings.xml | 3 ++ res/values-lv/strings.xml | 3 ++ res/values-mk/strings.xml | 5 ++- res/values-ml/strings.xml | 3 ++ res/values-mn/strings.xml | 9 +++-- res/values-mr/strings.xml | 3 ++ res/values-ms/strings.xml | 3 ++ res/values-my/strings.xml | 13 +++++--- res/values-nb/strings.xml | 3 ++ res/values-ne/strings.xml | 15 +++++---- res/values-nl/strings.xml | 3 ++ res/values-or/strings.xml | 7 ++-- res/values-pa/strings.xml | 3 ++ res/values-pl/strings.xml | 5 ++- res/values-pt-rBR/strings.xml | 3 ++ res/values-pt-rPT/strings.xml | 7 ++-- res/values-pt/strings.xml | 3 ++ res/values-ro/strings.xml | 3 ++ res/values-ru/strings.xml | 7 ++-- res/values-si/strings.xml | 3 ++ res/values-sk/strings.xml | 3 ++ res/values-sl/strings.xml | 3 ++ res/values-sq/strings.xml | 3 ++ res/values-sr/strings.xml | 3 ++ res/values-sv/strings.xml | 3 ++ res/values-sw/strings.xml | 3 ++ res/values-ta/strings.xml | 7 ++-- res/values-te/strings.xml | 3 ++ res/values-th/strings.xml | 7 ++-- res/values-tl/strings.xml | 3 ++ res/values-tr/strings.xml | 7 ++-- res/values-uk/strings.xml | 5 ++- res/values-ur/strings.xml | 3 ++ res/values-uz/strings.xml | 3 ++ res/values-vi/strings.xml | 3 ++ res/values-zh-rCN/strings.xml | 7 ++-- res/values-zh-rHK/strings.xml | 3 ++ res/values-zh-rTW/strings.xml | 3 ++ res/values-zu/strings.xml | 3 ++ 85 files changed, 372 insertions(+), 117 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 7365d201df7..d3e193cc02a 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -1931,7 +1931,10 @@ "Stel terug" "Kies wysigersleutel" "Kies ’n nuwe sleutel vir %1$s:" + "%s-uitleg" "Verstek" + "Outomaties: %s" + "Gebruikergekose: %s" "Spraak" "Wyserspoed" "Speletjiekontroleerder" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index eff04f6f271..59c81e49a5d 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -1931,7 +1931,10 @@ "ዳግም አስጀምር" "አሻሻይ ቁልፍ ይምረጡ" "ለ%1$s አዲስ ቁልፍ ይምረጡ፦" + "የ%s አቀማመጥ" "ነባሪ" + "ራስ-ሰር፦ %s" + "የተመረጠው ተጠቃሚ፦ %s" "ንግግር" "የጠቋሚ ፍጥነት" "የጨዋታ መቆጣጠሪያ" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 70625361adf..b5c358cc8b9 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -1931,7 +1931,10 @@ "إعادة الضبط" "اختيار مفتاح التعديل" "اختيار مفتاح جديد لـ \"%1$s\":" + "التنسيق %s" "تلقائي" + "تلقائي: %s" + "تنسيق محدَّد من المستخدم: %s" "الكلام" "سرعة المؤشر" "وحدة التحكم في الألعاب" @@ -4544,7 +4547,7 @@ "غير مفعّل" "‏لإيقاف شريحة SIM هذه، يمكنك إزالتها." "‏انقر لتفعيل شريحة SIM من شركة %1$s." - "‏محو بيانات eSIM" + "‏محو بيانات شريحة eSIM" "نوع الشبكة المفضّل" "تغيير وضع تشغيل الشبكة" "نوع الشبكة المفضّل" @@ -4618,18 +4621,18 @@ "‏إعداد شريحة SIM" "‏يمكنك ضبط الإعدادات المفضّلة لشبكة الجوّال لاستخدام شرائح SIM متعددة على هذا الجهاز." "‏تصنيف شرائح SIM" - "ستظهر هذه التصنيفات عند إجراء مكالمات أو إرسال رسائل نصية أو استخدام بيانات الجوّال، ويمكن الوصول إليها في \"الإعدادات\"." + "ستظهر هذه التصنيفات عند إجراء مكالمات أو إرسال رسائل نصية أو استخدام بيانات الجوّال، ويمكن الوصول إليها في \"الإعدادات\"" "‏تصنيف شريحة SIM" "التصنيف" "‏اختيار شرائح SIM لاستخدامها" - "‏يمكنك استخدام شريحتَي SIM في آنٍ واحد." + "‏يمكنك استخدام شريحتَي SIM في الوقت نفسه" "‏إعداد شرائح SIM الرئيسية" - "‏يمكنك اختيار شرائح SIM التي تريد استخدامها تلقائيًا لإجراء المكالمات أو إرسال الرسائل النصية أو استخدام بيانات الجوّال." + "‏يمكنك اختيار شرائح SIM التي تريد استخدامها تلقائيًا لإجراء المكالمات أو إرسال الرسائل النصية أو استخدام بيانات الجوّال" "‏شرائح SIM الرئيسية" "المكالمات" "الرسائل النصية" - "‏التبديل التلقائي لبيانات SIM" - "‏استخدِم البيانات المستمدة من شريحة SIM اعتمادًا على مدى التغطية أو التوفّر." + "التبديل التلقائي بين بيانات الجوّال" + "‏استخدِم بيانات الجوال المتوفّرة عبر أي شريحة SIM اعتمادًا على مدى التغطية أو التوفّر" "البيانات فقط" "إعداد" "التالي" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 9d19854842e..433b6442a5f 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -294,10 +294,10 @@ "এপৰ সুৰক্ষা, ডিভাইচৰ লক, অনুমতি" "চেহেৰা যোগ কৰা হ\'ল" "ছেটআপৰ আৱশ্যক" - "ফেচ আনলক" + "ফে’চ আনলক" "কৰ্মস্থানৰ প্ৰ\'ফাইলৰ বাবে ফেচ আনলক" - "ফেচ আনলক কেনেকৈ ছেটআপ কৰে" - "ফেচ আনলক ছেট আপ কৰক" + "ফে’চ আনলক কেনেকৈ ছেটআপ কৰে" + "ফে’চ আনলক ছেট আপ কৰক" "প্ৰমাণীকৰণৰ বাবে নিজৰ চেহেৰা ব্যৱহাৰ কৰক" "আৰম্ভ কৰক" @@ -336,17 +336,17 @@ "ফেচ আনলক সুবিধাটো আকৌ ছেট আপ কৰক" "ফেচ আনলক আকৌ ছেট আপ কৰক" "সুৰক্ষা আৰু কাৰ্যক্ষমতা উন্নত কৰক" - "ফেচ আনলক ছেট আপ কৰক" + "ফে’চ আনলক ছেট আপ কৰক" "ফেচ আনলক পুনৰ ছেট আপ কৰিবলৈ বৰ্তমানৰ মুখাৱয়বৰ মডেলটো মচক।\n\nআপোনাৰ মুখাৱয়বৰ মডেলটো স্থায়ী তথা সুৰক্ষিতভাৱে মচা হ’ব।\n\nমচি পেলোৱাৰ পাছত, ফ’নটো আনলক কৰিবলৈ অথবা বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ বাবে আপোনাক নিজৰ পিন, আৰ্হি অথবা পাছৱৰ্ডৰ প্ৰয়োজন হ’ব।" "ফেচ আনলক পুনৰ ছেট আপ কৰিবলৈ বৰ্তমানৰ মুখাৱয়বৰ মডেলটো মচক।\n\nআপোনাৰ মুখাৱয়বৰ মডেলটো স্থায়ী তথা সুৰক্ষিতভাৱে মচা হ’ব।\n\nমচি পেলোৱাৰ পাছত, ফ’নটো আনলক কৰিবলৈ অথবা বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ বাবে আপোনাক নিজৰ ফিংগাৰপ্ৰিণ্ট, পিন, আৰ্হি অথবা পাছৱৰ্ডৰ প্ৰয়োজন হ’ব।" "ইয়াৰ বাবে ফেচ আনলক ব্যৱহাৰ কৰক" - "ফেচ আনলক সুবিধাটো ব্যৱহাৰ কৰোঁতে" + "ফে’চ আনলক সুবিধাটো ব্যৱহাৰ কৰোঁতে" "দুচকু খোলা থাকিব লাগিব" "ফ’নটো আনলক কৰিবলৈ আপোনাৰ দুচকু খোলা থাকিবই লাগিব" "নিশ্চিতকৰণ সদায় বাধ্যতামূলক" - "ফেচ আনলকৰ দ্বাৰা এপ্‌ খোলোঁতে প্ৰতিবাৰেই নিশ্চিতকৰণৰ প্ৰয়োজন" + "ফে’চ আনলকৰ দ্বাৰা এপ্‌ খোলোঁতে প্ৰতিবাৰেই নিশ্চিতকৰণৰ প্ৰয়োজন" "মুখাৱয়বৰ মডেলটো মচক" - "ফেচ আনলক ছেট আপ কৰক" + "ফে’চ আনলক ছেট আপ কৰক" "মুখাৱয়বৰ মডেলটো মচিবনে?" "আপোনাৰ মুখাৱয়বৰ মডেলটো স্থায়ী তথা সুৰক্ষিতভাৱে মচা হ’ব।\n\nমচাৰ পাছত নিজৰ ফ’নটো আনলক কৰিবলৈ অথবা এপত বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ বাবে আপোনাক নিজৰ পিন, আৰ্হি অথবা পাছৱৰ্ডৰ প্ৰয়োজন হ’ব।" "আপোনাৰ মুখাৱয়বৰ মডেলটো স্থায়ী তথা সুৰক্ষিতভাৱে মচা হ’ব।\n\nমচাৰ পাছত, ফ’নটো আনলক কৰিবলৈ আপোনাক নিজৰ পিন, আৰ্হি অথবা পাছৱৰ্ডৰ প্ৰয়োজন হ’ব।" @@ -382,7 +382,7 @@ "সকলোতকৈ ভাল ফলাফল পাবলৈ, Made for Google বুলি প্ৰমাণিত এটা স্ক্ৰীনৰ সুৰক্ষা প্ৰদানকাৰী ব্যৱহাৰ কৰক। অন্য স্ক্ৰীনৰ সুৰক্ষা প্ৰদানকাৰীৰ সৈতে আপোনাৰ শিশুৰ ফিংগাৰপ্ৰিণ্টে কাম নকৰিব পাৰে।" "ঘড়ীৰ দ্বাৰা আনলক কৰাৰ সুবিধা" - "আপুনি ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিলে, আপুনি মুখা পিন্ধি থাকিলে অথবা কোনো অন্ধকাৰ ঠাইত থাকিলে আপোনাৰ ফ’নটোৱে আপোনাৰ ফিংগাৰপ্ৰিণ্ট বিচাৰিব।\n\nঘড়ীৰ দ্বাৰা আনলক কৰাৰ সুবিধাটো আপোনাৰ ফ’নটো আনলক কৰাৰ অন্য এটা বিশ্বাসযোগ্য উপায়, যেনে, যেতিয়া আপোনাৰ আঙুলিবোৰ আঙুলিকেইটা তিতি থাকিলে অথবা আপোনাৰ মুখাৱয়ব চিনাক্ত কৰিব নোৱাৰিলে।" + "আপুনি ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিলে, আপুনি মুখা পিন্ধি থাকিলে অথবা কোনো অন্ধকাৰ ঠাইত থাকিলে আপোনাৰ ফ’নটোৱে আপোনাৰ ফিংগাৰপ্ৰিণ্ট বিচাৰিব।\n\nঘড়ীৰ দ্বাৰা আনলক কৰাৰ সুবিধাটো আপোনাৰ ফ’নটো আনলক কৰাৰ অন্য এটা বিশ্বাসযোগ্য উপায়, যেনে, যেতিয়া আপোনাৰ আঙুলিবোৰ আঙুলিকেইটা তিতি থাকিলে অথবা আপোনাৰ মুখাৱয়ব চিনাক্ত কৰিব নোৱাৰিলে।" "ঘড়ীৰ দ্বাৰা আনলক কৰাৰ সুবিধাটো আপোনাৰ ফ’নটো আনলক কৰাৰ অন্য এটা বিশ্বাসযোগ্য উপায়, যেনে, যেতিয়া আপোনাৰ ফিংগাৰপ্ৰিণ্ট চিনাক্ত কৰিব নোৱাৰিলে।" "ঘড়ীৰ দ্বাৰা আনলক কৰাৰ সুবিধাটো আপোনাৰ ফ’নটো আনলক কৰাৰ অন্য এটা বিশ্বাসযোগ্য উপায়, যেনে, যেতিয়া আপোনাৰ মুখাৱয়ব চিনাক্ত কৰিব নোৱাৰিলে।" "এয়া কৰিবলৈ ফিংগাৰপ্ৰিণ্ট অথবা ঘড়ী ব্যৱহাৰ কৰক" @@ -432,12 +432,12 @@ "ঘড়ীৰ দ্বাৰা আনলক কৰাৰ সুবিধাটোৰ বিষয়ে অধিক জানক" "ঘড়ী যোগ দিয়ক" "ঘড়ীটো আঁতৰাওক" - "ফিংগাৰপ্ৰিণ্ট আৰু মুখাৱয়বৰ দ্বাৰা আনলক কৰাৰ সুবিধা" - "কাৰ্যৰ বাবে ফেচ আৰু ফিংগাৰপ্ৰিন্ট আনলক" + "ফিংগাৰপ্ৰিণ্ট আৰু ফে’চ আনলক কৰাৰ সুবিধা" + "কাৰ্যৰ বাবে ফে’চ আৰু ফিংগাৰপ্ৰিন্ট আনলক" "ছেটআপৰ আৱশ্যক" "মুখাৱয়ব আৰু ফিংগাৰপ্ৰিণ্ট যোগ দিয়া হ’ল" "মুখাৱয়ব আৰু ফিংগাৰপ্ৰিণ্ট যোগ দিয়া হ’ল" - "আপুনি ফেচ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিলে, আপুনি মুখ ঢকা বন্ধনী পিন্ধি থাকিলে অথবা কোনো অন্ধকাৰ ঠাইত থাকিলে আপোনাৰ ফ’নটোৱে আপোনাৰ ফিংগাৰপ্ৰিণ্ট বিচাৰিব" + "আপুনি ফে’চ আনলক আৰু ফিংগাৰপ্ৰিণ্ট আনলক ছেট আপ কৰিলে, আপুনি মুখ ঢকা বন্ধনী পিন্ধি থাকিলে অথবা কোনো অন্ধকাৰ ঠাইত থাকিলে আপোনাৰ ফ’নটোৱে আপোনাৰ ফিংগাৰপ্ৰিণ্ট বিচাৰিব" "আনলক কৰাৰ উপায়" "মুখাৱয়ব অথবা ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰক" "আপোনাৰ ফ’নটো আনলক কৰক" @@ -682,7 +682,7 @@ "আৰ্হি" "পিন" "পাছৱৰ্ড" - "সকলো প্ৰকাৰৰ ডিভাইচ আনলক আঁতৰাবনে?" + "আটাইবোৰ প্ৰকাৰৰ ডিভাইচ আনলক আঁতৰাবনে?" "প্ৰ\'ফাইল সুৰক্ষা আঁতৰাবনে?" "এটা আৰ্হিয়ে আপোনাৰ ফ’নটো হেৰালে অথবা চুৰি হ’লে তাক সুৰক্ষিত কৰে" "এটা আৰ্হিয়ে আপোনাৰ ফ’নটো হেৰালে অথবা চুৰি হ’লে তাক সুৰক্ষিত কৰে। @@ -1679,7 +1679,7 @@ "পিনটো দিওঁতে এনিমেশ্বন অক্ষম কৰক" "আপোনাৰ প্ৰ\'ফাইলৰ আৰ্হি দৃশ্যমান কৰক" "টিপিলে কম্পন হ\'ব" - "পাৱাৰ বুটাম টিপিলে তাৎক্ষণিকভাৱে ল\'ক হ\'ব" + "পাৱাৰ বুটাম টিপিলে তাৎক্ষণিকভাৱে লক হ\'ব" "%1$sএ আনলক কৰি ৰখাৰ বাদে" "আনলক আৰ্হি ছেট কৰক" "আনলক আৰ্হি সলনি কৰক" @@ -1931,7 +1931,10 @@ "ৰিছেট কৰক" "সংশোধক চাবি বাছনি কৰক" "%1$sৰ বাবে এটা নতুন চাবি বাছনি কৰক:" + "%s লে’আউট" "ডিফ\'ল্ট" + "স্বয়ংক্ৰিয়: %s" + "ব্যৱহাৰকাৰীয়ে বাছনি কৰা: %s" "কথন" "পইণ্টাৰৰ বেগ" "গেইম নিয়ন্ত্ৰক" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 828b3fe2d41..5431c5c4183 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -1931,7 +1931,10 @@ "Sıfırlayın" "Dəyişdirici açarı seçin" "%1$s üçün yeni açar seçin:" + "%s düzəni" "Defolt" + "Avtomatik: %s" + "İstifadəçi seçib: %s" "Nitq" "Kursor sürəti" "Oyun Kontrolleri" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 8d53f969983..f39d5673548 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -1931,7 +1931,10 @@ "Resetuj" "Odaberite modifikujući taster" "Odaberite novi taster za %1$s:" + "Raspored %s" "Podrazumevano" + "Automatski: %s" + "Izabrao je korisnik: %s" "Govor" "Brzina pokazivača" "Kontroler za igre" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index cca07bb0d12..ca3f1aa1fe8 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -1931,7 +1931,10 @@ "Скінуць" "Выберыце клавішу-мадыфікатар" "Выберыце новы ключ для \"%1$s\":" + "Раскладка \"%s\"" "Стандартная" + "Аўтаматычна: %s" + "Выбрана карыстальнікам: %s" "Маўленне" "Хуткасць указальніка" "Прылада кiравання гульнёй" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 541b29bff93..04409ecdfde 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -1931,7 +1931,10 @@ "Нулиране" "Избиране на модифициращ клавиш" "Изберете нов ключ за %1$s:" + "Подредба: %s" "По подразбиране" + "Автоматично: %s" + "Избрано от потребителя: %s" "Говор" "Скорост на курсора" "Контролер за игри" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index d433ef581f7..9aed4119303 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -1791,7 +1791,7 @@ "ডিভাইস প্রশাসক অ্যাপটি এক্সটার্নাল মিডিয়াতে ইনস্টল করা যাবে না" "জোর করে বন্ধ করবেন?" "আপনি একটি অ্যাপ্লিকেশানকে জোর করে বন্ধ করলে, তা অস্বাভাবিক ব্যবহার করতে পারে।" - "অ্যাপ্লিকেশান অক্ষম করুন" + "অ্যাপ বন্ধ করুন" "আপনি এই অ্যাপ বন্ধ করে দিলে, Android এবং অন্যান্য অ্যাপ যেভাবে কাজ করার কথা সেইভাবে আর নাও কাজ করতে পারে। মনে রাখবেন যে এই অ্যাপ আপনার ডিভাইসে আগে থেকেই ইনস্টল করা আছে বলে এটি আপনি মুছে ফেলতে পারবেন না। বন্ধ করার মাধ্যমে, আপনি অ্যাপটিকে বন্ধ করে লুকিয়ে রাখতে পারেন।" "Store" "অ্যাপের বিশদ বিবরণ" @@ -1931,7 +1931,10 @@ "রিসেট করুন" "\'মডিফায়ার কী\' বেছে নেওয়া" "%1$s-এর জন্য নতুন \'কী\' বেছে নিন:" + "%s লেআউট" "ডিফল্ট" + "অটোমেটিক: %s" + "ব্যবহারকারী বেছে নেওয়া হয়েছে: %s" "স্পিচ" "পয়েন্টারের গতি" "গেম নিয়ন্ত্রক" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index eb9d8007284..0c937c8dde3 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -1931,7 +1931,10 @@ "Poništi" "Odaberite modifikacijsku tipku" "Odaberite novu tipku za \"%1$s\":" + "Raspored: %s" "Zadano" + "Automatski: %s" + "Korisnički odabrano: %s" "Govor" "Brzina pokazivača" "Kontroler za igre" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 59110822a41..3d40b7f2f87 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -1931,7 +1931,10 @@ "Restableix" "Tria la tecla modificadora" "Tria una tecla nova per a %1$s:" + "Disseny de %s" "Predeterminat" + "Automàtic: %s" + "Seleccionat per l\'usuari: %s" "Parla" "Velocitat del punter" "Controlador de joc" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index b36075d7cb4..e200e4721a7 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -1931,7 +1931,10 @@ "Resetovat" "Vyberte modifikační klávesu" "Vyberte novou klávesu pro %1$s:" + "Rozvržení %s" "Výchozí" + "Automatické: %s" + "Vybrané uživatelem: %s" "Řeč" "Rychlost kurzoru" "Herní ovladače" @@ -4621,7 +4624,7 @@ "Tyhle štítky uvidíte při volání, psaní SMS, používání dat a v Nastavení" "Štítek SIM karty" "Štítek" - "Vyberte, které chcete použít" + "Které SIM chcete použít?" "Můžete používat dvě SIM karty současně" "Nastavení primárních SIM karet" "Určete, které SIM karty se budou používat jako výchozí pro volání, SMS a data" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 015fc46139d..5f30373d4b0 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -1931,7 +1931,10 @@ "Nulstil" "Vælg ændringstast" "Vælg en ny ændringstast til %1$s:" + "%s-layout" "Standard" + "Automatisk: %s" + "Brugervalgt: %s" "Tale" "Markørens hastighed" "Spillekontroller" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 91404782048..cf12e4bfa34 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -1931,7 +1931,10 @@ "Zurücksetzen" "Modifikatortaste wählen" "Wähle eine neue Taste für %1$s:" + "Layout: %s" "Standard" + "Automatisch: %s" + "Nutzerauswahl: %s" "Spracheingabe, -erkennung und -ausgabe" "Zeigergeschwindigkeit" "Gamecontroller" @@ -2199,7 +2202,7 @@ "Benachrichtigungen und Wecker" "Haptisches Feedback bei Nutzerinteraktionen" "Vibration & haptisches Feedback verwenden" - "Vibration für Wecker" + "Vibration bei Weckerklingeln" "Vibration für Medien" "Tastenvibration" "Vibration bei Klingeln" @@ -4617,26 +4620,26 @@ "Versuche, die SIM noch einmal zu aktivieren. Sollte das Problem weiterhin bestehen, starte das Gerät neu." "SIM einrichten" "Du kannst in den Einstellungen für das Mobilfunknetz festlegen, dass auf diesem Gerät mehrere SIM-Karten verwendet werden" - "Label zu SIM-Karten hinzufügen" - "Diese Labels werden angezeigt, wenn du Anrufe tätigst, SMS sendest, Daten verwendest oder die Einstellungen aufrufst" - "SIM-Label" - "Label" + "SIM-Karten mit Namen versehen" + "Diese Namen werden angezeigt, wenn du telefonierst oder Nachrichten sendest, Daten verwendest oder die Einstellungen aufrufst" + "Name der SIM-Karte" + "Name" "SIM-Karten auswählen" "Du kannst zwei SIM-Karten gleichzeitig verwenden" "Primäre SIM-Karten festlegen" - "Du kannst auswählen, welche SIM-Karten standardmäßig für Anrufe, SMS und Daten verwendet werden" + "Du kannst auswählen, welche SIM-Karte standardmäßig für Anrufe, welche für SMS und welche für Daten verwendet wird" "Meine primären SIM-Karten" "Anrufe" "SMS" - "Daten automatisch wechseln" - "Du kannst je nach Abdeckung und Verfügbarkeit Daten von beiden SIM-Karten verwenden" + "SIM für Daten automatisch wechseln" + "Du kannst angeben, dass die für mobile Daten verwendete SIM automatisch umgeschaltet wird, wenn die andere SIM-Karte bei der aktuellen Abdeckung und Verfügbarkeit besser funktioniert" "Nur für Daten" "Einrichten" "Weiter" "%1$s wird aktiviert…" "Mobilfunknetz" "Telefonnummer" - "SIM-Label und Farbe" + "Name und Farbe für SIM-Karte" "Netzwerkaktivierung" "Wechsel des Mobilfunkanbieters" "Deine %1$s-SIM-Karte ist aktiviert" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index c0adb3829fe..e8f0b490444 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -1931,7 +1931,10 @@ "Επαναφορά" "Επιλέξτε πλήκτρο τροποποίησης" "Επιλέξτε ένα νέο κλειδί για %1$s:" + "Διάταξη %s" "Προεπιλογή" + "Αυτόματο: %s" + "Επιλέχθηκε από τον χρήστη: %s" "Ομιλία" "Ταχύτητα δείκτη" "Χειριστήριο παιχνιδιού" @@ -4623,7 +4626,7 @@ "Ετικέτα" "Επιλέξτε ποιες SIM θα χρησιμ." "Μπορείτε να χρησιμοποιείτε 2 SIM τη φορά" - "Ορίστε την κύρια SIM" + "Ορίστε τις κύριες SIM" "Επιλέξτε ποιες SIM θέλετε να χρησιμοποιούνται από προεπιλογή για κλήσεις, μηνύματα και δεδομένα" "Η κύρια SIM" "Κλήσεις" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index e155ab54411..7aa9658d33a 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -1931,7 +1931,10 @@ "Reset" "Choose modifier key" "Choose a new key for %1$s:" + "%s layout" "Default" + "Automatic: %s" + "User selected: %s" "Speech" "Pointer speed" "Game Controller" @@ -2100,7 +2103,7 @@ "Tap Accessibility button" "Use accessibility gesture" "Tap the accessibility button %s at the bottom of your screen.\n\nTo switch between features, touch and hold the accessibility button." - "Swipe up from the bottom of the screen with 2 fingers.\n\nTo switch between features, swipe up with 2 fingers and hold." + "Swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold." "Swipe up from the bottom of the screen with three fingers.\n\nTo switch between features, swipe up with three fingers and hold." "More options" "Learn more about %1$s" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index d73ea654e66..8a2caa70989 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -1931,7 +1931,10 @@ "Reset" "Choose modifier key" "Choose a new key for %1$s:" + "%s layout" "Default" + "Automatic: %s" + "User selected: %s" "Speech" "Pointer speed" "Game Controller" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index b0d642e447c..37eb24bb344 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -1931,7 +1931,10 @@ "Reset" "Choose modifier key" "Choose a new key for %1$s:" + "%s layout" "Default" + "Automatic: %s" + "User selected: %s" "Speech" "Pointer speed" "Game Controller" @@ -2100,7 +2103,7 @@ "Tap Accessibility button" "Use accessibility gesture" "Tap the accessibility button %s at the bottom of your screen.\n\nTo switch between features, touch and hold the accessibility button." - "Swipe up from the bottom of the screen with 2 fingers.\n\nTo switch between features, swipe up with 2 fingers and hold." + "Swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold." "Swipe up from the bottom of the screen with three fingers.\n\nTo switch between features, swipe up with three fingers and hold." "More options" "Learn more about %1$s" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 92c2a925dae..984feff0bac 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -1931,7 +1931,10 @@ "Reset" "Choose modifier key" "Choose a new key for %1$s:" + "%s layout" "Default" + "Automatic: %s" + "User selected: %s" "Speech" "Pointer speed" "Game Controller" @@ -2100,7 +2103,7 @@ "Tap Accessibility button" "Use accessibility gesture" "Tap the accessibility button %s at the bottom of your screen.\n\nTo switch between features, touch and hold the accessibility button." - "Swipe up from the bottom of the screen with 2 fingers.\n\nTo switch between features, swipe up with 2 fingers and hold." + "Swipe up from the bottom of the screen with two fingers.\n\nTo switch between features, swipe up with two fingers and hold." "Swipe up from the bottom of the screen with three fingers.\n\nTo switch between features, swipe up with three fingers and hold." "More options" "Learn more about %1$s" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index ce72011694d..2144b71ba1f 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -1931,7 +1931,10 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‏‏‏‏‏‎‏‎‎‏‏‎‎‎‏‎‎‏‏‏‎‎‎‎‎‏‎‎‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‎‎‏‏‎‎‏‎‎‎‎‏‏‎‎‏‎Reset‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‏‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‎‏‎‎‎‎‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‏‎‎‏‎‏‏‎Choose modifier key‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‎‏‎‏‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‎‎‎‏‎Choose a new key for ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎:‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‏‎‎‏‎‎‎‎‏‎‏‎‏‎‎‏‏‎‎‎‏‎‏‎‏‏‎‎‏‎‎‎‎‏‎‎‎‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎ layout‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‏‎Default‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‎‎‎‎‏‎‏‏‎‎‎‎‏‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‎‏‎‎‎‏‎‎‎‏‎‎‎‎‎‎‏‎Automatic: ‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‎‏‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‏‎‏‎‎‏‎‎‏‎‏‏‏‎‎‎‏‏‎‎‏‎‏‎‎‎User selected: ‎‏‎‎‏‏‎%s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‏‏‎‎‎‏‎‏‏‏‏‏‎‎‎‎‏‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‎‎‏‏‎‎‎‏‏‏‏‎‏‏‏‎‎Speech‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‎‏‏‎‏‎‏‎‎‏‎‎‎‎‏‎‏‎‎‎‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‏‏‎‎Pointer speed‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‎‎‎‏‎‎‏‎‎‎‎‎‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‏‎‏‏‎‎‎‎‎‏‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎‎Game Controller‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 0223b635e20..292e4129cd4 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -1931,7 +1931,10 @@ "Restablecer" "Elegir tecla modificadora" "Elige una nueva tecla para %1$s:" + "Diseño %s" "Predeterminadas" + "Automático: %s" + "Seleccionado por el usuario: %s" "Voz" "Velocidad del puntero" "Controlador de juegos" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index cd9b66d16bc..fb1669b8e50 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -1931,7 +1931,10 @@ "Restablecer" "Elige una tecla modificadora" "Elige una nueva tecla para %1$s:" + "Diseño %s" "Predeterminado" + "Automático: %s" + "Seleccionado por el usuario: %s" "Voz" "Velocidad del puntero del ratón" "Mandos de videojuegos" @@ -4621,7 +4624,7 @@ "Verás estas etiquetas cuando hagas llamadas, envíes mensajes de texto y uses datos, y en Ajustes" "Etiqueta de la SIM" "Etiqueta" - "Selecciona qué SIMs quieras usar" + "Selecciona qué SIMs quieres usar" "Puedes usar 2 SIMs al mismo tiempo" "Configura tus SIMs principales" "Elige las SIMs que quieres usar de forma predeterminada para llamadas, mensajes de texto y datos" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index a57289b0fb6..12fe0f06e34 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -1931,7 +1931,10 @@ "Lähtesta" "Muuteklahvi valimine" "Valige muuteklahvi %1$s jaoks uus klahv:" + "Paigutus: %s" "Vaikeseade" + "Automaatne: %s" + "Kasutaja valitud: %s" "Kõne" "Kursori kiirus" "Mängukontroller" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index f29fb974625..6779fa3a19c 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -1931,7 +1931,10 @@ "Berrezarri" "Aukeratu tekla aldatzailea" "Aukeratu %1$s teklarako beste tekla bat:" + "%s teklatuaren diseinua" "Lehenetsia" + "Automatikoa: %s" + "Erabiltzaileak hautatua: %s" "Hizketa" "Erakuslearen abiadura" "Bideo-jokoen kontrolagailua" @@ -4618,7 +4621,7 @@ "Konfiguratu SIMa" "Gailu honetan SIM bat baino gehiago erabiltzeko, ezarri sare mugikorraren hobespenak" "Ezarri etiketak SIMei" - "Deiak egitean, testu-mezuak bidaltzean, datuak erabiltzean eta ezarpenetan ikusiko dituzu etiketa horiek" + "Deiak egitean, testu-mezuak bidaltzean, datuak erabiltzean eta ezarpenetan ikusiko dituzu etiketa hauek" "SIMaren etiketa" "Etiketa" "Hautatu zein SIM erabili" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index ad328817e4d..7ac5ad09704 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -1931,7 +1931,10 @@ "بازنشانی" "کلید توصیف‌گر را انتخاب کنید" "کلید جدیدی برای %1$s انتخاب کنید:" + "چیدمان %s" "پیش‌فرض" + "خودکار: %s" + "انتخاب کاربر: %s" "گفتار" "سرعت اشاره‌گر" "دسته کنترل بازی" @@ -4895,7 +4898,7 @@ "شماره تلفن وارد نشده است." "تأیید" "اجازه دادن به شبکه نسل دوم" - "‏2G امنیت کمتری دارد، اما ممکن است در بعضی مناطق اتصالتان را بهبود ببخشد. اتصال 2G همواره برای تماس‌های اضطراری مجاز است." + "‏شبکه نسل دوم (2G) امنیت کمتری دارد، اما ممکن است در بعضی مناطق اتصالتان را بهبود ببخشد. اتصال 2G همواره برای تماس‌های اضطراری مجاز است." "‏%1$s برای دردسترس بودن به 2G نیاز دارد" "رمزگذاری لازم است" "رمزگذاری امن‌تر است، اما ممکن است از برخی‌از مکان‌ها نتوانید متصل شوید. برای تماس‌های اضطراری، هرگز رمزگذاری لازم نیست" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 1de1f65ee1c..8444e2d66a2 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -1931,7 +1931,10 @@ "Nollaa" "Valitse muokkausnäppäin" "Valitse uusi näppäin (%1$s):" + "Asettelu: %s" "Oletus" + "Automaattinen: %s" + "Käyttäjän valitsema: %s" "Puhe" "Osoittimen nopeus" "Peliohjaimet" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 42d170f8653..1abe842dcee 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -1931,7 +1931,10 @@ "Réinitialiser" "Choisir la touche de modification" "Choisir une nouvelle touche pour %1$s :" + "Mise en page %s" "Par défaut" + "Automatique : %s" + "Utilisateur sélectionné : %s" "Parole" "Vitesse du pointeur" "Manette de jeu" @@ -5092,7 +5095,7 @@ "Élevé" "Cette application ne peut être ouverte que dans une seule fenêtre." "Activé" - "Fonctionnalité désactivée" + "Désactivé" "Désactivé" "Désactivé" "Activée" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index bf4dd5fc7b2..3ee499632bf 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -1931,7 +1931,10 @@ "Réinitialiser" "Choisir une touche de modification" "Choisir une nouvelle touche pour %1$s :" + "Mise en page %s" "Par défaut" + "Automatique : %s" + "Utilisateur sélectionné : %s" "Voix" "Vitesse du pointeur" "Manette de jeu" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 6bac98ebf6b..571c05e850f 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -1523,7 +1523,7 @@ "USB, Bluetooth e Ethernet" "Zona wifi, USB, Bluetooth e Ethernet" "Non se está compartindo a conexión a Internet con outros dispositivos" - "Desactivadas" + "Opción desactivada" "Compartir conexión por USB" "Conexión por Bluetooth" "Conexión por Ethernet" @@ -1931,7 +1931,10 @@ "Restablecer" "Escoller unha tecla modificadora" "Escolle unha nova tecla para %1$s:" + "Deseño: %s" "Predeterminado" + "Selección automática: %s" + "Selección do usuario: %s" "Voz" "Velocidade do punteiro" "Mando do xogo" @@ -2109,7 +2112,7 @@ "Mantén premidas as dúas teclas de volume" "Toca dúas veces a pantalla con dous dedos" "tocar dúas veces a pantalla con dous dedos" - "Toca a pantalla rapidamente {0,number,integer} veces con dous dedos" + "Toca a pantalla rapidamente {0,number,integer} veces con dous dedos." "Tres toques na pantalla" "tocar tres veces a pantalla" "Toca a pantalla {0,number,integer} veces rapidamente. Este atallo pode reducir a velocidade do dispositivo" @@ -2765,7 +2768,7 @@ "Uso de datos" "Datos móbiles e wifi" "Sincr. auto. de datos persoais" - "Sincr. auto. datos do traballo" + "Sincronizar automaticamente datos do traballo" "Sincr. auto. de datos privados" "Cambiar ciclo…" "Día do mes para restablecer o ciclo de uso de datos:" @@ -4062,7 +4065,7 @@ "Datos sen restricións" "Desactiváronse os datos en segundo plano" "Activado" - "Desactivado" + "Opción desactivada" "Usar Aforro de datos" "Usar datos sen restricións" "Acceso sen restricións co aforro de datos activado" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index a411e32875b..00c715c18a5 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -1931,7 +1931,10 @@ "રીસેટ કરો" "મૉડિફાયર કી પસંદ કરો" "%1$s માટે નવી કી પસંદ કરો:" + "%s લેઆઉટ" "ડિફૉલ્ટ" + "ઑટોમૅટિક રીતે: %s" + "વપરાશકર્તા દ્વારા પસંદ કરેલો: %s" "સ્પીચ" "પૉઇન્ટરની ગતિ" "રમત નિયંત્રક" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index af1af186fd2..d8dd70f2f57 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -340,17 +340,17 @@ "फ़ेस अनलॉक की सुविधा को दोबारा सेट अप करने के लिए, चेहरे का मौजूदा मॉडल मिटाएं.\n\nआपके चेहरे का मॉडल सुरक्षित रूप से हमेशा के लिए मिटा दिया जाएगा.\n\nइसके बाद, फ़ोन अनलॉक करने या किसी ऐप्लिकेशन में पहचान की पुष्टि के लिए, आपके पिन, पैटर्न या पासवर्ड की ज़रूरत होगी." "फ़ेस अनलॉक की सुविधा को दोबारा सेट अप करने के लिए, चेहरे का मौजूदा मॉडल मिटाएं.\n\nआपके चेहरे का मॉडल सुरक्षित रूप से हमेशा के लिए मिटा दिया जाएगा.\n\nइसके बाद, फ़ोन अनलॉक करने या किसी ऐप्लिकेशन में पहचान की पुष्टि करने के लिए, आपके फ़िंगरप्रिंट, पिन, पैटर्न या पासवर्ड की ज़रूरत होगी." "फ़ेस अनलॉक की सुविधा का इस्तेमाल करके" - "फ़ेस अनलॉक की सुविधा इस्तेमाल करते समय" + "फ़ेस अनलॉक इस्तेमाल करते समय" "आंखें खुली होनी चाहिए" "फ़ाेन अनलॉक करने के लिए, आंखें खुली होनी चाहिए" "हमेशा पुष्टि करना ज़रूरी है" - "किसी ऐप्लिकेशन में फ़ेस अनलॉक की सुविधा इस्तेमाल करते समय, हमेशा पुष्टि करना ज़रूरी है" + "ऐप्लिकेशन में फ़ेस अनलॉक इस्तेमाल करते समय, हमेशा पुष्टि करना ज़रूरी होता है" "चेहरे का मॉडल मिटाएं" "फे़स अनलॉक की सुविधा सेट अप करें" "क्या आपको चेहरे का मॉडल मिटाना है?" "आपके चेहरे का मॉडल सुरक्षित तरीके से हमेशा के लिए मिटा दिया जाएगा.\n\nइसके मिटने के बाद, अपने फ़ोन को अनलॉक करने या ऐप्लिकेशन में अपनी पहचान की पुष्टि करने के लिए, आपको पिन, पैटर्न या पासवर्ड का इस्तेमाल करना होगा." "आपके चेहरे का मॉडल सुरक्षित तरीके से हमेशा के लिए मिटा दिया जाएगा.\n\nइसके मिटने के बाद, अपने फ़ोन को अनलॉक करने के लिए, आपको पिन, पैटर्न या पासवर्ड का इस्तेमाल करना होगा." - "आपके चेहरे का मॉडल सुरक्षित तरीके से हमेशा के लिए मिटा दिया जाएगा.\n\nइसके मिटने के बाद, अपने फ़ोन को अनलॉक करने या किसी ऐप्लिकेशन का इस्तेमाल करने के दौरान पुष्टि के लिए, आपको फ़िंगरप्रिंट, पिन, पैटर्न या पासवर्ड का इस्तेमाल करना होगा." + "आपके चेहरे का मॉडल सुरक्षित तरीके से हमेशा के लिए मिटा दिया जाएगा.\n\nइसके मिटने के बाद, अपने फ़ोन को अनलॉक करने या किसी ऐप्लिकेशन में अपनी पहचान की पुष्टि करने के लिए, आपको फ़िंगरप्रिंट, पिन, पैटर्न या पासवर्ड का इस्तेमाल करना होगा." "आपके चेहरे का मॉडल सुरक्षित तरीके से हमेशा के लिए मिटा दिया जाएगा.\n\nइसके मिटने के बाद, अपने फ़ोन को अनलॉक करने के लिए, आपको पिन, पैटर्न या पासवर्ड का इस्तेमाल करना होगा." "फ़ोन अनलॉक करने के लिए, फ़ेस अनलॉक की सुविधा का इस्तेमाल करें" "फ़िंगरप्रिंट" @@ -363,7 +363,7 @@ "अपना फ़िंगरप्रिंट सेट अप करें" "फ़िंगरप्रिंट से अनलॉक करने की सुविधा इस्तेमाल करने की अनुमति दें" "फ़िंगरप्रिंट का उपयोग करें" - "फ़िंगरप्रिंट अनलॉक की सुविधा के बारे में ज़्यादा जानें" + "फ़िंगरप्रिंट अनलॉक के बारे में ज़्यादा जानें" "इस सुविधा का कंट्रोल आपके पास है" "आपका बच्चा और आप, इन सेटिंग को कंट्रोल कर सकते हैं" "ध्यान रखें" @@ -382,7 +382,7 @@ "बेहतर नतीजों के लिए, ऐसे स्क्रीन प्राेटेक्टर का इस्तेमाल करें जिसे Made for Google का सर्टिफ़िकेट मिला है. हो सकता है कि दूसरे स्क्रीन प्राेटेक्टर पर आपके बच्चे का फ़िंगरप्रिंट काम न करे." "स्मार्टवॉच से फ़ोन अनलॉक करने की सुविधा" - "अगर आपके फ़ोन में फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप की गई है, तो चेहरे पर मास्क होने या आस-पास कम रोशनी होने पर, फ़ोन आपका फ़िंगरप्रिंट मांगेगा.\n\nस्मार्टवॉच से फ़ोन अनलॉक करने की सुविधा, अपने फ़ोन को आसानी से अनलॉक करने का एक बेहतरीन तरीका है. यह तरीका, कई मौकों पर काम आ सकता है. जैसे, जब आपकी उंगलियां गीली हों या चेहरे से पहचान न हो पा रही हो." + "अगर आपके फ़ोन में फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक सेट अप हैं, तो चेहरे पर मास्क लगा होने या आस-पास कम रोशनी होने पर, फ़ोन आपका फ़िंगरप्रिंट मांगेगा.\n\nस्मार्टवॉच से फ़ोन अनलॉक करना भी एक बेहतरीन सुविधा है. यह सुविधा, कई मौकों पर काम आ सकती है. जैसे, जब आपकी उंगलियां गीली हों या चेहरे से पहचान न हो पा रही हो." "स्मार्टवॉच से फ़ोन अनलॉक करने की सुविधा, अपने फ़ोन को आसानी से अनलॉक करने का एक बेहतरीन तरीका है. यह तरीका, कई मौकों पर काम आ सकता है. जैसे, जब आपकी उंगलियों से पहचान न हो पा रही हो." "स्मार्टवॉच से फ़ोन अनलॉक करने की सुविधा, अपने फ़ोन को आसानी से अनलॉक करने का एक बेहतरीन तरीका है. यह तरीका, कई मौकों पर काम आ सकता है. जैसे, जब आपके चेहरे से पहचान न हो पा रही हो." "डिवाइस खोलने के लिए, फ़िंगरप्रिंट या स्मार्टवॉच का इस्तेमाल करें" @@ -408,7 +408,7 @@ "Remote Authenticator अनलॉक करें" "स्मार्टवॉच जोड़ दी गई" "अपनी स्मार्ट वॉच सेट अप करें" - "स्मार्टवॉच से फ़ोन अनलॉक करने की सुविधा, इस फ़ोन को अनलॉक करने का दूसरा आसान तरीका है. जैसे, जब आपकी उंगलियां गीली हों या चेहरे की पहचान न हो.\n\nस्मार्टवॉच का इस्तेमाल करके इस फ़ोन को तब अनलॉक किया जा सकता है, जब:" + "स्मार्टवॉच से फ़ोन अनलॉक करने की सुविधा, इस फ़ोन को अनलॉक करने का दूसरा आसान तरीका है. जैसे, जब आपकी उंगलियां गीली हों या चेहरे की पहचान न हो पाए.\n\nस्मार्टवॉच का इस्तेमाल करके इस फ़ोन को तब अनलॉक किया जा सकता है, जब:" "अभी नहीं" "आगे बढ़ें" "ज़्यादा देखें" @@ -417,7 +417,7 @@ "इस फ़ोन के अनलॉक होने पर, स्मार्टवॉच पर आपको इसकी सूचना मिलेगी. अगर आपके न चाहने पर भी यह अनलॉक हो जाता है, तो सूचना पर टैप करके फ़ोन को दोबारा लॉक करें." "आपकी स्मार्ट वॉच का कंट्रोल आपके पास है" "स्मार्टवॉच से फ़ोन अनलॉक करने की सुविधा बंद करने के लिए, अपनी स्मार्टवॉच को किसी भी समय हटाया जा सकता है. इसके लिए सेटिंग में जाएं" - "सूचना पर टैप करें" + "किसी सूचना पर टैप करें" "लॉक स्क्रीन पर ऊपर की ओर स्वाइप करें" "अपनी स्मार्टवॉच चुनें" "उपलब्ध स्मार्टवॉच" @@ -441,7 +441,7 @@ "फ़ोन को अनलॉक करने के तरीके" "चेहरे या फ़िंगरप्रिंट का इस्तेमाल करके:" "अपना फ़ोन अनलॉक करें" - "ऐप का इस्तेमाल करने पर अपनी पहचान की पुष्टि करें" + "ऐप इस्तेमाल करने के लिए अपनी पहचान की पुष्टि करें" "अपने चेहरे का इस्तेमाल करके" "अपने फ़िंगरप्रिंट का इस्तेमाल करें" "अपने फ़िंगरप्रिंट या चेहरे का इस्तेमाल करें" @@ -470,10 +470,10 @@ "मिटाएं" "सेंसर को छुएं" "अपनी उंगली सेंसर पर रखें और वाइब्रेशन महसूस होने पर हटा लें" - "अपनी उंगली को सेंसर पर तब तक दबाकर रखें, जब तक आपको वाइब्रेशन न महसूस हो" + "अपनी उंगली को सेंसर पर तब तक दबाकर रखें, जब तक आपको वाइब्रेशन महसूस न हो" "बटन को दबाए बिना, अपनी उंगली को सेंसर पर तब तक रखें, जब तक आपको वाइब्रेशन महसूस न हो.\n\nहर बार अपनी उंगली को थोड़ा सा हिलाएं. ऐसा करके, आपके फ़िंगरप्रिंट को बेहतर तरीके से कैप्चर किया जा सकता है." "फ़िंगरप्रिंट सेंसर को दबाकर रखें" - "हटाएं, फिर से छुएं" + "सेंसर से उंगली हटाकर, उसे दोबारा छुएं" "एक बार और छुएं" "फ़िंगरप्रिंट आइकॉन को दबाते रहें" "अपने फ़िंगरप्रिंट के अलग-अलग हिस्सों को जोड़ने के लिए अपनी उंगली को हटाते रहें" @@ -535,7 +535,7 @@ "वर्क प्रोफ़ाइल लॉक, एन्क्रिप्शन वगैरह" "एन्क्रिप्शन, क्रेडेंशियल वगैरह" "सुरक्षा, सुरक्षा से जुड़ी और सेटिंग, अन्य सेटिंग, बेहतर सुरक्षा सेटिंग" - "निजता से जुड़ी और सेटिंग" + "निजता से जुड़ी अन्य सेटिंग" "सुरक्षा और निजता की ज़्यादा सेटिंग" "सुरक्षा" "निजता" @@ -763,7 +763,7 @@ "{count,plural, =1{पासवर्ड कम से कम # वर्ण का होना चाहिए}one{पासवर्ड कम से कम # वर्ण का होना चाहिए}other{पासवर्ड कम से कम # वर्णों का होना चाहिए}}" "{count,plural, =1{अगर सिर्फ़ नंबरों का इस्तेमाल किया जा रहा है, तो पासवर्ड कम से कम एक अंक का होना चाहिए}one{अगर सिर्फ़ नंबरों का इस्तेमाल किया जा रहा है, तो पासवर्ड कम से कम # अंक का होना चाहिए}other{अगर सिर्फ़ नंबरों का इस्तेमाल किया जा रहा है, तो पासवर्ड कम से कम # अंकों का होना चाहिए}}" "{count,plural, =1{पिन कम से कम # अंक का होना चाहिए}one{पिन कम से कम # अंक का होना चाहिए}other{पिन कम से कम # अंकों का होना चाहिए}}" - "{count,plural, =1{पिन कम से कम # अंक का होना चाहिए. हालांकि, ज़्यादा सुरक्षा के लिए, हमारा सुझाव है कि {minAutoConfirmLen} अंकों का पिन सेट करें}one{पिन कम से कम # अंक का होना चाहिए. हालांकि, ज़्यादा सुरक्षा के लिए, हमारा सुझाव है कि {minAutoConfirmLen} अंकों का पिन सेट करें}other{पिन कम से कम # अंकों का होना चाहिए. हालांकि, ज़्यादा सुरक्षा के लिए {minAutoConfirmLen} अंकों का पिन सेट करें}}" + "{count,plural, =1{पिन कम से कम # अंक का होना चाहिए. हालांकि, हमारा सुझाव है कि ज़्यादा सुरक्षा के लिए {minAutoConfirmLen} अंकों का पिन सेट करें}one{पिन कम से कम # अंक का होना चाहिए. हालांकि, हमारा सुझाव है कि ज़्यादा सुरक्षा के लिए {minAutoConfirmLen} अंकों का पिन सेट करें}other{पिन कम से कम # अंकों का होना चाहिए. हालांकि, हमारा सुझाव है कि ज़्यादा सुरक्षा के लिए {minAutoConfirmLen} अंकों का पिन सेट करें}}" "{count,plural, =1{पासवर्ड # वर्ण से छोटा होना चाहिए}one{पासवर्ड # वर्ण से छोटा होना चाहिए}other{पासवर्ड # वर्ण से छोटा होना चाहिए}}" "{count,plural, =1{पिन # अंक से छोटा होना चाहिए}one{पिन # अंक से छोटा होना चाहिए}other{पिन # अंक से छोटा होना चाहिए}}" "डिवाइस व्यवस्थापक हाल ही के पिन का उपयोग करने की अनुमति नहीं देता" @@ -1621,7 +1621,7 @@ "फ़ेस अनलॉक का इस्तेमाल करने के लिए, पिन सेट करें" "फ़ेस या फ़िंगरप्रिंट अनलॉक इस्तेमाल करने के लिए पासवर्ड सेट करें" "फ़ेस अनलॉक या फ़िंगरप्रिंट अनलॉक की सुविधा इस्तेमाल करने के लिए, एक पैटर्न सेट करें" - "फ़ेस या फ़िंगरप्रिंट अनलॉक की सुविधा के लिए पिन सेट करें" + "फ़ेस या फ़िंगरप्रिंट अनलॉक इस्तेमाल करने के लिए पिन सेट करें" "अपना पासवर्ड भूल गए हैं?" "अपना पैटर्न भूल गए हैं?" "अपना पिन भूल गए हैं?" @@ -1791,8 +1791,8 @@ "डिवाइस व्यवस्थापक ऐप्लिकेशन को बाहरी मीडिया पर इंस्टॉल नहीं किया जा सकता" "ज़बरदस्ती रोकें?" "किसी ऐप्लिकेशन को ज़बरदस्ती रोकने पर, ऐसा हो सकता है कि वह ठीक तरह से काम न करे." - "ऐप को अक्षम करें" - "अगर आप इस ऐप्लिकेशन को बंद कर देते हैं, तो हो सकता है कि Android और दूसरे ऐप्लिकेशन ठीक से काम न करें. ध्यान रखें कि आप इस ऐप्लिकेशन को मिटा नहीं सकते क्योंकि यह आपके डिवाइस पर पहले से इंस्टॉल होकर आया है. इसे बंद करने पर ऐप्लिकेशन बंद हो जाएगा और आपके डिवाइस पर दिखाई नहीं देगा." + "ऐप्लिकेशन को बंद करें" + "इस ऐप्लिकेशन को बंद करने पर ऐसा हो सकता है कि Android और दूसरे ऐप्लिकेशन ठीक से काम न करें. बंद किए जाने पर, इस ऐप्लिकेशन की सभी गतिविधियां रुक जाएंगी और यह आपके डिवाइस पर नहीं दिखेगा. ध्यान रखें कि इस ऐप्लिकेशन को नहीं मिटाया जा सकता, क्योंकि यह डिवाइस पर पहले से इंस्टॉल होता है." "स्टोर" "ऐप्लिकेशन की जानकारी" "%1$s से इंस्टॉल किया गया ऐप्लिकेशन" @@ -1872,12 +1872,12 @@ "सामान्य कीबोर्ड" "ऑन-स्क्रीन कीबोर्ड का इस्तेमाल करें" "इसे सामान्य कीबोर्ड चालू रहने के दौरान भी स्‍क्रीन पर दिखाएं" - "बाउंस कुंजियां" - "इससे कीबोर्ड, %1$d एमएस में बार-बार एक ही कुंजी को दबाते रहने से उसे अनदेखा कर देता है" + "बाउंस बटन" + "एक ही कुंजी को %1$d मि॰से॰ के अंदर बार-बार दबाने पर, कीबोर्ड उसे अनदेखा कर देता है" "स्लो बटन" - "इससे %1$d एमएस को ऐक्टिवेट करने के लिए कुंजी दबाने में लगने वाले समय में बदलाव हो जाता है" + "किसी कुंजी को दबाने पर, स्क्रीन पर होने वाली प्रतिक्रिया का समय %1$d मि॰से॰ तक अडजस्ट किया जा सकता है" "स्टिकी बटन" - "शॉर्टकट के लिए, कई कुंजियों को एक साथ दबाए रखने की बजाय, एक बार में एक ही कुंजी को दबाएं" + "शॉर्टकट के लिए, कई कुंजियों को एक साथ दबाकर रखने के बजाय एक बार में एक कुंजी दबाएं" "कीबोर्ड शॉर्टकट" "शॉर्टकट की सूची दिखाएं" "काम के प्रोफ़ाइल से जुड़े कीबोर्ड और टूल" @@ -1931,7 +1931,10 @@ "रीसेट करें" "कार्रवाई बदलने वाली कुंजी चुनें" "%1$s के लिए, कोई नई कुंजी चुनें:" + "%s का लेआउट" "डिफ़ॉल्ट" + "अपने-आप चुना गया: %s" + "उपयोगकर्ता का चुना गया: %s" "बोली" "पॉइंटर स्पीड" "गेमनियंत्रक" @@ -3715,7 +3718,7 @@ "चालू है" "बंद" "ऐप्लिकेशन पिन करने की सुविधा" - "किसी ऐप्लिकेशन को पिन करके, उसे तब तक स्क्रीन पर देखा जा सकता है, जब तक उसे अनपिन न कर दिया जाए. यह सुविधा कई चीज़ों के लिए इस्तेमाल की जा सकती है. उदाहरण के लिए, किसी भरोसेमंद दोस्त को डिवाइस पर सिर्फ़ कोई खास गेम खेलने की अनुमति देना." + "किसी ऐप्लिकेशन को पिन करने पर, वह तब तक स्क्रीन पर दिखती है, जब तक उसे अनपिन न कर दिया जाए. यह सुविधा कई चीज़ों के लिए इस्तेमाल की जा सकती है. उदाहरण के लिए, किसी भरोसेमंद दोस्त को डिवाइस पर कोई गेम खेलने की अनुमति देना." "पिन किया गया कोई ऐप्लिकेशन, अन्य ऐप्लिकेशन खोल सकता है और आपका निजी डेटा ऐक्सेस कर सकता है. \n\nऐप्लिकेशन पिन करने की सुविधा का इस्तेमाल करने के लिए: \n{0,number,integer}. ऐप्लिकेशन पिन करने की सुविधा चालू करें \n{1,number,integer}. \'खास जानकारी\' खोलें \n{2,number,integer}. स्क्रीन पर सबसे ऊपर, ऐप्लिकेशन आइकॉन पर टैप करें. इसके बाद, \'पिन करें\' पर टैप करें" "पिन किया गया कोई ऐप्लिकेशन, अन्य ऐप्लिकेशन खोल सकता है और आपका निजी डेटा ऐक्सेस कर सकता है. \n\nअगर आपको अपना डिवाइस सुरक्षित तरीके से किसी के साथ शेयर करना है, तो मेहमान उपयोगकर्ता प्रोफ़ाइल का इस्तेमाल करें. \n\nऐप्लिकेशन पिन करने की सुविधा का इस्तेमाल करने के लिए: \n{0,number,integer}. ऐप्लिकेशन पिन करने की सुविधा चालू करें \n{1,number,integer}. \'खास जानकारी\' खोलें \n{2,number,integer}. स्क्रीन पर सबसे ऊपर, ऐप्लिकेशन आइकॉन पर टैप करें. इसके बाद, \'पिन करें\' पर टैप करें" "किसी ऐप्लिकेशन को पिन करने पर: \n\n•  निजी डेटा ऐक्सेस किया जा सकता है \n (जैसे कि आपकी संपर्क सूची और ईमेल) \n•  पिन किया गया ऐप्लिकेशन, दूसरे ऐप्लिकेशन खोल सकता है \n\nऐप्लिकेशन को उन ही लोगों के लिए पिन करें जिन पर आप भरोसा करते हैं." @@ -4616,20 +4619,20 @@ "सिम चालू नहीं किया जा सका" "सिम दोबारा चालू करने की कोशिश करें. अगर तब भी समस्या ठीक नहीं होती, तो डिवाइस को रीस्टार्ट करें." "अपना सिम सेट अप करें" - "इस डिवाइस पर एक से ज़्यादा सिम इस्तेमाल करने के लिए, अपने मोबाइल नेटवर्क की प्राथमिकताएं सेट करें" + "इस डिवाइस पर एक से ज़्यादा सिम इस्तेमाल करने के लिए, अपने मोबाइल नेटवर्क के लिए प्राथमिकताएं सेट करें" "अपने सिम लेबल करें" - "आपको ये लेबल, कॉल करते समय, मैसेज भेजते समय, और डेटा का इस्तेमाल करते समय दिखेंगे. ये लेबल, सेटिंग में भी मौजूद हैं" + "आपको ये लेबल, कॉल करते समय, मैसेज भेजते समय, और डेटा का इस्तेमाल करते समय दिखेंगे. ये लेबल, सेटिंग में भी दिखेंगे." "सिम का लेबल" "लेबल" "इस्तेमाल करने के लिए सिम चुनें" "एक समय पर दो सिम इस्तेमाल किए जा सकते हैं" - "अपने मुख्य सिम सेट करें" - "वह सिम चुनें जिसका इस्तेमाल डिफ़ॉल्ट रूप से, कॉल, मैसेज, और डेटा के लिए किया जाएगा" - "आपके मुख्य सिम" + "अपना मुख्य सिम सेट करें" + "वह सिम चुनें जिसका इस्तेमाल कॉल, मैसेज, और डेटा के लिए डिफ़ॉल्ट रूप से करना है" + "आपका मुख्य सिम" "कॉल" "मैसेज" "अपने-आप डेटा स्विच होना" - "नेटवर्क कवरेज या उसकी उपलब्धता के आधार पर डेटा का इस्तेमाल करें" + "नेटवर्क कवरेज या उसकी उपलब्धता के आधार पर किसी भी सिम का डेटा का इस्तेमाल करें" "सिर्फ़ डेटा" "सेट अप करें" "अगले पेज पर जाएं" @@ -4895,7 +4898,7 @@ "फ़ोन नंबर नहीं डाला गया." "ठीक है" "2G के इस्तेमाल की मंज़ूरी दें" - "2G नेटवर्क कम सुरक्षित होता है, लेकिन कुछ जगहों में यह आपको बेहतर कनेक्शन दे सकता है. आपातकालीन कॉल के लिए, 2G नेटवर्क का इस्तेमाल हमेशा किया जा सकता है." + "2G नेटवर्क कम सुरक्षित होता है, लेकिन कुछ जगहों पर यह आपको बेहतर कनेक्शन दे सकता है. आपातकालीन कॉल के लिए, 2G नेटवर्क का हमेशा इस्तेमाल किया जा सकता है." "%1$s के लिए 2G नेटवर्क होना ज़रूरी है" "एन्क्रिप्ट होना ज़रूरी है" "एन्क्रिप्ट किया गया मोबाइल नेटवर्क ज़्यादा सुरक्षित होता है. हालांकि, इसकी वजह से हो सकता है कि आपको कुछ जगहों पर बेहतर कनेक्शन न मिले. आपातकालीन कॉल करने के लिए, नेटवर्क का एन्क्रिप्ट होना ज़रूरी नहीं है" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 6133aaea54a..450c7643afd 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -1931,7 +1931,10 @@ "Poništi" "Odaberi modifikatorsku tipku" "Odaberite novu tipku za %1$s:" + "Izgled: %s" "Zadano" + "Automatski: %s" + "Izgled koji je odabrao korisnik: %s" "Govor" "Brzina pokazivača" "Upravljač igrama" @@ -4628,8 +4631,8 @@ "Vaše primarne SIM kartice" "Pozivi" "Tekstne poruke" - "Autom. prebacivanje podataka" - "Upotrijebite podatke s jedne od SIM kartica ovisno o pokrivenosti i dostupnosti" + "Aut. promjena izvora podatkovnog prometa" + "Koristi podatkovni promet s jedne od SIM kartica ovisno o pokrivenosti i dostupnosti" "Samo podatkovna veza" "Postavi" "Dalje" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 0b444286152..1cbe5c3f9ff 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -1931,7 +1931,10 @@ "Alaphelyzet" "Módosító billentyű választása" "Válasszon új billentyűt a(z) %1$s számára:" + "%s elrendezés" "Alapértelmezett" + "Automatikus: %s" + "Felhasználó által kiválasztva: %s" "Beszéd" "Mutató sebessége" "Játékvezérlő" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index ff70b7868b8..f1ebf3448d8 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -1931,7 +1931,10 @@ "Վերականգնել" "Ընտրեք կերպափոխիչ ստեղնը" "Ընտրել նոր ստեղն %1$s ստեղնի փոխարեն՝" + "%s դասավորություն" "Կանխադրված" + "Ավտոմատ՝ %s" + "Օգտատիրոջ ընտրած՝ %s" "Խոսք" "Նշորդի արագությունը" "Խաղերի կարգավորիչ" @@ -4623,7 +4626,7 @@ "Պիտակ" "Ընտրեք՝ որ SIM-երն օգտագործել" "Դուք միաժամանակ կարող եք օգտագործել 2 SIM քարտ" - "Սահմանեք ձեր հիմնական SIM-երը" + "Նշանակեք հիմնական SIM-երը" "Ընտրեք, թե որ SIM քարտերն ըստ կանխադրման օգտագործել զանգերի, SMS-ների և բջջային ինտերնետի համար" "Ձեր հիմնական SIM քարտերը" "Զանգեր" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index b76242fc7fa..6d5f2773276 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -1931,7 +1931,10 @@ "Reset" "Pilih tombol pengubah" "Pilih tombol baru untuk %1$s:" + "Tata letak %s" "Default" + "Otomatis: %s" + "Dipilih pengguna: %s" "Ucapan" "Kecepatan kursor" "Pengendali Game" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 931d3a2abd4..fcbacb2d294 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -1931,7 +1931,10 @@ "Endurstilla" "Velja breytilykil" "Veldu nýjan lykil fyrir %1$s:" + "Útlit: %s" "Sjálfgefið" + "Sjálfvirkt: %s" + "Valið af notanda: %s" "Tal" "Hraði bendils" "Leikjafjarstýring" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 290ce741dd8..6962ce2168c 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -1931,7 +1931,10 @@ "Reimposta" "Scegli un tasto di modifica" "Scegli un nuovo tasto per %1$s:" + "Layout %s" "Predefinito" + "Automatico: %s" + "Selezionato dall\'utente: %s" "Voce" "Velocità del puntatore" "Controller di gioco" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 16aba4bcc7e..c704090cfbc 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -1931,7 +1931,10 @@ "איפוס" "בחירת מקש צירוף" "יש לבחור מפתח חדש עבור %1$s:" + "פריסה של %s" "ברירת מחדל" + "אוטומטי: %s" + "המשתמש שנבחר: %s" "דיבור" "מהירות המצביע" "בקר משחק" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 381d13d26f5..9df4791ab45 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -1931,7 +1931,10 @@ "リセット" "修飾キーを選択" "%1$s の新しいキーを選択してください" + "レイアウト: %s" "デフォルト" + "自動: %s" + "ユーザーによる選択: %s" "読み上げ" "ポインタの速度" "ゲーム用コントローラ" @@ -5100,7 +5103,7 @@ "ON" "OFF" "明るい画面が暗くなり、暗い画面が明るくなります" - "画面上で拡大する" + "画面上で拡大します" "OFF" "OFF" "ON" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 440f1780ab4..f16dc6c8f6b 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -594,7 +594,7 @@ "აპების ინსტალაცია"\n"თქვენს კერძო სივრცეს თავისი Play Store აქვს, შესაბამისად, აპების ინსტალაცია მარტივად შეგიძლიათ." "თქვენს პირად სივრცეში არსებული აპები არ გამოჩნდება ნებართვების მენეჯერში, კონფიდენციალურობის საინფორმაციო დაფაში და სხვა პარამეტრებში, როდესაც თქვენი პირადი სივრცე დაბლოკილია.\n\nთქვენი პირადი სივრცის ახალ მოწყობილობაში გადატანა შეუძლებელია. თქვენ უნდა დააყენოთ სხვა პირადი სივრცე, თუ გსურთ მისი სხვა მოწყობილობაზე გამოყენება.\n\nნებისმიერს, ვინც თქვენს მოწყობილობას აკავშირებს კომპიუტერთან ან დააინსტალირებს მავნე აპებს თქვენს მოწყობილობაზე, შეიძლება ჰქონდეს წვდომა თქვენს პირად სივრცეში." "მიმდინარეობს პირადი სივრცის დაყენება…" - "კერძო სივრცის აპების შეტყობინებები დამალულია, როცა ის ჩაკეტილია" + "კერძო სივრცის აპების შეტყობინებები დამალულია ჩაკეტვისას" "გაეცანით კერძო სივრცის პარამეტრებს ავტომატური ჩაკეტვის დასაყენებლად და კერძო სივრცის დასამალად" "მოთხოვნილი აპები უკვე დაინსტალირებულია თქვენს კერძო სივრცეში" "კერძო სივრცის დაყენება ვერ მოხერხდა" @@ -1931,7 +1931,10 @@ "გადაყენება" "აირჩიეთ მოდიფიკატორი კლავიში" "აირჩიეთ ახალი კლავიში %1$s-ისთვის:" + "%s განლაგება" "ნაგულისხმევი" + "ავტომატური: %s" + "მომხმარებლის მიერ არჩეული: %s" "მეტყველება" "მანიშნებლის სიჩქარე" "თამაშის მეთვალყურე" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index f082a91e5a1..9101259109d 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -1931,7 +1931,10 @@ "Қайта орнату" "Өзгерткіш перне таңдау" "%1$s жаңа пернесін таңдау:" + "%s форматы" "Әдепкі" + "Автоматты: %s" + "Пайдаланушы таңдаған: %s" "Сөз" "Меңзер жылдамдығы" "Ойын бақылаушы" @@ -3061,7 +3064,7 @@ "%1$d dBm %2$d asu" "SIM карталарыңыз өзгертілді" "Реттеу үшін түртіңіз" - "Әр қоңырау үшін сұрау" + "Әрдайым сұрау" "Таңдау қажет" "SIM картасын таңдау" "Параметрлер" @@ -3800,7 +3803,7 @@ "%s ашу" "%s және басқа URL мекенжайларын ашу" "Қолданбаға қолдау көрсетілетін сілтемелерді ашуға рұқсат беру" - "Әр жағдайда сұрау" + "Әрдайым сұрау" "Қолданбаға сілтемелерді ашуға рұқсат бермеу" "{count,plural, =1{Қолданба арқылы # сілтеме ашылады.}other{Қолданба арқылы # сілтеме ашылады.}}" "Қолданба арқылы келесі сілтемелер ашылады:" @@ -4625,11 +4628,11 @@ "Енді 2 SIM картасын қатар қолдануға болады." "Негізгі SIM карталарын орнату" "Қоңырауларға, мәтіндік хабарларға және деректерге әдепкісінше пайдаланылатын SIM карталарын таңдаңыз." - "Жеке SIM карталарыңыз" + "Негізгі SIM карталары" "Қоңыраулар" "Мәтіндік хабарлар" "Деректерді автоматты ауыстыру" - "Қызмет аясына және байланыста болуына қарай қажетті SIM картасының деректерін пайдаланыңыз." + "Қызмет аясына және қолжетімділігіне қарай қажетті SIM картасының деректерін пайдалану" "Тек деректер" "Реттеу" "Келесі" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 5610bee7710..f300092a66f 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -1931,7 +1931,10 @@ "កំណត់​ឡើងវិញ" "ជ្រើសរើស​ប៊ូតុងឧបករណ៍កែសម្រួល" "ជ្រើសរើសប៊ូតុងថ្មីសម្រាប់ %1$s៖" + "ប្លង់ %s" "លំនាំដើម" + "ស្វ័យប្រវត្តិ៖ %s" + "បានជ្រើសរើសដោយអ្នកប្រើប្រាស់៖ %s" "ការ​និយាយ" "ល្បឿន​ព្រួញ" "កម្មវិធី​ពិនិត្យ​ល្បែង" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index a7f5f4585b0..b3c87618754 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -1707,7 +1707,7 @@ "ನಿಮ್ಮ ಪಿನ್, ಪ್ಯಾಟರ್ನ್ ಅಥವಾ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು ಅವರು ನಿಮಗೆ ಸಹಾಯ ಮಾಡಬಹುದು" "ಸುಧಾರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳು" "ಇನ್ನಷ್ಟು ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಆಯ್ಕೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸು" - "ಅಪ್ಲಿಕೇಶನ್ ಮಾಹಿತಿ" + "ಆ್ಯಪ್ ಮಾಹಿತಿ" "ಸಂಗ್ರಹಣೆ" "ಡೀಫಾಲ್ಟ್ ಪ್ರಕಾರ ತೆರೆಯಿರಿ" "ಡೀಫಾಲ್ಟ್‌ಗಳು" @@ -1931,7 +1931,10 @@ "ರೀಸೆಟ್ ಮಾಡಿ" "ಮಾರ್ಪಡಿಸುವ ಕೀ ಆಯ್ಕೆಮಾಡಿ" "%1$s ಗಾಗಿ ಹೊಸ ಕೀ ಆಯ್ಕೆಮಾಡಿ:" + "%s ಲೇಔಟ್" "ಡಿಫಾಲ್ಟ್" + "ಆಟೋಮೆಟಿಕ್: %s" + "ಬಳಕೆದಾರರು ಆಯ್ಕೆಮಾಡಿರುವುದು: %s" "ಧ್ವನಿ" "ಪಾಯಿಂಟರ್ ವೇಗ" "ಆಟ ನಿಯಂತ್ರಕ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index cfa5c1f868c..e7c9086defb 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -1931,7 +1931,10 @@ "초기화" "특수키 선택" "%1$s의 새 키 선택:" + "%s 레이아웃" "기본" + "자동: %s" + "사용자 선택: %s" "음성" "포인터 속도" "게임 컨트롤러" @@ -4579,7 +4582,7 @@ "응급 서비스를 포함해 누구에게나 문자 메시지를 보낼 수 있습니다. 모바일 네트워크가 사용 가능해지면 휴대전화가 네트워크에 다시 연결됩니다." "위성 메시지는 시간이 더 오래 소요될 수 있으며 일부 지역에서만 사용 가능합니다. 날씨 및 특정 구조물이 위성 연결에 영향을 미칠 수 있습니다. 위성 통화를 사용할 수 없습니다. 긴급 전화는 연결될 수 있습니다.\n\n계정 변경사항이 설정에 표시되는 데 다소 시간이 걸릴 수 있습니다. 자세한 내용은 이동통신사에 문의하세요." "위성 메시지 자세히 알아보기" - "액세스 포인트 이름(APN)" + "액세스 포인트 네임(APN)" "APN" "%1$s에 연결된 경우 사용할 수 없음" "더보기" @@ -4618,13 +4621,13 @@ "SIM 설정" "이 기기에서 여러 개의 SIM을 사용하도록 모바일 네트워크 환경설정을 설정하세요." "SIM 라벨 지정" - "전화를 걸고, 문자를 보내고, 데이터를 사용할 때 설정에서 이러한 라벨이 표시됩니다." + "전화를 걸고, 문자를 보내고, 데이터를 사용할 때, 그리고 설정에 이러한 라벨이 표시됩니다." "SIM 라벨" "라벨" "사용할 SIM 선택" "한 번에 2개의 SIM을 사용할 수 있습니다." "기본 SIM 설정" - "전화, 문자, 데이터에 기본적으로 사용할 SIM을 선택하세요" + "전화, 문자 메시지, 데이터에 기본적으로 사용할 SIM을 선택하세요." "기본 SIM" "통화" "문자 메시지" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 46d7367c12b..174882d9265 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -1931,7 +1931,10 @@ "Кайра коюу" "Өзгөртүүчү баскычты тандаңыз" "%1$s үчүн жаңы ачкыч тандаңыз:" + "%s калыбы" "Демейки" + "Автоматтык: %s" + "Колдонуучу тандаган: %s" "Кеп" "Көрсөткүчтүн ылдамдыгы" "Оюн контроллери" @@ -4616,9 +4619,9 @@ "SIM-карта иштетилген жок" "SIM-картаны кайра күйгүзүп көрүңүз. Эгер маселе чечилбесе, түзмөктү өчүрүп күйгүзүңүз." "SIM картаңызды тууралаңыз" - "Бул түзмөктө бир нече SIM картаны колдонуу үчүн мобилдик тармагыңыздын артыкчылыктарын тууралаңыз" + "Бул түзмөктө бир нече SIM картаны колдонуу үчүн мобилдик тармагыңыздын параметрлерин тууралаңыз" "SIM карталарыңызды белгилеңиз" - "Бул энбелгилерди чалууларда, текст билдирүүсүн жөнөтүүдө жана дайындарды колдонууда Жөндөөлөрдөн көрөсүз" + "Бул энбелгилерди чалууларда, текст билдирүүсүн жөнөтүүдө жана ар кандай нерселерди колдонууда Параметрлерден көрөсүз" "SIM карта энбелгиси" "Энбелги" "Колдонула турган SIM карталарды тандоо" @@ -4628,8 +4631,8 @@ "Негизги SIM карталарыңыз" "Чалуулар" "SMS жөнөтүү" - "Дайындарды автоматтык түрдө которуу" - "Иштөө аймагы жана жеткиликтүүлүгүнө жараша каалаган SIM картанын дайындарын колдонуңуз" + "Мобилдик Интернетке автоматтык түрдө которулуу" + "Тармактын жеткиликтүүлүгүнө жараша каалаган SIM картанын мобилдик Интернетине которуласыз" "Дайындар гана" "Тууралоо" "Кийинки" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index f7f172cbfe6..3e4fdce0727 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -1931,7 +1931,10 @@ "ຣີເຊັດ" "ເລືອກປຸ່ມຕົວດັດແປງ" "ເລືອກປຸ່ມໃໝ່ສຳລັບ %1$s:" + "ໂຄງຮ່າງ %s" "ຄ່າເລີ່ມຕົ້ນ" + "ອັດຕະໂນມັດ: %s" + "ຜູ້ໃຊ້ໄດ້ເລືອກ: %s" "ສຽງເວົ້າ" "ຄວາມໄວລູກສອນ" "ມືເກມ" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index d34829888a5..d30a874406a 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -1931,7 +1931,10 @@ "Nust. iš naujo" "Pasirinkite modifikavimo klavišą" "Pasirinkite naują „%1$s“ slaptažodį:" + "„%s“ išdėstymas" "Numatytasis" + "Automatinis: %s" + "Pasirinktas naudotojo: %s" "Kalba" "Žymiklio greitis" "Žaidimų valdiklis" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index e1996790c73..b2ac00f6a23 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -1931,7 +1931,10 @@ "Atiestatīt" "Modificētājtaustiņa izvēle" "Izvēlieties jaunu taustiņu — %1$s:" + "Izkārtojums: %s" "Noklusējums" + "Automātiski: %s" + "Lietotāja atlasītais izkārtojums: %s" "Runa" "Rādītāja ātrums" "Spēļu vadība" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 679f73b7dbd..b94a9794a12 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -1931,7 +1931,10 @@ "Ресетирај" "Изберете го копчето модификатор" "Изберете ново копче за %1$s:" + "Распоред на %s" "Стандардно" + "Автоматски: %s" + "Корисникот избрал: %s" "Говор" "Брзина на покажувачот" "Контролор на игра" @@ -4625,7 +4628,7 @@ "Може да користите 2 SIM-картички истовремено" "Поставете главни SIM-картички" "Изберете кои SIM-картички да се користат стандардно за повици, пораки и интернет" - "Вашите примарни SIM-картички" + "Вашите главни SIM-картички" "Повици" "Пораки" "Автоматско префрлање интернет" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index 29fbd5e2e79..ad1c5b1c883 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -1931,7 +1931,10 @@ "റീസെറ്റ് ചെയ്യൂ" "മോഡിഫയർ കീ തിരഞ്ഞെടുക്കുക" "%1$s എന്നതിനായി പുതിയ കീ തിരഞ്ഞെടുക്കൂ:" + "%s ലേഔട്ട്" "ഡിഫോൾട്ട്" + "സ്വയമേവ: %s" + "തിരഞ്ഞെടുത്ത ഉപയോക്താവ്: %s" "സംഭാഷണം" "പോയിന്റർ വേഗത" "ഗെയിം കൺട്രോളർ" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 98fa9370d0c..5ecd337fba9 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -1890,9 +1890,9 @@ "Мэдрэгч самбарын зангаа" "Мэдрэгч самбарын навигацын бие даасан зангааг өөрчлөх" "Урвуу гүйлгэх" - "Таныг доош гүйлгэх үед контентыг дээш зөөнө" + "Таныг доош гүйлгэх үед контентыг дээш зөөх" "Баруун доод буланг товших" - "Бусад сонголтыг авах бол мэдрэгч самбарын баруун доод буланг товшино уу" + "Бусад сонголтыг авах бол мэдрэгч самбарын баруун доод буланг товших" "Заагчийн хурд" "Мэдрэгч самбарын зангааг мэдэж авах" "мэдрэгч самбар, мэдрэгч самбар, хулгана, курсор, гүйлгэх, шудрах, баруун талыг товших, товших, заагч" @@ -1931,7 +1931,10 @@ "Шинэчлэх" "Тохируулагч товч сонгох" "%1$s-н шинэ товч сонгоно уу:" + "%s бүдүүвч" "Өгөгдмөл" + "Автомат: %s" + "Хэрэглэгчийн сонгосон: %s" "Яриа" "Заагчийн хурд" "Тоглоом Контроллер" @@ -4435,7 +4438,7 @@ "Үндсэн мэдээлэл" "Хууль, журам" "Төхөөрөмжийн дэлгэрэнгүй" - "Төхөөрөмжийн таниулбар" + "Төхөөрөмжийн танигч" "Wi-Fi хяналт" "Wi-Fi-г хянах зөвшөөрлийг аппад олгох" "Энэ аппад Wi-Fi-г асаах эсвэл унтраах, Wi-Fi сүлжээг хайх болон холбогдох, сүлжээ нэмэх эсвэл устгах болон зөвхөн дотоодод ашиглах сүлжээний цэгийг эхлүүлэхийг зөвшөөрнө үү" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 3a550e0c2a6..04a4e3122d9 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -1931,7 +1931,10 @@ "रीसेट करा" "मॉडिफायर की निवडा" "%1$s साठी नवीन की निवडा:" + "%s लेआउट" "डीफॉल्ट" + "ऑटोमॅटिक: %s" + "वापरकर्त्याने निवडले आहे: %s" "भाषण" "पॉइंटर वेग" "गेम नियंत्रक" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index ca9dd74fedb..70a462a398f 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -1931,7 +1931,10 @@ "Tetapkan semula" "Pilih kunci pengubah suai" "Pilih kunci baharu untuk %1$s:" + "Reka letak %s" "Lalai" + "Automatik: %s" + "Pengguna dipilih: %s" "Pertuturan" "Kelajuan penuding" "Pengawal Permainan" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 397b848a751..0236735dd1a 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -1931,7 +1931,10 @@ "ပြန်သတ်မှတ်ရန်" "မွမ်းမံပေးရေးကီးကို ရွေးပါ" "%1$s အတွက် ကီးအသစ်ရွေးပါ-" + "%s အပြင်အဆင်" "မူရင်း" + "အလိုအလျောက်- %s" + "အသုံးပြုသူ၏ ရွေးချယ်မှု- %s" "စကားသံ" "မြားရွေ့နှုန်း" "ဂိမ်းထိန်းချုပ်ခြင်း" @@ -4617,14 +4620,14 @@ "ဆင်းမ်ကတ်ကို ပြန်ဖွင့်ကြည့်ပါ။ ပြဿနာရှိနေသေးပါက သင့်စက်ကို ပြန်လည်စတင်ပါ။" "ဆင်းမ်ကတ် စနစ်ထည့်သွင်းခြင်း" "ဤစက်ပစ္စည်းတွင် ဆင်းမ်ကတ်အမျိုးမျိုးသုံးရန် မိုဘိုင်းကွန်ရက် သတ်မှတ်ချက်များကို သတ်မှတ်ပါ" - "ဆင်းမ်ကတ်များ အညွှန်းတပ်ခြင်း" - "ဤအညွှန်းများကို ဖုန်းခေါ်ဆိုခြင်း၊ စာတိုပို့ခြင်း၊ ဒေတာသုံးခြင်း ပြုလုပ်ရာ၌အပြင် ‘ဆက်တင်များ’ တွင် တွေ့ရပါမည်" - "ဆင်းမ်ကတ်အညွှန်း" - "အညွှန်း" + "ဆင်းမ်ကတ်များကို အမည်ပေးခြင်း" + "ဤအမည်များကို ဖုန်းခေါ်ဆိုချိန်၊ စာတိုပို့ချိန်၊ ဒေတာသုံးချိန်များနှင့် ‘ဆက်တင်များ’ တွင် တွေ့ရပါမည်" + "ဆင်းမ်ကတ်အမည်" + "အမည်" "သုံးမည့်ဆင်းမ်ကတ် ရွေးခြင်း" "ဆင်းမ်ကတ် ၂ ခုကို တစ်ပြိုင်နက် အသုံးပြုနိုင်သည်" "ပင်မဆင်းမ်ကတ်များ သတ်မှတ်ခြင်း" - "ဖုန်းခေါ်ဆိုမှု၊ စာတိုနှင့် ဒေတာများအတွက် မူရင်းသတ်မှတ်ချက်အဖြစ်သုံးမည့် ဆင်းမ်ကတ်များကို ရွေးပါ" + "ဖုန်းခေါ်ဆိုမှု၊ စာတိုနှင့် ဒေတာများအတွက် မူရင်းအဖြစ်သုံးမည့် ဆင်းမ်ကတ်များကို ရွေးပါ" "သင်၏ပင်မဆင်းမ်ကတ်များ" "ခေါ်ဆိုမှုများ" "စာတိုများ" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index a82277bee89..584c77236eb 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -1931,7 +1931,10 @@ "Tilbakestill" "Velg modifikatortast" "Velg en ny tast for %1$s:" + "%s-oppsett" "Standard" + "Automatisk: %s" + "Brukervalgt: %s" "Tale" "Pekerhastighet" "Spillkontroller" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 787303f6b9f..390a107ad61 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -1931,7 +1931,10 @@ "रिसेट गर्नुहोस्" "मोडिफायर की छान्नुहोस्" "%1$s को नयाँ की छनौट गर्नुहोस्:" + "%s लेआउट" "डिफल्ट" + "स्वचालित: %s" + "प्रयोगकर्ता चयन गरिएको: %s" "बोली" "पोइन्टरको गति" "खेल नियन्त्रक" @@ -3061,7 +3064,7 @@ "%1$d dBm %2$d asu" "तपाईंका SIM बदलिएका छन्" "सेटअप गर्न ट्याप गर्नुहोस्" - "प्रत्येक पटक सोधियोस्" + "प्रत्येक पटक सोध्नुहोस्" "छनौट आवश्यक छ" "SIM को चयन" "सेटिङहरू" @@ -3313,7 +3316,7 @@ "%1$s%2$s" "सक्रिय छ/%1$s" "अन छ" - "प्रत्येक पटक सोधियोस्" + "प्रत्येक पटक सोध्नुहोस्" "तपाईंले अफ नगरेसम्म" "{count,plural, =1{१ घन्टा}other{# घन्टा}}" "{count,plural, =1{१ मिनेट}other{# मिनेट}}" @@ -3800,7 +3803,7 @@ "%s खोल्नुहोस्" "%s र अन्य URL खोल्नुहोस्" "एपलाई समर्थित लिंक खोल्ने अनुमति दिनुहोस्" - "प्रत्येक पटक सोधियोस्" + "प्रत्येक पटक सोध्नुहोस्" "एपलाई लिंकहरू खोल्ने अनुमति नदिनुहोस्" "{count,plural, =1{यो एपले # वटा लिंक ह्यान्डल गर्ने दाबी गर्छ}other{यो एपले # वटा लिंक ह्यान्डल गर्ने दाबी गर्छ}}" "निम्न लिंकहरू सम्हाल्न प्रयोग गरिने एपका दाबीहरू" @@ -4460,7 +4463,7 @@ "नेटवर्कको विवरण" "यन्त्रहरू" "नेटवर्क छनौट गर्नुहोस्‌" - "विच्छेद गरियो" + "डिस्कनेक्ट गरियो" "कनेक्ट भएको छ" "जडान गर्दै…" "जडान गर्न सकिएन" @@ -4513,7 +4516,7 @@ "5G (सिफारिस गरिएको)" "LTE (सिफारिस गरिएको)" "4G (सिफारिस गरिएको)" - "स्वतः नेटवर्क छानियोस्" + "स्वतः नेटवर्क छान्नुहोस्" "सेवा प्रदायकसम्बन्धी सेटिङहरू" "डेटा सेवा सेटअप गर्नुहोस्" "मोबाइल डेटा" @@ -4522,7 +4525,7 @@ "कुनै पनि SIM उपलब्ध छैन" "कलसम्बन्धी प्राथमिकता" "SMS सम्बन्धी प्राथमिकता" - "प्रत्येक पटक सोधियोस्" + "प्रत्येक पटक सोध्नुहोस्" "मोबाइल नेटवर्क हाल्नुहोस्" "कलका लागि डिफल्ट" "SMS का लागि डिफल्ट" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index de78ecf26b1..8742ce8fcd2 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -1931,7 +1931,10 @@ "Resetten" "Functietoets kiezen" "Kies een nieuwe toets voor %1$s:" + "Indeling: %s" "Standaard" + "Automatisch: %s" + "Door de gebruiker geselecteerd: %s" "Spraak" "Snelheid van aanwijzer" "Gamecontroller" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 36ccf47f682..cc08079f295 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -1789,7 +1789,7 @@ "ଇନଷ୍ଟଲ୍‌ ଲୋକେସନ୍‌ ମାନ୍ୟ ନୁହେଁ।" "ସିଷ୍ଟମ୍‌ ଅପଡେଟ୍‌ଗୁଡ଼ିକ ଏକ୍ସଟର୍ନଲ୍‌ ମିଡିଆରେ ଇନଷ୍ଟଲ୍‌ ହୋଇପାରିବ ନାହିଁ।" "ବାହାର ମିଡିଆରେ ଡିଭାଇସ୍‌ ଆଡମିନ୍‌ ସଂସ୍ଥାପିତ ହୋଇପାରିବ ନାହିଁ" - "ଜୋରରେ ବନ୍ଦ କରିବେ?" + "ଫୋର୍ସ ଷ୍ଟପ କରିବେ?" "ଯଦି ଆପଣ ଏକ ଆପ୍‌ ବାଧ୍ୟତାର ସହ ବନ୍ଦ କରନ୍ତି, ଏହା ଅସ୍ୱାଭାବିକ ବ୍ୟବହାର କରିବ।" "ଆପ୍‌ ଅକ୍ଷମ କରନ୍ତୁ" "ଯଦି ଆପଣ ଏହି ଆପ୍‌କୁ ନିଷ୍କ୍ରିୟ କରନ୍ତି, ତେବେ Android ଓ ଅନ୍ୟାନ୍ୟ ଆପ୍ସ ଆଉ କାମ ନକରିପାରେ। ମନେ ରଖନ୍ତୁ, ଯେହେତୁ ଏହା ଆପଣଙ୍କ ଡିଭାଇସ୍‌ରେ ପୂର୍ବରୁ-ଇନ୍‌ଷ୍ଟଲ୍ ଅଛି, ତେଣୁ ଆପଣ ଏହି ଆପ୍‌କୁ ଡିଲିଟ୍ କରିପାରିବେ ନାହିଁ। ଏହାକୁ ଅକ୍ଷମ କରି, ଏହି ଆପ୍‌କୁ ଆପଣ ବନ୍ଦ କରିବେ ଏବଂ ଆପଣଙ୍କର ଡିଭାଇସ୍‌ରେ ଲୁଚାଇବେ।" @@ -1931,7 +1931,10 @@ "ରିସେଟ କରନ୍ତୁ" "ମୋଡିଫାୟର କୀ ବାଛନ୍ତୁ" "%1$s ପାଇଁ ଏକ ନୂଆ କୀ ବାଛନ୍ତୁ:" + "%s ଲେଆଉଟ" "ପୂର୍ବ-ନିର୍ଦ୍ଧାରିତ" + "ସ୍ୱତଃ: %s" + "ୟୁଜର ଚୟନିତ: %s" "ସ୍ପିଚ" "ପଏଣ୍ଟର୍‌ର ବେଗ" "ଗେମ କଣ୍ଟ୍ରୋଲର" @@ -3061,7 +3064,7 @@ "%1$d dBm %2$d asu" "ଆପଣଙ୍କ SIMଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରାଯାଇଛି" "ସେଟଅପ୍‌ କରିବାକୁ ଟାପ୍‌ କରନ୍ତୁ" - "ପ୍ରତ୍ୟେକ ଥର ପଚାର" + "ପ୍ରତ୍ୟେକ ଥର ପଚାରନ୍ତୁ" "ମନୋନୟନ ଆବଶ୍ୟକୀୟ" "SIM ଚୟନ" "ସେଟିଂସ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 6303fa58063..e50aedaf247 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -1931,7 +1931,10 @@ "ਰੀਸੈੱਟ ਕਰੋ" "ਸੋਧਕ ਕੁੰਜੀ ਚੁਣੋ" "%1$s ਲਈ ਨਵੀਂ ਕੁੰਜੀ ਚੁਣੋ:" + "%s ਖਾਕਾ" "ਪੂਰਵ-ਨਿਰਧਾਰਿਤ" + "ਸਵੈਚਲਿਤ: %s" + "ਵਰਤੋਂ ਦੀ ਚੋਣ: %s" "ਬੋਲੀ" "ਪੁਆਇੰਟਰ ਸਪੀਡ" "ਗੇਮ ਕੰਟ੍ਰੋਲਰ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index c774d7674a3..1fa99c4c807 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -1931,7 +1931,10 @@ "Resetuj" "Wybierz klawisz modyfikujący" "Wybierz nowy klawisz jako %1$s:" + "Układ %s" "Domyślny" + "Automatyczny: %s" + "Wybrany przez użytkownika: %s" "Mowa" "Szybkość wskaźnika" "Kontroler gier" @@ -4062,7 +4065,7 @@ "Dane bez limitu" "Dane w tle są wyłączone" "Włączone" - "Wyłączone" + "Wył." "Włącz oszczędzanie danych" "Nieograniczone użycie danych" "Włącz nieograniczony dostęp do danych, gdy jest włączone oszczędzanie danych" diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml index 93e13a796f4..dd4ad70c707 100644 --- a/res/values-pt-rBR/strings.xml +++ b/res/values-pt-rBR/strings.xml @@ -1931,7 +1931,10 @@ "Redefinir" "Escolher a tecla modificadora" "Escolha uma nova tecla para %1$s:" + "Layout do %s" "Padrão" + "Automático: %s" + "Usuário selecionado: %s" "Fala" "Velocidade do cursor" "Controlador de jogos" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 8eb57e8feba..87f7e0dc3c6 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -1931,7 +1931,10 @@ "Repor" "Escolha uma tecla de modificação" "Escolha uma nova tecla para %1$s:" + "Esquema do %s" "Predefinição" + "Automático: %s" + "Utilizador selecionado: %s" "Voz" "Velocidade do ponteiro" "Controlador de Jogos" @@ -4621,14 +4624,14 @@ "Vão ser apresentadas estas etiquetas quando fizer chamadas, enviar mensagens de texto e usar dados, bem como nas Definições" "Etiqueta do SIM" "Etiqueta" - "Selecione os SIM a usar" + "Selecione os SIMs a usar" "Pode usar 2 SIMs em simultâneo" "Defina os seus SIMs principais" "Escolha quais os SIMs a usar por predefinição para chamadas, mensagens de texto e dados" "Os seus SIMs principais" "Chamadas" "Mensagens de texto" - "Comutação automática de dados" + "Alternância automática de dados" "Use dados de qualquer um dos SIMs, consoante a cobertura e a disponibilidade" "Apenas de dados" "Configurar" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 93e13a796f4..dd4ad70c707 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -1931,7 +1931,10 @@ "Redefinir" "Escolher a tecla modificadora" "Escolha uma nova tecla para %1$s:" + "Layout do %s" "Padrão" + "Automático: %s" + "Usuário selecionado: %s" "Fala" "Velocidade do cursor" "Controlador de jogos" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 1d02101535f..23b1f5d86e5 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -1931,7 +1931,10 @@ "Resetează" "Alege tasta de modificare" "Alege o nouă tastă pentru %1$s:" + "Aspectul %s" "Prestabilit" + "Automat: %s" + "Utilizator selectat: %s" "Voce" "Viteza indicatorului" "Controler de joc" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index ae5cae772e9..0466d450583 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -1931,7 +1931,10 @@ "Сбросить" "Выбор клавиши-модификатора" "Выберите новую клавишу для %1$s:" + "Раскладка \"%s\"" "По умолчанию" + "Автоматически: %s" + "Выбрано пользователем: %s" "Речь" "Скорость указателя" "Игровые контроллеры" @@ -4618,7 +4621,7 @@ "Настройте SIM-карту" "Настройте параметры мобильной сети для использования нескольких SIM-карт на этом устройстве." "Назначьте ярлыки для SIM-карт" - "Эти ярлыки будут показываться при совершении звонков, отправке текстовых сообщений, использовании мобильного трафика, а также в настройках." + "Эти ярлыки будут видны, когда вы будете звонить, отправлять SMS и пользоваться мобильным интернетом, а также в настройках." "Ярлык SIM-карты" "Ярлык" "Выберите нужные SIM-карты" @@ -4629,7 +4632,7 @@ "Звонки" "Текстовые сообщения" "Автопереключение моб. трафика" - "Используйте мобильный трафик любой SIM-карты в зависимости от покрытия и доступности." + "Использовать трафик любой SIM-карты в зависимости от покрытия и доступности" "Только доступ к интернету" "Настроить" "Далее" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 35a903ac4f5..057fe855ecd 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -1931,7 +1931,10 @@ "යළි සකසන්න" "සංස්කාරක යතුර තෝරා ගන්න" "%1$s සඳහා නව යතුරක් තෝරා ගන්න:" + "%s පිරිසැලසුම" "පෙරනිමි" + "ස්වයංක්‍රීය: %s" + "පරිශීලක තෝරා ඇත: %s" "කථනය" "දර්ශක වේගය" "ක්‍රීඩා පාලකය" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index da5fce8b427..efdbe9bb4e4 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -1931,7 +1931,10 @@ "Resetovať" "Vyberte modifikačný kláves" "Vyberte pre %1$s nový kláves:" + "Rozloženie %s" "Predvolené" + "Automaticky: %s" + "Vybrané používateľom: %s" "Reč" "Rýchlosť kurzora" "Herné ovládače" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index a7d39fc045f..82b501da56f 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -1931,7 +1931,10 @@ "Ponastavi" "Izbira modifikatorske tipke" "Izberite novo tipko za »%1$s«:" + "Postavitev %s" "Privzeto" + "Samodejno: %s" + "Uporabniško izbrano: %s" "Govor" "Hitrost kazalca" "Krmilnik za igre" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index f708aa4c68e..3804609988b 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -1931,7 +1931,10 @@ "Rivendos" "Zgjidh tastin modifikues" "Zgjidh një çelës të ri për %1$s:" + "Struktura e %s" "E parazgjedhur" + "Automatik: %s" + "Zgjedhur nga përdoruesi: %s" "Ligjërimi" "Shpejtësia e treguesit" "Kontrolluesi i lojës" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 9ba9c58f750..573257137d0 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -1931,7 +1931,10 @@ "Ресетуј" "Одаберите модификујући тастер" "Одаберите нови тастер за %1$s:" + "Распоред %s" "Подразумевано" + "Аутоматски: %s" + "Изабрао је корисник: %s" "Говор" "Брзина показивача" "Контролер за игре" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 951904a0de0..348b65f72ce 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -1931,7 +1931,10 @@ "Återställ" "Välj specialtangent" "Välj en ny tangent för %1$s:" + "Layouten %s" "Standard" + "Automatiskt: %s" + "Användaren valde %s" "Tal" "Markörens hastighet" "Spelkontroller" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 94990e9b5a2..cf93ee4cd74 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -1931,7 +1931,10 @@ "Weka upya" "Chagua kitufe cha kurekebisha" "Chagua kitufe kipya cha kurekebisha cha %1$s:" + "Muundo wa %s" "Chaguomsingi" + "Otomatiki: %s" + "Uliochaguliwa na mtumiaji: %s" "Kutamka" "Kasi ya kiashiria" "Kidhibiti cha Mchezo" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 402b847d774..7259a6c6553 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -1931,7 +1931,10 @@ "ரீசெட்" "மாற்றி விசையைத் தேர்வுசெய்தல்" "%1$sக்கு புதிய விசையை தேர்வுசெய்யலாம்:" + "%s தளவமைப்பு" "இயல்பு" + "தானியங்கு: %s" + "பயனர் தேர்ந்தெடுத்தது: %s" "பேச்சு" "குறிப்பான் வேகம்" "கேம் கன்ட்ரோலர்" @@ -2170,7 +2173,7 @@ "தொட்டுப் பிடித்தல் தாமதம்" "கலர் இன்வெர்ஷன்" "கலர் இன்வெர்ஷனைப் பயன்படுத்து" - "கலர் இன்வெர்ஷனுக்கான ஷார்ட்கட்" + "கலர் இன்வெர்ஷன் ஷார்ட்கட்" "\'கலர் இன்வெர்ஷன்\' அம்சம் லைட் ஸ்கிரீன்களை டார்க்காக மாற்றும். அதேபோன்று டார்க் ஸ்கிரீன்களை லைட்டாக மாற்றும்." "<b>கவனத்திற்கு:</b><br/> <ol> <li>மீடியாவிலும் படங்களிலும் வண்ணங்கள் மாறும்</li> <li> கலர் இன்வெர்ஷன் எல்லா ஆப்ஸிலுமே செயல்படும்</li> <li> டார்க் பின்னணி வேண்டுமெனில் டார்க் தீமினைப் பயன்படுத்திக் கொள்ளலாம்</li> </ol>" "அமைப்புகளுக்குச் செல்லும்" @@ -4618,7 +4621,7 @@ "உங்கள் சிம்மை அமையுங்கள்" "இந்தச் சாதனத்தில் பல சிம்களைப் பயன்படுத்த உங்கள் மொபைல் நெட்வொர்க் விருப்பத்தேர்வுகளை அமைக்கலாம்" "சிம்களுக்கு லேபிளிடுங்கள்" - "அழைப்புகளை மேற்கொள்ளும்போதும் மெசேஜ்களை அனுப்பும்போதும் டேட்டாவைப் பயன்படுத்தும்போதும் அமைப்புகளிலும் இந்த லேபிள்களைப் பார்ப்பீர்கள்" + "அழைப்பு மேற்கொள்ளும்போதும் மெசேஜ் அனுப்பும்போதும் டேட்டா பயன்படுத்தும்போதும் அமைப்புகளிலும் இந்த லேபிள்களைப் பார்ப்பீர்கள்" "SIM லேபிள்" "லேபிள்" "எந்த சிம் பயன்படுத்துவது எனத் தேர்வுசெய்க" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 46bcfb1b79f..4ed297b7292 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -1931,7 +1931,10 @@ "రీసెట్ చేయండి" "మోడిఫయర్ కీని ఎంచుకోండి" "%1$s కొసం కొత్త కీని ఎంచుకోండి:" + "%s లేఅవుట్" "ఆటోమేటిక్" + "ఆటోమేటిక్: %s" + "యూజర్ ఎంచుకున్నది: %s" "స్పీచ్" "పాయింటర్ వేగం" "గేమ్ కంట్రోలర్" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index b72f1cb4d76..44c11156f8b 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -1931,7 +1931,10 @@ "รีเซ็ต" "เลือกแป้นกดร่วม" "เลือกคีย์ใหม่สำหรับ %1$s:" + "เลย์เอาต์ %s" "ค่าเริ่มต้น" + "อัตโนมัติ: %s" + "ผู้ใช้เลือก: %s" "เสียงพูด" "ความเร็วของตัวชี้" "อุปกรณ์ควบคุมเกม" @@ -4766,8 +4769,8 @@ "นาน" "แสดง Wallet" "อนุญาตให้เข้าถึงกระเป๋าเงินจากหน้าจอล็อก" - "แสดงแอปสแกนคิวอาร์โค้ด" - "อนุญาตให้เข้าถึงแอปสแกนคิวอาร์โค้ดจากหน้าจอล็อก" + "แสดงตัวสแกนคิวอาร์โค้ด" + "อนุญาตให้เข้าถึงตัวสแกนคิวอาร์โค้ดจากหน้าจอล็อก" "แสดงระบบควบคุมอุปกรณ์" "จากหน้าจอล็อก" "ใช้ระบบควบคุมอุปกรณ์" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 1c5147c933a..d9070af8c3b 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -1931,7 +1931,10 @@ "I-reset" "Pumili ng modifier key" "Pumili ng bagong key para sa %1$s:" + "Layout na %s" "Default" + "Awtomatiko: %s" + "Napiling user: %s" "Pagsasalita" "Bilis ng pointer" "Game Controller" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 5d42614de78..7a1d20f7894 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -1931,7 +1931,10 @@ "Sıfırla" "Değiştirici tuşu seçin" "%1$s için yeni bir tuş seçin:" + "%s düzeni" "Varsayılan" + "Otomatik: %s" + "Kullanıcı tarafından %s seçildi" "Konuşma" "İşaretçi hızı" "Oyun Denetleyici" @@ -4623,13 +4626,13 @@ "Etiket" "Kullanılacak SIM\'leri seçin" "Aynı anda 2 SIM kullanabilirsiniz" - "Birincil SIM\'lerinizi kurun" + "Birincil SIM\'lerinizi belirleyin" "Aramalar, mesajlar ve veriler için varsayılan olarak kullanılacak SIM\'leri seçin" "Birincil SIM\'leriniz" "Aramalar" "Kısa mesajlar" "Otomatik veri geçişi" - "Kapsam alanına ve kullanılabilirliğe bağlı olarak iki SIM\'den birindeki verileri kullanın" + "Kapsam alanına ve kullanılabilirliğe bağlı olarak herhangi bir SIM\'in veri bağlantısını kullan" "Yalnızca veri" "Ayarla" "Sonraki" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index a5389c5b94a..99ce7390ba6 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -1931,7 +1931,10 @@ "Скинути" "Вибрати клавішу-модифікатор" "Виберіть нову клавішу для %1$s:" + "Розкладка %s" "За умовчанням" + "Автоматична розкладка: %s" + "Вибрано користувачем: %s" "Мовлення" "Швидкість курсора" "Ігровий контролер" @@ -4628,7 +4631,7 @@ "Ваші основні SIM-карти" "Виклики" "SMS" - "Автом. перемикання моб. даних" + "Автоперемикання моб. трафіку" "Використовувати мобільний трафік із будь-якої SIM-карти залежно від покриття й доступності" "Лише мобільний Інтернет" "Налаштувати" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index fe3f6fea456..7198ec8d078 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -1931,7 +1931,10 @@ "ری سیٹ کریں" "موڈیفائر کلید منتخب کریں" "‫%1$s کے لیے نئی کلید منتخب کریں:" + "%s لے آؤٹ" "ڈیفالٹ" + "خودکار: %s" + "صارف کا منتخب کردہ: %s" "اسپیچ" "پوائنٹر کی رفتار" "گیم کنٹرولر" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 676379688ff..3374a8d4d9e 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -1931,7 +1931,10 @@ "Yangilash" "Modifikator tugmasini tanlang" "%1$s uchun yangi tugma tanlang:" + "%s sxemasi" "Standart" + "Avtomatik: %s" + "Foydalanuvchi tanlagan: %s" "Nutq" "Kursor tezligi" "O‘yin qurilmasi" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 37f8d5c5c88..acb7e3ad1d0 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -1931,7 +1931,10 @@ "Đặt lại" "Chọn phím bổ trợ" "Chọn một phím mới cho %1$s:" + "Bố cục %s" "Mặc định" + "Tự động: %s" + "Người dùng đã chọn: %s" "Lời nói" "Tốc độ con trỏ" "Trình điều khiển trò chơi" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 6a237536dd9..20d9260ae1a 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -1931,7 +1931,10 @@ "重置" "选择辅助键" "为%1$s选择新的辅助键:" + "“%s”布局" "默认" + "自动选择的布局:%s" + "用户选择的布局:%s" "语音" "指针速度" "游戏控制器" @@ -4618,7 +4621,7 @@ "设置 SIM 卡" "您可以设置移动网络偏好设置,以便在此设备上使用多张 SIM 卡" "给 SIM 卡加标签" - "您将在拨打电话、发送短信、使用移动网络时以及设置中看到这些标签" + "您将在拨打电话、发送短信、使用移动网络时以及“设置”中看到这些标签" "SIM 卡标签" "加标签" "选择要使用哪些 SIM 卡" @@ -4629,7 +4632,7 @@ "通话" "短信" "自动切换数据网络" - "根据信号覆盖率和可用性,选择要使用哪张 SIM 卡的移动网络" + "根据信号覆盖率和可用性来选择使用哪张 SIM 卡的移动网络" "上网专用" "设置" "继续" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 7db10ba69a7..f30b46e5f60 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -1931,7 +1931,10 @@ "重設" "選擇輔助鍵" "為「%1$s」選擇新的輔助鍵:" + "%s 版面配置" "預設" + "自動:%s" + "已選取使用者:%s" "語音" "游標速度" "遊戲控制器" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 7083d74bad9..1c739ab762b 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -1931,7 +1931,10 @@ "重設" "選擇輔助鍵" "為「%1$s」選擇新的輔助鍵:" + "「%s」版面配置" "預設" + "自動選取:%s" + "使用者選取:%s" "語音" "游標速度" "遊戲控制器" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 59300769f62..41d6dd6113c 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -1932,7 +1932,10 @@ "Setha kabusha" "Khetha ukhiye wokushintsha" "Khetha ukhiye omusha we-%1$s:" + "Isakhiwo se-%s" "Okuzenzakalelayo" + "Okuzenzekelayo: %s" + "Umsebenzisi ukhethiwe: %s" "Inkulumo" "Ijubane lesikhombi" "Isilawuli somdlalo" From 1d5002906827d256ef65cf8ed7c590935b940376 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 18 Apr 2024 22:31:33 -0700 Subject: [PATCH 17/20] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ibe0a0b833ab13c32ea9ab79b4af642fd014bf535 --- res-product/values-hi/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/res-product/values-hi/strings.xml b/res-product/values-hi/strings.xml index 985529caf82..43248ee1663 100644 --- a/res-product/values-hi/strings.xml +++ b/res-product/values-hi/strings.xml @@ -100,13 +100,13 @@ "फ़ेस अनलॉक की सुविधा से फ़ोन अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खरीदारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, मौजूदा मॉडल मिटाएं.\n\nफ़ोन को सामने से देखने पर, आपके न चाहते हुए भी फ़ोन अनलॉक हो सकता है.\n\nआपके फ़ोन को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है. भले ही, आपकी आंखें बंद ही क्यों न हों.\n\nआपका फ़ोन कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." "फ़ेस अनलॉक की सुविधा से टैबलेट अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खीरादारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, चेहरे का मौजूदा मॉडल मिटाएं.\n\nटैबलेट को सामने से देखने पर, आपके न चाहते हुए भी टैबलेट अनलॉक हो सकता है.\n\nआपके टैबलेट को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है. भले ही, आपकी आंखें बंद ही क्यों न हों.\n\nआपका टैबलेट कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." "फ़ेस अनलॉक की सुविधा से डिवाइस अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खीरादारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, चेहरे का मौजूदा मॉडल मिटाएं.\n\nडिवाइस को सामने से देखने पर, आपके न चाहते हुए भी डिवाइस अनलॉक हो सकता है.\n\nआपके डिवाइस को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है. भले ही, आपकी आंखें बंद ही क्यों न हों.\n\nआपका डिवाइस कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." - "फ़ेस अनलॉक की सुविधा से फ़ोन अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खरीदारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, मौजूदा मॉडल मिटाएं.\n\nफ़ोन को सामने से देखने पर, आपके न चाहते हुए भी फ़ोन अनलॉक हो सकता है.\n\nआपके फ़ोन को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है.\n\nआपका फ़ोन कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." + "फ़ेस अनलॉक की सुविधा से फ़ोन अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खरीदारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. किसी और के चेहरे का मॉडल जोड़ने के लिए, मौजूदा मॉडल मिटाएं.\n\nफ़ोन को सामने से देखने पर, आपके न चाहते हुए भी फ़ोन अनलॉक हो सकता है.\n\nआपके फ़ोन को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है.\n\nआपका फ़ोन कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." "फ़ेस अनलॉक की सुविधा से टैबलेट अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खीरादारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, चेहरे का मौजूदा मॉडल मिटाएं.\n\nटैबलेट को सामने से देखने पर, आपके न चाहते हुए भी टैबलेट अनलॉक हो सकता है.\n\nआपके टैबलेट को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है.\n\nआपका टैबलेट कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." "फ़ेस अनलॉक की सुविधा से डिवाइस अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खीरादारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, चेहरे का मौजूदा मॉडल मिटाएं.\n\nडिवाइस को सामने से देखने पर, आपके न चाहते हुए भी डिवाइस अनलॉक हो सकता है.\n\nआपके डिवाइस को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है.\n\nआपका डिवाइस कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." "फ़ेस अनलॉक की सुविधा से फ़ोन अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खरीदारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, मौजूदा मॉडल मिटाएं.\n\nफ़ोन को सामने से देखने पर, आपके न चाहते हुए भी फ़ोन अनलॉक हो सकता है.\n\nआपके फ़ोन को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है. भले ही, आपकी आंखें बंद ही क्यों न हों.\n\nआपका फ़ोन कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." "फ़ेस अनलॉक की सुविधा से टैबलेट अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खीरादारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, चेहरे का मौजूदा मॉडल मिटाएं.\n\nटैबलेट को सामने से देखने पर, आपके न चाहते हुए भी टैबलेट अनलॉक हो सकता है.\n\nआपके टैबलेट को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है. भले ही, आपकी आंखें बंद ही क्यों न हों.\n\nआपका टैबलेट कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." "फ़ेस अनलॉक की सुविधा से डिवाइस अनलॉक करें. इस सुविधा का इस्तेमाल, ऐप्लिकेशन में साइन इन करने या खीरादारी की मंज़ूरी देने जैसी कार्रवाई के लिए भी किया जा सकता है.\n\nध्यान रखें:\nफ़ेस अनलॉक की सुविधा के लिए, एक समय में चेहरे का सिर्फ़ एक मॉडल सेट अप किया जा सकता है. दूसरा चेहरा जोड़ने के लिए, चेहरे का मौजूदा मॉडल मिटाएं.\n\nडिवाइस को सामने से देखने पर, आपके न चाहते हुए भी डिवाइस अनलॉक हो सकता है.\n\nआपके डिवाइस को आपके चेहरे के सामने लाकर, कोई भी व्यक्ति उसे अनलॉक कर सकता है. भले ही, आपकी आंखें बंद ही क्यों न हों.\n\nआपका डिवाइस कोई ऐसा व्यक्ति भी अनलॉक कर सकता है जिसका चेहरा आपसे बहुत मिलता हो, जैसे कि जुड़वा भाई या बहन." - "अपने %s डिवाइस को अनलॉक करने के लिए, फ़िंगरप्रिंट का इस्तेमाल करें. इससे किसी ऐप्लिकेशन में साइन इन करने या किसी खरीदारी की मंज़ूरी देने जैसे काम करने के दौरान, अपनी पहचान की पुष्टि भी की जा सकती है." + "फ़िंगरप्रिंट का इस्तेमाल करके, अपने %s डिवाइस को अनलॉक करें या किसी ऐप्लिकेशन में साइन इन करने और खरीदारी की मंज़ूरी देने जैसे काम के दौरान, अपनी पहचान की पुष्टि करें" "अपने बच्चे को उसके फ़िंगरप्रिंट से फ़ोन अनलॉक करने या पहचान की पुष्टि करने की सुविधा इस्तेमाल करने की अनुमति दें. किसी ऐप्लिकेशन में साइन इन करने, किसी खरीदारी की मंज़ूरी देने, और ऐसे अन्य काम करने के दौरान यह करना पड़ता है." "अपने बच्चे को फ़िंगरप्रिंट से टैबलेट अनलाॅक करने या पहचान की पुष्टि करने की अनुमति दें. किसी ऐप्लिकेशन में साइन इन करने, किसी खरीदारी की मंज़ूरी देने, और ऐसे अन्य काम करने के दौरान यह करना पड़ता है." "अपने बच्चे को फ़िंगरप्रिंट से डिवाइस अनलाॅक करने या पहचान की पुष्टि करने की अनुमति दें. किसी ऐप्लिकेशन में साइन इन करने, किसी खरीदारी की मंज़ूरी देने, और ऐसे अन्य काम करने के दौरान यह करना पड़ता है." @@ -119,13 +119,13 @@ "जब आपका बच्चा Pixel Imprint का इस्तेमाल करता है, तब उसके फ़िंगरप्रिंट के मॉडल को अपडेट करने के लिए उसके फ़िंगरप्रिंट की इमेज इस्तेमाल की जाती हैं. आपके बच्चे के फ़िंगरप्रिंट का मॉडल बनाते समय इस्तेमाल की गई इमेज कभी भी सेव नहीं की जाती हैं. हालांकि, फ़िंगरप्रिंट के मॉडल को फ़ोन में सुरक्षित तरीके से सेव किया जाता है और इसे किसी के साथ शेयर नहीं किया जाता है. इसे पूरी तरह से आपके फ़ोन में ही सुरक्षित तरीके से प्रोसेस किया जाता है." "जब आपका बच्चा Pixel की फ़िंगरप्रिंट से पुष्टि करने की सुविधा का इस्तेमाल करता है, तब उसके फ़िंगरप्रिंट के मॉडल को अपडेट करने के लिए, उसके फ़िंगरप्रिंट की इमेज इस्तेमाल की जाती हैं. आपके बच्चे के फ़िंगरप्रिंट का मॉडल बनाते समय इस्तेमाल की गई इमेज कभी भी सेव नहीं की जाती हैं. हालांकि, फ़िंगरप्रिंट के मॉडल को टैबलेट में सुरक्षित तरीके से सेव किया जाता है और इसे किसी के साथ शेयर नहीं किया जाता है. फ़िंगरप्रिंट की पूरी प्रोसेस, आपके टैबलेट में सुरक्षित तरीके से की जाती है." "जब आपका बच्चा Pixel की फ़िंगरप्रिंट से पुष्टि करने की सुविधा का इस्तेमाल करता है, तब उसके फ़िंगरप्रिंट के मॉडल को अपडेट करने के लिए, उसके फ़िंगरप्रिंट की इमेज इस्तेमाल की जाती हैं. आपके बच्चे के फ़िंगरप्रिंट का मॉडल बनाते समय इस्तेमाल की गई इमेज कभी भी सेव नहीं की जाती हैं. हालांकि, फ़िंगरप्रिंट के मॉडल को डिवाइस में सुरक्षित तरीके से सेव किया जाता है और इसे किसी के साथ शेयर नहीं किया जाता है. फ़िंगरप्रिंट को सेव करने की पूरी प्रोसेस, आपके डिवाइस में सुरक्षित तरीके से की जाती है." - "सेटिंग में जाकर, अपने फ़िंगरप्रिंट की इमेज और मॉडल को कभी भी मिटाया जा सकता है. इसके अलावा, फ़िंगरप्रिंट अनलॉक की सुविधा को बंद किया जा सकता है. फ़िंगरप्रिंट की इमेज और मॉडल, फ़ोन में तब तक सेव रहते हैं, जब तक उन्हें मिटाया नहीं जाता." + "सेटिंग में जाकर, अपने फ़िंगरप्रिंट की इमेज और मॉडल को कभी भी मिटाया जा सकता है या फ़िंगरप्रिंट अनलॉक की सुविधा को बंद किया जा सकता है. फ़िंगरप्रिंट की इमेज और मॉडल, फ़ोन में तब तक सेव रहते हैं, जब तक उन्हें मिटाया नहीं जाता." "किसी भी समय, सेटिंग में जाकर अपने फ़िंगरप्रिंट की इमेज और मॉडल मिटाए जा सकते हैं. इसके अलावा, फ़िंगरप्रिंट से अनलॉक करने की सुविधा बंद की जा सकती है. फ़िंगरप्रिंट की इमेज और मॉडल, टैबलेट में तब तक सेव रहते हैं, जब तक उन्हें मिटाया नहीं जाता." "किसी भी समय, सेटिंग में जाकर अपने फ़िंगरप्रिंट की इमेज और मॉडल मिटाए जा सकते हैं. इसके अलावा, फ़िंगरप्रिंट से अनलॉक करने की सुविधा बंद की जा सकती है. फ़िंगरप्रिंट की इमेज और मॉडल, टैबलेट में तब तक सेव रहते हैं, जब तक उन्हें मिटाया नहीं जाता." "आपका बच्चा और आप किसी भी समय, सेटिंग में जाकर फ़िंगरप्रिंट की इमेज और मॉडल मिटा सकते हैं या फ़िंगरप्रिंट से अनलॉक करने की सुविधा को बंद कर सकते हैं. फ़िंगरप्रिंट की इमेज और मॉडल, फ़ोन में तब तक सेव रहते हैं, जब तक उन्हें नहीं मिटाया जाता है." "आपके और आपके बच्चे के पास किसी भी समय, सेटिंग में जाकर फ़िंगरप्रिंट की इमेज और मॉडल को मिटाने या फ़िंगरप्रिंट अनलॉक की सुविधा को बंद करने का विकल्प है. फ़िंगरप्रिंट की इमेज और मॉडल, टैबलेट में तब तक सेव रहते हैं, जब तक उन्हें मिटाया नहीं जाता." "आपके और आपके बच्चे के पास किसी भी समय, सेटिंग में जाकर फ़िंगरप्रिंट की इमेज और मॉडल को मिटाने या फ़िंगरप्रिंट अनलॉक की सुविधा को बंद करने का विकल्प है. फ़िंगरप्रिंट की इमेज और मॉडल, डिवाइस में तब तक सेव रहते हैं, जब तक उन्हें मिटाया नहीं जाता." - "आपके न चाहने पर भी आपका फ़ोन अनलॉक किया जा सकता है, जैसे कि कोई व्यक्ति आपके फ़ोन को आपकी उंगली से छूकर अनलॉक कर सकता है." + "आपके न चाहने पर भी आपका फ़ोन अनलॉक किया जा सकता है. जैसे, कोई व्यक्ति आपके फ़ोन को आपकी उंगली से टच कराकर अनलॉक कर सकता है." "आपके न चाहने पर भी आपका टैबलेट अनलॉक किया जा सकता है. जैसे, कोई व्यक्ति आपके टैबलेट को आपकी उंगली से टच कराकर अनलॉक कर सकता है." "आपके न चाहने पर भी आपका डिवाइस अनलॉक किया जा सकता है. जैसे, कोई व्यक्ति आपके डिवाइस को आपकी उंगली से छूकर अनलॉक कर सकता है." "आपके बच्चे के न चाहने पर भी उसका फ़ोन अनलॉक किया जा सकता है, जैसे कि कोई व्यक्ति फ़ोन को आपके बच्चे की उंगली से छुआकर अनलॉक कर सकता है." @@ -188,7 +188,7 @@ "फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पिन की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पिन आपके फ़ोन की सुरक्षा करता है." "फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पैटर्न की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पैटर्न आपके फ़ोन की सुरक्षा करता है." "फ़ेस अनलॉक और फ़िंगरप्रिंट अनलॉक की सुविधा सेट अप करने के लिए, पासवर्ड की ज़रूरत है.\n\nअगर आपका फ़ोन खो जाता है या चोरी हो जाता है, तो पासवर्ड आपके फ़ोन की सुरक्षा करता है." - "ऐसा करने से, आपके फ़ोन पर मौजूद \'%1$s\' से जुड़ी फ़िंगरप्रिंट की इमेज और मॉडल मिट जाएंगे" + "ऐसा करने से, आपके फ़ोन पर सेव किए गए \'%1$s\' से जुड़े फ़िंगरप्रिंट की इमेज और मॉडल मिट जाएंगे" "ऐसा करने से, आपके टैबलेट पर मौजूद \'%1$s\' से जुड़ी फ़िंगरप्रिंट की इमेज और मॉडल मिट जाएंगे" "ऐसा करने से, आपके डिवाइस पर मौजूद %1$s से जुड़ी फ़िंगरप्रिंट की इमेज और मॉडल मिट जाएंगे" "फ़ोन अनलॉक करने या ऐप्लिकेशन में अपनी पहचान की पुष्टि करने के लिए, फ़िंगरप्रिंट का इस्तेमाल नहीं किया जा सकेगा." From 2f9ce75a0087fe1a920daf3abafd58dc00578d38 Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Thu, 18 Apr 2024 08:19:16 +0000 Subject: [PATCH 18/20] Add trunk stable flag for slice retirement Bug: 297367302 Test: robotest Change-Id: Idc9e9d8ff88a8b6670a775e181295a9ef3553bb1 --- aconfig/settings_flag_declarations.aconfig | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/aconfig/settings_flag_declarations.aconfig b/aconfig/settings_flag_declarations.aconfig index ac59f1b30c3..c7a21e9938e 100644 --- a/aconfig/settings_flag_declarations.aconfig +++ b/aconfig/settings_flag_declarations.aconfig @@ -35,3 +35,10 @@ flag { description: "Feature flag to enable injection into PreferenceCategory." bug: "333547416" } + +flag { + name: "slices_retirement" + namespace: "android_settings" + description: "Feature flag to remove relevant slices dependencies." + bug: "297367302" +} From aecc94098743e9fcffbbb671fa130675a89fd17f Mon Sep 17 00:00:00 2001 From: songferngwang Date: Fri, 19 Apr 2024 07:44:22 +0000 Subject: [PATCH 19/20] Using the new sim ui when user insert psim When device has two active esim and the user insert psim, the settings will popup the dailog to ask user select the two sim card. Now, there is the new sim UI, so it should show the new one. Bug: 335780975 Test: verify UI Change-Id: I298d488d467c447d6f8d91d86383708a4d1f70c9 --- src/com/android/settings/network/SimOnboardingActivity.kt | 1 + .../network/telephony/ToggleSubscriptionDialogActivity.java | 1 + .../android/settings/sim/receivers/SimSlotChangeHandler.java | 4 +--- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/network/SimOnboardingActivity.kt b/src/com/android/settings/network/SimOnboardingActivity.kt index eea72867728..481dc205f70 100644 --- a/src/com/android/settings/network/SimOnboardingActivity.kt +++ b/src/com/android/settings/network/SimOnboardingActivity.kt @@ -549,6 +549,7 @@ class SimOnboardingActivity : SpaBaseDialogActivity() { val intent = Intent(context, SimOnboardingActivity::class.java).apply { putExtra(SUB_ID, subId) } + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) context.startActivity(intent) } diff --git a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java index 6f4d3c3e390..78eb832bb3d 100644 --- a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java +++ b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java @@ -76,6 +76,7 @@ public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogAc Intent intent = new Intent(context, ToggleSubscriptionDialogActivity.class); intent.putExtra(ARG_SUB_ID, subId); intent.putExtra(ARG_enable, enable); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); return intent; } diff --git a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java index dabb08896c8..67cac712059 100644 --- a/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java +++ b/src/com/android/settings/sim/receivers/SimSlotChangeHandler.java @@ -371,9 +371,7 @@ public class SimSlotChangeHandler { return; } Log.d(TAG, "Start ToggleSubscriptionDialogActivity with " + subId + " under DSDS+Mep."); - Intent intent = ToggleSubscriptionDialogActivity.getIntent(mContext, subId, true); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mContext.startActivityAsUser(intent, UserHandle.SYSTEM); + SubscriptionUtil.startToggleSubscriptionDialogActivity(mContext, subId, true); } private boolean isMultipleEnabledProfilesSupported() { From 85c38bc0782740f57bf37fb552ce7c5835da209d Mon Sep 17 00:00:00 2001 From: Kholoud Mohamed Date: Thu, 18 Apr 2024 13:27:42 +0000 Subject: [PATCH 20/20] Fix incorrect password attempts messaging on headless Bug: 257276847 Test: manual Flag: ACONFIG android.app.admin.flags.headless_single_user_fixes DISABLED Change-Id: I2fb70d99203228ce4ee36f84eb4dfed36fa6fd8c --- Android.bp | 1 + .../password/ConfirmDeviceCredentialBaseFragment.java | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Android.bp b/Android.bp index 8a86d67bb5f..1d713a8561b 100644 --- a/Android.bp +++ b/Android.bp @@ -112,6 +112,7 @@ android_library { "androidx.test.rules", "telephony_flags_core_java_lib", "setupdesign-lottie-loading-layout", + "device_policy_aconfig_flags_lib", ], plugins: ["androidx.room_room-compiler-plugin"], diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java index 2af360a1215..cfee9805740 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java @@ -27,6 +27,7 @@ import android.app.KeyguardManager; import android.app.RemoteLockscreenValidationSession; import android.app.admin.DevicePolicyManager; import android.app.admin.ManagedSubscriptionsPolicy; +import android.app.admin.flags.Flags; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; @@ -374,7 +375,14 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr private int getUserTypeForWipe() { final UserInfo userToBeWiped = mUserManager.getUserInfo( mDevicePolicyManager.getProfileWithMinimumFailedPasswordsForWipe(mEffectiveUserId)); - if (userToBeWiped == null || userToBeWiped.isPrimary()) { + UserHandle primaryUser = UserHandle.SYSTEM; + if (Flags.headlessSingleUserFixes()) { + UserHandle mainUser = mUserManager.getMainUser(); + if (mainUser != null ) { + primaryUser = mainUser; + } + } + if (userToBeWiped == null || userToBeWiped.getUserHandle().equals(primaryUser)) { return USER_TYPE_PRIMARY; } else if (userToBeWiped.isManagedProfile()) { return USER_TYPE_MANAGED_PROFILE;